summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <[email protected]>2025-01-20 14:14:02 +0100
committerJani Heikkinen <[email protected]>2025-01-22 11:53:12 +0000
commit7affce87527051ba2fd2d4f3a2332485a4b5d949 (patch)
treee377ee8e15dfa2a2f8233383c502cd9e73c814dd
parentba550c4dcb0aeb8fb644d24b243fc80608a99adb (diff)
Update Harfbuzz to version 10.2.0
[ChangeLog][Third-Party Code] Upgraded Harfbuzz to version 10.2.0. Fixes: QTBUG-132855 Change-Id: I542c054ccdc311b17363456c693a2057c2e496c1 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 308ee2738f24d5f01fc8914f071735ad91716947) Reviewed-by: Qt Cherry-pick Bot <[email protected]> (cherry picked from commit c2e528ef425a68e3904d5989d578fc4a4dfce997) Reviewed-by: Eskil Abrahamsen Blomfeldt <[email protected]>
-rw-r--r--src/3rdparty/harfbuzz-ng/CMakeLists.txt2
-rw-r--r--src/3rdparty/harfbuzz-ng/qt_attribution.json4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/OT/Color/COLR/COLR.hh2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/harfbuzz-subset.cc2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-cairo.cc12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-common.cc3
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-config.hh2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-coretext-font.cc6
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-face.cc3
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ft-colr.hh2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ft.cc8
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-null.hh2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-cmap-table.hh4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos.hh4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-os2-table.hh4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-machine.hh1279
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-table.cc11
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-myanmar-machine.hh642
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-use-machine.hh1256
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-tag-table.hh15
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-var-common.hh24
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-var-gvar-table.hh1
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-paint.h2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-sanitize.hh4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-serialize.hh21
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-shape.h2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset-input.cc139
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset-plan.cc18
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset-plan.hh9
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset-repacker.h81
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset-serialize.cc (renamed from src/3rdparty/harfbuzz-ng/src/hb-subset-repacker.cc)33
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset-serialize.h83
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset.cc2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-subset.h12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-utf.hh6
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-version.h4
37 files changed, 2394 insertions, 1322 deletions
diff --git a/src/3rdparty/harfbuzz-ng/CMakeLists.txt b/src/3rdparty/harfbuzz-ng/CMakeLists.txt
index f32723c96be..2acb34d42d2 100644
--- a/src/3rdparty/harfbuzz-ng/CMakeLists.txt
+++ b/src/3rdparty/harfbuzz-ng/CMakeLists.txt
@@ -61,7 +61,7 @@ qt_internal_add_3rdparty_library(BundledHarfbuzz
src/hb-subset-instancer-solver.cc
src/hb-subset-plan.cc
src/hb-subset-plan-member-list.hh
- src/hb-subset-repacker.cc src/hb-subset-repacker.h
+ src/hb-subset-serialize.cc src/hb-subset-serialize.h
src/hb-unicode.cc src/hb-unicode.h src/hb-unicode.hh
src/hb-utf.hh
src/hb-version.h
diff --git a/src/3rdparty/harfbuzz-ng/qt_attribution.json b/src/3rdparty/harfbuzz-ng/qt_attribution.json
index 3a5b5943c67..e0b50d383c4 100644
--- a/src/3rdparty/harfbuzz-ng/qt_attribution.json
+++ b/src/3rdparty/harfbuzz-ng/qt_attribution.json
@@ -7,8 +7,8 @@
"Description": "HarfBuzz is an OpenType text shaping engine.",
"Homepage": "http://harfbuzz.org",
- "Version": "10.1.0",
- "DownloadLocation": "https://github.com/harfbuzz/harfbuzz/releases/tag/10.1.0",
+ "Version": "10.2.0",
+ "DownloadLocation": "https://github.com/harfbuzz/harfbuzz/releases/tag/10.2.0",
"PURL": "pkg:github/harfbuzz/harfbuzz@$<VERSION>",
"CPE": "cpe:2.3:a:harfbuzz_project:harfbuzz:$<VERSION>:*:*:*:*:*:*:*",
"License": "MIT License",
diff --git a/src/3rdparty/harfbuzz-ng/src/OT/Color/COLR/COLR.hh b/src/3rdparty/harfbuzz-ng/src/OT/Color/COLR/COLR.hh
index 36b509d7c33..d227768d5ad 100644
--- a/src/3rdparty/harfbuzz-ng/src/OT/Color/COLR/COLR.hh
+++ b/src/3rdparty/harfbuzz-ng/src/OT/Color/COLR/COLR.hh
@@ -1003,7 +1003,7 @@ struct PaintTransform
void paint_glyph (hb_paint_context_t *c) const
{
TRACE_PAINT (this);
- (this+transform).paint_glyph (c);
+ (this+transform).paint_glyph (c); // This does a push_transform()
c->recurse (this+src);
c->funcs->pop_transform (c->data);
}
diff --git a/src/3rdparty/harfbuzz-ng/src/harfbuzz-subset.cc b/src/3rdparty/harfbuzz-ng/src/harfbuzz-subset.cc
index 05483b14cc7..a0accfb33f6 100644
--- a/src/3rdparty/harfbuzz-ng/src/harfbuzz-subset.cc
+++ b/src/3rdparty/harfbuzz-ng/src/harfbuzz-subset.cc
@@ -58,7 +58,7 @@
#include "hb-subset-instancer-iup.cc"
#include "hb-subset-instancer-solver.cc"
#include "hb-subset-plan.cc"
-#include "hb-subset-repacker.cc"
+#include "hb-subset-serialize.cc"
#include "hb-subset.cc"
#include "hb-ucd.cc"
#include "hb-unicode.cc"
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-cairo.cc b/src/3rdparty/harfbuzz-ng/src/hb-cairo.cc
index d8b582c4908..89332d71519 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-cairo.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-cairo.cc
@@ -180,7 +180,7 @@ hb_cairo_paint_color_glyph (hb_paint_funcs_t *pfuncs HB_UNUSED,
hb_position_t x_scale, y_scale;
hb_font_get_scale (font, &x_scale, &y_scale);
- cairo_scale (cr, x_scale, y_scale);
+ cairo_scale (cr, x_scale, -y_scale);
cairo_glyph_t cairo_glyph = { glyph, 0, 0 };
cairo_set_scaled_font (cr, c->scaled_font);
@@ -597,7 +597,9 @@ hb_cairo_render_glyph (cairo_scaled_font_t *scaled_font,
hb_position_t x_scale, y_scale;
hb_font_get_scale (font, &x_scale, &y_scale);
- cairo_scale (cr, +1./x_scale, -1./y_scale);
+ cairo_scale (cr,
+ +1. / (x_scale ? x_scale : 1),
+ -1. / (y_scale ? y_scale : 1));
hb_font_draw_glyph (font, glyph, hb_cairo_draw_get_funcs (), cr);
@@ -628,7 +630,9 @@ hb_cairo_render_color_glyph (cairo_scaled_font_t *scaled_font,
hb_color_t color = HB_COLOR (0, 0, 0, 255);
hb_position_t x_scale, y_scale;
hb_font_get_scale (font, &x_scale, &y_scale);
- cairo_scale (cr, +1./x_scale, -1./y_scale);
+ cairo_scale (cr,
+ +1. / (x_scale ? x_scale : 1),
+ -1. / (y_scale ? y_scale : 1));
hb_cairo_context_t c;
c.scaled_font = scaled_font;
@@ -1000,6 +1004,7 @@ hb_cairo_glyphs_from_buffer (hb_buffer_t *buffer,
end = start + hb_glyph[i].cluster - hb_glyph[i+1].cluster;
else
end = (const char *) hb_utf_offset_to_pointer<hb_utf8_t> ((const uint8_t *) start,
+ (const uint8_t *) utf8, utf8_len,
(signed) (hb_glyph[i].cluster - hb_glyph[i+1].cluster));
(*clusters)[cluster].num_bytes = end - start;
start = end;
@@ -1020,6 +1025,7 @@ hb_cairo_glyphs_from_buffer (hb_buffer_t *buffer,
end = start + hb_glyph[i].cluster - hb_glyph[i-1].cluster;
else
end = (const char *) hb_utf_offset_to_pointer<hb_utf8_t> ((const uint8_t *) start,
+ (const uint8_t *) utf8, utf8_len,
(signed) (hb_glyph[i].cluster - hb_glyph[i-1].cluster));
(*clusters)[cluster].num_bytes = end - start;
start = end;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-common.cc b/src/3rdparty/harfbuzz-ng/src/hb-common.cc
index 4b8bae4422e..5d77433b3fe 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-common.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-common.cc
@@ -625,6 +625,9 @@ hb_script_get_horizontal_direction (hb_script_t script)
/* Unicode-14.0 additions */
case HB_SCRIPT_OLD_UYGHUR:
+ /* Unicode-16.0 additions */
+ case HB_SCRIPT_GARAY:
+
return HB_DIRECTION_RTL;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-config.hh b/src/3rdparty/harfbuzz-ng/src/hb-config.hh
index 14105846a52..09f669567cd 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-config.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-config.hh
@@ -68,8 +68,6 @@
#define HB_NO_FACE_COLLECT_UNICODES
#define HB_NO_GETENV
#define HB_NO_HINTING
-#define HB_NO_LANGUAGE_LONG
-#define HB_NO_LANGUAGE_PRIVATE_SUBTAG
#define HB_NO_LAYOUT_FEATURE_PARAMS
#define HB_NO_LAYOUT_COLLECT_GLYPHS
#define HB_NO_LAYOUT_RARELY_USED
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-coretext-font.cc b/src/3rdparty/harfbuzz-ng/src/hb-coretext-font.cc
index e6a02cce683..92194ea0a20 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-coretext-font.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-coretext-font.cc
@@ -34,8 +34,12 @@
#include "hb-font.hh"
#include "hb-machinery.hh"
-#if MAC_OS_X_VERSION_MIN_REQUIRED < 101100
+#if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1080) \
+ || (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 60000) \
+ || (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 90000)
# define kCTFontOrientationDefault kCTFontDefaultOrientation
+# define kCTFontOrientationHorizontal kCTFontHorizontalOrientation
+# define kCTFontOrientationVertical kCTFontVerticalOrientation
#endif
#define MAX_GLYPHS 64u
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-face.cc b/src/3rdparty/harfbuzz-ng/src/hb-face.cc
index bc0f6d90dc9..c7dbf79666b 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-face.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-face.cc
@@ -470,7 +470,8 @@ hb_face_is_immutable (const hb_face_t *face)
* @tag: The #hb_tag_t of the table to query
*
* Fetches a reference to the specified table within
- * the specified face.
+ * the specified face. Returns an empty blob if referencing table data is not
+ * possible.
*
* Return value: (transfer full): A pointer to the @tag table within @face
*
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ft-colr.hh b/src/3rdparty/harfbuzz-ng/src/hb-ft-colr.hh
index 8766a2a2ce8..7d8ed4a6f5b 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ft-colr.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ft-colr.hh
@@ -547,7 +547,9 @@ hb_ft_paint_glyph_colr (hb_font_t *font,
c.funcs->push_root_transform (c.data, font);
if (is_bounded)
+ {
c.recurse (paint);
+ }
c.funcs->pop_transform (c.data);
c.funcs->pop_clip (c.data);
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ft.cc b/src/3rdparty/harfbuzz-ng/src/hb-ft.cc
index c305df19adf..7e65277d11e 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ft.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ft.cc
@@ -931,11 +931,15 @@ hb_ft_paint_glyph (hb_font_t *font,
hb_lock_t lock (ft_font->lock);
FT_Face ft_face = ft_font->ft_face;
+ FT_Long load_flags = ft_font->load_flags | FT_LOAD_NO_BITMAP | FT_LOAD_COLOR;
+#if (FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH) >= 21301
+ load_flags |= FT_LOAD_NO_SVG;
+#endif
+
/* We release the lock before calling into glyph callbacks, such that
* eg. draw API can call back into the face.*/
- if (unlikely (FT_Load_Glyph (ft_face, gid,
- ft_font->load_flags | FT_LOAD_COLOR)))
+ if (unlikely (FT_Load_Glyph (ft_face, gid, load_flags)))
return;
if (ft_face->glyph->format == FT_GLYPH_FORMAT_OUTLINE)
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-null.hh b/src/3rdparty/harfbuzz-ng/src/hb-null.hh
index 854485d3df8..3588f6ab2ba 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-null.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-null.hh
@@ -176,7 +176,7 @@ template <typename Type>
static inline Type& Crap () {
static_assert (hb_null_size (Type) <= HB_NULL_POOL_SIZE, "Increase HB_NULL_POOL_SIZE.");
Type *obj = reinterpret_cast<Type *> (_hb_CrapPool);
- memcpy (obj, std::addressof (Null (Type)), sizeof (*obj));
+ memcpy (reinterpret_cast<void*>(obj), std::addressof (Null (Type)), sizeof (*obj));
return *obj;
}
template <typename QType>
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-cmap-table.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-cmap-table.hh
index 0f1edce0b0d..7a7a77ad55d 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-cmap-table.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-cmap-table.hh
@@ -1397,6 +1397,9 @@ struct CmapSubtableFormat14
hb_vector_t<hb_pair_t<unsigned, unsigned>> obj_indices;
for (int i = src_tbl->record.len - 1; i >= 0; i--)
{
+ if (!unicodes->has(src_tbl->record[i].varSelector))
+ continue;
+
hb_pair_t<unsigned, unsigned> result = src_tbl->record[i].copy (c, unicodes, glyphs_requested, glyph_map, base);
if (result.first || result.second)
obj_indices.push (result);
@@ -1453,6 +1456,7 @@ struct CmapSubtableFormat14
{
+ hb_iter (record)
| hb_filter (hb_bool, &VariationSelectorRecord::nonDefaultUVS)
+ | hb_filter (unicodes, &VariationSelectorRecord::varSelector)
| hb_map (&VariationSelectorRecord::nonDefaultUVS)
| hb_map (hb_add (this))
| hb_apply ([=] (const NonDefaultUVS& _) { _.closure_glyphs (unicodes, glyphset); })
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos.hh
index 2c9056c7051..966fa06c16e 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos.hh
@@ -1462,6 +1462,7 @@ static inline bool ligate_input (hb_ot_apply_context_t *c,
unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->cur());
if (this_comp == 0)
this_comp = last_num_components;
+ assert (components_so_far >= last_num_components);
unsigned int new_lig_comp = components_so_far - last_num_components +
hb_min (this_comp, last_num_components);
_hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp);
@@ -1487,6 +1488,7 @@ static inline bool ligate_input (hb_ot_apply_context_t *c,
unsigned this_comp = _hb_glyph_info_get_lig_comp (&buffer->info[i]);
if (!this_comp) break;
+ assert (components_so_far >= last_num_components);
unsigned new_lig_comp = components_so_far - last_num_components +
hb_min (this_comp, last_num_components);
_hb_glyph_info_set_lig_props_for_mark (&buffer->info[i], lig_id, new_lig_comp);
@@ -1542,6 +1544,7 @@ static bool match_lookahead (hb_ot_apply_context_t *c,
TRACE_APPLY (nullptr);
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_context;
+ assert (start_index >= 1);
skippy_iter.reset (start_index - 1);
skippy_iter.set_match_func (match_func, match_data);
skippy_iter.set_glyph_data (lookahead);
@@ -1852,6 +1855,7 @@ static inline void apply_lookup (hb_ot_apply_context_t *c,
if (match_positions != match_positions_input)
hb_free (match_positions);
+ assert (end >= 0);
(void) buffer->move_to (end);
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc
index 66c2eb4d8e3..d26f094bad7 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc
@@ -246,6 +246,18 @@ OT::GDEF::is_blocklisted (hb_blob_t *blob,
/* sha1sum: c26e41d567ed821bed997e937bc0c41435689e85 Padauk.ttf
* "Padauk Regular" "Version 2.5", see https://crbug.com/681813 */
case HB_CODEPOINT_ENCODE3 (1004, 59092, 14836):
+ /* 88d2006ca084f04af2df1954ed714a8c71e8400f Courier New.ttf from macOS 15 */
+ case HB_CODEPOINT_ENCODE3 (588, 5078, 14418):
+ /* 608e3ebb6dd1aee521cff08eb07d500a2c59df68 Courier New Bold.ttf from macOS 15 */
+ case HB_CODEPOINT_ENCODE3 (588, 5078, 14238):
+ /* d13221044ff054efd78f1cd8631b853c3ce85676 cour.ttf from Windows 10 */
+ case HB_CODEPOINT_ENCODE3 (894, 17162, 33960):
+ /* 68ed4a22d8067fcf1622ac6f6e2f4d3a2e3ec394 courbd.ttf from Windows 10 */
+ case HB_CODEPOINT_ENCODE3 (894, 17154, 34472):
+ /* 4cdb0259c96b7fd7c103821bb8f08f7cc6b211d7 cour.ttf from Windows 8.1 */
+ case HB_CODEPOINT_ENCODE3 (816, 7868, 17052):
+ /* 920483d8a8ed37f7f0afdabbe7f679aece7c75d8 courbd.ttf from Windows 8.1 */
+ case HB_CODEPOINT_ENCODE3 (816, 7868, 17138):
return true;
}
return false;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-os2-table.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-os2-table.hh
index 6c91402269d..c00d22b241b 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-os2-table.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-os2-table.hh
@@ -284,8 +284,8 @@ struct OS2
os2_prime->usWidthClass = width_class;
}
- os2_prime->usFirstCharIndex = hb_min (0xFFFFu, c->plan->unicodes.get_min ());
- os2_prime->usLastCharIndex = hb_min (0xFFFFu, c->plan->unicodes.get_max ());
+ os2_prime->usFirstCharIndex = hb_min (0xFFFFu, c->plan->os2_info.min_cmap_codepoint);
+ os2_prime->usLastCharIndex = hb_min (0xFFFFu, c->plan->os2_info.max_cmap_codepoint);
if (c->plan->flags & HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES)
return_trace (true);
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-machine.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-machine.hh
index 353e32d32c0..6ff65c30a33 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-machine.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-machine.hh
@@ -68,6 +68,7 @@ enum indic_syllable_type_t {
#define indic_syllable_machine_ex_Ra 15u
#define indic_syllable_machine_ex_Repha 14u
#define indic_syllable_machine_ex_SM 8u
+#define indic_syllable_machine_ex_SMPst 57u
#define indic_syllable_machine_ex_Symbol 17u
#define indic_syllable_machine_ex_V 2u
#define indic_syllable_machine_ex_VD 9u
@@ -76,251 +77,916 @@ enum indic_syllable_type_t {
#define indic_syllable_machine_ex_ZWNJ 5u
-#line 80 "hb-ot-shaper-indic-machine.hh"
+#line 81 "hb-ot-shaper-indic-machine.hh"
static const unsigned char _indic_syllable_machine_trans_keys[] = {
- 8u, 8u, 4u, 13u, 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 4u, 13u,
- 8u, 8u, 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 4u, 13u, 4u, 13u,
- 8u, 8u, 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 4u, 13u, 8u, 8u,
- 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 5u, 13u, 8u, 8u, 1u, 18u,
- 3u, 16u, 3u, 16u, 4u, 16u, 1u, 15u, 5u, 9u, 5u, 9u, 9u, 9u, 5u, 9u,
- 1u, 15u, 1u, 15u, 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 4u, 13u,
- 5u, 9u, 3u, 9u, 5u, 9u, 3u, 16u, 3u, 16u, 3u, 16u, 3u, 16u, 4u, 16u,
- 1u, 15u, 3u, 16u, 3u, 16u, 4u, 16u, 1u, 15u, 5u, 9u, 9u, 9u, 5u, 9u,
- 1u, 15u, 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 4u, 13u, 5u, 9u,
- 5u, 9u, 3u, 9u, 5u, 9u, 3u, 16u, 3u, 16u, 4u, 13u, 3u, 16u, 3u, 16u,
- 4u, 16u, 1u, 15u, 3u, 16u, 1u, 15u, 5u, 9u, 9u, 9u, 5u, 9u, 1u, 15u,
- 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 3u, 16u, 4u, 13u, 5u, 9u,
- 5u, 9u, 3u, 9u, 5u, 9u, 3u, 16u, 4u, 13u, 4u, 13u, 3u, 16u, 3u, 16u,
- 4u, 16u, 1u, 15u, 3u, 16u, 1u, 15u, 5u, 9u, 9u, 9u, 5u, 9u, 1u, 15u,
- 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 3u, 16u, 4u, 13u, 5u, 9u,
- 5u, 9u, 3u, 9u, 5u, 9u, 1u, 16u, 3u, 16u, 1u, 16u, 4u, 13u, 5u, 13u,
- 5u, 13u, 9u, 9u, 5u, 9u, 1u, 15u, 3u, 9u, 5u, 9u, 5u, 9u, 9u, 9u,
+ 8u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u,
+ 8u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, 4u, 57u,
+ 8u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, 8u, 57u,
+ 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 5u, 57u, 8u, 57u, 1u, 57u,
+ 3u, 57u, 3u, 57u, 4u, 57u, 1u, 57u, 5u, 57u, 5u, 57u, 9u, 9u, 5u, 9u,
+ 1u, 57u, 1u, 57u, 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 4u, 57u,
+ 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 4u, 57u,
+ 1u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u,
+ 1u, 57u, 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 4u, 57u, 5u, 57u,
+ 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, 3u, 57u, 3u, 57u,
+ 4u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u,
+ 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 5u, 57u,
+ 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 4u, 57u, 3u, 57u, 3u, 57u,
+ 4u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u,
+ 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 5u, 57u,
+ 5u, 57u, 3u, 57u, 5u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 4u, 57u, 5u, 57u,
+ 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u, 3u, 57u, 5u, 57u, 5u, 57u, 9u, 9u,
5u, 9u, 1u, 15u, 0
};
static const char _indic_syllable_machine_key_spans[] = {
- 1, 10, 9, 9, 1, 10, 10, 10,
- 1, 9, 9, 1, 10, 10, 10, 10,
- 1, 9, 9, 1, 10, 10, 10, 1,
- 9, 9, 1, 10, 10, 9, 1, 18,
- 14, 14, 13, 15, 5, 5, 1, 5,
- 15, 15, 15, 11, 10, 9, 9, 10,
- 5, 7, 5, 14, 14, 14, 14, 13,
- 15, 14, 14, 13, 15, 5, 1, 5,
- 15, 15, 11, 10, 9, 9, 10, 5,
- 5, 7, 5, 14, 14, 10, 14, 14,
- 13, 15, 14, 15, 5, 1, 5, 15,
- 15, 11, 10, 9, 9, 14, 10, 5,
- 5, 7, 5, 14, 10, 10, 14, 14,
- 13, 15, 14, 15, 5, 1, 5, 15,
- 15, 11, 10, 9, 9, 14, 10, 5,
- 5, 7, 5, 16, 14, 16, 10, 9,
- 9, 1, 5, 15, 7, 5, 5, 1,
+ 50, 54, 53, 53, 1, 54, 54, 54,
+ 50, 53, 53, 1, 54, 54, 54, 54,
+ 50, 53, 53, 1, 54, 54, 54, 50,
+ 53, 53, 1, 54, 54, 53, 50, 57,
+ 55, 55, 54, 57, 53, 53, 1, 5,
+ 57, 57, 57, 55, 54, 53, 53, 54,
+ 53, 55, 53, 55, 55, 55, 55, 54,
+ 57, 55, 55, 54, 57, 53, 1, 5,
+ 57, 57, 55, 54, 53, 53, 54, 53,
+ 53, 55, 53, 55, 55, 54, 55, 55,
+ 54, 57, 55, 57, 53, 1, 5, 57,
+ 57, 55, 54, 53, 53, 55, 54, 53,
+ 53, 55, 53, 55, 54, 54, 55, 55,
+ 54, 57, 55, 57, 53, 1, 5, 57,
+ 57, 55, 54, 53, 53, 55, 54, 53,
+ 53, 55, 53, 57, 55, 57, 54, 53,
+ 53, 1, 5, 57, 55, 53, 53, 1,
5, 15
};
static const short _indic_syllable_machine_index_offsets[] = {
- 0, 2, 13, 23, 33, 35, 46, 57,
- 68, 70, 80, 90, 92, 103, 114, 125,
- 136, 138, 148, 158, 160, 171, 182, 193,
- 195, 205, 215, 217, 228, 239, 249, 251,
- 270, 285, 300, 314, 330, 336, 342, 344,
- 350, 366, 382, 398, 410, 421, 431, 441,
- 452, 458, 466, 472, 487, 502, 517, 532,
- 546, 562, 577, 592, 606, 622, 628, 630,
- 636, 652, 668, 680, 691, 701, 711, 722,
- 728, 734, 742, 748, 763, 778, 789, 804,
- 819, 833, 849, 864, 880, 886, 888, 894,
- 910, 926, 938, 949, 959, 969, 984, 995,
- 1001, 1007, 1015, 1021, 1036, 1047, 1058, 1073,
- 1088, 1102, 1118, 1133, 1149, 1155, 1157, 1163,
- 1179, 1195, 1207, 1218, 1228, 1238, 1253, 1264,
- 1270, 1276, 1284, 1290, 1307, 1322, 1339, 1350,
- 1360, 1370, 1372, 1378, 1394, 1402, 1408, 1414,
- 1416, 1422
+ 0, 51, 106, 160, 214, 216, 271, 326,
+ 381, 432, 486, 540, 542, 597, 652, 707,
+ 762, 813, 867, 921, 923, 978, 1033, 1088,
+ 1139, 1193, 1247, 1249, 1304, 1359, 1413, 1464,
+ 1522, 1578, 1634, 1689, 1747, 1801, 1855, 1857,
+ 1863, 1921, 1979, 2037, 2093, 2148, 2202, 2256,
+ 2311, 2365, 2421, 2475, 2531, 2587, 2643, 2699,
+ 2754, 2812, 2868, 2924, 2979, 3037, 3091, 3093,
+ 3099, 3157, 3215, 3271, 3326, 3380, 3434, 3489,
+ 3543, 3597, 3653, 3707, 3763, 3819, 3874, 3930,
+ 3986, 4041, 4099, 4155, 4213, 4267, 4269, 4275,
+ 4333, 4391, 4447, 4502, 4556, 4610, 4666, 4721,
+ 4775, 4829, 4885, 4939, 4995, 5050, 5105, 5161,
+ 5217, 5272, 5330, 5386, 5444, 5498, 5500, 5506,
+ 5564, 5622, 5678, 5733, 5787, 5841, 5897, 5952,
+ 6006, 6060, 6116, 6170, 6228, 6284, 6342, 6397,
+ 6451, 6505, 6507, 6513, 6571, 6627, 6681, 6735,
+ 6737, 6743
};
static const unsigned char _indic_syllable_machine_indicies[] = {
- 1, 0, 2, 3, 3, 4, 5, 0,
- 0, 0, 0, 4, 0, 3, 3, 4,
- 6, 0, 0, 0, 0, 4, 0, 3,
- 3, 4, 5, 0, 0, 0, 0, 4,
- 0, 4, 0, 7, 3, 3, 4, 5,
- 0, 0, 0, 0, 4, 0, 2, 3,
- 3, 4, 5, 0, 0, 0, 8, 4,
- 0, 10, 11, 11, 12, 13, 9, 9,
- 9, 9, 12, 9, 14, 9, 11, 11,
- 12, 15, 9, 9, 9, 9, 12, 9,
- 11, 11, 12, 13, 9, 9, 9, 9,
- 12, 9, 12, 9, 16, 11, 11, 12,
- 13, 9, 9, 9, 9, 12, 9, 10,
- 11, 11, 12, 13, 9, 9, 9, 17,
- 12, 9, 10, 11, 11, 12, 13, 9,
- 9, 9, 18, 12, 9, 20, 21, 21,
- 22, 23, 19, 19, 19, 24, 22, 19,
- 25, 19, 21, 21, 22, 27, 26, 26,
- 26, 26, 22, 26, 21, 21, 22, 23,
- 19, 19, 19, 19, 22, 19, 22, 26,
- 20, 21, 21, 22, 23, 19, 19, 19,
- 19, 22, 19, 28, 21, 21, 22, 23,
- 19, 19, 19, 19, 22, 19, 30, 31,
- 31, 32, 33, 29, 29, 29, 34, 32,
+ 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 2, 3, 3, 4, 5,
+ 0, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 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, 0, 3, 3, 4, 6, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 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, 0,
+ 3, 3, 4, 5, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 0, 4, 0,
+ 7, 3, 3, 4, 5, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 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, 0, 2,
+ 3, 3, 4, 5, 0, 0, 0, 8,
+ 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 0, 10, 11,
+ 11, 12, 13, 9, 9, 9, 9, 12,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 13, 9, 14, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 14, 9,
+ 11, 11, 12, 15, 9, 9, 9, 9,
+ 12, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 15, 9, 11, 11,
+ 12, 13, 9, 9, 9, 9, 12, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 13, 9, 12, 9, 16, 11,
+ 11, 12, 13, 9, 9, 9, 9, 12,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 13, 9, 10, 11, 11,
+ 12, 13, 9, 9, 9, 17, 12, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 13, 9, 10, 11, 11, 12,
+ 13, 9, 9, 9, 18, 12, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 13, 9, 20, 21, 21, 22, 23,
+ 19, 19, 19, 24, 22, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 23, 19, 25, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 25, 19, 21, 21, 22,
+ 27, 26, 26, 26, 26, 22, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 27, 26, 21, 21, 22, 23, 19,
+ 19, 19, 19, 22, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 23,
+ 19, 22, 26, 20, 21, 21, 22, 23,
+ 19, 19, 19, 19, 22, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 23, 19, 28, 21, 21, 22, 23, 19,
+ 19, 19, 19, 22, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 23,
+ 19, 30, 31, 31, 32, 33, 29, 29,
+ 29, 34, 32, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 33, 29,
+ 35, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
29, 35, 29, 31, 31, 32, 36, 29,
- 29, 29, 29, 32, 29, 31, 31, 32,
- 33, 29, 29, 29, 29, 32, 29, 32,
+ 29, 29, 29, 32, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 36,
+ 29, 31, 31, 32, 33, 29, 29, 29,
+ 29, 32, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 33, 29, 32,
29, 30, 31, 31, 32, 33, 29, 29,
- 29, 29, 32, 29, 37, 31, 31, 32,
- 33, 29, 29, 29, 29, 32, 29, 21,
+ 29, 29, 32, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 33, 29,
+ 37, 31, 31, 32, 33, 29, 29, 29,
+ 29, 32, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 33, 29, 21,
21, 22, 38, 0, 0, 0, 0, 22,
- 0, 40, 39, 42, 43, 44, 45, 46,
- 47, 22, 23, 48, 49, 49, 24, 22,
- 50, 51, 52, 53, 54, 41, 56, 57,
- 58, 59, 4, 5, 60, 55, 55, 8,
- 4, 55, 55, 61, 55, 62, 57, 63,
- 63, 4, 5, 60, 55, 55, 55, 4,
- 55, 55, 61, 55, 57, 63, 63, 4,
- 5, 60, 55, 55, 55, 4, 55, 55,
- 61, 55, 42, 55, 55, 55, 64, 65,
- 55, 1, 60, 55, 55, 55, 55, 55,
- 42, 55, 66, 66, 55, 1, 60, 55,
- 60, 55, 55, 67, 60, 55, 60, 55,
- 60, 55, 55, 55, 60, 55, 42, 55,
- 68, 55, 66, 66, 55, 1, 60, 55,
- 55, 55, 55, 55, 42, 55, 42, 55,
- 55, 55, 66, 66, 55, 1, 60, 55,
- 55, 55, 55, 55, 42, 55, 42, 55,
- 55, 55, 66, 65, 55, 1, 60, 55,
- 55, 55, 55, 55, 42, 55, 69, 70,
- 71, 71, 4, 5, 60, 55, 55, 55,
- 4, 55, 70, 71, 71, 4, 5, 60,
- 55, 55, 55, 4, 55, 71, 71, 4,
- 5, 60, 55, 55, 55, 4, 55, 60,
- 55, 55, 67, 60, 55, 55, 55, 4,
- 55, 72, 73, 73, 4, 5, 60, 55,
- 55, 55, 4, 55, 64, 74, 55, 1,
- 60, 55, 64, 55, 66, 66, 55, 1,
- 60, 55, 66, 74, 55, 1, 60, 55,
- 56, 57, 63, 63, 4, 5, 60, 55,
- 55, 55, 4, 55, 55, 61, 55, 56,
- 57, 58, 63, 4, 5, 60, 55, 55,
- 8, 4, 55, 55, 61, 55, 76, 77,
- 78, 79, 12, 13, 80, 75, 75, 18,
- 12, 75, 75, 81, 75, 82, 77, 83,
- 79, 12, 13, 80, 75, 75, 75, 12,
- 75, 75, 81, 75, 77, 83, 79, 12,
- 13, 80, 75, 75, 75, 12, 75, 75,
- 81, 75, 84, 75, 75, 75, 85, 86,
- 75, 14, 80, 75, 75, 75, 75, 75,
- 84, 75, 87, 77, 88, 89, 12, 13,
- 80, 75, 75, 17, 12, 75, 75, 81,
- 75, 90, 77, 83, 83, 12, 13, 80,
- 75, 75, 75, 12, 75, 75, 81, 75,
- 77, 83, 83, 12, 13, 80, 75, 75,
- 75, 12, 75, 75, 81, 75, 84, 75,
- 75, 75, 91, 86, 75, 14, 80, 75,
- 75, 75, 75, 75, 84, 75, 80, 75,
- 75, 92, 80, 75, 80, 75, 80, 75,
- 75, 75, 80, 75, 84, 75, 93, 75,
- 91, 91, 75, 14, 80, 75, 75, 75,
- 75, 75, 84, 75, 84, 75, 75, 75,
- 91, 91, 75, 14, 80, 75, 75, 75,
- 75, 75, 84, 75, 94, 95, 96, 96,
- 12, 13, 80, 75, 75, 75, 12, 75,
- 95, 96, 96, 12, 13, 80, 75, 75,
- 75, 12, 75, 96, 96, 12, 13, 80,
- 75, 75, 75, 12, 75, 80, 75, 75,
- 92, 80, 75, 75, 75, 12, 75, 97,
- 98, 98, 12, 13, 80, 75, 75, 75,
- 12, 75, 85, 99, 75, 14, 80, 75,
- 91, 91, 75, 14, 80, 75, 85, 75,
- 91, 91, 75, 14, 80, 75, 91, 99,
- 75, 14, 80, 75, 87, 77, 83, 83,
- 12, 13, 80, 75, 75, 75, 12, 75,
- 75, 81, 75, 87, 77, 88, 83, 12,
- 13, 80, 75, 75, 17, 12, 75, 75,
- 81, 75, 10, 11, 11, 12, 13, 75,
- 75, 75, 75, 12, 75, 76, 77, 83,
- 79, 12, 13, 80, 75, 75, 75, 12,
- 75, 75, 81, 75, 101, 45, 102, 102,
- 22, 23, 48, 100, 100, 100, 22, 100,
- 100, 52, 100, 45, 102, 102, 22, 23,
- 48, 100, 100, 100, 22, 100, 100, 52,
- 100, 103, 100, 100, 100, 104, 105, 100,
- 25, 48, 100, 100, 100, 100, 100, 103,
- 100, 44, 45, 106, 107, 22, 23, 48,
- 100, 100, 24, 22, 100, 100, 52, 100,
- 103, 100, 100, 100, 108, 105, 100, 25,
- 48, 100, 100, 100, 100, 100, 103, 100,
- 48, 100, 100, 109, 48, 100, 48, 100,
- 48, 100, 100, 100, 48, 100, 103, 100,
- 110, 100, 108, 108, 100, 25, 48, 100,
- 100, 100, 100, 100, 103, 100, 103, 100,
- 100, 100, 108, 108, 100, 25, 48, 100,
- 100, 100, 100, 100, 103, 100, 111, 112,
- 113, 113, 22, 23, 48, 100, 100, 100,
- 22, 100, 112, 113, 113, 22, 23, 48,
- 100, 100, 100, 22, 100, 113, 113, 22,
- 23, 48, 100, 100, 100, 22, 100, 48,
- 100, 100, 109, 48, 100, 100, 100, 22,
- 100, 44, 45, 102, 102, 22, 23, 48,
- 100, 100, 100, 22, 100, 100, 52, 100,
- 114, 115, 115, 22, 23, 48, 100, 100,
- 100, 22, 100, 104, 116, 100, 25, 48,
- 100, 108, 108, 100, 25, 48, 100, 104,
- 100, 108, 108, 100, 25, 48, 100, 108,
- 116, 100, 25, 48, 100, 44, 45, 106,
- 102, 22, 23, 48, 100, 100, 24, 22,
- 100, 100, 52, 100, 20, 21, 21, 22,
- 23, 117, 117, 117, 24, 22, 117, 20,
- 21, 21, 22, 23, 117, 117, 117, 117,
- 22, 117, 119, 120, 121, 122, 32, 33,
- 123, 118, 118, 34, 32, 118, 118, 124,
- 118, 125, 120, 122, 122, 32, 33, 123,
- 118, 118, 118, 32, 118, 118, 124, 118,
- 120, 122, 122, 32, 33, 123, 118, 118,
- 118, 32, 118, 118, 124, 118, 126, 118,
- 118, 118, 127, 128, 118, 35, 123, 118,
- 118, 118, 118, 118, 126, 118, 119, 120,
- 121, 49, 32, 33, 123, 118, 118, 34,
- 32, 118, 118, 124, 118, 126, 118, 118,
- 118, 129, 128, 118, 35, 123, 118, 118,
- 118, 118, 118, 126, 118, 123, 118, 118,
- 130, 123, 118, 123, 118, 123, 118, 118,
- 118, 123, 118, 126, 118, 131, 118, 129,
- 129, 118, 35, 123, 118, 118, 118, 118,
- 118, 126, 118, 126, 118, 118, 118, 129,
- 129, 118, 35, 123, 118, 118, 118, 118,
- 118, 126, 118, 132, 133, 134, 134, 32,
- 33, 123, 118, 118, 118, 32, 118, 133,
- 134, 134, 32, 33, 123, 118, 118, 118,
- 32, 118, 134, 134, 32, 33, 123, 118,
- 118, 118, 32, 118, 123, 118, 118, 130,
- 123, 118, 118, 118, 32, 118, 119, 120,
- 122, 122, 32, 33, 123, 118, 118, 118,
- 32, 118, 118, 124, 118, 135, 136, 136,
- 32, 33, 123, 118, 118, 118, 32, 118,
- 127, 137, 118, 35, 123, 118, 129, 129,
- 118, 35, 123, 118, 127, 118, 129, 129,
- 118, 35, 123, 118, 129, 137, 118, 35,
- 123, 118, 42, 43, 44, 45, 106, 102,
- 22, 23, 48, 49, 49, 24, 22, 100,
- 42, 52, 100, 56, 138, 58, 59, 4,
- 5, 60, 55, 55, 8, 4, 55, 55,
- 61, 55, 42, 43, 44, 45, 139, 140,
- 22, 141, 142, 55, 49, 24, 22, 55,
- 42, 52, 55, 20, 143, 143, 22, 141,
- 60, 55, 55, 24, 22, 55, 60, 55,
- 55, 67, 60, 55, 55, 55, 22, 55,
- 142, 55, 55, 144, 142, 55, 55, 55,
- 22, 55, 142, 55, 142, 55, 55, 55,
- 142, 55, 42, 55, 68, 20, 143, 143,
- 22, 141, 60, 55, 55, 55, 22, 55,
- 42, 55, 146, 145, 147, 147, 145, 40,
- 148, 145, 147, 147, 145, 40, 148, 145,
- 148, 145, 145, 149, 148, 145, 148, 145,
- 148, 145, 145, 145, 148, 145, 42, 117,
- 117, 117, 117, 117, 117, 117, 117, 49,
- 117, 117, 117, 117, 42, 117, 0
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 38, 0, 40, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 40, 39,
+ 42, 43, 44, 45, 46, 47, 22, 23,
+ 48, 49, 49, 24, 22, 50, 51, 52,
+ 53, 54, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41,
+ 55, 41, 57, 58, 59, 60, 4, 5,
+ 61, 56, 56, 8, 4, 56, 56, 62,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 5, 56, 63, 58, 64, 64, 4, 5,
+ 61, 56, 56, 56, 4, 56, 56, 62,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 5, 56, 58, 64, 64, 4, 5, 61,
+ 56, 56, 56, 4, 56, 56, 62, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 5,
+ 56, 42, 56, 56, 56, 65, 66, 56,
+ 1, 61, 56, 56, 56, 56, 56, 42,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 1, 56, 67, 67, 56, 1, 61,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 1,
+ 56, 61, 56, 56, 68, 61, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 68, 56, 61,
+ 56, 61, 56, 56, 56, 61, 56, 42,
+ 56, 69, 56, 67, 67, 56, 1, 61,
+ 56, 56, 56, 56, 56, 42, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 1,
+ 56, 42, 56, 56, 56, 67, 67, 56,
+ 1, 61, 56, 56, 56, 56, 56, 42,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 1, 56, 42, 56, 56, 56, 67,
+ 66, 56, 1, 61, 56, 56, 56, 56,
+ 56, 42, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 1, 56, 70, 71, 72,
+ 72, 4, 5, 61, 56, 56, 56, 4,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 5, 56, 71, 72, 72,
+ 4, 5, 61, 56, 56, 56, 4, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 5, 56, 72, 72, 4, 5,
+ 61, 56, 56, 56, 4, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 5, 56, 61, 56, 56, 68, 61, 56,
+ 56, 56, 4, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 68, 56,
+ 73, 74, 74, 4, 5, 61, 56, 56,
+ 56, 4, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 5, 56, 65,
+ 75, 56, 1, 61, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 1, 56, 65, 56, 67,
+ 67, 56, 1, 61, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 1, 56, 67, 75, 56,
+ 1, 61, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 1, 56, 57, 58, 64, 64, 4,
+ 5, 61, 56, 56, 56, 4, 56, 56,
+ 62, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 5, 56, 57, 58, 59, 64, 4,
+ 5, 61, 56, 56, 8, 4, 56, 56,
+ 62, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 5, 56, 77, 78, 79, 80, 12,
+ 13, 81, 76, 76, 18, 12, 76, 76,
+ 82, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 13, 76, 83, 78, 84, 80, 12,
+ 13, 81, 76, 76, 76, 12, 76, 76,
+ 82, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 13, 76, 78, 84, 80, 12, 13,
+ 81, 76, 76, 76, 12, 76, 76, 82,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 13, 76, 85, 76, 76, 76, 86, 87,
+ 76, 14, 81, 76, 76, 76, 76, 76,
+ 85, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 14, 76, 88, 78, 89, 90,
+ 12, 13, 81, 76, 76, 17, 12, 76,
+ 76, 82, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 13, 76, 91, 78, 84, 84,
+ 12, 13, 81, 76, 76, 76, 12, 76,
+ 76, 82, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 13, 76, 78, 84, 84, 12,
+ 13, 81, 76, 76, 76, 12, 76, 76,
+ 82, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 13, 76, 85, 76, 76, 76, 92,
+ 87, 76, 14, 81, 76, 76, 76, 76,
+ 76, 85, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 14, 76, 81, 76, 76,
+ 93, 81, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 93, 76, 81, 76, 81, 76, 76,
+ 76, 81, 76, 85, 76, 94, 76, 92,
+ 92, 76, 14, 81, 76, 76, 76, 76,
+ 76, 85, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 14, 76, 85, 76, 76,
+ 76, 92, 92, 76, 14, 81, 76, 76,
+ 76, 76, 76, 85, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 14, 76, 95,
+ 96, 97, 97, 12, 13, 81, 76, 76,
+ 76, 12, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 13, 76, 96,
+ 97, 97, 12, 13, 81, 76, 76, 76,
+ 12, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 13, 76, 97, 97,
+ 12, 13, 81, 76, 76, 76, 12, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 13, 76, 81, 76, 76, 93,
+ 81, 76, 76, 76, 12, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 93, 76, 98, 99, 99, 12, 13, 81,
+ 76, 76, 76, 12, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 13,
+ 76, 86, 100, 76, 14, 81, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 14, 76, 92,
+ 92, 76, 14, 81, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 14, 76, 86, 76, 92,
+ 92, 76, 14, 81, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 14, 76, 92, 100, 76,
+ 14, 81, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 14, 76, 88, 78, 84, 84, 12,
+ 13, 81, 76, 76, 76, 12, 76, 76,
+ 82, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 13, 76, 88, 78, 89, 84, 12,
+ 13, 81, 76, 76, 17, 12, 76, 76,
+ 82, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 13, 76, 10, 11, 11, 12, 13,
+ 76, 76, 76, 76, 12, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 13, 76, 77, 78, 84, 80, 12, 13,
+ 81, 76, 76, 76, 12, 76, 76, 82,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 13, 76, 102, 45, 103, 103, 22, 23,
+ 48, 101, 101, 101, 22, 101, 101, 52,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 23, 101, 45, 103, 103, 22, 23, 48,
+ 101, 101, 101, 22, 101, 101, 52, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 23,
+ 101, 104, 101, 101, 101, 105, 106, 101,
+ 25, 48, 101, 101, 101, 101, 101, 104,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 25, 101, 44, 45, 107, 108, 22,
+ 23, 48, 101, 101, 24, 22, 101, 101,
+ 52, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 23, 101, 104, 101, 101, 101, 109,
+ 106, 101, 25, 48, 101, 101, 101, 101,
+ 101, 104, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 25, 101, 48, 101, 101,
+ 110, 48, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 110, 101, 48, 101, 48, 101, 101,
+ 101, 48, 101, 104, 101, 111, 101, 109,
+ 109, 101, 25, 48, 101, 101, 101, 101,
+ 101, 104, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 25, 101, 104, 101, 101,
+ 101, 109, 109, 101, 25, 48, 101, 101,
+ 101, 101, 101, 104, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 25, 101, 112,
+ 113, 114, 114, 22, 23, 48, 101, 101,
+ 101, 22, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 23, 101, 113,
+ 114, 114, 22, 23, 48, 101, 101, 101,
+ 22, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 23, 101, 114, 114,
+ 22, 23, 48, 101, 101, 101, 22, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 23, 101, 48, 26, 26, 110,
+ 48, 26, 26, 26, 22, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 110, 26, 44, 45, 103, 103, 22, 23,
+ 48, 101, 101, 101, 22, 101, 101, 52,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 23, 101, 115, 116, 116, 22, 23, 48,
+ 101, 101, 101, 22, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 23,
+ 101, 105, 117, 101, 25, 48, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 25, 101, 109,
+ 109, 101, 25, 48, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 25, 101, 105, 101, 109,
+ 109, 101, 25, 48, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 25, 101, 109, 117, 101,
+ 25, 48, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 25, 101, 44, 45, 107, 103, 22,
+ 23, 48, 101, 101, 24, 22, 101, 101,
+ 52, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 23, 101, 20, 21, 21, 22, 23,
+ 118, 118, 118, 24, 22, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 23, 118, 20, 21, 21, 22, 23, 118,
+ 118, 118, 118, 22, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 23,
+ 118, 120, 121, 122, 123, 32, 33, 124,
+ 119, 119, 34, 32, 119, 119, 125, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 33,
+ 119, 126, 121, 123, 123, 32, 33, 124,
+ 119, 119, 119, 32, 119, 119, 125, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 33,
+ 119, 121, 123, 123, 32, 33, 124, 119,
+ 119, 119, 32, 119, 119, 125, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 33, 119,
+ 127, 119, 119, 119, 128, 129, 119, 35,
+ 124, 119, 119, 119, 119, 119, 127, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 35, 119, 120, 121, 122, 49, 32, 33,
+ 124, 119, 119, 34, 32, 119, 119, 125,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 33, 119, 127, 119, 119, 119, 130, 129,
+ 119, 35, 124, 119, 119, 119, 119, 119,
+ 127, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 35, 119, 124, 119, 119, 131,
+ 124, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 131, 119, 124, 119, 124, 119, 119, 119,
+ 124, 119, 127, 119, 132, 119, 130, 130,
+ 119, 35, 124, 119, 119, 119, 119, 119,
+ 127, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 35, 119, 127, 119, 119, 119,
+ 130, 130, 119, 35, 124, 119, 119, 119,
+ 119, 119, 127, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 35, 119, 133, 134,
+ 135, 135, 32, 33, 124, 119, 119, 119,
+ 32, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 33, 119, 134, 135,
+ 135, 32, 33, 124, 119, 119, 119, 32,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 33, 119, 135, 135, 32,
+ 33, 124, 119, 119, 119, 32, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 33, 119, 124, 119, 119, 131, 124,
+ 119, 119, 119, 32, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 131,
+ 119, 120, 121, 123, 123, 32, 33, 124,
+ 119, 119, 119, 32, 119, 119, 125, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 33,
+ 119, 136, 137, 137, 32, 33, 124, 119,
+ 119, 119, 32, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 33, 119,
+ 128, 138, 119, 35, 124, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 35, 119, 130, 130,
+ 119, 35, 124, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 35, 119, 128, 119, 130, 130,
+ 119, 35, 124, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 35, 119, 130, 138, 119, 35,
+ 124, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 35, 119, 42, 43, 44, 45, 107, 103,
+ 22, 23, 48, 49, 49, 24, 22, 101,
+ 42, 52, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 23, 101, 57, 139, 59, 60,
+ 4, 5, 61, 56, 56, 8, 4, 56,
+ 56, 62, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 5, 56, 42, 43, 44, 45,
+ 140, 141, 22, 142, 143, 56, 49, 24,
+ 22, 56, 42, 52, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 142, 56, 20, 144,
+ 144, 22, 142, 61, 56, 56, 24, 22,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 142, 56, 61, 56, 56,
+ 68, 61, 56, 56, 56, 22, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 68, 56, 143, 56, 56, 145, 143,
+ 56, 56, 56, 22, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 145,
+ 56, 143, 56, 143, 56, 56, 56, 143,
+ 56, 42, 56, 69, 20, 144, 144, 22,
+ 142, 61, 56, 56, 56, 22, 56, 42,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 142, 56, 147, 146, 148, 148, 146,
+ 40, 149, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 40, 146, 148, 148, 146, 40, 149,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 40,
+ 146, 149, 146, 146, 150, 149, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 150, 146, 149,
+ 146, 149, 146, 146, 146, 149, 146, 42,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 49, 118, 118, 118, 118, 42, 118, 0
};
static const unsigned char _indic_syllable_machine_trans_targs[] = {
@@ -330,41 +996,41 @@ static const unsigned char _indic_syllable_machine_trans_targs[] = {
93, 84, 31, 19, 98, 31, 107, 24,
113, 116, 117, 108, 26, 122, 127, 31,
134, 31, 32, 53, 79, 81, 100, 101,
- 85, 102, 123, 124, 94, 132, 137, 31,
- 33, 35, 6, 52, 38, 47, 34, 1,
- 36, 40, 0, 39, 41, 44, 45, 3,
- 48, 5, 49, 31, 54, 56, 14, 77,
- 62, 70, 55, 7, 57, 72, 64, 58,
- 13, 76, 59, 8, 63, 65, 67, 68,
- 10, 71, 12, 73, 31, 80, 20, 82,
- 96, 87, 15, 99, 16, 86, 88, 90,
- 91, 18, 95, 21, 97, 31, 31, 103,
- 105, 22, 27, 109, 118, 104, 106, 120,
- 111, 23, 110, 112, 114, 115, 25, 119,
- 28, 121, 125, 126, 131, 128, 129, 29,
- 130, 31, 133, 30, 135, 136
+ 85, 102, 123, 124, 94, 132, 137, 92,
+ 31, 33, 35, 6, 52, 38, 47, 34,
+ 1, 36, 40, 0, 39, 41, 44, 45,
+ 3, 48, 5, 49, 31, 54, 56, 14,
+ 77, 62, 70, 55, 7, 57, 72, 64,
+ 58, 13, 76, 59, 8, 63, 65, 67,
+ 68, 10, 71, 12, 73, 31, 80, 20,
+ 82, 96, 87, 15, 99, 16, 86, 88,
+ 90, 91, 18, 95, 21, 97, 31, 31,
+ 103, 105, 22, 27, 109, 118, 104, 106,
+ 120, 111, 23, 110, 112, 114, 115, 25,
+ 119, 28, 121, 125, 126, 131, 128, 129,
+ 29, 130, 31, 133, 30, 135, 136
};
static const char _indic_syllable_machine_trans_actions[] = {
1, 0, 2, 0, 2, 0, 0, 2,
2, 3, 2, 0, 2, 0, 0, 0,
- 2, 2, 2, 4, 2, 0, 5, 0,
+ 2, 2, 2, 4, 2, 0, 5, 5,
5, 0, 6, 0, 2, 7, 2, 0,
2, 0, 2, 0, 0, 2, 0, 8,
0, 11, 2, 2, 5, 0, 12, 12,
0, 2, 5, 2, 5, 2, 0, 13,
- 2, 0, 0, 2, 0, 2, 2, 0,
- 2, 2, 0, 0, 2, 2, 2, 0,
- 0, 0, 2, 14, 2, 0, 0, 2,
- 0, 2, 2, 0, 2, 2, 2, 2,
+ 14, 2, 0, 0, 2, 0, 2, 2,
0, 2, 2, 0, 0, 2, 2, 2,
- 0, 0, 0, 2, 15, 5, 0, 5,
- 2, 2, 0, 5, 0, 0, 2, 5,
- 5, 0, 0, 0, 2, 16, 17, 2,
- 0, 0, 0, 0, 2, 2, 2, 2,
- 2, 0, 0, 2, 2, 2, 0, 0,
- 0, 2, 0, 18, 18, 0, 0, 0,
- 0, 19, 2, 0, 0, 0
+ 0, 0, 0, 2, 15, 2, 0, 0,
+ 2, 0, 2, 2, 0, 2, 2, 2,
+ 2, 0, 2, 2, 0, 0, 2, 2,
+ 2, 0, 0, 0, 2, 16, 5, 0,
+ 5, 2, 2, 0, 5, 0, 0, 2,
+ 5, 5, 0, 0, 0, 2, 17, 18,
+ 2, 0, 0, 0, 0, 2, 2, 2,
+ 2, 2, 0, 0, 2, 2, 2, 0,
+ 0, 0, 2, 0, 19, 19, 0, 0,
+ 0, 0, 20, 2, 0, 0, 0
};
static const char _indic_syllable_machine_to_state_actions[] = {
@@ -414,20 +1080,20 @@ static const short _indic_syllable_machine_eof_trans[] = {
10, 10, 10, 10, 10, 10, 10, 20,
20, 27, 20, 27, 20, 20, 30, 30,
30, 30, 30, 30, 30, 1, 40, 0,
- 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 101,
- 101, 101, 101, 101, 101, 101, 101, 101,
- 101, 101, 101, 101, 101, 101, 101, 101,
- 101, 101, 101, 101, 118, 118, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 101, 56, 56, 56, 56,
- 56, 56, 56, 56, 146, 146, 146, 146,
- 146, 118
+ 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 27, 102, 102, 102,
+ 102, 102, 102, 102, 119, 119, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 102, 57, 57, 57, 57,
+ 57, 57, 57, 57, 147, 147, 147, 147,
+ 147, 119
};
static const int indic_syllable_machine_start = 31;
@@ -441,7 +1107,7 @@ static const int indic_syllable_machine_en_main = 31;
-#line 118 "hb-ot-shaper-indic-machine.rl"
+#line 121 "hb-ot-shaper-indic-machine.rl"
#define found_syllable(syllable_type) \
@@ -460,7 +1126,7 @@ find_syllables_indic (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 464 "hb-ot-shaper-indic-machine.hh"
+#line 1130 "hb-ot-shaper-indic-machine.hh"
{
cs = indic_syllable_machine_start;
ts = 0;
@@ -468,7 +1134,7 @@ find_syllables_indic (hb_buffer_t *buffer)
act = 0;
}
-#line 138 "hb-ot-shaper-indic-machine.rl"
+#line 141 "hb-ot-shaper-indic-machine.rl"
p = 0;
@@ -476,7 +1142,7 @@ find_syllables_indic (hb_buffer_t *buffer)
unsigned int syllable_serial = 1;
-#line 480 "hb-ot-shaper-indic-machine.hh"
+#line 1146 "hb-ot-shaper-indic-machine.hh"
{
int _slen;
int _trans;
@@ -490,7 +1156,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
-#line 494 "hb-ot-shaper-indic-machine.hh"
+#line 1160 "hb-ot-shaper-indic-machine.hh"
}
_keys = _indic_syllable_machine_trans_keys + (cs<<1);
@@ -513,51 +1179,51 @@ _eof_trans:
{te = p+1;}
break;
case 11:
-#line 114 "hb-ot-shaper-indic-machine.rl"
+#line 117 "hb-ot-shaper-indic-machine.rl"
{te = p+1;{ found_syllable (indic_non_indic_cluster); }}
break;
- case 13:
-#line 109 "hb-ot-shaper-indic-machine.rl"
+ case 14:
+#line 111 "hb-ot-shaper-indic-machine.rl"
{te = p;p--;{ found_syllable (indic_consonant_syllable); }}
break;
- case 14:
-#line 110 "hb-ot-shaper-indic-machine.rl"
+ case 15:
+#line 112 "hb-ot-shaper-indic-machine.rl"
{te = p;p--;{ found_syllable (indic_vowel_syllable); }}
break;
- case 17:
-#line 111 "hb-ot-shaper-indic-machine.rl"
+ case 18:
+#line 113 "hb-ot-shaper-indic-machine.rl"
{te = p;p--;{ found_syllable (indic_standalone_cluster); }}
break;
- case 19:
-#line 112 "hb-ot-shaper-indic-machine.rl"
+ case 20:
+#line 114 "hb-ot-shaper-indic-machine.rl"
{te = p;p--;{ found_syllable (indic_symbol_cluster); }}
break;
- case 15:
-#line 113 "hb-ot-shaper-indic-machine.rl"
+ case 16:
+#line 116 "hb-ot-shaper-indic-machine.rl"
{te = p;p--;{ found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
break;
- case 16:
-#line 114 "hb-ot-shaper-indic-machine.rl"
+ case 17:
+#line 117 "hb-ot-shaper-indic-machine.rl"
{te = p;p--;{ found_syllable (indic_non_indic_cluster); }}
break;
case 1:
-#line 109 "hb-ot-shaper-indic-machine.rl"
+#line 111 "hb-ot-shaper-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (indic_consonant_syllable); }}
break;
case 3:
-#line 110 "hb-ot-shaper-indic-machine.rl"
+#line 112 "hb-ot-shaper-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (indic_vowel_syllable); }}
break;
case 7:
-#line 111 "hb-ot-shaper-indic-machine.rl"
+#line 113 "hb-ot-shaper-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (indic_standalone_cluster); }}
break;
case 8:
-#line 112 "hb-ot-shaper-indic-machine.rl"
+#line 114 "hb-ot-shaper-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (indic_symbol_cluster); }}
break;
case 4:
-#line 113 "hb-ot-shaper-indic-machine.rl"
+#line 116 "hb-ot-shaper-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
break;
case 6:
@@ -567,33 +1233,42 @@ _eof_trans:
{{p = ((te))-1;} found_syllable (indic_consonant_syllable); }
break;
case 5:
- {{p = ((te))-1;} found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
+ {{p = ((te))-1;} found_syllable (indic_non_indic_cluster); }
break;
case 6:
+ {{p = ((te))-1;} found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
+ break;
+ case 7:
{{p = ((te))-1;} found_syllable (indic_non_indic_cluster); }
break;
}
}
break;
- case 18:
+ case 19:
#line 1 "NONE"
{te = p+1;}
-#line 109 "hb-ot-shaper-indic-machine.rl"
+#line 111 "hb-ot-shaper-indic-machine.rl"
{act = 1;}
break;
- case 5:
+ case 13:
#line 1 "NONE"
{te = p+1;}
-#line 113 "hb-ot-shaper-indic-machine.rl"
+#line 115 "hb-ot-shaper-indic-machine.rl"
{act = 5;}
break;
- case 12:
+ case 5:
#line 1 "NONE"
{te = p+1;}
-#line 114 "hb-ot-shaper-indic-machine.rl"
+#line 116 "hb-ot-shaper-indic-machine.rl"
{act = 6;}
break;
-#line 597 "hb-ot-shaper-indic-machine.hh"
+ case 12:
+#line 1 "NONE"
+ {te = p+1;}
+#line 117 "hb-ot-shaper-indic-machine.rl"
+ {act = 7;}
+ break;
+#line 1272 "hb-ot-shaper-indic-machine.hh"
}
_again:
@@ -602,7 +1277,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
-#line 606 "hb-ot-shaper-indic-machine.hh"
+#line 1281 "hb-ot-shaper-indic-machine.hh"
}
if ( ++p != pe )
@@ -618,7 +1293,7 @@ _again:
}
-#line 146 "hb-ot-shaper-indic-machine.rl"
+#line 149 "hb-ot-shaper-indic-machine.rl"
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-table.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-table.cc
index adea32efdae..b87c530853b 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-table.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-indic-table.cc
@@ -48,6 +48,7 @@
#define OT_CM I_Cat(CM)
#define OT_Symbol I_Cat(Symbol)
#define OT_CS I_Cat(CS)
+#define OT_SMPst I_Cat(SMPst)
/* khmer */
#define OT_VAbv K_Cat(VAbv)
#define OT_VBlw K_Cat(VBlw)
@@ -94,7 +95,8 @@ static_assert (OT_VPst == M_Cat(VPst), "");
#define _OT_R OT_Ra /* 14 chars; Ra */
#define _OT_Rf OT_Repha /* 1 chars; Repha */
#define _OT_Rt OT_Robatic /* 3 chars; Robatic */
-#define _OT_SM OT_SM /* 56 chars; SM */
+#define _OT_SM OT_SM /* 50 chars; SM */
+#define _OT_SP OT_SMPst /* 6 chars; SMPst */
#define _OT_S OT_Symbol /* 22 chars; Symbol */
#define _OT_V OT_V /* 172 chars; V */
#define _OT_VA OT_VAbv /* 18 chars; VAbv */
@@ -145,7 +147,7 @@ static const uint16_t indic_table[] = {
/* Latin-1 Supplement */
- /* 00B0 */ _(X,X), _(X,X),_(SM,SM),_(SM,SM), _(X,X), _(X,X), _(X,X), _(X,X),
+ /* 00B0 */ _(X,X), _(X,X),_(SP,SM),_(SP,SM), _(X,X), _(X,X), _(X,X), _(X,X),
/* 00B8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
/* 00C0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
/* 00C8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
@@ -398,9 +400,9 @@ static const uint16_t indic_table[] = {
/* Superscripts and Subscripts */
- /* 2070 */ _(X,X), _(X,X), _(X,X), _(X,X),_(SM,SM), _(X,X), _(X,X), _(X,X),
+ /* 2070 */ _(X,X), _(X,X), _(X,X), _(X,X),_(SP,SM), _(X,X), _(X,X), _(X,X),
/* 2078 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
- /* 2080 */ _(X,X), _(X,X),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(X,X), _(X,X),
+ /* 2080 */ _(X,X), _(X,X),_(SP,SM),_(SP,SM),_(SP,SM), _(X,X), _(X,X), _(X,X),
#define indic_offset_0x25f8u 1592
@@ -540,6 +542,7 @@ hb_indic_get_categories (hb_codepoint_t u)
#undef _OT_Rf
#undef _OT_Rt
#undef _OT_SM
+#undef _OT_SP
#undef _OT_S
#undef _OT_V
#undef _OT_VA
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-myanmar-machine.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-myanmar-machine.hh
index f7b456b11f6..4b8da586d37 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-myanmar-machine.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-myanmar-machine.hh
@@ -68,6 +68,7 @@ enum myanmar_syllable_type_t {
#define myanmar_syllable_machine_ex_PT 39u
#define myanmar_syllable_machine_ex_Ra 15u
#define myanmar_syllable_machine_ex_SM 8u
+#define myanmar_syllable_machine_ex_SMPst 57u
#define myanmar_syllable_machine_ex_VAbv 20u
#define myanmar_syllable_machine_ex_VBlw 21u
#define myanmar_syllable_machine_ex_VPre 22u
@@ -77,35 +78,35 @@ enum myanmar_syllable_type_t {
#define myanmar_syllable_machine_ex_ZWNJ 5u
-#line 81 "hb-ot-shaper-myanmar-machine.hh"
+#line 82 "hb-ot-shaper-myanmar-machine.hh"
static const unsigned char _myanmar_syllable_machine_trans_keys[] = {
- 1u, 41u, 3u, 41u, 5u, 39u, 5u, 8u, 3u, 41u, 3u, 39u, 3u, 39u, 5u, 39u,
- 5u, 39u, 3u, 39u, 3u, 39u, 3u, 41u, 5u, 39u, 1u, 15u, 3u, 39u, 3u, 39u,
- 3u, 40u, 3u, 39u, 3u, 41u, 3u, 41u, 3u, 39u, 3u, 41u, 3u, 41u, 3u, 41u,
- 3u, 41u, 3u, 41u, 5u, 39u, 5u, 8u, 3u, 41u, 3u, 39u, 3u, 39u, 5u, 39u,
- 5u, 39u, 3u, 39u, 3u, 39u, 3u, 41u, 5u, 39u, 1u, 15u, 3u, 41u, 3u, 39u,
- 3u, 39u, 3u, 40u, 3u, 39u, 3u, 41u, 3u, 41u, 3u, 39u, 3u, 41u, 3u, 41u,
- 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 1u, 41u, 1u, 15u, 0
+ 1u, 57u, 3u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u,
+ 3u, 57u, 3u, 57u, 3u, 57u, 5u, 57u, 1u, 15u, 3u, 57u, 3u, 57u, 3u, 57u,
+ 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u,
+ 3u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 3u, 57u,
+ 3u, 57u, 3u, 57u, 5u, 57u, 1u, 15u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u,
+ 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u,
+ 3u, 57u, 3u, 57u, 3u, 57u, 1u, 57u, 1u, 15u, 0
};
static const char _myanmar_syllable_machine_key_spans[] = {
- 41, 39, 35, 4, 39, 37, 37, 35,
- 35, 37, 37, 39, 35, 15, 37, 37,
- 38, 37, 39, 39, 37, 39, 39, 39,
- 39, 39, 35, 4, 39, 37, 37, 35,
- 35, 37, 37, 39, 35, 15, 39, 37,
- 37, 38, 37, 39, 39, 37, 39, 39,
- 39, 39, 39, 39, 39, 41, 15
+ 57, 55, 53, 53, 55, 53, 55, 55,
+ 55, 55, 55, 53, 15, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 53, 53, 55, 53, 55, 55, 55,
+ 55, 55, 53, 15, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 57, 15
};
static const short _myanmar_syllable_machine_index_offsets[] = {
- 0, 42, 82, 118, 123, 163, 201, 239,
- 275, 311, 349, 387, 427, 463, 479, 517,
- 555, 594, 632, 672, 712, 750, 790, 830,
- 870, 910, 950, 986, 991, 1031, 1069, 1107,
- 1143, 1179, 1217, 1255, 1295, 1331, 1347, 1387,
- 1425, 1463, 1502, 1540, 1580, 1620, 1658, 1698,
- 1738, 1778, 1818, 1858, 1898, 1938, 1980
+ 0, 58, 114, 168, 222, 278, 332, 388,
+ 444, 500, 556, 612, 666, 682, 738, 794,
+ 850, 906, 962, 1018, 1074, 1130, 1186, 1242,
+ 1298, 1354, 1408, 1462, 1518, 1572, 1628, 1684,
+ 1740, 1796, 1852, 1906, 1922, 1978, 2034, 2090,
+ 2146, 2202, 2258, 2314, 2370, 2426, 2482, 2538,
+ 2594, 2650, 2706, 2762, 2820
};
static const char _myanmar_syllable_machine_indicies[] = {
@@ -114,273 +115,378 @@ static const char _myanmar_syllable_machine_indicies[] = {
0, 8, 0, 9, 10, 11, 12, 0,
0, 0, 0, 0, 0, 0, 0, 13,
0, 0, 14, 15, 16, 17, 18, 19,
- 20, 0, 22, 23, 24, 24, 21, 25,
- 26, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 27, 28, 29, 30, 21,
- 21, 21, 21, 21, 21, 21, 21, 31,
- 21, 21, 32, 33, 34, 35, 36, 37,
- 38, 21, 24, 24, 21, 25, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 30, 21, 21, 21,
- 21, 21, 21, 21, 21, 39, 21, 21,
- 21, 21, 21, 21, 36, 21, 24, 24,
- 21, 25, 21, 22, 21, 24, 24, 21,
- 25, 26, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 40, 21, 21, 30,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 41, 21, 21, 42, 21, 21, 21, 36,
- 21, 41, 21, 22, 21, 24, 24, 21,
- 25, 26, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 30,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 36,
- 21, 43, 21, 24, 24, 21, 25, 36,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 44, 21,
- 21, 21, 21, 21, 21, 36, 21, 24,
- 24, 21, 25, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 44, 21, 21, 21, 21, 21,
- 21, 36, 21, 24, 24, 21, 25, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 36, 21, 22,
- 21, 24, 24, 21, 25, 26, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 40, 21, 21, 30, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 36, 21, 22, 21, 24,
- 24, 21, 25, 26, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 40, 21,
- 21, 30, 21, 21, 21, 21, 21, 21,
- 21, 21, 41, 21, 21, 21, 21, 21,
- 21, 36, 21, 22, 21, 24, 24, 21,
- 25, 26, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 40, 21, 21, 30,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 41, 21, 21, 21, 21, 21, 21, 36,
- 21, 41, 21, 24, 24, 21, 25, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 30, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 36, 21, 1,
- 1, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 1, 21, 22,
- 21, 24, 24, 21, 25, 26, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 27, 28, 21, 30, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 36, 21, 22, 21, 24,
- 24, 21, 25, 26, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 28,
- 21, 30, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 36, 21, 22, 21, 24, 24, 21,
- 25, 26, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 27, 28, 29, 30,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 36,
- 45, 21, 22, 21, 24, 24, 21, 25,
- 26, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 27, 28, 29, 30, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 36, 21,
- 22, 21, 24, 24, 21, 25, 26, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 27, 28, 29, 30, 21, 21, 21,
- 21, 21, 21, 21, 21, 31, 21, 21,
- 32, 33, 34, 35, 36, 21, 38, 21,
- 22, 21, 24, 24, 21, 25, 26, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 27, 28, 29, 30, 21, 21, 21,
- 21, 21, 21, 21, 21, 45, 21, 21,
- 21, 21, 21, 21, 36, 21, 38, 21,
- 22, 21, 24, 24, 21, 25, 26, 21,
- 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 27, 28, 29, 30, 21, 21, 21,
- 21, 21, 21, 21, 21, 45, 21, 21,
- 21, 21, 21, 21, 36, 21, 22, 21,
- 24, 24, 21, 25, 26, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 27,
- 28, 29, 30, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 32, 21,
- 34, 21, 36, 21, 38, 21, 22, 21,
- 24, 24, 21, 25, 26, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 27,
- 28, 29, 30, 21, 21, 21, 21, 21,
- 21, 21, 21, 45, 21, 21, 32, 21,
- 21, 21, 36, 21, 38, 21, 22, 21,
- 24, 24, 21, 25, 26, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 27,
- 28, 29, 30, 21, 21, 21, 21, 21,
- 21, 21, 21, 46, 21, 21, 32, 33,
- 34, 21, 36, 21, 38, 21, 22, 21,
- 24, 24, 21, 25, 26, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 27,
- 28, 29, 30, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 32, 33,
- 34, 21, 36, 21, 38, 21, 22, 23,
- 24, 24, 21, 25, 26, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 27,
- 28, 29, 30, 21, 21, 21, 21, 21,
- 21, 21, 21, 31, 21, 21, 32, 33,
- 34, 35, 36, 21, 38, 21, 48, 48,
+ 20, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 0, 23, 24, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 32,
+ 22, 22, 33, 34, 35, 36, 37, 38,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 25, 25, 22, 26, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 31, 22, 22, 22,
+ 22, 22, 22, 22, 22, 40, 22, 22,
+ 22, 22, 22, 22, 37, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 26, 22,
+ 25, 25, 22, 26, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 37, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 26, 22, 41, 22,
+ 25, 25, 22, 26, 37, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 26, 22, 22, 22, 22,
+ 22, 22, 37, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 26, 22, 25, 25,
+ 22, 26, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 26, 22, 22, 22, 22, 22, 22,
+ 37, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 26, 22, 23, 22, 25, 25,
+ 22, 26, 27, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 42, 22, 22,
+ 31, 22, 22, 22, 22, 22, 22, 22,
+ 22, 43, 22, 22, 44, 22, 22, 22,
+ 37, 22, 43, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 26, 22, 23, 22, 25, 25,
+ 22, 26, 27, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 31, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 37, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 26, 22, 23, 22, 25, 25,
+ 22, 26, 27, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 42, 22, 22,
+ 31, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 37, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 26, 22, 23, 22, 25, 25,
+ 22, 26, 27, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 42, 22, 22,
+ 31, 22, 22, 22, 22, 22, 22, 22,
+ 22, 43, 22, 22, 22, 22, 22, 22,
+ 37, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 26, 22, 23, 22, 25, 25,
+ 22, 26, 27, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 42, 22, 22,
+ 31, 22, 22, 22, 22, 22, 22, 22,
+ 22, 43, 22, 22, 22, 22, 22, 22,
+ 37, 22, 43, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 26, 22, 25, 25, 22, 26,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 37, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 1, 1, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 1, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 22, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 37, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 29, 22, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 37, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 37, 45,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 37, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 32,
+ 22, 22, 33, 34, 35, 36, 37, 22,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 45,
+ 22, 22, 22, 22, 22, 22, 37, 22,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 45,
+ 22, 22, 22, 22, 22, 22, 37, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 33, 22, 35, 22, 37, 22,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 45,
+ 22, 22, 33, 22, 22, 22, 37, 22,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 46,
+ 22, 22, 33, 34, 35, 22, 37, 22,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 22, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 33, 34, 35, 22, 37, 22,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 24, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 32,
+ 22, 22, 33, 34, 35, 36, 37, 22,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 48, 48, 47, 5, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 12, 47, 47, 47,
+ 47, 47, 47, 47, 47, 49, 47, 47,
+ 47, 47, 47, 47, 18, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 5, 47,
+ 48, 48, 50, 5, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 18, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 5, 50, 51, 47,
+ 48, 48, 47, 5, 18, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 5, 47, 47, 47, 47,
+ 47, 47, 18, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 5, 47, 48, 48,
47, 5, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 5, 47, 47, 47, 47, 47, 47,
+ 18, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 5, 47, 2, 47, 48, 48,
+ 47, 5, 6, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 52, 47, 47,
+ 12, 47, 47, 47, 47, 47, 47, 47,
+ 47, 53, 47, 47, 54, 47, 47, 47,
+ 18, 47, 53, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 5, 47, 2, 47, 48, 48,
+ 47, 5, 6, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 12, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 18, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 5, 47, 2, 47, 48, 48,
+ 47, 5, 6, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 52, 47, 47,
+ 12, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 18, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 5, 47, 2, 47, 48, 48,
+ 47, 5, 6, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 52, 47, 47,
+ 12, 47, 47, 47, 47, 47, 47, 47,
+ 47, 53, 47, 47, 47, 47, 47, 47,
+ 18, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 5, 47, 2, 47, 48, 48,
+ 47, 5, 6, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 52, 47, 47,
12, 47, 47, 47, 47, 47, 47, 47,
- 47, 49, 47, 47, 47, 47, 47, 47,
- 18, 47, 48, 48, 47, 5, 47, 2,
- 47, 48, 48, 47, 5, 6, 47, 47,
+ 47, 53, 47, 47, 47, 47, 47, 47,
+ 18, 47, 53, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 50, 47, 47, 12, 47, 47, 47, 47,
- 47, 47, 47, 47, 51, 47, 47, 52,
- 47, 47, 47, 18, 47, 51, 47, 2,
- 47, 48, 48, 47, 5, 6, 47, 47,
+ 47, 47, 5, 47, 48, 48, 47, 5,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 12, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 12, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 18, 47, 53, 47, 48,
- 48, 47, 5, 18, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 18, 47,
47, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 54, 47, 47, 47, 47, 47,
- 47, 18, 47, 48, 48, 47, 5, 47,
+ 5, 47, 55, 55, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
+ 55, 47, 2, 3, 48, 48, 47, 5,
+ 6, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 9, 10, 11, 12, 47,
+ 47, 47, 47, 47, 47, 47, 47, 13,
+ 47, 47, 14, 15, 16, 17, 18, 19,
+ 20, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 54, 47,
- 47, 47, 47, 47, 47, 18, 47, 48,
- 48, 47, 5, 47, 47, 47, 47, 47,
+ 5, 47, 2, 47, 48, 48, 47, 5,
+ 6, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 9, 10, 47, 12, 47,
47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 18, 47,
47, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 18, 47, 2, 47, 48, 48, 47,
- 5, 6, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 50, 47, 47, 12,
+ 5, 47, 2, 47, 48, 48, 47, 5,
+ 6, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 10, 47, 12, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 18,
- 47, 2, 47, 48, 48, 47, 5, 6,
+ 47, 47, 47, 47, 47, 47, 18, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 50, 47, 47, 12, 47, 47,
- 47, 47, 47, 47, 47, 47, 51, 47,
- 47, 47, 47, 47, 47, 18, 47, 2,
- 47, 48, 48, 47, 5, 6, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 50, 47, 47, 12, 47, 47, 47, 47,
- 47, 47, 47, 47, 51, 47, 47, 47,
- 47, 47, 47, 18, 47, 51, 47, 48,
- 48, 47, 5, 47, 47, 47, 47, 47,
+ 5, 47, 2, 47, 48, 48, 47, 5,
+ 6, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 9, 10, 11, 12, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 12, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 18, 56,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 18, 47, 55, 55, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 55, 47, 2, 3, 48, 48, 47,
- 5, 6, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 9, 10, 11, 12,
+ 5, 47, 2, 47, 48, 48, 47, 5,
+ 6, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 9, 10, 11, 12, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 13, 47, 47, 14, 15, 16, 17, 18,
- 19, 20, 47, 2, 47, 48, 48, 47,
- 5, 6, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 9, 10, 47, 12,
+ 47, 47, 47, 47, 47, 47, 18, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 18,
- 47, 2, 47, 48, 48, 47, 5, 6,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 10, 47, 12, 47, 47,
+ 5, 47, 2, 47, 48, 48, 47, 5,
+ 6, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 9, 10, 11, 12, 47,
+ 47, 47, 47, 47, 47, 47, 47, 13,
+ 47, 47, 14, 15, 16, 17, 18, 47,
+ 20, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 18, 47, 2,
- 47, 48, 48, 47, 5, 6, 47, 47,
+ 5, 47, 2, 47, 48, 48, 47, 5,
+ 6, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 9, 10, 11, 12, 47,
+ 47, 47, 47, 47, 47, 47, 47, 56,
+ 47, 47, 47, 47, 47, 47, 18, 47,
+ 20, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 9, 10, 11, 12, 47, 47, 47, 47,
+ 5, 47, 2, 47, 48, 48, 47, 5,
+ 6, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 9, 10, 11, 12, 47,
+ 47, 47, 47, 47, 47, 47, 47, 56,
+ 47, 47, 47, 47, 47, 47, 18, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 18, 56, 47, 2, 47,
- 48, 48, 47, 5, 6, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 9,
- 10, 11, 12, 47, 47, 47, 47, 47,
47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 18, 47, 2, 47, 48, 48,
- 47, 5, 6, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 9, 10, 11,
- 12, 47, 47, 47, 47, 47, 47, 47,
- 47, 13, 47, 47, 14, 15, 16, 17,
- 18, 47, 20, 47, 2, 47, 48, 48,
- 47, 5, 6, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 9, 10, 11,
- 12, 47, 47, 47, 47, 47, 47, 47,
- 47, 56, 47, 47, 47, 47, 47, 47,
- 18, 47, 20, 47, 2, 47, 48, 48,
- 47, 5, 6, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 9, 10, 11,
- 12, 47, 47, 47, 47, 47, 47, 47,
- 47, 56, 47, 47, 47, 47, 47, 47,
- 18, 47, 2, 47, 48, 48, 47, 5,
+ 5, 47, 2, 47, 48, 48, 47, 5,
6, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 9, 10, 11, 12, 47,
47, 47, 47, 47, 47, 47, 47, 47,
47, 47, 14, 47, 16, 47, 18, 47,
- 20, 47, 2, 47, 48, 48, 47, 5,
+ 20, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 5, 47, 2, 47, 48, 48, 47, 5,
6, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 9, 10, 11, 12, 47,
47, 47, 47, 47, 47, 47, 47, 56,
47, 47, 14, 47, 47, 47, 18, 47,
- 20, 47, 2, 47, 48, 48, 47, 5,
+ 20, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 5, 47, 2, 47, 48, 48, 47, 5,
6, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 9, 10, 11, 12, 47,
47, 47, 47, 47, 47, 47, 47, 57,
47, 47, 14, 15, 16, 47, 18, 47,
- 20, 47, 2, 47, 48, 48, 47, 5,
+ 20, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 5, 47, 2, 47, 48, 48, 47, 5,
6, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 9, 10, 11, 12, 47,
47, 47, 47, 47, 47, 47, 47, 47,
47, 47, 14, 15, 16, 47, 18, 47,
- 20, 47, 2, 3, 48, 48, 47, 5,
+ 20, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 5, 47, 2, 3, 48, 48, 47, 5,
6, 47, 47, 47, 47, 47, 47, 47,
47, 47, 47, 9, 10, 11, 12, 47,
47, 47, 47, 47, 47, 47, 47, 13,
47, 47, 14, 15, 16, 17, 18, 47,
- 20, 47, 22, 23, 24, 24, 21, 25,
- 26, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 27, 28, 29, 30, 21,
- 21, 21, 21, 21, 21, 21, 21, 58,
- 21, 21, 32, 33, 34, 35, 36, 37,
- 38, 21, 22, 59, 24, 24, 21, 25,
- 26, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 27, 28, 29, 30, 21,
- 21, 21, 21, 21, 21, 21, 21, 31,
- 21, 21, 32, 33, 34, 35, 36, 21,
- 38, 21, 1, 1, 2, 3, 48, 48,
+ 20, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 5, 47, 23, 24, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 58,
+ 22, 22, 33, 34, 35, 36, 37, 38,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 23, 59, 25, 25, 22, 26,
+ 27, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 28, 29, 30, 31, 22,
+ 22, 22, 22, 22, 22, 22, 22, 32,
+ 22, 22, 33, 34, 35, 36, 37, 22,
+ 39, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 26, 22, 1, 1, 2, 3, 48, 48,
47, 5, 6, 1, 1, 47, 47, 47,
1, 47, 47, 47, 47, 9, 10, 11,
12, 47, 47, 47, 47, 47, 47, 47,
47, 13, 47, 47, 14, 15, 16, 17,
- 18, 19, 20, 47, 1, 1, 60, 60,
+ 18, 19, 20, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 5, 47, 1, 1, 60, 60,
60, 60, 60, 60, 60, 1, 1, 60,
60, 60, 1, 60, 0
};
static const char _myanmar_syllable_machine_trans_targs[] = {
- 0, 1, 26, 37, 0, 27, 29, 51,
- 54, 39, 40, 41, 28, 43, 44, 46,
- 47, 48, 30, 50, 45, 0, 2, 13,
- 0, 3, 5, 14, 15, 16, 4, 18,
- 19, 21, 22, 23, 6, 25, 20, 12,
- 9, 10, 11, 7, 8, 17, 24, 0,
- 0, 36, 33, 34, 35, 31, 32, 38,
- 42, 49, 52, 53, 0
+ 0, 1, 25, 35, 0, 26, 30, 49,
+ 52, 37, 38, 39, 29, 41, 42, 44,
+ 45, 46, 27, 48, 43, 26, 0, 2,
+ 12, 0, 3, 7, 13, 14, 15, 6,
+ 17, 18, 20, 21, 22, 4, 24, 19,
+ 11, 5, 8, 9, 10, 16, 23, 0,
+ 0, 34, 0, 28, 31, 32, 33, 36,
+ 40, 47, 50, 51, 0
};
static const char _myanmar_syllable_machine_trans_actions[] = {
- 3, 0, 0, 0, 4, 0, 0, 0,
+ 3, 0, 0, 0, 4, 5, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 5, 0, 0,
- 6, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 7, 0,
+ 0, 8, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 7,
- 8, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 9
+ 0, 0, 0, 0, 0, 0, 0, 9,
+ 10, 0, 11, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12
};
static const char _myanmar_syllable_machine_to_state_actions[] = {
@@ -390,7 +496,7 @@ static const char _myanmar_syllable_machine_to_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 0
};
static const char _myanmar_syllable_machine_from_state_actions[] = {
@@ -400,17 +506,17 @@ static const char _myanmar_syllable_machine_from_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 0
};
static const short _myanmar_syllable_machine_eof_trans[] = {
- 0, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 22, 22, 22, 22, 22, 22,
- 22, 22, 48, 48, 48, 48, 48, 48,
+ 0, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 48, 51, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
- 48, 48, 48, 22, 22, 48, 61
+ 48, 23, 23, 48, 61
};
static const int myanmar_syllable_machine_start = 0;
@@ -424,7 +530,7 @@ static const int myanmar_syllable_machine_en_main = 0;
-#line 117 "hb-ot-shaper-myanmar-machine.rl"
+#line 118 "hb-ot-shaper-myanmar-machine.rl"
#define found_syllable(syllable_type) \
@@ -443,7 +549,7 @@ find_syllables_myanmar (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 447 "hb-ot-shaper-myanmar-machine.hh"
+#line 553 "hb-ot-shaper-myanmar-machine.hh"
{
cs = myanmar_syllable_machine_start;
ts = 0;
@@ -451,7 +557,7 @@ find_syllables_myanmar (hb_buffer_t *buffer)
act = 0;
}
-#line 137 "hb-ot-shaper-myanmar-machine.rl"
+#line 138 "hb-ot-shaper-myanmar-machine.rl"
p = 0;
@@ -459,7 +565,7 @@ find_syllables_myanmar (hb_buffer_t *buffer)
unsigned int syllable_serial = 1;
-#line 463 "hb-ot-shaper-myanmar-machine.hh"
+#line 569 "hb-ot-shaper-myanmar-machine.hh"
{
int _slen;
int _trans;
@@ -473,7 +579,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
-#line 477 "hb-ot-shaper-myanmar-machine.hh"
+#line 583 "hb-ot-shaper-myanmar-machine.hh"
}
_keys = _myanmar_syllable_machine_trans_keys + (cs<<1);
@@ -491,35 +597,59 @@ _eof_trans:
goto _again;
switch ( _myanmar_syllable_machine_trans_actions[_trans] ) {
- case 6:
-#line 110 "hb-ot-shaper-myanmar-machine.rl"
+ case 8:
+#line 111 "hb-ot-shaper-myanmar-machine.rl"
{te = p+1;{ found_syllable (myanmar_consonant_syllable); }}
break;
case 4:
-#line 111 "hb-ot-shaper-myanmar-machine.rl"
+#line 112 "hb-ot-shaper-myanmar-machine.rl"
{te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }}
break;
- case 8:
-#line 112 "hb-ot-shaper-myanmar-machine.rl"
+ case 10:
+#line 113 "hb-ot-shaper-myanmar-machine.rl"
{te = p+1;{ found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
break;
case 3:
-#line 113 "hb-ot-shaper-myanmar-machine.rl"
+#line 114 "hb-ot-shaper-myanmar-machine.rl"
{te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }}
break;
- case 5:
-#line 110 "hb-ot-shaper-myanmar-machine.rl"
- {te = p;p--;{ found_syllable (myanmar_consonant_syllable); }}
- break;
case 7:
-#line 112 "hb-ot-shaper-myanmar-machine.rl"
- {te = p;p--;{ found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
+#line 111 "hb-ot-shaper-myanmar-machine.rl"
+ {te = p;p--;{ found_syllable (myanmar_consonant_syllable); }}
break;
case 9:
#line 113 "hb-ot-shaper-myanmar-machine.rl"
+ {te = p;p--;{ found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
+ break;
+ case 12:
+#line 114 "hb-ot-shaper-myanmar-machine.rl"
{te = p;p--;{ found_syllable (myanmar_non_myanmar_cluster); }}
break;
-#line 523 "hb-ot-shaper-myanmar-machine.hh"
+ case 11:
+#line 1 "NONE"
+ { switch( act ) {
+ case 2:
+ {{p = ((te))-1;} found_syllable (myanmar_non_myanmar_cluster); }
+ break;
+ case 3:
+ {{p = ((te))-1;} found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
+ break;
+ }
+ }
+ break;
+ case 6:
+#line 1 "NONE"
+ {te = p+1;}
+#line 112 "hb-ot-shaper-myanmar-machine.rl"
+ {act = 2;}
+ break;
+ case 5:
+#line 1 "NONE"
+ {te = p+1;}
+#line 113 "hb-ot-shaper-myanmar-machine.rl"
+ {act = 3;}
+ break;
+#line 653 "hb-ot-shaper-myanmar-machine.hh"
}
_again:
@@ -528,7 +658,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
-#line 532 "hb-ot-shaper-myanmar-machine.hh"
+#line 662 "hb-ot-shaper-myanmar-machine.hh"
}
if ( ++p != pe )
@@ -544,7 +674,7 @@ _again:
}
-#line 145 "hb-ot-shaper-myanmar-machine.rl"
+#line 146 "hb-ot-shaper-myanmar-machine.rl"
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-use-machine.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-use-machine.hh
index e9da28d457c..65b6adc36d9 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-use-machine.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shaper-use-machine.hh
@@ -166,556 +166,556 @@ static const unsigned char _use_syllable_machine_indicies[] = {
19, 20, 21, 8, 22, 23, 24, 25,
5, 26, 27, 28, 5, 29, 30, 31,
32, 33, 34, 35, 32, 1, 5, 36,
- 5, 37, 5, 5, 35, 5, 39, 40,
- 38, 41, 38, 38, 38, 38, 38, 38,
- 38, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 39, 51, 52, 53, 54, 38,
- 55, 56, 57, 38, 58, 59, 38, 60,
- 61, 62, 63, 60, 38, 38, 38, 38,
- 64, 38, 38, 63, 38, 39, 40, 38,
- 41, 38, 38, 38, 38, 38, 38, 38,
- 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 39, 51, 52, 53, 54, 38, 55,
- 56, 57, 38, 38, 38, 38, 60, 61,
- 62, 63, 60, 38, 38, 38, 38, 64,
- 38, 38, 63, 38, 39, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 41, 38, 38, 38, 38, 38, 38,
- 38, 38, 43, 44, 45, 46, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 55, 56, 57, 38, 38, 38, 38, 38,
- 61, 62, 63, 65, 38, 38, 38, 38,
- 43, 38, 41, 38, 38, 38, 38, 38,
- 38, 38, 38, 43, 44, 45, 46, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 55, 56, 57, 38, 38, 38, 38,
- 38, 61, 62, 63, 65, 38, 41, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 44, 45, 46, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 61, 62, 63,
- 38, 41, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 45, 46, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 61, 62, 63, 38, 41, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 46, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 61, 62, 63, 38, 41,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 61, 62,
- 38, 41, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 62, 38, 41, 38, 41, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 44,
- 45, 46, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 55, 56, 57, 38,
- 38, 38, 38, 38, 61, 62, 63, 65,
- 38, 41, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 44, 45, 46, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 56, 57, 38, 38, 38, 38, 38,
- 61, 62, 63, 65, 38, 41, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 44,
- 45, 46, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 57, 38,
- 38, 38, 38, 38, 61, 62, 63, 65,
- 38, 66, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 41, 38,
- 41, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 44, 45, 46, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 61,
- 62, 63, 65, 38, 41, 38, 38, 38,
- 38, 38, 38, 38, 42, 43, 44, 45,
- 46, 38, 38, 38, 38, 38, 38, 52,
- 53, 54, 38, 55, 56, 57, 38, 38,
- 38, 38, 38, 61, 62, 63, 65, 38,
- 38, 38, 38, 43, 38, 41, 38, 38,
- 38, 38, 38, 38, 38, 38, 43, 44,
- 45, 46, 38, 38, 38, 38, 38, 38,
- 52, 53, 54, 38, 55, 56, 57, 38,
- 38, 38, 38, 38, 61, 62, 63, 65,
- 38, 38, 38, 38, 43, 38, 41, 38,
- 38, 38, 38, 38, 38, 38, 38, 43,
- 44, 45, 46, 38, 38, 38, 38, 38,
- 38, 38, 53, 54, 38, 55, 56, 57,
- 38, 38, 38, 38, 38, 61, 62, 63,
- 65, 38, 38, 38, 38, 43, 38, 41,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 43, 44, 45, 46, 38, 38, 38, 38,
- 38, 38, 38, 38, 54, 38, 55, 56,
- 57, 38, 38, 38, 38, 38, 61, 62,
- 63, 65, 38, 38, 38, 38, 43, 38,
- 67, 38, 41, 38, 38, 38, 38, 38,
- 38, 38, 42, 43, 44, 45, 46, 38,
- 48, 49, 38, 38, 38, 52, 53, 54,
- 38, 55, 56, 57, 38, 38, 38, 38,
- 38, 61, 62, 63, 65, 38, 38, 38,
- 38, 43, 38, 41, 38, 38, 38, 38,
- 38, 38, 38, 38, 43, 44, 45, 46,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 55, 56, 57, 38, 38, 38,
- 38, 38, 61, 62, 63, 65, 38, 38,
- 38, 38, 43, 38, 67, 38, 41, 38,
- 38, 38, 38, 38, 38, 38, 42, 43,
- 44, 45, 46, 38, 38, 49, 38, 38,
- 38, 52, 53, 54, 38, 55, 56, 57,
- 38, 38, 38, 38, 38, 61, 62, 63,
- 65, 38, 38, 38, 38, 43, 38, 67,
- 38, 41, 38, 38, 38, 38, 38, 38,
- 38, 42, 43, 44, 45, 46, 38, 38,
- 38, 38, 38, 38, 52, 53, 54, 38,
- 55, 56, 57, 38, 38, 38, 38, 38,
- 61, 62, 63, 65, 38, 38, 38, 38,
- 43, 38, 67, 38, 41, 38, 38, 38,
- 38, 38, 38, 38, 42, 43, 44, 45,
- 46, 47, 48, 49, 38, 38, 38, 52,
- 53, 54, 38, 55, 56, 57, 38, 38,
- 38, 38, 38, 61, 62, 63, 65, 38,
- 38, 38, 38, 43, 38, 39, 40, 38,
- 41, 38, 38, 38, 38, 38, 38, 38,
- 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 38, 51, 52, 53, 54, 38, 55,
- 56, 57, 38, 38, 38, 38, 60, 61,
- 62, 63, 60, 38, 38, 38, 38, 64,
- 38, 38, 63, 38, 39, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 41, 38, 39, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 41, 38, 38, 38, 38, 38, 38, 38,
- 38, 43, 44, 45, 46, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 55,
- 56, 57, 38, 38, 38, 38, 38, 61,
- 62, 63, 65, 38, 41, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 58,
- 59, 38, 41, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 59, 38,
- 4, 69, 68, 70, 68, 68, 68, 68,
- 68, 68, 68, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 4, 80, 81, 82,
- 83, 68, 84, 85, 86, 68, 68, 68,
- 68, 87, 88, 89, 90, 91, 68, 68,
- 68, 68, 92, 68, 68, 93, 68, 4,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 70, 68, 68, 68,
- 68, 68, 68, 68, 68, 72, 73, 74,
- 75, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 84, 85, 86, 68, 68,
- 68, 68, 68, 88, 89, 90, 94, 68,
- 68, 68, 68, 72, 68, 70, 68, 68,
- 68, 68, 68, 68, 68, 68, 72, 73,
- 74, 75, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 84, 85, 86, 68,
- 68, 68, 68, 68, 88, 89, 90, 94,
- 68, 70, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 73, 74, 75, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 88, 89, 90, 68, 70, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 74,
- 75, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 88, 89, 90, 68, 70,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 75, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 88, 89,
- 90, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 88, 89, 68, 70, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 89, 68, 70, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 73, 74, 75, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 84,
- 85, 86, 68, 68, 68, 68, 68, 88,
- 89, 90, 94, 68, 70, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 73, 74,
- 75, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 85, 86, 68, 68,
- 68, 68, 68, 88, 89, 90, 94, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 73, 74, 75, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 86, 68, 68, 68, 68, 68, 88,
- 89, 90, 94, 68, 96, 95, 95, 95,
- 95, 95, 95, 95, 95, 95, 95, 95,
- 95, 97, 95, 70, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 73, 74, 75,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 88, 89, 90, 94, 68, 70,
- 68, 68, 68, 68, 68, 68, 68, 71,
- 72, 73, 74, 75, 68, 68, 68, 68,
- 68, 68, 81, 82, 83, 68, 84, 85,
- 86, 68, 68, 68, 68, 68, 88, 89,
- 90, 94, 68, 68, 68, 68, 72, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 72, 73, 74, 75, 68, 68, 68,
- 68, 68, 68, 81, 82, 83, 68, 84,
- 85, 86, 68, 68, 68, 68, 68, 88,
- 89, 90, 94, 68, 68, 68, 68, 72,
- 68, 70, 68, 68, 68, 68, 68, 68,
- 68, 68, 72, 73, 74, 75, 68, 68,
- 68, 68, 68, 68, 68, 82, 83, 68,
- 84, 85, 86, 68, 68, 68, 68, 68,
- 88, 89, 90, 94, 68, 68, 68, 68,
- 72, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 68, 72, 73, 74, 75, 68,
- 68, 68, 68, 68, 68, 68, 68, 83,
- 68, 84, 85, 86, 68, 68, 68, 68,
- 68, 88, 89, 90, 94, 68, 68, 68,
- 68, 72, 68, 98, 68, 70, 68, 68,
- 68, 68, 68, 68, 68, 71, 72, 73,
- 74, 75, 68, 77, 78, 68, 68, 68,
- 81, 82, 83, 68, 84, 85, 86, 68,
- 68, 68, 68, 68, 88, 89, 90, 94,
- 68, 68, 68, 68, 72, 68, 70, 68,
- 68, 68, 68, 68, 68, 68, 68, 72,
- 73, 74, 75, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 84, 85, 86,
- 68, 68, 68, 68, 68, 88, 89, 90,
- 94, 68, 68, 68, 68, 72, 68, 98,
- 68, 70, 68, 68, 68, 68, 68, 68,
- 68, 71, 72, 73, 74, 75, 68, 68,
- 78, 68, 68, 68, 81, 82, 83, 68,
- 84, 85, 86, 68, 68, 68, 68, 68,
- 88, 89, 90, 94, 68, 68, 68, 68,
- 72, 68, 98, 68, 70, 68, 68, 68,
- 68, 68, 68, 68, 71, 72, 73, 74,
- 75, 68, 68, 68, 68, 68, 68, 81,
- 82, 83, 68, 84, 85, 86, 68, 68,
- 68, 68, 68, 88, 89, 90, 94, 68,
- 68, 68, 68, 72, 68, 98, 68, 70,
- 68, 68, 68, 68, 68, 68, 68, 71,
- 72, 73, 74, 75, 76, 77, 78, 68,
- 68, 68, 81, 82, 83, 68, 84, 85,
- 86, 68, 68, 68, 68, 68, 88, 89,
- 90, 94, 68, 68, 68, 68, 72, 68,
- 4, 69, 68, 70, 68, 68, 68, 68,
- 68, 68, 68, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 68, 80, 81, 82,
- 83, 68, 84, 85, 86, 68, 68, 68,
- 68, 87, 88, 89, 90, 91, 68, 68,
- 68, 68, 92, 68, 68, 93, 68, 4,
- 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 100, 99, 4, 95,
- 95, 95, 95, 95, 95, 95, 95, 95,
- 95, 95, 95, 97, 95, 4, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 68, 72, 73, 74, 75, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 84, 85, 86, 68, 68, 68, 68,
- 68, 88, 89, 90, 94, 68, 100, 99,
- 102, 103, 101, 6, 104, 104, 104, 104,
- 104, 104, 104, 104, 104, 105, 104, 106,
- 107, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 106, 117, 118, 119, 120,
- 68, 121, 122, 123, 68, 58, 59, 68,
- 124, 125, 126, 127, 128, 68, 68, 68,
- 68, 129, 68, 68, 130, 68, 106, 107,
- 68, 70, 68, 68, 68, 68, 68, 68,
- 68, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 106, 117, 118, 119, 120, 68,
- 121, 122, 123, 68, 68, 68, 68, 124,
- 125, 126, 127, 128, 68, 68, 68, 68,
- 129, 68, 68, 130, 68, 106, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 68, 109, 110, 111, 112, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 121, 122, 123, 68, 68, 68, 68,
- 68, 125, 126, 127, 131, 68, 68, 68,
- 68, 109, 68, 70, 68, 68, 68, 68,
- 68, 68, 68, 68, 109, 110, 111, 112,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 121, 122, 123, 68, 68, 68,
- 68, 68, 125, 126, 127, 131, 68, 70,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 110, 111, 112, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 125, 126,
- 127, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 111, 112, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 125, 126, 127, 68, 70, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 112, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 125, 126, 127, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 125,
- 126, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 126, 68, 70, 68, 70, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 110, 111, 112, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 121, 122, 123,
- 68, 68, 68, 68, 68, 125, 126, 127,
- 131, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 110, 111, 112, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 122, 123, 68, 68, 68, 68,
- 68, 125, 126, 127, 131, 68, 70, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 110, 111, 112, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 123,
- 68, 68, 68, 68, 68, 125, 126, 127,
- 131, 68, 132, 95, 95, 95, 95, 95,
- 95, 95, 95, 95, 95, 95, 95, 97,
- 95, 70, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 110, 111, 112, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 125, 126, 127, 131, 68, 70, 68, 68,
- 68, 68, 68, 68, 68, 108, 109, 110,
- 111, 112, 68, 68, 68, 68, 68, 68,
- 118, 119, 120, 68, 121, 122, 123, 68,
- 68, 68, 68, 68, 125, 126, 127, 131,
- 68, 68, 68, 68, 109, 68, 70, 68,
- 68, 68, 68, 68, 68, 68, 68, 109,
- 110, 111, 112, 68, 68, 68, 68, 68,
- 68, 118, 119, 120, 68, 121, 122, 123,
- 68, 68, 68, 68, 68, 125, 126, 127,
- 131, 68, 68, 68, 68, 109, 68, 70,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 109, 110, 111, 112, 68, 68, 68, 68,
- 68, 68, 68, 119, 120, 68, 121, 122,
- 123, 68, 68, 68, 68, 68, 125, 126,
- 127, 131, 68, 68, 68, 68, 109, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 109, 110, 111, 112, 68, 68, 68,
- 68, 68, 68, 68, 68, 120, 68, 121,
- 122, 123, 68, 68, 68, 68, 68, 125,
- 126, 127, 131, 68, 68, 68, 68, 109,
- 68, 133, 68, 70, 68, 68, 68, 68,
- 68, 68, 68, 108, 109, 110, 111, 112,
- 68, 114, 115, 68, 68, 68, 118, 119,
- 120, 68, 121, 122, 123, 68, 68, 68,
- 68, 68, 125, 126, 127, 131, 68, 68,
- 68, 68, 109, 68, 70, 68, 68, 68,
- 68, 68, 68, 68, 68, 109, 110, 111,
- 112, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 121, 122, 123, 68, 68,
- 68, 68, 68, 125, 126, 127, 131, 68,
- 68, 68, 68, 109, 68, 133, 68, 70,
- 68, 68, 68, 68, 68, 68, 68, 108,
- 109, 110, 111, 112, 68, 68, 115, 68,
- 68, 68, 118, 119, 120, 68, 121, 122,
- 123, 68, 68, 68, 68, 68, 125, 126,
- 127, 131, 68, 68, 68, 68, 109, 68,
- 133, 68, 70, 68, 68, 68, 68, 68,
- 68, 68, 108, 109, 110, 111, 112, 68,
- 68, 68, 68, 68, 68, 118, 119, 120,
- 68, 121, 122, 123, 68, 68, 68, 68,
- 68, 125, 126, 127, 131, 68, 68, 68,
- 68, 109, 68, 133, 68, 70, 68, 68,
- 68, 68, 68, 68, 68, 108, 109, 110,
- 111, 112, 113, 114, 115, 68, 68, 68,
- 118, 119, 120, 68, 121, 122, 123, 68,
- 68, 68, 68, 68, 125, 126, 127, 131,
- 68, 68, 68, 68, 109, 68, 106, 107,
- 68, 70, 68, 68, 68, 68, 68, 68,
- 68, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 68, 117, 118, 119, 120, 68,
- 121, 122, 123, 68, 68, 68, 68, 124,
- 125, 126, 127, 128, 68, 68, 68, 68,
- 129, 68, 68, 130, 68, 106, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 100, 99, 106, 95, 95, 95,
- 95, 95, 95, 95, 95, 95, 95, 95,
- 95, 97, 95, 106, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 70, 68, 68, 68, 68, 68, 68, 68,
- 68, 109, 110, 111, 112, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 121,
- 122, 123, 68, 68, 68, 68, 68, 125,
- 126, 127, 131, 68, 100, 99, 8, 9,
- 134, 11, 134, 134, 134, 134, 134, 134,
- 134, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 8, 22, 23, 24, 25, 134,
- 26, 27, 28, 134, 134, 134, 134, 32,
- 33, 34, 35, 32, 134, 134, 134, 134,
- 37, 134, 134, 35, 134, 8, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 11, 134, 134, 134, 134, 134,
- 134, 134, 134, 14, 15, 16, 17, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 26, 27, 28, 134, 134, 134, 134,
- 134, 33, 34, 35, 135, 134, 134, 134,
- 134, 14, 134, 11, 134, 134, 134, 134,
- 134, 134, 134, 134, 14, 15, 16, 17,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 26, 27, 28, 134, 134, 134,
- 134, 134, 33, 34, 35, 135, 134, 11,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 15, 16, 17, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 33, 34,
- 35, 134, 11, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 16, 17, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 33, 34, 35, 134, 11, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 17, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 33, 34, 35, 134,
- 11, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 33,
- 34, 134, 11, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 34, 134, 11, 134, 11, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 15, 16, 17, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 26, 27, 28,
- 134, 134, 134, 134, 134, 33, 34, 35,
- 135, 134, 11, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 15, 16, 17, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 27, 28, 134, 134, 134, 134,
- 134, 33, 34, 35, 135, 134, 11, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 15, 16, 17, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 28,
- 134, 134, 134, 134, 134, 33, 34, 35,
- 135, 134, 136, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 11,
- 134, 11, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 15, 16, 17, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 33, 34, 35, 135, 134, 11, 134, 134,
- 134, 134, 134, 134, 134, 13, 14, 15,
- 16, 17, 134, 134, 134, 134, 134, 134,
- 23, 24, 25, 134, 26, 27, 28, 134,
- 134, 134, 134, 134, 33, 34, 35, 135,
- 134, 134, 134, 134, 14, 134, 11, 134,
- 134, 134, 134, 134, 134, 134, 134, 14,
- 15, 16, 17, 134, 134, 134, 134, 134,
- 134, 23, 24, 25, 134, 26, 27, 28,
- 134, 134, 134, 134, 134, 33, 34, 35,
- 135, 134, 134, 134, 134, 14, 134, 11,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 14, 15, 16, 17, 134, 134, 134, 134,
- 134, 134, 134, 24, 25, 134, 26, 27,
- 28, 134, 134, 134, 134, 134, 33, 34,
- 35, 135, 134, 134, 134, 134, 14, 134,
- 11, 134, 134, 134, 134, 134, 134, 134,
- 134, 14, 15, 16, 17, 134, 134, 134,
- 134, 134, 134, 134, 134, 25, 134, 26,
- 27, 28, 134, 134, 134, 134, 134, 33,
- 34, 35, 135, 134, 134, 134, 134, 14,
- 134, 137, 134, 11, 134, 134, 134, 134,
- 134, 134, 134, 13, 14, 15, 16, 17,
- 134, 19, 20, 134, 134, 134, 23, 24,
- 25, 134, 26, 27, 28, 134, 134, 134,
- 134, 134, 33, 34, 35, 135, 134, 134,
- 134, 134, 14, 134, 11, 134, 134, 134,
- 134, 134, 134, 134, 134, 14, 15, 16,
- 17, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 26, 27, 28, 134, 134,
- 134, 134, 134, 33, 34, 35, 135, 134,
- 134, 134, 134, 14, 134, 137, 134, 11,
- 134, 134, 134, 134, 134, 134, 134, 13,
- 14, 15, 16, 17, 134, 134, 20, 134,
- 134, 134, 23, 24, 25, 134, 26, 27,
- 28, 134, 134, 134, 134, 134, 33, 34,
- 35, 135, 134, 134, 134, 134, 14, 134,
- 137, 134, 11, 134, 134, 134, 134, 134,
- 134, 134, 13, 14, 15, 16, 17, 134,
- 134, 134, 134, 134, 134, 23, 24, 25,
- 134, 26, 27, 28, 134, 134, 134, 134,
- 134, 33, 34, 35, 135, 134, 134, 134,
- 134, 14, 134, 137, 134, 11, 134, 134,
- 134, 134, 134, 134, 134, 13, 14, 15,
- 16, 17, 18, 19, 20, 134, 134, 134,
- 23, 24, 25, 134, 26, 27, 28, 134,
- 134, 134, 134, 134, 33, 34, 35, 135,
- 134, 134, 134, 134, 14, 134, 8, 9,
- 134, 11, 134, 134, 134, 134, 134, 134,
- 134, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 134, 22, 23, 24, 25, 134,
- 26, 27, 28, 134, 134, 134, 134, 32,
- 33, 34, 35, 32, 134, 134, 134, 134,
- 37, 134, 134, 35, 134, 8, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 11, 134, 8, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 11, 134, 134, 134, 134, 134, 134,
- 134, 134, 14, 15, 16, 17, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 26, 27, 28, 134, 134, 134, 134, 134,
- 33, 34, 35, 135, 134, 138, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 11,
- 134, 10, 11, 134, 4, 134, 134, 134,
- 4, 134, 134, 134, 134, 134, 8, 9,
- 10, 11, 134, 134, 134, 134, 134, 134,
- 134, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 8, 22, 23, 24, 25, 134,
- 26, 27, 28, 134, 29, 30, 134, 32,
- 33, 34, 35, 32, 134, 134, 134, 134,
- 37, 134, 134, 35, 134, 11, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 29, 30, 134, 11, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 134,
- 134, 134, 134, 134, 134, 134, 134, 30,
- 134, 4, 139, 139, 139, 4, 139, 141,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 142, 140, 143, 140, 143,
- 144, 140, 141, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 1, 142, 142,
- 140, 141, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 142, 140, 143,
- 140, 141, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 142, 140, 143,
- 140, 143, 140, 39, 40, 38, 41, 38,
- 38, 38, 38, 38, 38, 38, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 39,
- 51, 52, 53, 54, 38, 55, 56, 57,
- 38, 58, 59, 38, 60, 61, 62, 63,
- 60, 1, 38, 2, 38, 64, 38, 38,
- 63, 38, 0
+ 5, 37, 5, 5, 38, 5, 40, 41,
+ 39, 42, 39, 39, 39, 39, 39, 39,
+ 39, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 40, 52, 53, 54, 55, 39,
+ 56, 57, 58, 39, 59, 60, 39, 61,
+ 62, 63, 64, 61, 39, 39, 39, 39,
+ 65, 39, 39, 64, 39, 40, 41, 39,
+ 42, 39, 39, 39, 39, 39, 39, 39,
+ 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 40, 52, 53, 54, 55, 39, 56,
+ 57, 58, 39, 39, 39, 39, 61, 62,
+ 63, 64, 61, 39, 39, 39, 39, 65,
+ 39, 39, 64, 39, 40, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 42, 39, 39, 39, 39, 39, 39,
+ 39, 39, 44, 45, 46, 47, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 56, 57, 58, 39, 39, 39, 39, 39,
+ 62, 63, 64, 66, 39, 39, 39, 39,
+ 44, 39, 42, 39, 39, 39, 39, 39,
+ 39, 39, 39, 44, 45, 46, 47, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 56, 57, 58, 39, 39, 39, 39,
+ 39, 62, 63, 64, 66, 39, 42, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 45, 46, 47, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 62, 63, 64,
+ 39, 42, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 46, 47, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 62, 63, 64, 39, 42, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 47, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 62, 63, 64, 39, 42,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 62, 63,
+ 39, 42, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 63, 39, 42, 39, 42, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 45,
+ 46, 47, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 56, 57, 58, 39,
+ 39, 39, 39, 39, 62, 63, 64, 66,
+ 39, 42, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 45, 46, 47, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 57, 58, 39, 39, 39, 39, 39,
+ 62, 63, 64, 66, 39, 42, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 45,
+ 46, 47, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 58, 39,
+ 39, 39, 39, 39, 62, 63, 64, 66,
+ 39, 67, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 42, 39,
+ 42, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 45, 46, 47, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 62,
+ 63, 64, 66, 39, 42, 39, 39, 39,
+ 39, 39, 39, 39, 43, 44, 45, 46,
+ 47, 39, 39, 39, 39, 39, 39, 53,
+ 54, 55, 39, 56, 57, 58, 39, 39,
+ 39, 39, 39, 62, 63, 64, 66, 39,
+ 39, 39, 39, 44, 39, 42, 39, 39,
+ 39, 39, 39, 39, 39, 39, 44, 45,
+ 46, 47, 39, 39, 39, 39, 39, 39,
+ 53, 54, 55, 39, 56, 57, 58, 39,
+ 39, 39, 39, 39, 62, 63, 64, 66,
+ 39, 39, 39, 39, 44, 39, 42, 39,
+ 39, 39, 39, 39, 39, 39, 39, 44,
+ 45, 46, 47, 39, 39, 39, 39, 39,
+ 39, 39, 54, 55, 39, 56, 57, 58,
+ 39, 39, 39, 39, 39, 62, 63, 64,
+ 66, 39, 39, 39, 39, 44, 39, 42,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 44, 45, 46, 47, 39, 39, 39, 39,
+ 39, 39, 39, 39, 55, 39, 56, 57,
+ 58, 39, 39, 39, 39, 39, 62, 63,
+ 64, 66, 39, 39, 39, 39, 44, 39,
+ 68, 39, 42, 39, 39, 39, 39, 39,
+ 39, 39, 43, 44, 45, 46, 47, 39,
+ 49, 50, 39, 39, 39, 53, 54, 55,
+ 39, 56, 57, 58, 39, 39, 39, 39,
+ 39, 62, 63, 64, 66, 39, 39, 39,
+ 39, 44, 39, 42, 39, 39, 39, 39,
+ 39, 39, 39, 39, 44, 45, 46, 47,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 56, 57, 58, 39, 39, 39,
+ 39, 39, 62, 63, 64, 66, 39, 39,
+ 39, 39, 44, 39, 68, 39, 42, 39,
+ 39, 39, 39, 39, 39, 39, 43, 44,
+ 45, 46, 47, 39, 39, 50, 39, 39,
+ 39, 53, 54, 55, 39, 56, 57, 58,
+ 39, 39, 39, 39, 39, 62, 63, 64,
+ 66, 39, 39, 39, 39, 44, 39, 68,
+ 39, 42, 39, 39, 39, 39, 39, 39,
+ 39, 43, 44, 45, 46, 47, 39, 39,
+ 39, 39, 39, 39, 53, 54, 55, 39,
+ 56, 57, 58, 39, 39, 39, 39, 39,
+ 62, 63, 64, 66, 39, 39, 39, 39,
+ 44, 39, 68, 39, 42, 39, 39, 39,
+ 39, 39, 39, 39, 43, 44, 45, 46,
+ 47, 48, 49, 50, 39, 39, 39, 53,
+ 54, 55, 39, 56, 57, 58, 39, 39,
+ 39, 39, 39, 62, 63, 64, 66, 39,
+ 39, 39, 39, 44, 39, 40, 41, 39,
+ 42, 39, 39, 39, 39, 39, 39, 39,
+ 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 39, 52, 53, 54, 55, 39, 56,
+ 57, 58, 39, 39, 39, 39, 61, 62,
+ 63, 64, 61, 39, 39, 39, 39, 65,
+ 39, 39, 64, 39, 40, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 42, 39, 40, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 42, 39, 39, 39, 39, 39, 39, 39,
+ 39, 44, 45, 46, 47, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 56,
+ 57, 58, 39, 39, 39, 39, 39, 62,
+ 63, 64, 66, 39, 42, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 59,
+ 60, 39, 42, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 60, 39,
+ 4, 70, 69, 71, 69, 69, 69, 69,
+ 69, 69, 69, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 4, 81, 82, 83,
+ 84, 69, 85, 86, 87, 69, 69, 69,
+ 69, 88, 89, 90, 91, 92, 69, 69,
+ 69, 69, 93, 69, 69, 94, 69, 4,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 71, 69, 69, 69,
+ 69, 69, 69, 69, 69, 73, 74, 75,
+ 76, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 85, 86, 87, 69, 69,
+ 69, 69, 69, 89, 90, 91, 95, 69,
+ 69, 69, 69, 73, 69, 71, 69, 69,
+ 69, 69, 69, 69, 69, 69, 73, 74,
+ 75, 76, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 85, 86, 87, 69,
+ 69, 69, 69, 69, 89, 90, 91, 95,
+ 69, 71, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 74, 75, 76, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 89, 90, 91, 69, 71, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 75,
+ 76, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 89, 90, 91, 69, 71,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 76, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 89, 90,
+ 91, 69, 71, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 89, 90, 69, 71, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 90, 69, 71, 69,
+ 71, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 74, 75, 76, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 85,
+ 86, 87, 69, 69, 69, 69, 69, 89,
+ 90, 91, 95, 69, 71, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 74, 75,
+ 76, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 86, 87, 69, 69,
+ 69, 69, 69, 89, 90, 91, 95, 69,
+ 71, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 74, 75, 76, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 87, 69, 69, 69, 69, 69, 89,
+ 90, 91, 95, 69, 97, 96, 96, 96,
+ 96, 96, 96, 96, 96, 96, 96, 96,
+ 96, 98, 96, 71, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 74, 75, 76,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 89, 90, 91, 95, 69, 71,
+ 69, 69, 69, 69, 69, 69, 69, 72,
+ 73, 74, 75, 76, 69, 69, 69, 69,
+ 69, 69, 82, 83, 84, 69, 85, 86,
+ 87, 69, 69, 69, 69, 69, 89, 90,
+ 91, 95, 69, 69, 69, 69, 73, 69,
+ 71, 69, 69, 69, 69, 69, 69, 69,
+ 69, 73, 74, 75, 76, 69, 69, 69,
+ 69, 69, 69, 82, 83, 84, 69, 85,
+ 86, 87, 69, 69, 69, 69, 69, 89,
+ 90, 91, 95, 69, 69, 69, 69, 73,
+ 69, 71, 69, 69, 69, 69, 69, 69,
+ 69, 69, 73, 74, 75, 76, 69, 69,
+ 69, 69, 69, 69, 69, 83, 84, 69,
+ 85, 86, 87, 69, 69, 69, 69, 69,
+ 89, 90, 91, 95, 69, 69, 69, 69,
+ 73, 69, 71, 69, 69, 69, 69, 69,
+ 69, 69, 69, 73, 74, 75, 76, 69,
+ 69, 69, 69, 69, 69, 69, 69, 84,
+ 69, 85, 86, 87, 69, 69, 69, 69,
+ 69, 89, 90, 91, 95, 69, 69, 69,
+ 69, 73, 69, 99, 69, 71, 69, 69,
+ 69, 69, 69, 69, 69, 72, 73, 74,
+ 75, 76, 69, 78, 79, 69, 69, 69,
+ 82, 83, 84, 69, 85, 86, 87, 69,
+ 69, 69, 69, 69, 89, 90, 91, 95,
+ 69, 69, 69, 69, 73, 69, 71, 69,
+ 69, 69, 69, 69, 69, 69, 69, 73,
+ 74, 75, 76, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 85, 86, 87,
+ 69, 69, 69, 69, 69, 89, 90, 91,
+ 95, 69, 69, 69, 69, 73, 69, 99,
+ 69, 71, 69, 69, 69, 69, 69, 69,
+ 69, 72, 73, 74, 75, 76, 69, 69,
+ 79, 69, 69, 69, 82, 83, 84, 69,
+ 85, 86, 87, 69, 69, 69, 69, 69,
+ 89, 90, 91, 95, 69, 69, 69, 69,
+ 73, 69, 99, 69, 71, 69, 69, 69,
+ 69, 69, 69, 69, 72, 73, 74, 75,
+ 76, 69, 69, 69, 69, 69, 69, 82,
+ 83, 84, 69, 85, 86, 87, 69, 69,
+ 69, 69, 69, 89, 90, 91, 95, 69,
+ 69, 69, 69, 73, 69, 99, 69, 71,
+ 69, 69, 69, 69, 69, 69, 69, 72,
+ 73, 74, 75, 76, 77, 78, 79, 69,
+ 69, 69, 82, 83, 84, 69, 85, 86,
+ 87, 69, 69, 69, 69, 69, 89, 90,
+ 91, 95, 69, 69, 69, 69, 73, 69,
+ 4, 70, 69, 71, 69, 69, 69, 69,
+ 69, 69, 69, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 69, 81, 82, 83,
+ 84, 69, 85, 86, 87, 69, 69, 69,
+ 69, 88, 89, 90, 91, 92, 69, 69,
+ 69, 69, 93, 69, 69, 94, 69, 4,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 101, 100, 4, 96,
+ 96, 96, 96, 96, 96, 96, 96, 96,
+ 96, 96, 96, 98, 96, 4, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 71, 69, 69, 69, 69, 69,
+ 69, 69, 69, 73, 74, 75, 76, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 85, 86, 87, 69, 69, 69, 69,
+ 69, 89, 90, 91, 95, 69, 101, 100,
+ 103, 104, 102, 6, 105, 105, 105, 105,
+ 105, 105, 105, 105, 105, 106, 105, 107,
+ 108, 69, 71, 69, 69, 69, 69, 69,
+ 69, 69, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 107, 118, 119, 120, 121,
+ 69, 122, 123, 124, 69, 59, 60, 69,
+ 125, 126, 127, 128, 129, 69, 69, 69,
+ 69, 130, 69, 69, 131, 69, 107, 108,
+ 69, 71, 69, 69, 69, 69, 69, 69,
+ 69, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 107, 118, 119, 120, 121, 69,
+ 122, 123, 124, 69, 69, 69, 69, 125,
+ 126, 127, 128, 129, 69, 69, 69, 69,
+ 130, 69, 69, 131, 69, 107, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 71, 69, 69, 69, 69, 69,
+ 69, 69, 69, 110, 111, 112, 113, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 122, 123, 124, 69, 69, 69, 69,
+ 69, 126, 127, 128, 132, 69, 69, 69,
+ 69, 110, 69, 71, 69, 69, 69, 69,
+ 69, 69, 69, 69, 110, 111, 112, 113,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 122, 123, 124, 69, 69, 69,
+ 69, 69, 126, 127, 128, 132, 69, 71,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 111, 112, 113, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 126, 127,
+ 128, 69, 71, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 112, 113, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 126, 127, 128, 69, 71, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 113, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 126, 127, 128, 69,
+ 71, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 126,
+ 127, 69, 71, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 127, 69, 71, 69, 71, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 111, 112, 113, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 122, 123, 124,
+ 69, 69, 69, 69, 69, 126, 127, 128,
+ 132, 69, 71, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 111, 112, 113, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 123, 124, 69, 69, 69, 69,
+ 69, 126, 127, 128, 132, 69, 71, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 111, 112, 113, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 124,
+ 69, 69, 69, 69, 69, 126, 127, 128,
+ 132, 69, 133, 96, 96, 96, 96, 96,
+ 96, 96, 96, 96, 96, 96, 96, 98,
+ 96, 71, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 111, 112, 113, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 126, 127, 128, 132, 69, 71, 69, 69,
+ 69, 69, 69, 69, 69, 109, 110, 111,
+ 112, 113, 69, 69, 69, 69, 69, 69,
+ 119, 120, 121, 69, 122, 123, 124, 69,
+ 69, 69, 69, 69, 126, 127, 128, 132,
+ 69, 69, 69, 69, 110, 69, 71, 69,
+ 69, 69, 69, 69, 69, 69, 69, 110,
+ 111, 112, 113, 69, 69, 69, 69, 69,
+ 69, 119, 120, 121, 69, 122, 123, 124,
+ 69, 69, 69, 69, 69, 126, 127, 128,
+ 132, 69, 69, 69, 69, 110, 69, 71,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 110, 111, 112, 113, 69, 69, 69, 69,
+ 69, 69, 69, 120, 121, 69, 122, 123,
+ 124, 69, 69, 69, 69, 69, 126, 127,
+ 128, 132, 69, 69, 69, 69, 110, 69,
+ 71, 69, 69, 69, 69, 69, 69, 69,
+ 69, 110, 111, 112, 113, 69, 69, 69,
+ 69, 69, 69, 69, 69, 121, 69, 122,
+ 123, 124, 69, 69, 69, 69, 69, 126,
+ 127, 128, 132, 69, 69, 69, 69, 110,
+ 69, 134, 69, 71, 69, 69, 69, 69,
+ 69, 69, 69, 109, 110, 111, 112, 113,
+ 69, 115, 116, 69, 69, 69, 119, 120,
+ 121, 69, 122, 123, 124, 69, 69, 69,
+ 69, 69, 126, 127, 128, 132, 69, 69,
+ 69, 69, 110, 69, 71, 69, 69, 69,
+ 69, 69, 69, 69, 69, 110, 111, 112,
+ 113, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 122, 123, 124, 69, 69,
+ 69, 69, 69, 126, 127, 128, 132, 69,
+ 69, 69, 69, 110, 69, 134, 69, 71,
+ 69, 69, 69, 69, 69, 69, 69, 109,
+ 110, 111, 112, 113, 69, 69, 116, 69,
+ 69, 69, 119, 120, 121, 69, 122, 123,
+ 124, 69, 69, 69, 69, 69, 126, 127,
+ 128, 132, 69, 69, 69, 69, 110, 69,
+ 134, 69, 71, 69, 69, 69, 69, 69,
+ 69, 69, 109, 110, 111, 112, 113, 69,
+ 69, 69, 69, 69, 69, 119, 120, 121,
+ 69, 122, 123, 124, 69, 69, 69, 69,
+ 69, 126, 127, 128, 132, 69, 69, 69,
+ 69, 110, 69, 134, 69, 71, 69, 69,
+ 69, 69, 69, 69, 69, 109, 110, 111,
+ 112, 113, 114, 115, 116, 69, 69, 69,
+ 119, 120, 121, 69, 122, 123, 124, 69,
+ 69, 69, 69, 69, 126, 127, 128, 132,
+ 69, 69, 69, 69, 110, 69, 107, 108,
+ 69, 71, 69, 69, 69, 69, 69, 69,
+ 69, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 69, 118, 119, 120, 121, 69,
+ 122, 123, 124, 69, 69, 69, 69, 125,
+ 126, 127, 128, 129, 69, 69, 69, 69,
+ 130, 69, 69, 131, 69, 107, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 101, 100, 107, 96, 96, 96,
+ 96, 96, 96, 96, 96, 96, 96, 96,
+ 96, 98, 96, 107, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 71, 69, 69, 69, 69, 69, 69, 69,
+ 69, 110, 111, 112, 113, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 122,
+ 123, 124, 69, 69, 69, 69, 69, 126,
+ 127, 128, 132, 69, 101, 100, 8, 9,
+ 135, 11, 135, 135, 135, 135, 135, 135,
+ 135, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 8, 22, 23, 24, 25, 135,
+ 26, 27, 28, 135, 135, 135, 135, 32,
+ 33, 34, 38, 32, 135, 135, 135, 135,
+ 37, 135, 135, 38, 135, 8, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 11, 135, 135, 135, 135, 135,
+ 135, 135, 135, 14, 15, 16, 17, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 26, 27, 28, 135, 135, 135, 135,
+ 135, 33, 34, 38, 136, 135, 135, 135,
+ 135, 14, 135, 11, 135, 135, 135, 135,
+ 135, 135, 135, 135, 14, 15, 16, 17,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 26, 27, 28, 135, 135, 135,
+ 135, 135, 33, 34, 38, 136, 135, 11,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 15, 16, 17, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 33, 34,
+ 38, 135, 11, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 16, 17, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 33, 34, 38, 135, 11, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 17, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 33, 34, 38, 135,
+ 11, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 33,
+ 34, 135, 11, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 34, 135, 11, 137, 11, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 15, 16, 17, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 26, 27, 28,
+ 135, 135, 135, 135, 135, 33, 34, 38,
+ 136, 135, 11, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 15, 16, 17, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 27, 28, 135, 135, 135, 135,
+ 135, 33, 34, 38, 136, 135, 11, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 15, 16, 17, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 28,
+ 135, 135, 135, 135, 135, 33, 34, 38,
+ 136, 135, 138, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 11,
+ 135, 11, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 15, 16, 17, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 33, 34, 38, 136, 135, 11, 135, 135,
+ 135, 135, 135, 135, 135, 13, 14, 15,
+ 16, 17, 135, 135, 135, 135, 135, 135,
+ 23, 24, 25, 135, 26, 27, 28, 135,
+ 135, 135, 135, 135, 33, 34, 38, 136,
+ 135, 135, 135, 135, 14, 135, 11, 135,
+ 135, 135, 135, 135, 135, 135, 135, 14,
+ 15, 16, 17, 135, 135, 135, 135, 135,
+ 135, 23, 24, 25, 135, 26, 27, 28,
+ 135, 135, 135, 135, 135, 33, 34, 38,
+ 136, 135, 135, 135, 135, 14, 135, 11,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 14, 15, 16, 17, 135, 135, 135, 135,
+ 135, 135, 135, 24, 25, 135, 26, 27,
+ 28, 135, 135, 135, 135, 135, 33, 34,
+ 38, 136, 135, 135, 135, 135, 14, 135,
+ 11, 135, 135, 135, 135, 135, 135, 135,
+ 135, 14, 15, 16, 17, 135, 135, 135,
+ 135, 135, 135, 135, 135, 25, 135, 26,
+ 27, 28, 135, 135, 135, 135, 135, 33,
+ 34, 38, 136, 135, 135, 135, 135, 14,
+ 135, 139, 135, 11, 135, 135, 135, 135,
+ 135, 135, 135, 13, 14, 15, 16, 17,
+ 135, 19, 20, 135, 135, 135, 23, 24,
+ 25, 135, 26, 27, 28, 135, 135, 135,
+ 135, 135, 33, 34, 38, 136, 135, 135,
+ 135, 135, 14, 135, 11, 135, 135, 135,
+ 135, 135, 135, 135, 135, 14, 15, 16,
+ 17, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 26, 27, 28, 135, 135,
+ 135, 135, 135, 33, 34, 38, 136, 135,
+ 135, 135, 135, 14, 135, 139, 135, 11,
+ 135, 135, 135, 135, 135, 135, 135, 13,
+ 14, 15, 16, 17, 135, 135, 20, 135,
+ 135, 135, 23, 24, 25, 135, 26, 27,
+ 28, 135, 135, 135, 135, 135, 33, 34,
+ 38, 136, 135, 135, 135, 135, 14, 135,
+ 139, 135, 11, 135, 135, 135, 135, 135,
+ 135, 135, 13, 14, 15, 16, 17, 135,
+ 135, 135, 135, 135, 135, 23, 24, 25,
+ 135, 26, 27, 28, 135, 135, 135, 135,
+ 135, 33, 34, 38, 136, 135, 135, 135,
+ 135, 14, 135, 139, 135, 11, 135, 135,
+ 135, 135, 135, 135, 135, 13, 14, 15,
+ 16, 17, 18, 19, 20, 135, 135, 135,
+ 23, 24, 25, 135, 26, 27, 28, 135,
+ 135, 135, 135, 135, 33, 34, 38, 136,
+ 135, 135, 135, 135, 14, 135, 8, 9,
+ 135, 11, 135, 135, 135, 135, 135, 135,
+ 135, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 135, 22, 23, 24, 25, 135,
+ 26, 27, 28, 135, 135, 135, 135, 32,
+ 33, 34, 38, 32, 135, 135, 135, 135,
+ 37, 135, 135, 38, 135, 8, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 11, 135, 8, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 11, 135, 135, 135, 135, 135, 135,
+ 135, 135, 14, 15, 16, 17, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 26, 27, 28, 135, 135, 135, 135, 135,
+ 33, 34, 38, 136, 135, 140, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 11,
+ 135, 10, 11, 135, 4, 135, 135, 135,
+ 4, 135, 135, 135, 135, 135, 8, 9,
+ 10, 11, 135, 135, 135, 135, 135, 135,
+ 135, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 8, 22, 23, 24, 25, 135,
+ 26, 27, 28, 135, 29, 30, 135, 32,
+ 33, 34, 38, 32, 135, 135, 135, 135,
+ 37, 135, 135, 38, 135, 11, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 29, 30, 135, 11, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 30,
+ 135, 4, 141, 141, 141, 4, 141, 143,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 144, 142, 145, 142, 145,
+ 146, 142, 143, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 1, 144, 144,
+ 142, 143, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 144, 142, 145,
+ 142, 143, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 142, 142, 142,
+ 142, 142, 142, 142, 142, 144, 142, 145,
+ 142, 145, 142, 40, 41, 39, 42, 39,
+ 39, 39, 39, 39, 39, 39, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 40,
+ 52, 53, 54, 55, 39, 56, 57, 58,
+ 39, 59, 60, 39, 61, 62, 63, 64,
+ 61, 1, 39, 2, 39, 65, 39, 39,
+ 64, 39, 0
};
static const char _use_syllable_machine_trans_targs[] = {
@@ -723,21 +723,21 @@ static const char _use_syllable_machine_trans_targs[] = {
90, 91, 116, 1, 118, 104, 92, 93,
94, 95, 108, 110, 111, 112, 113, 105,
106, 107, 99, 100, 101, 119, 120, 121,
- 114, 96, 97, 98, 126, 115, 1, 3,
- 4, 1, 17, 5, 6, 7, 8, 21,
- 23, 24, 25, 26, 18, 19, 20, 12,
- 13, 14, 29, 30, 27, 9, 10, 11,
- 28, 15, 16, 22, 1, 32, 1, 45,
- 33, 34, 35, 36, 49, 51, 52, 53,
- 54, 46, 47, 48, 40, 41, 42, 55,
- 37, 38, 39, 56, 57, 58, 43, 1,
- 44, 1, 50, 1, 1, 1, 60, 1,
- 1, 1, 62, 63, 76, 64, 65, 66,
- 67, 80, 82, 83, 84, 85, 77, 78,
- 79, 71, 72, 73, 86, 68, 69, 70,
- 87, 88, 89, 74, 75, 81, 1, 102,
- 103, 109, 117, 1, 1, 1, 123, 124,
- 125
+ 114, 96, 97, 98, 126, 115, 98, 1,
+ 3, 4, 1, 17, 5, 6, 7, 8,
+ 21, 23, 24, 25, 26, 18, 19, 20,
+ 12, 13, 14, 29, 30, 27, 9, 10,
+ 11, 28, 15, 16, 22, 1, 32, 1,
+ 45, 33, 34, 35, 36, 49, 51, 52,
+ 53, 54, 46, 47, 48, 40, 41, 42,
+ 55, 37, 38, 39, 56, 57, 58, 43,
+ 1, 44, 1, 50, 1, 1, 1, 60,
+ 1, 1, 1, 62, 63, 76, 64, 65,
+ 66, 67, 80, 82, 83, 84, 85, 77,
+ 78, 79, 71, 72, 73, 86, 68, 69,
+ 70, 87, 88, 89, 74, 75, 81, 1,
+ 102, 1, 103, 109, 117, 1, 1, 1,
+ 123, 124, 125
};
static const char _use_syllable_machine_trans_actions[] = {
@@ -745,21 +745,21 @@ static const char _use_syllable_machine_trans_actions[] = {
0, 0, 0, 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, 6, 0, 7, 0,
- 0, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 7, 0, 8, 9,
+ 0, 0, 10, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 9, 0, 10, 0,
+ 0, 0, 0, 0, 0, 11, 0, 12,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 11,
- 0, 12, 0, 13, 14, 15, 0, 16,
- 17, 18, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
+ 13, 0, 14, 0, 15, 16, 17, 0,
+ 18, 19, 20, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 0,
- 0, 0, 0, 20, 21, 22, 0, 0,
- 0
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 21,
+ 0, 22, 0, 0, 0, 23, 24, 25,
+ 0, 0, 0
};
static const char _use_syllable_machine_to_state_actions[] = {
@@ -801,22 +801,22 @@ static const char _use_syllable_machine_from_state_actions[] = {
};
static const short _use_syllable_machine_eof_trans[] = {
- 1, 0, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 69,
- 69, 69, 69, 69, 69, 69, 69, 69,
- 69, 69, 69, 96, 69, 69, 69, 69,
- 69, 69, 69, 69, 69, 69, 69, 100,
- 96, 69, 100, 102, 105, 69, 69, 69,
- 69, 69, 69, 69, 69, 69, 69, 69,
- 69, 69, 96, 69, 69, 69, 69, 69,
- 69, 69, 69, 69, 69, 69, 100, 96,
- 69, 100, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 140, 141, 141, 141, 141, 39
+ 1, 0, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 97, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 101,
+ 97, 70, 101, 103, 106, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 97, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 101, 97,
+ 70, 101, 136, 136, 136, 136, 136, 136,
+ 136, 136, 138, 136, 136, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 142, 143, 143, 143, 143, 40
};
static const int use_syllable_machine_start = 1;
@@ -830,7 +830,7 @@ static const int use_syllable_machine_en_main = 1;
-#line 185 "hb-ot-shaper-use-machine.rl"
+#line 186 "hb-ot-shaper-use-machine.rl"
#define found_syllable(syllable_type) \
@@ -937,7 +937,7 @@ find_syllables_use (hb_buffer_t *buffer)
act = 0;
}
-#line 285 "hb-ot-shaper-use-machine.rl"
+#line 286 "hb-ot-shaper-use-machine.rl"
unsigned int syllable_serial = 1;
@@ -974,87 +974,111 @@ _eof_trans:
goto _again;
switch ( _use_syllable_machine_trans_actions[_trans] ) {
- case 6:
+ case 7:
#line 1 "NONE"
{te = p+1;}
break;
- case 14:
+ case 16:
#line 173 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
break;
- case 12:
+ case 14:
#line 174 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
break;
- case 10:
+ case 12:
#line 175 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_standard_cluster); }}
break;
- case 18:
+ case 20:
#line 176 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
break;
- case 16:
+ case 18:
#line 177 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_numeral_cluster); }}
break;
- case 8:
+ case 10:
#line 178 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_symbol_cluster); }}
break;
- case 22:
+ case 25:
#line 179 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
break;
case 5:
-#line 180 "hb-ot-shaper-use-machine.rl"
+#line 181 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
break;
case 4:
-#line 181 "hb-ot-shaper-use-machine.rl"
+#line 182 "hb-ot-shaper-use-machine.rl"
{te = p+1;{ found_syllable (use_non_cluster); }}
break;
- case 13:
+ case 15:
#line 173 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
break;
- case 11:
+ case 13:
#line 174 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
break;
- case 9:
+ case 11:
#line 175 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_standard_cluster); }}
break;
- case 17:
+ case 19:
#line 176 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
break;
- case 15:
+ case 17:
#line 177 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_numeral_cluster); }}
break;
- case 7:
+ case 9:
#line 178 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_symbol_cluster); }}
break;
- case 21:
+ case 24:
#line 179 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
break;
- case 19:
-#line 180 "hb-ot-shaper-use-machine.rl"
+ case 21:
+#line 181 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
break;
- case 20:
-#line 181 "hb-ot-shaper-use-machine.rl"
+ case 23:
+#line 182 "hb-ot-shaper-use-machine.rl"
{te = p;p--;{ found_syllable (use_non_cluster); }}
break;
case 1:
#line 178 "hb-ot-shaper-use-machine.rl"
{{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
break;
-#line 1058 "hb-ot-shaper-use-machine.hh"
+ case 22:
+#line 1 "NONE"
+ { switch( act ) {
+ case 8:
+ {{p = ((te))-1;} found_syllable (use_non_cluster); }
+ break;
+ case 9:
+ {{p = ((te))-1;} found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
+ break;
+ }
+ }
+ break;
+ case 6:
+#line 1 "NONE"
+ {te = p+1;}
+#line 180 "hb-ot-shaper-use-machine.rl"
+ {act = 8;}
+ break;
+ case 8:
+#line 1 "NONE"
+ {te = p+1;}
+#line 181 "hb-ot-shaper-use-machine.rl"
+ {act = 9;}
+ break;
+#line 1082 "hb-ot-shaper-use-machine.hh"
}
_again:
@@ -1063,7 +1087,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
-#line 1067 "hb-ot-shaper-use-machine.hh"
+#line 1091 "hb-ot-shaper-use-machine.hh"
}
if ( ++p != pe )
@@ -1079,7 +1103,7 @@ _again:
}
-#line 290 "hb-ot-shaper-use-machine.rl"
+#line 291 "hb-ot-shaper-use-machine.rl"
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-tag-table.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-tag-table.hh
index 66ba9f1b023..26eb34f5c4c 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-tag-table.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-tag-table.hh
@@ -6,8 +6,8 @@
*
* on files with these headers:
*
- * <meta name="updated_at" content="2024-07-07 12:57 AM" />
- * File-Date: 2024-06-14
+ * <meta name="updated_at" content="2024-12-05 07:13 PM" />
+ * File-Date: 2024-11-19
*/
#ifndef HB_OT_TAG_TABLE_HH
@@ -830,6 +830,7 @@ static const LangTag ot_languages3[] = {
{HB_TAG('k','f','x',' '), HB_TAG('K','U','L',' ')}, /* Kullu Pahari -> Kulvi */
{HB_TAG('k','f','y',' '), HB_TAG('K','M','N',' ')}, /* Kumaoni */
{HB_TAG('k','g','e',' '), HB_TAG_NONE }, /* Komering != Khutsuri Georgian */
+/*{HB_TAG('k','g','f',' '), HB_TAG('K','G','F',' ')},*/ /* Kube */
{HB_TAG('k','h','a',' '), HB_TAG('K','S','I',' ')}, /* Khasi */
{HB_TAG('k','h','b',' '), HB_TAG('X','B','D',' ')}, /* Lü */
{HB_TAG('k','h','k',' '), HB_TAG('M','N','G',' ')}, /* Halh Mongolian -> Mongolian */
@@ -855,6 +856,7 @@ static const LangTag ot_languages3[] = {
{HB_TAG('k','l','m',' '), HB_TAG_NONE }, /* Migum != Kalmyk */
{HB_TAG('k','l','n',' '), HB_TAG('K','A','L',' ')}, /* Kalenjin [macrolanguage] */
{HB_TAG('k','m','b',' '), HB_TAG('M','B','N',' ')}, /* Kimbundu -> Mbundu */
+/*{HB_TAG('k','m','g',' '), HB_TAG('K','M','G',' ')},*/ /* Kâte */
{HB_TAG('k','m','n',' '), HB_TAG_NONE }, /* Awtuw != Kumaoni */
{HB_TAG('k','m','o',' '), HB_TAG_NONE }, /* Kwoma != Komo */
{HB_TAG('k','m','r',' '), HB_TAG('K','U','R',' ')}, /* Northern Kurdish -> Kurdish */
@@ -898,6 +900,7 @@ static const LangTag ot_languages3[] = {
{HB_TAG('k','s','i',' '), HB_TAG_NONE }, /* Krisa != Khasi */
{HB_TAG('k','s','m',' '), HB_TAG_NONE }, /* Kumba != Kildin Sami */
{HB_TAG('k','s','s',' '), HB_TAG('K','I','S',' ')}, /* Southern Kisi -> Kisii */
+/*{HB_TAG('k','s','u',' '), HB_TAG('K','S','U',' ')},*/ /* Khamyang */
{HB_TAG('k','s','w',' '), HB_TAG('K','S','W',' ')}, /* S’gaw Karen */
{HB_TAG('k','s','w',' '), HB_TAG('K','R','N',' ')}, /* S'gaw Karen -> Karen */
{HB_TAG('k','t','b',' '), HB_TAG('K','E','B',' ')}, /* Kambaata -> Kebena */
@@ -911,6 +914,7 @@ static const LangTag ot_languages3[] = {
{HB_TAG('k','u','y',' '), HB_TAG_NONE }, /* Kuuku-Ya'u != Kuy */
{HB_TAG('k','v','b',' '), HB_TAG('M','L','Y',' ')}, /* Kubu -> Malay */
{HB_TAG('k','v','l',' '), HB_TAG('K','R','N',' ')}, /* Kayaw -> Karen */
+ {HB_TAG('k','v','q',' '), HB_TAG('K','V','Q',' ')}, /* Geba Karen */
{HB_TAG('k','v','q',' '), HB_TAG('K','R','N',' ')}, /* Geba Karen -> Karen */
{HB_TAG('k','v','r',' '), HB_TAG('M','L','Y',' ')}, /* Kerinci -> Malay */
{HB_TAG('k','v','t',' '), HB_TAG('K','R','N',' ')}, /* Lahta Karen -> Karen */
@@ -1146,6 +1150,7 @@ static const LangTag ot_languages3[] = {
{HB_TAG('n','o','d',' '), HB_TAG('N','T','A',' ')}, /* Northern Thai -> Northern Tai */
/*{HB_TAG('n','o','e',' '), HB_TAG('N','O','E',' ')},*/ /* Nimadi */
/*{HB_TAG('n','o','g',' '), HB_TAG('N','O','G',' ')},*/ /* Nogai */
+/*{HB_TAG('n','o','p',' '), HB_TAG('N','O','P',' ')},*/ /* Numanggang */
/*{HB_TAG('n','o','v',' '), HB_TAG('N','O','V',' ')},*/ /* Novial */
{HB_TAG('n','p','i',' '), HB_TAG('N','E','P',' ')}, /* Nepali */
{HB_TAG('n','p','l',' '), HB_TAG('N','A','H',' ')}, /* Southeastern Puebla Nahuatl -> Nahuatl */
@@ -1156,6 +1161,7 @@ static const LangTag ot_languages3[] = {
{HB_TAG('n','s','u',' '), HB_TAG('N','A','H',' ')}, /* Sierra Negra Nahuatl -> Nahuatl */
{HB_TAG('n','t','o',' '), HB_TAG_NONE }, /* Ntomba != Esperanto */
{HB_TAG('n','u','e',' '), HB_TAG('B','A','D','0')}, /* Ngundu -> Banda */
+/*{HB_TAG('n','u','k',' '), HB_TAG('N','U','K',' ')},*/ /* Nuu-chah-nulth */
{HB_TAG('n','u','u',' '), HB_TAG('B','A','D','0')}, /* Ngbundu -> Banda */
{HB_TAG('n','u','z',' '), HB_TAG('N','A','H',' ')}, /* Tlamacazapa Nahuatl -> Nahuatl */
{HB_TAG('n','w','e',' '), HB_TAG('B','M','L',' ')}, /* Ngwe -> Bamileke */
@@ -1399,8 +1405,10 @@ static const LangTag ot_languages3[] = {
{HB_TAG('s','i','z',' '), HB_TAG('B','B','R',' ')}, /* Siwi -> Berber */
/*{HB_TAG('s','j','a',' '), HB_TAG('S','J','A',' ')},*/ /* Epena */
{HB_TAG('s','j','d',' '), HB_TAG('K','S','M',' ')}, /* Kildin Sami */
+/*{HB_TAG('s','j','e',' '), HB_TAG('S','J','E',' ')},*/ /* Pite Sami */
{HB_TAG('s','j','o',' '), HB_TAG('S','I','B',' ')}, /* Xibe -> Sibe */
{HB_TAG('s','j','s',' '), HB_TAG('B','B','R',' ')}, /* Senhaja De Srair -> Berber */
+/*{HB_TAG('s','j','u',' '), HB_TAG('S','J','U',' ')},*/ /* Ume Sami */
{HB_TAG('s','k','g',' '), HB_TAG('M','L','G',' ')}, /* Sakalava Malagasy -> Malagasy */
{HB_TAG('s','k','r',' '), HB_TAG('S','R','K',' ')}, /* Saraiki */
{HB_TAG('s','k','s',' '), HB_TAG_NONE }, /* Maia != Skolt Sami */
@@ -1461,6 +1469,7 @@ static const LangTag ot_languages3[] = {
{HB_TAG('t','a','q',' '), HB_TAG('B','B','R',' ')}, /* Tamasheq -> Berber */
{HB_TAG('t','a','s',' '), HB_TAG('C','P','P',' ')}, /* Tay Boi -> Creoles */
{HB_TAG('t','a','u',' '), HB_TAG('A','T','H',' ')}, /* Upper Tanana -> Athapaskan */
+/*{HB_TAG('t','b','v',' '), HB_TAG('T','B','V',' ')},*/ /* Tobo */
{HB_TAG('t','c','b',' '), HB_TAG('A','T','H',' ')}, /* Tanacross -> Athapaskan */
{HB_TAG('t','c','e',' '), HB_TAG('A','T','H',' ')}, /* Southern Tutchone -> Athapaskan */
{HB_TAG('t','c','h',' '), HB_TAG('C','P','P',' ')}, /* Turks And Caicos Creole English -> Creoles */
@@ -1623,7 +1632,7 @@ static const LangTag ot_languages3[] = {
{HB_TAG('y','b','a',' '), HB_TAG_NONE }, /* Yala != Yoruba */
{HB_TAG('y','b','b',' '), HB_TAG('B','M','L',' ')}, /* Yemba -> Bamileke */
{HB_TAG('y','b','d',' '), HB_TAG('A','R','K',' ')}, /* Yangbye (retired code) -> Rakhine */
- {HB_TAG('y','c','r',' '), HB_TAG_NONE }, /* Yilan Creole != Y-Cree */
+ {HB_TAG('y','c','r',' '), HB_TAG('C','P','P',' ')}, /* Yilan Creole -> Creoles */
{HB_TAG('y','d','d',' '), HB_TAG('J','I','I',' ')}, /* Eastern Yiddish -> Yiddish */
/*{HB_TAG('y','g','p',' '), HB_TAG('Y','G','P',' ')},*/ /* Gepo */
{HB_TAG('y','i','h',' '), HB_TAG('J','I','I',' ')}, /* Western Yiddish -> Yiddish */
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-var-common.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-var-common.hh
index efbbfb25d7b..3ab58ae301e 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-var-common.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-var-common.hh
@@ -885,9 +885,9 @@ struct TupleVariationData
* no need to do find_shared_points () again */
hb_vector_t<char> *shared_points_bytes = nullptr;
- /* total compiled byte size as TupleVariationData format, initialized to its
- * min_size: 4 */
- unsigned compiled_byte_size = 4;
+ /* total compiled byte size as TupleVariationData format, initialized to 0 */
+ unsigned compiled_byte_size = 0;
+ bool needs_padding = false;
/* for gvar iup delta optimization: whether this is a composite glyph */
bool is_composite = false;
@@ -1219,12 +1219,21 @@ struct TupleVariationData
bool compile_bytes (const hb_map_t& axes_index_map,
const hb_map_t& axes_old_index_tag_map,
bool use_shared_points,
+ bool is_gvar = false,
const hb_hashmap_t<const hb_vector_t<char>*, unsigned>* shared_tuples_idx_map = nullptr)
{
+ // return true for empty glyph
+ if (!tuple_vars)
+ return true;
+
// compile points set and store data in hashmap
if (!compile_all_point_sets ())
return false;
+ /* total compiled byte size as TupleVariationData format, initialized to its
+ * min_size: 4 */
+ compiled_byte_size += 4;
+
if (use_shared_points)
{
find_shared_points ();
@@ -1253,6 +1262,13 @@ struct TupleVariationData
return false;
compiled_byte_size += tuple.compiled_tuple_header.length + points_data_length + tuple.compiled_deltas.length;
}
+
+ if (is_gvar && (compiled_byte_size % 2))
+ {
+ needs_padding = true;
+ compiled_byte_size += 1;
+ }
+
return true;
}
@@ -1295,7 +1311,7 @@ struct TupleVariationData
}
/* padding for gvar */
- if (is_gvar && (compiled_byte_size % 2))
+ if (is_gvar && needs_padding)
{
HBUINT8 pad;
pad = 0;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-var-gvar-table.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-var-gvar-table.hh
index b021a00f669..96cc2e88733 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-var-gvar-table.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-var-gvar-table.hh
@@ -140,6 +140,7 @@ struct glyph_variations_t
for (tuple_variations_t& vars: glyph_variations)
if (!vars.compile_bytes (axes_index_map, axes_old_index_tag_map,
true, /* use shared points*/
+ true,
&shared_tuples_idx_map))
return false;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-paint.h b/src/3rdparty/harfbuzz-ng/src/hb-paint.h
index b0cd384e286..d8896a5230a 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-paint.h
+++ b/src/3rdparty/harfbuzz-ng/src/hb-paint.h
@@ -146,7 +146,7 @@ typedef void (*hb_paint_pop_transform_func_t) (hb_paint_funcs_t *funcs,
*
* A virtual method for the #hb_paint_funcs_t to render a color glyph by glyph index.
*
- * Return value: %true if the glyph was painted, %false otherwise.
+ * Return value: `true` if the glyph was painted, `false` otherwise.
*
* Since: 8.2.0
*/
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-sanitize.hh b/src/3rdparty/harfbuzz-ng/src/hb-sanitize.hh
index 408649c7689..199165a1e4c 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-sanitize.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-sanitize.hh
@@ -72,8 +72,8 @@
*
* === The sanitize() contract ===
*
- * The sanitize() method of each object type shall return true if it's safe to
- * call other methods of the object, and %false otherwise.
+ * The sanitize() method of each object type shall return `true` if it's safe to
+ * call other methods of the object, and `false` otherwise.
*
* Note that what sanitize() checks for might align with what the specification
* describes as valid table data, but does not have to be. In particular, we
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-serialize.hh b/src/3rdparty/harfbuzz-ng/src/hb-serialize.hh
index e988451eb36..f066d0e31e8 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-serialize.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-serialize.hh
@@ -36,9 +36,7 @@
#include "hb-map.hh"
#include "hb-pool.hh"
-#ifdef HB_EXPERIMENTAL_API
-#include "hb-subset-repacker.h"
-#endif
+#include "hb-subset-serialize.h"
/*
* Serialize
@@ -75,8 +73,7 @@ struct hb_serialize_context_t
object_t () = default;
-#ifdef HB_EXPERIMENTAL_API
- object_t (const hb_object_t &o)
+ object_t (const hb_subset_serialize_object_t &o)
{
head = o.head;
tail = o.tail;
@@ -89,7 +86,6 @@ struct hb_serialize_context_t
for (unsigned i = 0; i < o.num_virtual_links; i++)
virtual_links.push (o.virtual_links[i]);
}
-#endif
bool add_virtual_link (objidx_t objidx)
{
@@ -148,8 +144,7 @@ struct hb_serialize_context_t
link_t () = default;
-#ifdef HB_EXPERIMENTAL_API
- link_t (const hb_link_t &o)
+ link_t (const hb_subset_serialize_link_t &o)
{
width = o.width;
is_signed = 0;
@@ -158,7 +153,6 @@ struct hb_serialize_context_t
bias = 0;
objidx = o.objidx;
}
-#endif
HB_INTERNAL static int cmp (const void* a, const void* b)
{
@@ -400,6 +394,7 @@ struct hb_serialize_context_t
{
merge_virtual_links (obj, objidx);
obj->fini ();
+ object_pool.release (obj);
return objidx;
}
}
@@ -463,9 +458,11 @@ struct hb_serialize_context_t
while (packed.length > 1 &&
packed.tail ()->head < tail)
{
- packed_map.del (packed.tail ());
- assert (!packed.tail ()->next);
- packed.tail ()->fini ();
+ object_t *obj = packed.tail ();
+ packed_map.del (obj);
+ assert (!obj->next);
+ obj->fini ();
+ object_pool.release (obj);
packed.pop ();
}
if (packed.length > 1)
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-shape.h b/src/3rdparty/harfbuzz-ng/src/hb-shape.h
index d4d4fdfd267..b09bf058747 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-shape.h
+++ b/src/3rdparty/harfbuzz-ng/src/hb-shape.h
@@ -53,6 +53,7 @@ hb_shape_full (hb_font_t *font,
unsigned int num_features,
const char * const *shaper_list);
+#ifdef HB_EXPERIMENTAL_API
HB_EXTERN hb_bool_t
hb_shape_justify (hb_font_t *font,
hb_buffer_t *buffer,
@@ -64,6 +65,7 @@ hb_shape_justify (hb_font_t *font,
float *advance, /* IN/OUT */
hb_tag_t *var_tag, /* OUT */
float *var_value /* OUT */);
+#endif
HB_EXTERN const char **
hb_shape_list_shapers (void);
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-subset-input.cc b/src/3rdparty/harfbuzz-ng/src/hb-subset-input.cc
index b874949df09..2f0b54f474b 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-subset-input.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-subset-input.cc
@@ -534,7 +534,6 @@ hb_subset_input_pin_axis_location (hb_subset_input_t *input,
*
* Note: input min value can not be bigger than input max value. If the input
* default value is not within the new min/max range, it'll be clamped.
- * Note: currently it supports gvar and cvar tables only.
*
* Return value: `true` if success, `false` otherwise
*
@@ -597,6 +596,144 @@ hb_subset_input_get_axis_range (hb_subset_input_t *input,
*axis_max_value = triple->maximum;
return true;
}
+
+/**
+ * hb_subset_axis_range_from_string:
+ * @str: a string to parse
+ * @len: length of @str, or -1 if str is NULL terminated
+ * @axis_min_value: (out): the axis min value to initialize with the parsed value
+ * @axis_max_value: (out): the axis max value to initialize with the parsed value
+ * @axis_def_value: (out): the axis default value to initialize with the parse
+ * value
+ *
+ * Parses a string into a subset axis range(min, def, max).
+ * Axis positions string is in the format of min:def:max or min:max
+ * When parsing axis positions, empty values as meaning the existing value for that part
+ * E.g: :300:500
+ * Specifies min = existing, def = 300, max = 500
+ * In the output axis_range, if a value should be set to it's default value,
+ * then it will be set to NaN
+ *
+ * Return value:
+ * `true` if @str is successfully parsed, `false` otherwise
+ *
+ * Since: 10.2.0
+ */
+HB_EXTERN hb_bool_t
+hb_subset_axis_range_from_string (const char *str, int len,
+ float *axis_min_value,
+ float *axis_max_value,
+ float *axis_def_value)
+{
+ if (len < 0)
+ len = strlen (str);
+
+ const char *end = str + len;
+ const char* part = strpbrk (str, ":");
+ if (!part)
+ {
+ // Single value.
+ if (strcmp (str, "drop") == 0)
+ {
+ *axis_min_value = NAN;
+ *axis_def_value = NAN;
+ *axis_max_value = NAN;
+ return true;
+ }
+
+ double v;
+ if (!hb_parse_double (&str, end, &v)) return false;
+
+ *axis_min_value = v;
+ *axis_def_value = v;
+ *axis_max_value = v;
+ return true;
+ }
+
+ float values[3];
+ int count = 0;
+ for (int i = 0; i < 3; i++) {
+ count++;
+ if (!*str || part == str)
+ {
+ values[i] = NAN;
+
+ if (part == NULL) break;
+ str = part + 1;
+ part = strpbrk (str, ":");
+ continue;
+ }
+
+ double v;
+ if (!hb_parse_double (&str, part, &v)) return false;
+ values[i] = v;
+
+ if (part == NULL) break;
+ str = part + 1;
+ part = strpbrk (str, ":");
+ }
+
+ if (count == 2)
+ {
+ *axis_min_value = values[0];
+ *axis_def_value = NAN;
+ *axis_max_value = values[1];
+ return true;
+ }
+ else if (count == 3)
+ {
+ *axis_min_value = values[0];
+ *axis_def_value = values[1];
+ *axis_max_value = values[2];
+ return true;
+ }
+ return false;
+}
+
+/**
+ * hb_subset_axis_range_to_string:
+ * @input: a #hb_subset_input_t object.
+ * @axis_tag: an axis to convert
+ * @buf: (array length=size) (out caller-allocates): output string
+ * @size: the allocated size of @buf
+ *
+ * Converts an axis range into a `NULL`-terminated string in the format
+ * understood by hb_subset_axis_range_from_string(). The client in responsible for
+ * allocating big enough size for @buf, 128 bytes is more than enough.
+ *
+ * Since: 10.2.0
+ */
+HB_EXTERN void
+hb_subset_axis_range_to_string (hb_subset_input_t *input,
+ hb_tag_t axis_tag,
+ char *buf, unsigned size)
+{
+ if (unlikely (!size)) return;
+ Triple* triple;
+ if (!input->axes_location.has(axis_tag, &triple)) {
+ return;
+ }
+
+ char s[128];
+ unsigned len = 0;
+
+ hb_locale_t clocale HB_UNUSED;
+ hb_locale_t oldlocale HB_UNUSED;
+ oldlocale = hb_uselocale (clocale = newlocale (LC_ALL_MASK, "C", NULL));
+ len += hb_max (0, snprintf (s, ARRAY_LENGTH (s) - len, "%g", (double) triple->minimum));
+ s[len++] = ':';
+
+ len += hb_max (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%g", (double) triple->middle));
+ s[len++] = ':';
+
+ len += hb_max (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%g", (double) triple->maximum));
+ (void) hb_uselocale (((void) freelocale (clocale), oldlocale));
+
+ assert (len < ARRAY_LENGTH (s));
+ len = hb_min (len, size - 1);
+ hb_memcpy (buf, s, len);
+ buf[len] = '\0';
+}
#endif
/**
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-subset-plan.cc b/src/3rdparty/harfbuzz-ng/src/hb-subset-plan.cc
index 59020dbe877..c88fd75a543 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-subset-plan.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-subset-plan.cc
@@ -678,7 +678,8 @@ _populate_unicodes_to_retain (const hb_set_t *unicodes,
hb_subset_plan_t *plan)
{
OT::cmap::accelerator_t cmap (plan->source);
- unsigned size_threshold = plan->source->get_num_glyphs ();
+ unsigned size_threshold = plan->source->get_num_glyphs ();
+
if (glyphs->is_empty () && unicodes->get_population () < size_threshold)
{
@@ -797,6 +798,21 @@ _populate_unicodes_to_retain (const hb_set_t *unicodes,
plan->unicodes.add_sorted_array (&arr.arrayZ->first, arr.length, sizeof (*arr.arrayZ));
plan->_glyphset_gsub.add_array (&arr.arrayZ->second, arr.length, sizeof (*arr.arrayZ));
}
+
+ // Variation selectors don't have glyphs associated with them in the cmap so they will have been filtered out above
+ // but should still be retained. Add them back here.
+
+ // However, the min and max codepoints for OS/2 should be calculated without considering variation selectors,
+ // so record those first.
+ plan->os2_info.min_cmap_codepoint = plan->unicodes.get_min();
+ plan->os2_info.max_cmap_codepoint = plan->unicodes.get_max();
+
+ hb_set_t variation_selectors_to_retain;
+ cmap.collect_variation_selectors(&variation_selectors_to_retain);
+ + variation_selectors_to_retain.iter()
+ | hb_filter(unicodes)
+ | hb_sink(&plan->unicodes)
+ ;
}
static unsigned
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-subset-plan.hh b/src/3rdparty/harfbuzz-ng/src/hb-subset-plan.hh
index 19a9fa69182..fe80c08bcd0 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-subset-plan.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-subset-plan.hh
@@ -41,6 +41,13 @@ namespace OT {
struct Feature;
}
+struct os2_info_t {
+ hb_codepoint_t min_cmap_codepoint;
+ hb_codepoint_t max_cmap_codepoint;
+};
+
+typedef struct os2_info_t os2_info_t;
+
struct head_maxp_info_t
{
head_maxp_info_t ()
@@ -180,6 +187,8 @@ struct hb_subset_plan_t
//recalculated head/maxp table info after instancing
mutable head_maxp_info_t head_maxp_info;
+ os2_info_t os2_info;
+
const hb_subset_accelerator_t* accelerator;
hb_subset_accelerator_t* inprogress_accelerator;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-subset-repacker.h b/src/3rdparty/harfbuzz-ng/src/hb-subset-repacker.h
deleted file mode 100644
index 245cf607657..00000000000
--- a/src/3rdparty/harfbuzz-ng/src/hb-subset-repacker.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright © 2022 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- */
-
-#ifndef HB_SUBSET_REPACKER_H
-#define HB_SUBSET_REPACKER_H
-
-#include "hb.h"
-
-HB_BEGIN_DECLS
-
-#ifdef HB_EXPERIMENTAL_API
-/*
- * struct hb_link_t
- * width: offsetSize in bytes
- * position: position of the offset field in bytes
- * from beginning of subtable
- * objidx: index of subtable
- */
-struct hb_link_t
-{
- unsigned width;
- unsigned position;
- unsigned objidx;
-};
-
-typedef struct hb_link_t hb_link_t;
-
-/*
- * struct hb_object_t
- * head: start of object data
- * tail: end of object data
- * num_real_links: num of offset field in the object
- * real_links: pointer to array of offset info
- * num_virtual_links: num of objects that must be packed
- * after current object in the final serialized order
- * virtual_links: array of virtual link info
- */
-struct hb_object_t
-{
- char *head;
- char *tail;
- unsigned num_real_links;
- hb_link_t *real_links;
- unsigned num_virtual_links;
- hb_link_t *virtual_links;
-};
-
-typedef struct hb_object_t hb_object_t;
-
-HB_EXTERN hb_blob_t*
-hb_subset_repack_or_fail (hb_tag_t table_tag,
- hb_object_t* hb_objects,
- unsigned num_hb_objs);
-
-#endif
-
-HB_END_DECLS
-
-#endif /* HB_SUBSET_REPACKER_H */
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-subset-repacker.cc b/src/3rdparty/harfbuzz-ng/src/hb-subset-serialize.cc
index 6a29b35be7e..dc7613654e6 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-subset-repacker.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-subset-serialize.cc
@@ -22,37 +22,36 @@
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
*/
-#include "hb-repacker.hh"
-#ifdef HB_EXPERIMENTAL_API
+#include "hb.hh"
+
+#include "hb-subset-serialize.h"
+#include "hb-repacker.hh"
/**
- * hb_subset_repack_or_fail:
+ * hb_subset_serialize_or_fail:
* @table_tag: tag of the table being packed, needed to allow table specific optimizations.
- * @hb_objects: raw array of struct hb_object_t, which provides
+ * @hb_objects: raw array of struct hb_subset_serialize_object_t, which provides
* object graph info
- * @num_hb_objs: number of hb_object_t in the hb_objects array.
+ * @num_hb_objs: number of hb_subset_serialize_object_t in the hb_objects array.
*
- * Given the input object graph info, repack a table to eliminate
- * offset overflows. A nullptr is returned if the repacking attempt fails.
+ * Given the input object graph info, repack a table to eliminate offset overflows and
+ * serialize it into a continuous array of bytes. A nullptr is returned if the serializing attempt fails.
* Table specific optimizations (eg. extension promotion in GSUB/GPOS) may be performed.
* Passing HB_TAG_NONE will disable table specific optimizations.
*
- * XSince: EXPERIMENTAL
+ * Since: 10.2.0
**/
-hb_blob_t* hb_subset_repack_or_fail (hb_tag_t table_tag,
- hb_object_t* hb_objects,
- unsigned num_hb_objs)
+HB_EXTERN hb_blob_t *
+hb_subset_serialize_or_fail (hb_tag_t table_tag,
+ hb_subset_serialize_object_t *hb_objects,
+ unsigned num_hb_objs)
{
- hb_vector_t<const hb_object_t *> packed;
+ hb_vector_t<const hb_subset_serialize_object_t *> packed;
packed.alloc (num_hb_objs + 1);
packed.push (nullptr);
for (unsigned i = 0 ; i < num_hb_objs ; i++)
packed.push (&(hb_objects[i]));
- return hb_resolve_overflows (packed,
- table_tag,
- 20,
- true);
+ return hb_resolve_overflows (packed, table_tag, 20, true);
}
-#endif
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-subset-serialize.h b/src/3rdparty/harfbuzz-ng/src/hb-subset-serialize.h
new file mode 100644
index 00000000000..9035d4ced7a
--- /dev/null
+++ b/src/3rdparty/harfbuzz-ng/src/hb-subset-serialize.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright © 2022 Google, Inc.
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ */
+
+#ifndef HB_SUBSET_SERIALIZE_H
+#define HB_SUBSET_SERIALIZE_H
+
+#include "hb.h"
+
+HB_BEGIN_DECLS
+
+/**
+ * hb_subset_serialize_link_t:
+ * @width: offsetSize in bytes
+ * @position: position of the offset field in bytes from
+ * beginning of subtable
+ * @objidx: index of subtable
+ *
+ * Represents a link between two objects in the object graph
+ * to be serialized.
+ *
+ * Since: 10.2.0
+ */
+typedef struct hb_subset_serialize_link_t {
+ unsigned int width;
+ unsigned int position;
+ unsigned int objidx;
+} hb_subset_serialize_link_t;
+
+/**
+ * hb_subset_serialize_object_t:
+ * @head: start of object data
+ * @tail: end of object data
+ * @num_real_links: number of offset field in the object
+ * @real_links: array of offset info
+ * @num_virtual_links: number of objects that must be packed
+ * after current object in the final
+ * serialized order
+ * @virtual_links: array of virtual link info
+ *
+ * Represents an object in the object graph to be serialized.
+ *
+ * Since: 10.2.0
+ */
+typedef struct hb_subset_serialize_object_t {
+ char *head;
+ char *tail;
+ unsigned int num_real_links;
+ hb_subset_serialize_link_t *real_links;
+ unsigned int num_virtual_links;
+ hb_subset_serialize_link_t *virtual_links;
+} hb_subset_serialize_object_t;
+
+HB_EXTERN hb_blob_t *
+hb_subset_serialize_or_fail (hb_tag_t table_tag,
+ hb_subset_serialize_object_t *hb_objects,
+ unsigned num_hb_objs);
+
+
+HB_END_DECLS
+
+#endif /* HB_SUBSET_SERIALIZE_H */
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-subset.cc b/src/3rdparty/harfbuzz-ng/src/hb-subset.cc
index 7cea9f18374..4e96c985365 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-subset.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-subset.cc
@@ -295,7 +295,7 @@ _try_subset (const TableType *table,
DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c ran out of room; reallocating to %u bytes.",
HB_UNTAG (c->table_tag), buf_size);
- if (unlikely (buf_size > c->source_blob->length * 16 ||
+ if (unlikely (buf_size > c->source_blob->length * 256 ||
!buf->alloc (buf_size, true)))
{
DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c failed to reallocate %u bytes.",
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-subset.h b/src/3rdparty/harfbuzz-ng/src/hb-subset.h
index 365c21a6308..71276c7a6d1 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-subset.h
+++ b/src/3rdparty/harfbuzz-ng/src/hb-subset.h
@@ -203,6 +203,18 @@ hb_subset_input_set_axis_range (hb_subset_input_t *input,
float axis_max_value,
float axis_def_value);
+HB_EXTERN hb_bool_t
+hb_subset_axis_range_from_string (const char *str, int len,
+ float *axis_min_value,
+ float *axis_max_value,
+ float *axis_def_value);
+
+HB_EXTERN void
+hb_subset_axis_range_to_string (hb_subset_input_t *input,
+ hb_tag_t axis_tag,
+ char *buf,
+ unsigned size);
+
#ifdef HB_EXPERIMENTAL_API
HB_EXTERN hb_bool_t
hb_subset_input_override_name_table (hb_subset_input_t *input,
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-utf.hh b/src/3rdparty/harfbuzz-ng/src/hb-utf.hh
index 1120bd1cccf..6db9bf2fd79 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-utf.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-utf.hh
@@ -458,19 +458,21 @@ struct hb_ascii_t
template <typename utf_t>
static inline const typename utf_t::codepoint_t *
hb_utf_offset_to_pointer (const typename utf_t::codepoint_t *start,
+ const typename utf_t::codepoint_t *text,
+ unsigned text_len,
signed offset)
{
hb_codepoint_t unicode;
while (offset-- > 0)
start = utf_t::next (start,
- start + utf_t::max_len,
+ text + text_len,
&unicode,
HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT);
while (offset++ < 0)
start = utf_t::prev (start,
- start - utf_t::max_len,
+ text,
&unicode,
HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT);
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-version.h b/src/3rdparty/harfbuzz-ng/src/hb-version.h
index 1083bc9c991..8e767cba269 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-version.h
+++ b/src/3rdparty/harfbuzz-ng/src/hb-version.h
@@ -47,7 +47,7 @@ HB_BEGIN_DECLS
*
* The minor component of the library version available at compile-time.
*/
-#define HB_VERSION_MINOR 1
+#define HB_VERSION_MINOR 2
/**
* HB_VERSION_MICRO:
*
@@ -60,7 +60,7 @@ HB_BEGIN_DECLS
*
* A string literal containing the library version available at compile-time.
*/
-#define HB_VERSION_STRING "10.1.0"
+#define HB_VERSION_STRING "10.2.0"
/**
* HB_VERSION_ATLEAST: