History

2020-03-16 release

bellard committed 6 years ago

Commit 383e2b01 parent 0e8fffd26 files · +2345 −2013Browse files

Unified · Split

26 files
  1. Changelog +11 −0
  2. TODO +3 −2
  3. VERSION +1 −1
  4. doc/jsbignum.html +15 −18
  5. doc/jsbignum.pdf +0 −0
  6. doc/jsbignum.texi +13 −16
  7. doc/quickjs.html +79 −52
  8. doc/quickjs.pdf +0 −0
  9. doc/quickjs.texi +74 −50
  10. libbf.c +40 −7
  11. libbf.h +1 −0
  12. libregexp.c +58 −34
  13. libunicode-table.h +1619 −1564
  14. quickjs-libc.c +220 −168
  15. quickjs-opcode.h +0 −1
  16. quickjs.c +128 −76
  17. quickjs.h +27 −1
  18. release.sh +15 −6
  19. run-test262.c +4 −1
  20. test262.conf +1 −0
  21. test262_errors.txt +7 −2
  22. tests/microbench.js +2 −4
  23. tests/test_builtin.js +4 −0
  24. tests/test_std.js +10 −1
  25. unicode_download.sh +6 −6
  26. unicode_gen_def.h +9 −5
Changelog+11−0
@@ -1,3 +1,14 @@
12020-03-16:
2
3- reworked error handling in std and os libraries: suppressed I/O
4 exceptions in std FILE functions and return a positive errno value
5 when it is explicit
6- output exception messages to stderr
7- added std.loadFile(), std.strerror(), std.FILE.prototype.tello()
8- added JS_GetRuntimeOpaque(), JS_SetRuntimeOpaque(), JS_NewUint32()
9- updated to Unicode 13.0.0
10- misc bug fixes
11
12020-01-19:122020-01-19:
2 13
3- keep CONFIG_BIGNUM in the makefile14- keep CONFIG_BIGNUM in the makefile
TODO+3−2
@@ -73,5 +73,6 @@ REPL: · 72 unmodified lines
73Test262o: 0/11262 errors, 463 excluded73Test262o: 0/11262 errors, 463 excluded
74Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch)74Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch)
75 75
76Test262: 17/69942 errors, 855 excluded, 581 skipped76Test262: 22/70040 errors, 860 excluded, 581 skipped
77test262 commit: 28b4fcca4b1b1d278dfe0cc0e69c7d9d59b31aab77test262 commit: 25c9e334d301944537215caba1d7f44319f3e0da
78
VERSION+1−1
@@ -1 +1 @@
12020-01-1912020-03-16
doc/jsbignum.html+15−18
@@ -1,8 +1,7 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>2<html>
3<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->3<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
4<head>4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6<title>Javascript Bignum Extensions</title>5<title>Javascript Bignum Extensions</title>
7 6
8<meta name="description" content="Javascript Bignum Extensions">7<meta name="description" content="Javascript Bignum Extensions">
@@ -10,6 +9,7 @@ · 1 unmodified line
10<meta name="resource-type" content="document">9<meta name="resource-type" content="document">
11<meta name="distribution" content="global">10<meta name="distribution" content="global">
12<meta name="Generator" content="makeinfo">11<meta name="Generator" content="makeinfo">
12<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
13<link href="#SEC_Contents" rel="contents" title="Table of Contents">13<link href="#SEC_Contents" rel="contents" title="Table of Contents">
14<style type="text/css">14<style type="text/css">
15<!--15<!--
@@ -121,7 +121,7 @@ changes were done in order to simplify the implementation. · 105 unmodified lines
121<ul>121<ul>
122<li> <code>with operators from</code> is not supported. Operator overloading is always enabled.122<li> <code>with operators from</code> is not supported. Operator overloading is always enabled.
123 123
124</li><li> The dispatch is not based on a static <code>[[OperatorSet]]</code> field in all instances. Instead, a dynamic lookup the of the <code>Symbol.operatorSet</code> property is done. This property is typically added in the prototype of each object.124</li><li> The dispatch is not based on a static <code>[[OperatorSet]]</code> field in all instances. Instead, a dynamic lookup of the <code>Symbol.operatorSet</code> property is done. This property is typically added in the prototype of each object.
125 125
126</li><li> <code>Operators.create(...dictionaries)</code> is used to create a new OperatorSet object. The <code>Operators</code> function is supported as an helper to be closer to the TC39 proposal.126</li><li> <code>Operators.create(...dictionaries)</code> is used to create a new OperatorSet object. The <code>Operators</code> function is supported as an helper to be closer to the TC39 proposal.
127 127
@@ -194,7 +194,7 @@ raised if <em>a &lt; 0</em>. · 66 unmodified lines
194<h3 class="section">4.1 Introduction</h3>194<h3 class="section">4.1 Introduction</h3>
195 195
196<p>This extension adds the <code>BigFloat</code> primitive type. The196<p>This extension adds the <code>BigFloat</code> primitive type. The
197<code>BigFloat</code> type represents floating point numbers are in base 2197<code>BigFloat</code> type represents floating point numbers in base 2
198with the IEEE 754 semantics. A floating198with the IEEE 754 semantics. A floating
199point number is represented as a sign, mantissa and exponent. The199point number is represented as a sign, mantissa and exponent. The
200special values <code>NaN</code>, <code>+/-Infinity</code>, <code>+0</code> and <code>-0</code>200special values <code>NaN</code>, <code>+/-Infinity</code>, <code>+0</code> and <code>-0</code>
@@ -216,15 +216,13 @@ point environment is used. · 15 unmodified lines
216<code>RNDN</code> (&ldquo;round to nearest with ties to even&rdquo;)<a name="DOCF1" href="#FOOT1"><sup>1</sup></a>. The status flags of the global environment cannot be216<code>RNDN</code> (&ldquo;round to nearest with ties to even&rdquo;)<a name="DOCF1" href="#FOOT1"><sup>1</sup></a>. The status flags of the global environment cannot be
217read<a name="DOCF2" href="#FOOT2"><sup>2</sup></a>. The precision of the global environment is217read<a name="DOCF2" href="#FOOT2"><sup>2</sup></a>. The precision of the global environment is
218<code>BigFloatEnv.prec</code>. The number of exponent bits of the global218<code>BigFloatEnv.prec</code>. The number of exponent bits of the global
219environment is <code>BigFloatEnv.expBits</code>. If <code>BigFloatEnv.expBits</code> is219environment is <code>BigFloatEnv.expBits</code>. The global environment
220strictly smaller than the maximum allowed number of exponent bits220subnormal flag is set to <code>true</code>.
221(<code>BigFloatEnv.expBitsMax</code>), then the global environment subnormal
222flag is set to <code>true</code>. Otherwise it is set to <code>false</code>;
223</p>221</p>
224<p>For example, <code>prec = 53</code> and <code> expBits = 11</code> give exactly222<p>For example, <code>prec = 53</code> and <code> expBits = 11</code> exactly give
225the same precision as the IEEE 754 64 bit floating point. The223the same precision as the IEEE 754 64 bit floating point format. The
226default precision is <code>prec = 113</code> and <code> expBits = 15</code> (IEEE224default precision is <code>prec = 113</code> and <code> expBits = 15</code> (IEEE
227754 128 bit floating point).225754 128 bit floating point format).
228</p>226</p>
229<p>The global floating point environment can only be modified temporarily227<p>The global floating point environment can only be modified temporarily
230when calling a function (see <code>BigFloatEnv.setPrec</code>). Hence a228when calling a function (see <code>BigFloatEnv.setPrec</code>). Hence a
@@ -433,9 +431,8 @@ environment. The initial value is <code>113</code>. · 202 unmodified lines
433</dd>431</dd>
434<dt><code>expBits</code></dt>432<dt><code>expBits</code></dt>
435<dd><p>Getter. Return the exponent size in bits of the global floating point433<dd><p>Getter. Return the exponent size in bits of the global floating point
436environment assuming an IEEE 754 representation. If <code>expBits &lt;434environment assuming an IEEE 754 representation. The initial value is
437expBitsMax</code>, then subnormal numbers are supported. The initial value435<code>15</code>.
438is <code>15</code>.
439</p>436</p>
440</dd>437</dd>
441<dt><code>setPrec(f, p[, e])</code></dt>438<dt><code>setPrec(f, p[, e])</code></dt>
@@ -608,7 +605,7 @@ Number value. · 166 unmodified lines
608 605
609<p>It returns <code>0m</code> if no parameter is provided. Otherwise the first606<p>It returns <code>0m</code> if no parameter is provided. Otherwise the first
610parameter is converted to a bigdecimal by using ToString(). Hence607parameter is converted to a bigdecimal by using ToString(). Hence
611Number value are not converted to their exact numerical value as608Number values are not converted to their exact numerical value as
612BigDecimal.609BigDecimal.
613</p>610</p>
614<a name="Properties-of-the-BigDecimal-object"></a>611<a name="Properties-of-the-BigDecimal-object"></a>
@@ -702,11 +699,11 @@ always represented as BigFloat. · 87 unmodified lines
702 699
703</li><li> The logical xor operator is still available with the <code>^^</code> operator.700</li><li> The logical xor operator is still available with the <code>^^</code> operator.
704 701
705</li><li> The integer division operator can be overloaded by modifying the corresponding operator in <code>BigInt.prototype.[[OperatorSet]]</code>.702</li><li> The modulo operator (<code>%</code>) returns the Euclidian remainder (always positive) instead of the truncated remainder.
706 703
707</li><li> The integer power operator with a non zero negative exponent can be overloaded by modifying the corresponding operator in <code>BigInt.prototype.[[OperatorSet]]</code>.704</li><li> The integer division operator can be overloaded with <code>Operators.updateBigIntOperators(dictionary)</code>.
708 705
709</li><li> The modulo operator (<code>%</code>) returns the Euclidian remainder (always positive) instead of the truncated remainder.706</li><li> The integer power operator with a non zero negative exponent can be overloaded with <code>Operators.updateBigIntOperators(dictionary)</code>.
710 707
711</li></ul>708</li></ul>
712 709
doc/jsbignum.pdf+0−0

Binary file not shown.

doc/jsbignum.texi+13−16
@@ -57,7 +57,7 @@ More precisely, the following modifications were made: · 56 unmodified lines
57 57
58@item @code{with operators from} is not supported. Operator overloading is always enabled.58@item @code{with operators from} is not supported. Operator overloading is always enabled.
59 59
60@item The dispatch is not based on a static @code{[[OperatorSet]]} field in all instances. Instead, a dynamic lookup the of the @code{Symbol.operatorSet} property is done. This property is typically added in the prototype of each object.60@item The dispatch is not based on a static @code{[[OperatorSet]]} field in all instances. Instead, a dynamic lookup of the @code{Symbol.operatorSet} property is done. This property is typically added in the prototype of each object.
61 61
62@item @code{Operators.create(...dictionaries)} is used to create a new OperatorSet object. The @code{Operators} function is supported as an helper to be closer to the TC39 proposal.62@item @code{Operators.create(...dictionaries)} is used to create a new OperatorSet object. The @code{Operators} function is supported as an helper to be closer to the TC39 proposal.
63 63
@@ -119,7 +119,7 @@ Return the number of trailing zeros in the two's complement binary representatio · 55 unmodified lines
119@section Introduction119@section Introduction
120 120
121This extension adds the @code{BigFloat} primitive type. The121This extension adds the @code{BigFloat} primitive type. The
122@code{BigFloat} type represents floating point numbers are in base 2122@code{BigFloat} type represents floating point numbers in base 2
123with the IEEE 754 semantics. A floating123with the IEEE 754 semantics. A floating
124point number is represented as a sign, mantissa and exponent. The124point number is represented as a sign, mantissa and exponent. The
125special values @code{NaN}, @code{+/-Infinity}, @code{+0} and @code{-0}125special values @code{NaN}, @code{+/-Infinity}, @code{+0} and @code{-0}
@@ -143,15 +143,13 @@ explicit.}. The status flags of the global environment cannot be · 17 unmodified lines
143read@footnote{The rationale is to avoid side effects for the built-in143read@footnote{The rationale is to avoid side effects for the built-in
144operators.}. The precision of the global environment is144operators.}. The precision of the global environment is
145@code{BigFloatEnv.prec}. The number of exponent bits of the global145@code{BigFloatEnv.prec}. The number of exponent bits of the global
146environment is @code{BigFloatEnv.expBits}. If @code{BigFloatEnv.expBits} is146environment is @code{BigFloatEnv.expBits}. The global environment
147strictly smaller than the maximum allowed number of exponent bits147subnormal flag is set to @code{true}.
148(@code{BigFloatEnv.expBitsMax}), then the global environment subnormal
149flag is set to @code{true}. Otherwise it is set to @code{false};
150 148
151For example, @code{prec = 53} and @code{ expBits = 11} give exactly149For example, @code{prec = 53} and @code{ expBits = 11} exactly give
152the same precision as the IEEE 754 64 bit floating point. The150the same precision as the IEEE 754 64 bit floating point format. The
153default precision is @code{prec = 113} and @code{ expBits = 15} (IEEE151default precision is @code{prec = 113} and @code{ expBits = 15} (IEEE
154754 128 bit floating point).152754 128 bit floating point format).
155 153
156The global floating point environment can only be modified temporarily154The global floating point environment can only be modified temporarily
157when calling a function (see @code{BigFloatEnv.setPrec}). Hence a155when calling a function (see @code{BigFloatEnv.setPrec}). Hence a
@@ -345,9 +343,8 @@ environment. The initial value is @code{113}. · 187 unmodified lines
345 343
346@item expBits344@item expBits
347Getter. Return the exponent size in bits of the global floating point345Getter. Return the exponent size in bits of the global floating point
348environment assuming an IEEE 754 representation. If @code{expBits <346environment assuming an IEEE 754 representation. The initial value is
349expBitsMax}, then subnormal numbers are supported. The initial value347@code{15}.
350is @code{15}.
351 348
352@item setPrec(f, p[, e])349@item setPrec(f, p[, e])
353Set the precision of the global floating point environment to @code{p}350Set the precision of the global floating point environment to @code{p}
@@ -492,7 +489,7 @@ BigDecimal literals are decimal floating point numbers with a trailing · 138 unmodified lines
492 489
493It returns @code{0m} if no parameter is provided. Otherwise the first490It returns @code{0m} if no parameter is provided. Otherwise the first
494parameter is converted to a bigdecimal by using ToString(). Hence491parameter is converted to a bigdecimal by using ToString(). Hence
495Number value are not converted to their exact numerical value as492Number values are not converted to their exact numerical value as
496BigDecimal.493BigDecimal.
497 494
498@subsection Properties of the @code{BigDecimal} object495@subsection Properties of the @code{BigDecimal} object
@@ -581,11 +578,11 @@ The following changes are made to the Javascript semantics: · 82 unmodified lines
581 578
582@item The logical xor operator is still available with the @code{^^} operator.579@item The logical xor operator is still available with the @code{^^} operator.
583 580
584@item The integer division operator can be overloaded by modifying the corresponding operator in @code{BigInt.prototype.[[OperatorSet]]}.581@item The modulo operator (@code{%}) returns the Euclidian remainder (always positive) instead of the truncated remainder.
585 582
586@item The integer power operator with a non zero negative exponent can be overloaded by modifying the corresponding operator in @code{BigInt.prototype.[[OperatorSet]]}.583@item The integer division operator can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}.
587 584
588@item The modulo operator (@code{%}) returns the Euclidian remainder (always positive) instead of the truncated remainder.585@item The integer power operator with a non zero negative exponent can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}.
589 586
590@end itemize587@end itemize
591 588
doc/quickjs.html+79−52
@@ -1,8 +1,7 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>2<html>
3<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->3<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
4<head>4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6<title>QuickJS Javascript Engine</title>5<title>QuickJS Javascript Engine</title>
7 6
8<meta name="description" content="QuickJS Javascript Engine">7<meta name="description" content="QuickJS Javascript Engine">
@@ -10,6 +9,7 @@ · 1 unmodified line
10<meta name="resource-type" content="document">9<meta name="resource-type" content="document">
11<meta name="distribution" content="global">10<meta name="distribution" content="global">
12<meta name="Generator" content="makeinfo">11<meta name="Generator" content="makeinfo">
12<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
13<link href="#SEC_Contents" rel="contents" title="Table of Contents">13<link href="#SEC_Contents" rel="contents" title="Table of Contents">
14<style type="text/css">14<style type="text/css">
15<!--15<!--
@@ -519,50 +519,39 @@ optional properties: · 503 unmodified lines
519<dd><p>Evaluate the file <code>filename</code> as a script (global eval).519<dd><p>Evaluate the file <code>filename</code> as a script (global eval).
520</p>520</p>
521</dd>521</dd>
522<dt><code>Error(errno)</code></dt>522<dt><code>loadFile(filename)</code></dt>
523<dd>523<dd><p>Load the file <code>filename</code> and return it as a string assuming UTF-8
524<p><code>std.Error</code> constructor. Error instances contain the field524encoding. Return <code>null</code> in case of I/O error.
525<code>errno</code> (error code) and <code>message</code> (result of
526<code>std.Error.strerror(errno)</code>).
527</p>525</p>
528<p>The constructor contains the following fields:
529</p>
530<dl compact="compact">
531<dt><code>EINVAL</code></dt>
532<dt><code>EIO</code></dt>
533<dt><code>EACCES</code></dt>
534<dt><code>EEXIST</code></dt>
535<dt><code>ENOSPC</code></dt>
536<dt><code>ENOSYS</code></dt>
537<dt><code>EBUSY</code></dt>
538<dt><code>ENOENT</code></dt>
539<dt><code>EPERM</code></dt>
540<dt><code>EPIPE</code></dt>
541<dd><p>Integer value of common errors (additional error codes may be defined).
542 </p></dd>
543<dt><code>strerror(errno)</code></dt>
544<dd><p>Return a string that describes the error <code>errno</code>.
545 </p></dd>
546</dl>
547
548</dd>526</dd>
549<dt><code>open(filename, flags)</code></dt>527<dt><code>open(filename, flags, errorObj = undefined)</code></dt>
550<dd><p>Open a file (wrapper to the libc <code>fopen()</code>). Throws 528<dd><p>Open a file (wrapper to the libc <code>fopen()</code>). Return the FILE
551<code>std.Error</code> in case of I/O error.529object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not
530undefined, set its <code>errno</code> property to the error code or to 0 if
531no error occured.
552</p>532</p>
553</dd>533</dd>
554<dt><code>popen(command, flags)</code></dt>534<dt><code>popen(command, flags, errorObj = undefined)</code></dt>
555<dd><p>Open a process by creating a pipe (wrapper to the libc <code>popen()</code>). Throws 535<dd><p>Open a process by creating a pipe (wrapper to the libc
556<code>std.Error</code> in case of I/O error.536<code>popen()</code>). Return the FILE
537object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not
538undefined, set its <code>errno</code> property to the error code or to 0 if
539no error occured.
557</p>540</p>
558</dd>541</dd>
559<dt><code>fdopen(fd, flags)</code></dt>542<dt><code>fdopen(fd, flags, errorObj = undefined)</code></dt>
560<dd><p>Open a file from a file handle (wrapper to the libc543<dd><p>Open a file from a file handle (wrapper to the libc
561<code>fdopen()</code>). Throws <code>std.Error</code> in case of I/O error.544<code>fdopen()</code>). Return the FILE
545object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not
546undefined, set its <code>errno</code> property to the error code or to 0 if
547no error occured.
562</p>548</p>
563</dd>549</dd>
564<dt><code>tmpfile()</code></dt>550<dt><code>tmpfile(errorObj = undefined)</code></dt>
565<dd><p>Open a temporary file. Throws <code>std.Error</code> in case of I/O error.551<dd><p>Open a temporary file. Return the FILE
552object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not
553undefined, set its <code>errno</code> property to the error code or to 0 if
554no error occured.
566</p>555</p>
567</dd>556</dd>
568<dt><code>puts(str)</code></dt>557<dt><code>puts(str)</code></dt>
@@ -589,6 +578,29 @@ optional properties: · 20 unmodified lines
589<dd><p>Constants for seek().578<dd><p>Constants for seek().
590</p>579</p>
591</dd>580</dd>
581<dt><code>Error</code></dt>
582<dd>
583<p>Enumeration object containing the integer value of common errors
584(additional error codes may be defined):
585</p>
586<dl compact="compact">
587<dt><code>EINVAL</code></dt>
588<dt><code>EIO</code></dt>
589<dt><code>EACCES</code></dt>
590<dt><code>EEXIST</code></dt>
591<dt><code>ENOSPC</code></dt>
592<dt><code>ENOSYS</code></dt>
593<dt><code>EBUSY</code></dt>
594<dt><code>ENOENT</code></dt>
595<dt><code>EPERM</code></dt>
596<dt><code>EPIPE</code></dt>
597</dl>
598
599</dd>
600<dt><code>strerror(errno)</code></dt>
601<dd><p>Return a string that describes the error <code>errno</code>.
602</p>
603</dd>
592<dt><code>gc()</code></dt>604<dt><code>gc()</code></dt>
593<dd><p>Manually invoke the cycle removal algorithm. The cycle removal605<dd><p>Manually invoke the cycle removal algorithm. The cycle removal
594algorithm is automatically started when needed, so this function is606algorithm is automatically started when needed, so this function is
@@ -614,12 +626,14 @@ optional properties: · 19 unmodified lines
614</p>626</p>
615</dd>627</dd>
616<dt><code>full</code></dt>628<dt><code>full</code></dt>
617<dd><p>Boolean (default = false). If true, return the an object contains629<dd>
630<p>Boolean (default = false). If true, return the an object contains
618 the properties <code>response</code> (response content),631 the properties <code>response</code> (response content),
619 <code>responseHeaders</code> (headers separated by CRLF), <code>status</code>632 <code>responseHeaders</code> (headers separated by CRLF), <code>status</code>
620 (status code). If <code>full</code> is false, only the response is633 (status code). <code>response</code> is <code>null</code> is case of protocol or
621 returned if the status is between 200 and 299. Otherwise an634 network error. If <code>full</code> is false, only the response is
622 <code>std.Error</code> exception is raised.635 returned if the status is between 200 and 299. Otherwise <code>null</code>
636 is returned.
623</p>637</p>
624</dd>638</dd>
625</dl>639</dl>
@@ -631,7 +645,7 @@ optional properties: · 5 unmodified lines
631</p>645</p>
632<dl compact="compact">646<dl compact="compact">
633<dt><code>close()</code></dt>647<dt><code>close()</code></dt>
634<dd><p>Close the file.648<dd><p>Close the file. Return 0 if OK or <code>-errno</code> in case of I/O error.
635</p></dd>649</p></dd>
636<dt><code>puts(str)</code></dt>650<dt><code>puts(str)</code></dt>
637<dd><p>Outputs the string with the UTF-8 encoding.651<dd><p>Outputs the string with the UTF-8 encoding.
@@ -643,17 +657,27 @@ optional properties: · 5 unmodified lines
643<dd><p>Flush the buffered file.657<dd><p>Flush the buffered file.
644</p></dd>658</p></dd>
645<dt><code>seek(offset, whence)</code></dt>659<dt><code>seek(offset, whence)</code></dt>
646<dd><p>Seek to a give file position (whence is <code>std.SEEK_*</code>). Throws a660<dd><p>Seek to a give file position (whence is
647<code>std.Error</code> in case of I/O error.661<code>std.SEEK_*</code>). <code>offset</code> can be a number or a bigint. Return
6620 if OK or <code>-errno</code> in case of I/O error.
648</p></dd>663</p></dd>
649<dt><code>tell()</code></dt>664<dt><code>tell()</code></dt>
650<dd><p>Return the current file position.665<dd><p>Return the current file position.
651</p></dd>666</p></dd>
667<dt><code>tello()</code></dt>
668<dd><p>Return the current file position as a bigint.
669</p></dd>
652<dt><code>eof()</code></dt>670<dt><code>eof()</code></dt>
653<dd><p>Return true if end of file.671<dd><p>Return true if end of file.
654</p></dd>672</p></dd>
655<dt><code>fileno()</code></dt>673<dt><code>fileno()</code></dt>
656<dd><p>Return the associated OS handle.674<dd><p>Return the associated OS handle.
675</p></dd>
676<dt><code>error()</code></dt>
677<dd><p>Return true if there was an error.
678</p></dd>
679<dt><code>clearerr()</code></dt>
680<dd><p>Clear the error indication.
657</p>681</p>
658</dd>682</dd>
659<dt><code>read(buffer, position, length)</code></dt>683<dt><code>read(buffer, position, length)</code></dt>
@@ -727,7 +751,9 @@ error code. · 67 unmodified lines
727</p>751</p>
728</dd>752</dd>
729<dt><code>seek(fd, offset, whence)</code></dt>753<dt><code>seek(fd, offset, whence)</code></dt>
730<dd><p>Seek in the file. Use <code>std.SEEK_*</code> for <code>whence</code>.754<dd><p>Seek in the file. Use <code>std.SEEK_*</code> for
755<code>whence</code>. <code>offset</code> is either a number or a bigint. If
756<code>offset</code> is a bigint, a bigint is returned too.
731</p>757</p>
732</dd>758</dd>
733<dt><code>read(fd, buffer, offset, length)</code></dt>759<dt><code>read(fd, buffer, offset, length)</code></dt>
@@ -755,11 +781,11 @@ Return the number of written bytes or &lt; 0 if error. · 21 unmodified lines
755</p>781</p>
756</dd>782</dd>
757<dt><code>remove(filename)</code></dt>783<dt><code>remove(filename)</code></dt>
758<dd><p>Remove a file. Return 0 if OK or &lt; 0 if error.784<dd><p>Remove a file. Return 0 if OK or <code>-errno</code>.
759</p>785</p>
760</dd>786</dd>
761<dt><code>rename(oldname, newname)</code></dt>787<dt><code>rename(oldname, newname)</code></dt>
762<dd><p>Rename a file. Return 0 if OK or &lt; 0 if error.788<dd><p>Rename a file. Return 0 if OK or <code>-errno</code>.
763</p>789</p>
764</dd>790</dd>
765<dt><code>realpath(path)</code></dt>791<dt><code>realpath(path)</code></dt>
@@ -773,11 +799,11 @@ and <code>err</code> the error code. · 7 unmodified lines
773</p>799</p>
774</dd>800</dd>
775<dt><code>chdir(path)</code></dt>801<dt><code>chdir(path)</code></dt>
776<dd><p>Change the current directory. Return the error code.802<dd><p>Change the current directory. Return 0 if OK or <code>-errno</code>.
777</p>803</p>
778</dd>804</dd>
779<dt><code>mkdir(path, mode = 0o777)</code></dt>805<dt><code>mkdir(path, mode = 0o777)</code></dt>
780<dd><p>Create a directory at <code>path</code>. Return the error code.806<dd><p>Create a directory at <code>path</code>. Return 0 if OK or <code>-errno</code>.
781</p>807</p>
782</dd>808</dd>
783<dt><code>stat(path)</code></dt>809<dt><code>stat(path)</code></dt>
@@ -809,11 +835,11 @@ itself. · 25 unmodified lines
809</dd>835</dd>
810<dt><code>utimes(path, atime, mtime)</code></dt>836<dt><code>utimes(path, atime, mtime)</code></dt>
811<dd><p>Change the access and modification times of the file <code>path</code>. The837<dd><p>Change the access and modification times of the file <code>path</code>. The
812times are specified in milliseconds since 1970.838times are specified in milliseconds since 1970. Return 0 if OK or <code>-errno</code>.
813</p>839</p>
814</dd>840</dd>
815<dt><code>symlink(target, linkpath)</code></dt>841<dt><code>symlink(target, linkpath)</code></dt>
816<dd><p>Create a link at <code>linkpath</code> containing the string <code>target</code>.842<dd><p>Create a link at <code>linkpath</code> containing the string <code>target</code>. Return 0 if OK or <code>-errno</code>.
817</p>843</p>
818</dd>844</dd>
819<dt><code>readlink(path)</code></dt>845<dt><code>readlink(path)</code></dt>
@@ -896,7 +922,8 @@ object containing optional parameters: · 76 unmodified lines
896 922
897</dd>923</dd>
898<dt><code>waitpid(pid, options)</code></dt>924<dt><code>waitpid(pid, options)</code></dt>
899<dd><p><code>waitpid</code> Unix system call. Return the array <code>[ret, status]</code>.925<dd><p><code>waitpid</code> Unix system call. Return the array <code>[ret,
926status]</code>. <code>ret</code> contains <code>-errno</code> in case of error.
900</p>927</p>
901</dd>928</dd>
902<dt><code>WNOHANG</code></dt>929<dt><code>WNOHANG</code></dt>
doc/quickjs.pdf+0−0

Binary file not shown.

doc/quickjs.texi+74−50
@@ -373,44 +373,35 @@ optional properties: · 372 unmodified lines
373@item loadScript(filename)373@item loadScript(filename)
374Evaluate the file @code{filename} as a script (global eval).374Evaluate the file @code{filename} as a script (global eval).
375 375
376@item Error(errno)376@item loadFile(filename)
377 377Load the file @code{filename} and return it as a string assuming UTF-8
378@code{std.Error} constructor. Error instances contain the field378encoding. Return @code{null} in case of I/O error.
379@code{errno} (error code) and @code{message} (result of379
380@code{std.Error.strerror(errno)}).380@item open(filename, flags, errorObj = undefined)
381 381Open a file (wrapper to the libc @code{fopen()}). Return the FILE
382The constructor contains the following fields:382object or @code{null} in case of I/O error. If @code{errorObj} is not
383 383undefined, set its @code{errno} property to the error code or to 0 if
384 @table @code384no error occured.
385 @item EINVAL385
386 @item EIO386@item popen(command, flags, errorObj = undefined)
387 @item EACCES387Open a process by creating a pipe (wrapper to the libc
388 @item EEXIST388@code{popen()}). Return the FILE
389 @item ENOSPC389object or @code{null} in case of I/O error. If @code{errorObj} is not
390 @item ENOSYS390undefined, set its @code{errno} property to the error code or to 0 if
391 @item EBUSY391no error occured.
392 @item ENOENT392
393 @item EPERM393@item fdopen(fd, flags, errorObj = undefined)
394 @item EPIPE
395 Integer value of common errors (additional error codes may be defined).
396 @item strerror(errno)
397 Return a string that describes the error @code{errno}.
398 @end table
399
400@item open(filename, flags)
401Open a file (wrapper to the libc @code{fopen()}). Throws
402@code{std.Error} in case of I/O error.
403
404@item popen(command, flags)
405Open a process by creating a pipe (wrapper to the libc @code{popen()}). Throws
406@code{std.Error} in case of I/O error.
407
408@item fdopen(fd, flags)
409Open a file from a file handle (wrapper to the libc394Open a file from a file handle (wrapper to the libc
410@code{fdopen()}). Throws @code{std.Error} in case of I/O error.395@code{fdopen()}). Return the FILE
396object or @code{null} in case of I/O error. If @code{errorObj} is not
397undefined, set its @code{errno} property to the error code or to 0 if
398no error occured.
411 399
412@item tmpfile()400@item tmpfile(errorObj = undefined)
413Open a temporary file. Throws @code{std.Error} in case of I/O error.401Open a temporary file. Return the FILE
402object or @code{null} in case of I/O error. If @code{errorObj} is not
403undefined, set its @code{errno} property to the error code or to 0 if
404no error occured.
414 405
415@item puts(str)406@item puts(str)
416Equivalent to @code{std.out.puts(str)}.407Equivalent to @code{std.out.puts(str)}.
@@ -431,6 +422,27 @@ Wrappers to the libc file @code{stdin}, @code{stdout}, @code{stderr}. · 14 unmodified lines
431@item SEEK_END422@item SEEK_END
432Constants for seek().423Constants for seek().
433 424
425@item Error
426
427Enumeration object containing the integer value of common errors
428(additional error codes may be defined):
429
430 @table @code
431 @item EINVAL
432 @item EIO
433 @item EACCES
434 @item EEXIST
435 @item ENOSPC
436 @item ENOSYS
437 @item EBUSY
438 @item ENOENT
439 @item EPERM
440 @item EPIPE
441 @end table
442
443@item strerror(errno)
444Return a string that describes the error @code{errno}.
445
434@item gc()446@item gc()
435Manually invoke the cycle removal algorithm. The cycle removal447Manually invoke the cycle removal algorithm. The cycle removal
436algorithm is automatically started when needed, so this function is448algorithm is automatically started when needed, so this function is
@@ -453,12 +465,14 @@ optional properties: · 16 unmodified lines
453 to be UTF-8 encoded.465 to be UTF-8 encoded.
454 466
455 @item full467 @item full
468
456 Boolean (default = false). If true, return the an object contains469 Boolean (default = false). If true, return the an object contains
457 the properties @code{response} (response content),470 the properties @code{response} (response content),
458 @code{responseHeaders} (headers separated by CRLF), @code{status}471 @code{responseHeaders} (headers separated by CRLF), @code{status}
459 (status code). If @code{full} is false, only the response is472 (status code). @code{response} is @code{null} is case of protocol or
460 returned if the status is between 200 and 299. Otherwise an473 network error. If @code{full} is false, only the response is
461 @code{std.Error} exception is raised.474 returned if the status is between 200 and 299. Otherwise @code{null}
475 is returned.
462 476
463 @end table477 @end table
464 478
@@ -468,7 +482,7 @@ FILE prototype: · 3 unmodified lines
468 482
469@table @code483@table @code
470@item close()484@item close()
471Close the file.485Close the file. Return 0 if OK or @code{-errno} in case of I/O error.
472@item puts(str)486@item puts(str)
473Outputs the string with the UTF-8 encoding.487Outputs the string with the UTF-8 encoding.
474@item printf(fmt, ...args)488@item printf(fmt, ...args)
@@ -476,14 +490,21 @@ Formatted printf, same formats as the libc printf. · 1 unmodified line
476@item flush()490@item flush()
477Flush the buffered file.491Flush the buffered file.
478@item seek(offset, whence)492@item seek(offset, whence)
479Seek to a give file position (whence is @code{std.SEEK_*}). Throws a493Seek to a give file position (whence is
480@code{std.Error} in case of I/O error.494@code{std.SEEK_*}). @code{offset} can be a number or a bigint. Return
4950 if OK or @code{-errno} in case of I/O error.
481@item tell()496@item tell()
482Return the current file position.497Return the current file position.
498@item tello()
499Return the current file position as a bigint.
483@item eof()500@item eof()
484Return true if end of file.501Return true if end of file.
485@item fileno()502@item fileno()
486Return the associated OS handle.503Return the associated OS handle.
504@item error()
505Return true if there was an error.
506@item clearerr()
507Clear the error indication.
487 508
488@item read(buffer, position, length)509@item read(buffer, position, length)
489Read @code{length} bytes from the file to the ArrayBuffer @code{buffer} at byte510Read @code{length} bytes from the file to the ArrayBuffer @code{buffer} at byte
@@ -545,7 +566,9 @@ POSIX open flags. · 55 unmodified lines
545Close the file handle @code{fd}.566Close the file handle @code{fd}.
546 567
547@item seek(fd, offset, whence)568@item seek(fd, offset, whence)
548Seek in the file. Use @code{std.SEEK_*} for @code{whence}.569Seek in the file. Use @code{std.SEEK_*} for
570@code{whence}. @code{offset} is either a number or a bigint. If
571@code{offset} is a bigint, a bigint is returned too.
549 572
550@item read(fd, buffer, offset, length)573@item read(fd, buffer, offset, length)
551Read @code{length} bytes from the file handle @code{fd} to the574Read @code{length} bytes from the file handle @code{fd} to the
@@ -567,10 +590,10 @@ Return the TTY size as @code{[width, height]} or @code{null} if not available. · 15 unmodified lines
567Set the TTY in raw mode.590Set the TTY in raw mode.
568 591
569@item remove(filename)592@item remove(filename)
570Remove a file. Return 0 if OK or < 0 if error.593Remove a file. Return 0 if OK or @code{-errno}.
571 594
572@item rename(oldname, newname)595@item rename(oldname, newname)
573Rename a file. Return 0 if OK or < 0 if error.596Rename a file. Return 0 if OK or @code{-errno}.
574 597
575@item realpath(path)598@item realpath(path)
576Return @code{[str, err]} where @code{str} is the canonicalized absolute599Return @code{[str, err]} where @code{str} is the canonicalized absolute
@@ -581,10 +604,10 @@ Return @code{[str, err]} where @code{str} is the current working directory · 4 unmodified lines
581and @code{err} the error code.604and @code{err} the error code.
582 605
583@item chdir(path)606@item chdir(path)
584Change the current directory. Return the error code.607Change the current directory. Return 0 if OK or @code{-errno}.
585 608
586@item mkdir(path, mode = 0o777)609@item mkdir(path, mode = 0o777)
587Create a directory at @code{path}. Return the error code.610Create a directory at @code{path}. Return 0 if OK or @code{-errno}.
588 611
589@item stat(path)612@item stat(path)
590@item lstat(path)613@item lstat(path)
@@ -613,10 +636,10 @@ Constants to interpret the @code{mode} property returned by · 22 unmodified lines
613 636
614@item utimes(path, atime, mtime)637@item utimes(path, atime, mtime)
615Change the access and modification times of the file @code{path}. The638Change the access and modification times of the file @code{path}. The
616times are specified in milliseconds since 1970.639times are specified in milliseconds since 1970. Return 0 if OK or @code{-errno}.
617 640
618@item symlink(target, linkpath)641@item symlink(target, linkpath)
619Create a link at @code{linkpath} containing the string @code{target}.642Create a link at @code{linkpath} containing the string @code{target}. Return 0 if OK or @code{-errno}.
620 643
621@item readlink(path)644@item readlink(path)
622Return @code{[str, err]} where @code{str} is the link target and @code{err}645Return @code{[str, err]} where @code{str} is the link target and @code{err}
@@ -685,7 +708,8 @@ object containing optional parameters: · 62 unmodified lines
685 @end table708 @end table
686 709
687@item waitpid(pid, options)710@item waitpid(pid, options)
688@code{waitpid} Unix system call. Return the array @code{[ret, status]}.711@code{waitpid} Unix system call. Return the array @code{[ret,
712status]}. @code{ret} contains @code{-errno} in case of error.
689 713
690@item WNOHANG714@item WNOHANG
691Constant for the @code{options} argument of @code{waitpid}.715Constant for the @code{options} argument of @code{waitpid}.
libbf.c+40−7
@@ -2526,19 +2526,18 @@ fail: · 2525 unmodified lines
2526 return BF_ST_MEM_ERROR;2526 return BF_ST_MEM_ERROR;
2527}2527}
2528 2528
2529/* The rounding mode is always BF_RNDZ. Return BF_ST_OVERFLOW if there2529/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there
2530 is an overflow and 0 otherwise. */2530 is an overflow and 0 otherwise. */
2531int bf_get_int32(int *pres, const bf_t *a, int flags)2531int bf_get_int32(int *pres, const bf_t *a, int flags)
2532{2532{
2533 uint32_t v;2533 uint32_t v;
2534 int ret;2534 int ret;
2535 if (a->expn >= BF_EXP_INF) {2535 if (a->expn >= BF_EXP_INF) {
2536 ret = 0;2536 ret = BF_ST_INVALID_OP;
2537 if (flags & BF_GET_INT_MOD) {2537 if (flags & BF_GET_INT_MOD) {
2538 v = 0;2538 v = 0;
2539 } else if (a->expn == BF_EXP_INF) {2539 } else if (a->expn == BF_EXP_INF) {
2540 v = (uint32_t)INT32_MAX + a->sign;2540 v = (uint32_t)INT32_MAX + a->sign;
2541 /* XXX: return overflow ? */
2542 } else {2541 } else {
2543 v = INT32_MAX;2542 v = INT32_MAX;
2544 }2543 }
@@ -2551,7 +2550,7 @@ int bf_get_int32(int *pres, const bf_t *a, int flags) · 6 unmodified lines
2551 v = -v;2550 v = -v;
2552 ret = 0;2551 ret = 0;
2553 } else if (!(flags & BF_GET_INT_MOD)) {2552 } else if (!(flags & BF_GET_INT_MOD)) {
2554 ret = BF_ST_OVERFLOW;2553 ret = BF_ST_INVALID_OP;
2555 if (a->sign) {2554 if (a->sign) {
2556 v = (uint32_t)INT32_MAX + 1;2555 v = (uint32_t)INT32_MAX + 1;
2557 if (a->expn == 32 && 2556 if (a->expn == 32 &&
@@ -2571,14 +2570,14 @@ int bf_get_int32(int *pres, const bf_t *a, int flags) · 13 unmodified lines
2571 return ret;2570 return ret;
2572}2571}
2573 2572
2574/* The rounding mode is always BF_RNDZ. Return BF_ST_OVERFLOW if there2573/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there
2575 is an overflow and 0 otherwise. */2574 is an overflow and 0 otherwise. */
2576int bf_get_int64(int64_t *pres, const bf_t *a, int flags)2575int bf_get_int64(int64_t *pres, const bf_t *a, int flags)
2577{2576{
2578 uint64_t v;2577 uint64_t v;
2579 int ret;2578 int ret;
2580 if (a->expn >= BF_EXP_INF) {2579 if (a->expn >= BF_EXP_INF) {
2581 ret = 0;2580 ret = BF_ST_INVALID_OP;
2582 if (flags & BF_GET_INT_MOD) {2581 if (flags & BF_GET_INT_MOD) {
2583 v = 0;2582 v = 0;
2584 } else if (a->expn == BF_EXP_INF) {2583 } else if (a->expn == BF_EXP_INF) {
@@ -2603,7 +2602,7 @@ int bf_get_int64(int64_t *pres, const bf_t *a, int flags) · 18 unmodified lines
2603 v = -v;2602 v = -v;
2604 ret = 0;2603 ret = 0;
2605 } else if (!(flags & BF_GET_INT_MOD)) {2604 } else if (!(flags & BF_GET_INT_MOD)) {
2606 ret = BF_ST_OVERFLOW;2605 ret = BF_ST_INVALID_OP;
2607 if (a->sign) {2606 if (a->sign) {
2608 uint64_t v1;2607 uint64_t v1;
2609 v = (uint64_t)INT64_MAX + 1;2608 v = (uint64_t)INT64_MAX + 1;
@@ -2632,6 +2631,40 @@ int bf_get_int64(int64_t *pres, const bf_t *a, int flags) · 22 unmodified lines
2632 return ret;2631 return ret;
2633}2632}
2634 2633
2634/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there
2635 is an overflow and 0 otherwise. */
2636int bf_get_uint64(uint64_t *pres, const bf_t *a)
2637{
2638 uint64_t v;
2639 int ret;
2640 if (a->expn == BF_EXP_NAN) {
2641 goto overflow;
2642 } else if (a->expn <= 0) {
2643 v = 0;
2644 ret = 0;
2645 } else if (a->sign) {
2646 v = 0;
2647 ret = BF_ST_INVALID_OP;
2648 } else if (a->expn <= 64) {
2649#if LIMB_BITS == 32
2650 if (a->expn <= 32)
2651 v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn);
2652 else
2653 v = (((uint64_t)a->tab[a->len - 1] << 32) |
2654 get_limbz(a, a->len - 2)) >> (64 - a->expn);
2655#else
2656 v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn);
2657#endif
2658 ret = 0;
2659 } else {
2660 overflow:
2661 v = UINT64_MAX;
2662 ret = BF_ST_INVALID_OP;
2663 }
2664 *pres = v;
2665 return ret;
2666}
2667
2635/* base conversion from radix */2668/* base conversion from radix */
2636 2669
2637static const uint8_t digits_per_limb_table[BF_RADIX_MAX - 1] = {2670static const uint8_t digits_per_limb_table[BF_RADIX_MAX - 1] = {
libbf.h+1−0
@@ -376,6 +376,7 @@ char *bf_ftoa(size_t *plen, const bf_t *a, int radix, limb_t prec, · 375 unmodified lines
376#define BF_GET_INT_MOD (1 << 0) 376#define BF_GET_INT_MOD (1 << 0)
377int bf_get_int32(int *pres, const bf_t *a, int flags);377int bf_get_int32(int *pres, const bf_t *a, int flags);
378int bf_get_int64(int64_t *pres, const bf_t *a, int flags);378int bf_get_int64(int64_t *pres, const bf_t *a, int flags);
379int bf_get_uint64(uint64_t *pres, const bf_t *a);
379 380
380/* the following functions are exported for testing only. */381/* the following functions are exported for testing only. */
381void mp_print_str(const char *str, const limb_t *tab, limb_t n);382void mp_print_str(const char *str, const limb_t *tab, limb_t n);
libregexp.c+58−34
@@ -434,8 +434,9 @@ static int __attribute__((format(printf, 2, 3))) re_parse_error(REParseState *s, · 433 unmodified lines
434 return -1;434 return -1;
435}435}
436 436
437/* Return -1 in case of overflow */437/* If allow_overflow is false, return -1 in case of
438static int parse_digits(const uint8_t **pp)438 overflow. Otherwise return INT32_MAX. */
439static int parse_digits(const uint8_t **pp, BOOL allow_overflow)
439{440{
440 const uint8_t *p;441 const uint8_t *p;
441 uint64_t v;442 uint64_t v;
@@ -448,8 +449,12 @@ static int parse_digits(const uint8_t **pp) · 6 unmodified lines
448 if (c < '0' || c > '9')449 if (c < '0' || c > '9')
449 break;450 break;
450 v = v * 10 + c - '0';451 v = v * 10 + c - '0';
451 if (v >= INT32_MAX)452 if (v >= INT32_MAX) {
452 return -1;453 if (allow_overflow)
454 v = INT32_MAX;
455 else
456 return -1;
457 }
453 p++;458 p++;
454 }459 }
455 *pp = p;460 *pp = p;
@@ -1225,14 +1230,27 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir) · 769 unmodified lines
1225 re_emit_op(s, REOP_prev);1230 re_emit_op(s, REOP_prev);
1226 break;1231 break;
1227 case '{':1232 case '{':
1228 /* As an extension (see ES6 annex B), we accept '{' not1233 if (s->is_utf16) {
1229 followed by digits as a normal atom */1234 return re_parse_error(s, "syntax error");
1230 if (!is_digit(p[1])) {1235 } else if (!is_digit(p[1])) {
1231 if (s->is_utf16)1236 /* Annex B: we accept '{' not followed by digits as a
1232 goto invalid_quant_count;1237 normal atom */
1233 goto parse_class_atom;1238 goto parse_class_atom;
1239 } else {
1240 const uint8_t *p1 = p + 1;
1241 /* Annex B: error if it is like a repetition count */
1242 parse_digits(&p1, TRUE);
1243 if (*p1 == ',') {
1244 p1++;
1245 if (is_digit(*p1)) {
1246 parse_digits(&p1, TRUE);
1247 }
1248 }
1249 if (*p1 != '}') {
1250 goto parse_class_atom;
1251 }
1234 }1252 }
1235 /* fall tru */1253 /* fall thru */
1236 case '*':1254 case '*':
1237 case '+':1255 case '+':
1238 case '?':1256 case '?':
@@ -1387,7 +1405,7 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir) · 148 unmodified lines
1387 {1405 {
1388 const uint8_t *q = ++p;1406 const uint8_t *q = ++p;
1389 1407
1390 c = parse_digits(&p);1408 c = parse_digits(&p, FALSE);
1391 if (c < 0 || (c >= s->capture_count && c >= re_count_captures(s))) {1409 if (c < 0 || (c >= s->capture_count && c >= re_count_captures(s))) {
1392 if (!s->is_utf16) {1410 if (!s->is_utf16) {
1393 /* Annex B.1.4: accept legacy octal */1411 /* Annex B.1.4: accept legacy octal */
@@ -1484,32 +1502,38 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir) · 90 unmodified lines
1484 quant_max = 1;1502 quant_max = 1;
1485 goto quantifier;1503 goto quantifier;
1486 case '{':1504 case '{':
1487 /* As an extension (see ES6 annex B), we accept '{' not1505 {
1488 followed by digits as a normal atom */1506 const uint8_t *p1 = p;
1489 if (!is_digit(p[1])) {1507 /* As an extension (see ES6 annex B), we accept '{' not
1490 if (s->is_utf16)1508 followed by digits as a normal atom */
1491 goto invalid_quant_count;1509 if (!is_digit(p[1])) {
1492 break;1510 if (s->is_utf16)
1493 }
1494 p++;
1495 quant_min = parse_digits(&p);
1496 if (quant_min < 0) {
1497 invalid_quant_count:
1498 return re_parse_error(s, "invalid repetition count");
1499 }
1500 quant_max = quant_min;
1501 if (*p == ',') {
1502 p++;
1503 if (is_digit(*p)) {
1504 quant_max = parse_digits(&p);
1505 if (quant_max < 0 || quant_max < quant_min)
1506 goto invalid_quant_count;1511 goto invalid_quant_count;
1507 } else {1512 break;
1508 quant_max = INT32_MAX; /* infinity */1513 }
1514 p++;
1515 quant_min = parse_digits(&p, TRUE);
1516 quant_max = quant_min;
1517 if (*p == ',') {
1518 p++;
1519 if (is_digit(*p)) {
1520 quant_max = parse_digits(&p, TRUE);
1521 if (quant_max < quant_min) {
1522 invalid_quant_count:
1523 return re_parse_error(s, "invalid repetition count");
1524 }
1525 } else {
1526 quant_max = INT32_MAX; /* infinity */
1527 }
1509 }1528 }
1529 if (*p != '}' && !s->is_utf16) {
1530 /* Annex B: normal atom if invalid '{' syntax */
1531 p = p1;
1532 break;
1533 }
1534 if (re_parse_expect(s, &p, '}'))
1535 return -1;
1510 }1536 }
1511 if (re_parse_expect(s, &p, '}'))
1512 return -1;
1513 quantifier:1537 quantifier:
1514 greedy = TRUE;1538 greedy = TRUE;
1515 if (*p == '?') {1539 if (*p == '?') {
libunicode-table.h+1619−1564
@@ -3,7 +3,7 @@ · 2 unmodified lines
3 3
4#include <stdint.h>4#include <stdint.h>
5 5
6static const uint32_t case_conv_table1[359] = {6static const uint32_t case_conv_table1[361] = {
7 0x00209a30, 0x00309a00, 0x005a8173, 0x00601730,7 0x00209a30, 0x00309a00, 0x005a8173, 0x00601730,
8 0x006c0730, 0x006f81b3, 0x00701700, 0x007c0700,8 0x006c0730, 0x006f81b3, 0x00701700, 0x007c0700,
9 0x007f8100, 0x00803040, 0x009801c3, 0x00988190,9 0x007f8100, 0x00803040, 0x009801c3, 0x00988190,
@@ -86,17 +86,18 @@ static const uint32_t case_conv_table1[359] = { · 76 unmodified lines
86 0x53cb1440, 0x53d50130, 0x53d58130, 0x53d60130,86 0x53cb1440, 0x53d50130, 0x53d58130, 0x53d60130,
87 0x53d68130, 0x53d70130, 0x53d80130, 0x53d88130,87 0x53d68130, 0x53d70130, 0x53d80130, 0x53d88130,
88 0x53d90130, 0x53d98131, 0x53da0c40, 0x53e10240,88 0x53d90130, 0x53d98131, 0x53da0c40, 0x53e10240,
89 0x53e20131, 0x53e28130, 0x53e30130, 0x55a98101,89 0x53e20131, 0x53e28130, 0x53e30130, 0x53e38440,
90 0x55b85020, 0x7d8001b2, 0x7d8081b2, 0x7d8101b2,90 0x53fa8240, 0x55a98101, 0x55b85020, 0x7d8001b2,
91 0x7d8181da, 0x7d8201da, 0x7d8281b3, 0x7d8301b3,91 0x7d8081b2, 0x7d8101b2, 0x7d8181da, 0x7d8201da,
92 0x7d8981bb, 0x7d8a01bb, 0x7d8a81bb, 0x7d8b01bc,92 0x7d8281b3, 0x7d8301b3, 0x7d8981bb, 0x7d8a01bb,
93 0x7d8b81bb, 0x7f909a31, 0x7fa09a01, 0x82002831,93 0x7d8a81bb, 0x7d8b01bc, 0x7d8b81bb, 0x7f909a31,
94 0x82142801, 0x82582431, 0x826c2401, 0x86403331,94 0x7fa09a01, 0x82002831, 0x82142801, 0x82582431,
95 0x86603301, 0x8c502031, 0x8c602001, 0xb7202031,95 0x826c2401, 0x86403331, 0x86603301, 0x8c502031,
96 0xb7302001, 0xf4802231, 0xf4912201,96 0x8c602001, 0xb7202031, 0xb7302001, 0xf4802231,
97 0xf4912201,
97};98};
98 99
99static const uint8_t case_conv_table2[359] = {100static const uint8_t case_conv_table2[361] = {
100 0x01, 0x00, 0x9c, 0x06, 0x07, 0x4d, 0x03, 0x04,101 0x01, 0x00, 0x9c, 0x06, 0x07, 0x4d, 0x03, 0x04,
101 0x10, 0x00, 0x8f, 0x0b, 0x00, 0x00, 0x11, 0x00,102 0x10, 0x00, 0x8f, 0x0b, 0x00, 0x00, 0x11, 0x00,
102 0x08, 0x00, 0x53, 0x4a, 0x51, 0x00, 0x52, 0x00,103 0x08, 0x00, 0x53, 0x4a, 0x51, 0x00, 0x52, 0x00,
@@ -118,7 +119,7 @@ static const uint8_t case_conv_table2[359] = { · 15 unmodified lines
118 0x33, 0x95, 0x00, 0x8e, 0x00, 0x74, 0x99, 0x98,119 0x33, 0x95, 0x00, 0x8e, 0x00, 0x74, 0x99, 0x98,
119 0x97, 0x96, 0x00, 0x00, 0x9e, 0x00, 0x9c, 0x00,120 0x97, 0x96, 0x00, 0x00, 0x9e, 0x00, 0x9c, 0x00,
120 0xa1, 0xa0, 0x15, 0x2e, 0x2f, 0x30, 0xb4, 0xb5,121 0xa1, 0xa0, 0x15, 0x2e, 0x2f, 0x30, 0xb4, 0xb5,
121 0x4c, 0xaa, 0xa9, 0x12, 0x14, 0x1e, 0x21, 0x22,122 0x4e, 0xaa, 0xa9, 0x12, 0x14, 0x1e, 0x21, 0x22,
122 0x22, 0x2a, 0x34, 0x35, 0xa6, 0xa7, 0x36, 0x1f,123 0x22, 0x2a, 0x34, 0x35, 0xa6, 0xa7, 0x36, 0x1f,
123 0x4a, 0x00, 0x00, 0x97, 0x01, 0x5a, 0xda, 0x1d,124 0x4a, 0x00, 0x00, 0x97, 0x01, 0x5a, 0xda, 0x1d,
124 0x36, 0x05, 0x00, 0xc4, 0xc3, 0xc6, 0xc5, 0xc8,125 0x36, 0x05, 0x00, 0xc4, 0xc3, 0xc6, 0xc5, 0xc8,
@@ -137,11 +138,12 @@ static const uint8_t case_conv_table2[359] = { · 12 unmodified lines
137 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xa3, 0xa4,138 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xa3, 0xa4,
138 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00,139 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00,
139 0x00, 0x5a, 0x00, 0x48, 0x00, 0x5b, 0x56, 0x58,140 0x00, 0x5a, 0x00, 0x48, 0x00, 0x5b, 0x56, 0x58,
140 0x60, 0x5e, 0x70, 0x69, 0x6f, 0x4b, 0x00, 0x00,141 0x60, 0x5e, 0x70, 0x69, 0x6f, 0x4d, 0x00, 0x00,
141 0x3b, 0x67, 0xb8, 0x45, 0xa8, 0x8a, 0x8b, 0x8c,142 0x3b, 0x67, 0xb8, 0x00, 0x00, 0x45, 0xa8, 0x8a,
142 0xab, 0xac, 0x58, 0x58, 0xaf, 0x94, 0xb0, 0x6f,143 0x8b, 0x8c, 0xab, 0xac, 0x58, 0x58, 0xaf, 0x94,
143 0xb2, 0x5a, 0x59, 0x5c, 0x5b, 0x5e, 0x5d, 0x60,144 0xb0, 0x6f, 0xb2, 0x5c, 0x5b, 0x5e, 0x5d, 0x60,
144 0x5f, 0x62, 0x61, 0x64, 0x63, 0x66, 0x65,145 0x5f, 0x62, 0x61, 0x64, 0x63, 0x66, 0x65, 0x68,
146 0x67,
145};147};
146 148
147static const uint16_t case_conv_ext[58] = {149static const uint16_t case_conv_ext[58] = {
@@ -170,7 +172,7 @@ static const uint8_t unicode_prop_Cased1_table[172] = { · 22 unmodified lines
170 0x26, 0x01, 0x01, 0x86, 0xe5, 0x80, 0x60, 0x79,172 0x26, 0x01, 0x01, 0x86, 0xe5, 0x80, 0x60, 0x79,
171 0xb6, 0x81, 0x40, 0x91, 0x81, 0xbd, 0x88, 0x94,173 0xb6, 0x81, 0x40, 0x91, 0x81, 0xbd, 0x88, 0x94,
172 0x05, 0x80, 0x98, 0x80, 0xc7, 0x82, 0x43, 0x34,174 0x05, 0x80, 0x98, 0x80, 0xc7, 0x82, 0x43, 0x34,
173 0xa2, 0x06, 0x80, 0x8b, 0x61, 0x28, 0x97, 0xd4,175 0xa2, 0x06, 0x80, 0x8c, 0x61, 0x28, 0x96, 0xd4,
174 0x80, 0xc6, 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b,176 0x80, 0xc6, 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b,
175 0x00, 0x06, 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80,177 0x00, 0x06, 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80,
176 0x9b, 0x03, 0x04, 0x00, 0x16, 0x80, 0x41, 0x53,178 0x9b, 0x03, 0x04, 0x00, 0x16, 0x80, 0x41, 0x53,
@@ -186,107 +188,109 @@ static const uint8_t unicode_prop_Cased1_index[18] = { · 9 unmodified lines
186 0xf1, 0x01,188 0xf1, 0x01,
187};189};
188 190
189static const uint8_t unicode_prop_Case_Ignorable_table[678] = {191static const uint8_t unicode_prop_Case_Ignorable_table[692] = {
190 0xa6, 0x05, 0x80, 0x8a, 0x80, 0xa2, 0x00, 0x80,192 0xa6, 0x05, 0x80, 0x8a, 0x80, 0xa2, 0x00, 0x80,
191 0xc6, 0x03, 0x00, 0x03, 0x01, 0x81, 0x41, 0xf6,193 0xc6, 0x03, 0x00, 0x03, 0x01, 0x81, 0x41, 0xf6,
192 0x40, 0xbf, 0x19, 0x18, 0x88, 0x08, 0x80, 0x40,194 0x40, 0xbf, 0x19, 0x18, 0x88, 0x08, 0x80, 0x40,
193 0xfa, 0x86, 0x40, 0xce, 0x80, 0xb6, 0xac, 0x00,195 0xfa, 0x86, 0x40, 0xce, 0x04, 0x80, 0xb0, 0xac,
194 0x01, 0x01, 0x00, 0xab, 0x80, 0x8a, 0x85, 0x89,196 0x00, 0x01, 0x01, 0x00, 0xab, 0x80, 0x8a, 0x85,
195 0x8a, 0x00, 0xa2, 0x80, 0x89, 0x94, 0x8f, 0x80,197 0x89, 0x8a, 0x00, 0xa2, 0x80, 0x89, 0x94, 0x8f,
196 0xe4, 0x38, 0x89, 0x03, 0xa0, 0x00, 0x80, 0x9d,198 0x80, 0xe4, 0x38, 0x89, 0x03, 0xa0, 0x00, 0x80,
197 0x9a, 0xda, 0x8a, 0xb9, 0x8a, 0x18, 0x08, 0x97,199 0x9d, 0x9a, 0xda, 0x8a, 0xb9, 0x8a, 0x18, 0x08,
198 0x97, 0xaa, 0x82, 0xf6, 0xaf, 0xb6, 0x00, 0x03,200 0x97, 0x97, 0xaa, 0x82, 0xf6, 0xaf, 0xb6, 0x00,
199 0x3b, 0x02, 0x86, 0x89, 0x81, 0x8c, 0x80, 0x8e,201 0x03, 0x3b, 0x02, 0x86, 0x89, 0x81, 0x8c, 0x80,
200 0x80, 0xb9, 0x03, 0x1f, 0x80, 0x93, 0x81, 0x99,202 0x8e, 0x80, 0xb9, 0x03, 0x1f, 0x80, 0x93, 0x81,
201 0x01, 0x81, 0xb8, 0x03, 0x0b, 0x09, 0x12, 0x80,203 0x99, 0x01, 0x81, 0xb8, 0x03, 0x0b, 0x09, 0x12,
202 0x9d, 0x0a, 0x80, 0x8a, 0x81, 0xb8, 0x03, 0x20,204 0x80, 0x9d, 0x0a, 0x80, 0x8a, 0x81, 0xb8, 0x03,
203 0x0b, 0x80, 0x93, 0x81, 0x95, 0x28, 0x80, 0xb9,205 0x20, 0x0b, 0x80, 0x93, 0x81, 0x95, 0x28, 0x80,
204 0x01, 0x00, 0x1f, 0x07, 0x80, 0x8a, 0x81, 0x9d,206 0xb9, 0x01, 0x00, 0x1f, 0x06, 0x81, 0x8a, 0x81,
205 0x80, 0xbc, 0x80, 0x8b, 0x80, 0xb1, 0x02, 0x80,207 0x9d, 0x80, 0xbc, 0x80, 0x8b, 0x80, 0xb1, 0x02,
206 0xb8, 0x14, 0x10, 0x1e, 0x81, 0x8a, 0x81, 0x9c,208 0x80, 0xb8, 0x14, 0x10, 0x1e, 0x81, 0x8a, 0x81,
207 0x80, 0xb9, 0x01, 0x05, 0x04, 0x81, 0x93, 0x81,209 0x9c, 0x80, 0xb9, 0x01, 0x05, 0x04, 0x81, 0x93,
208 0x9b, 0x81, 0xb8, 0x0b, 0x1f, 0x80, 0x93, 0x81,210 0x81, 0x9b, 0x81, 0xb8, 0x0b, 0x1f, 0x80, 0x93,
209 0xe5, 0x06, 0x10, 0x80, 0xd9, 0x01, 0x86, 0x8a,211 0x81, 0x9c, 0x80, 0xc7, 0x06, 0x10, 0x80, 0xd9,
210 0x88, 0xe1, 0x01, 0x88, 0x88, 0x00, 0x85, 0xc9,212 0x01, 0x86, 0x8a, 0x88, 0xe1, 0x01, 0x88, 0x88,
211 0x81, 0x9a, 0x00, 0x00, 0x80, 0xb6, 0x8d, 0x04,213 0x00, 0x85, 0xc9, 0x81, 0x9a, 0x00, 0x00, 0x80,
212 0x01, 0x84, 0x8a, 0x80, 0xa3, 0x88, 0x80, 0xe5,214 0xb6, 0x8d, 0x04, 0x01, 0x84, 0x8a, 0x80, 0xa3,
213 0x18, 0x28, 0x09, 0x81, 0x98, 0x0b, 0x82, 0x8f,215 0x88, 0x80, 0xe5, 0x18, 0x28, 0x09, 0x81, 0x98,
214 0x83, 0x8c, 0x01, 0x0d, 0x80, 0x8e, 0x80, 0xdd,216 0x0b, 0x82, 0x8f, 0x83, 0x8c, 0x01, 0x0d, 0x80,
215 0x80, 0x42, 0x5f, 0x82, 0x43, 0xb1, 0x82, 0x9c,217 0x8e, 0x80, 0xdd, 0x80, 0x42, 0x5f, 0x82, 0x43,
216 0x82, 0x9c, 0x81, 0x9d, 0x81, 0xbf, 0x08, 0x37,218 0xb1, 0x82, 0x9c, 0x82, 0x9c, 0x81, 0x9d, 0x81,
217 0x01, 0x8a, 0x10, 0x20, 0xac, 0x83, 0xb3, 0x80,219 0xbf, 0x08, 0x37, 0x01, 0x8a, 0x10, 0x20, 0xac,
218 0xc0, 0x81, 0xa1, 0x80, 0xf5, 0x13, 0x81, 0x88,220 0x83, 0xb3, 0x80, 0xc0, 0x81, 0xa1, 0x80, 0xf5,
219 0x05, 0x82, 0x40, 0xda, 0x09, 0x80, 0xb9, 0x00,221 0x13, 0x81, 0x88, 0x05, 0x82, 0x40, 0xda, 0x09,
220 0x30, 0x00, 0x01, 0x3d, 0x89, 0x08, 0xa6, 0x07,222 0x80, 0xb9, 0x00, 0x30, 0x00, 0x01, 0x3d, 0x89,
221 0x8e, 0xc0, 0x83, 0xaf, 0x00, 0x20, 0x04, 0x80,223 0x08, 0xa6, 0x07, 0x90, 0xbe, 0x83, 0xaf, 0x00,
222 0xa7, 0x88, 0x8b, 0x81, 0x9f, 0x19, 0x08, 0x82,224 0x20, 0x04, 0x80, 0xa7, 0x88, 0x8b, 0x81, 0x9f,
223 0xb7, 0x00, 0x0a, 0x00, 0x82, 0xb9, 0x39, 0x81,225 0x19, 0x08, 0x82, 0xb7, 0x00, 0x0a, 0x00, 0x82,
224 0xbf, 0x85, 0xd1, 0x10, 0x8c, 0x06, 0x18, 0x28,226 0xb9, 0x39, 0x81, 0xbf, 0x85, 0xd1, 0x10, 0x8c,
225 0x11, 0xb1, 0xbe, 0x8c, 0x80, 0xa1, 0xde, 0x04,227 0x06, 0x18, 0x28, 0x11, 0xb1, 0xbe, 0x8c, 0x80,
226 0x41, 0xbc, 0x00, 0x82, 0x8a, 0x82, 0x8c, 0x82,228 0xa1, 0xde, 0x04, 0x41, 0xbc, 0x00, 0x82, 0x8a,
227 0x8c, 0x82, 0x8c, 0x81, 0x8b, 0x27, 0x81, 0x89,229 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, 0x81, 0x8b,
228 0x01, 0x01, 0x84, 0xb0, 0x20, 0x89, 0x00, 0x8c,230 0x27, 0x81, 0x89, 0x01, 0x01, 0x84, 0xb0, 0x20,
229 0x80, 0x8f, 0x8c, 0xb2, 0xa0, 0x4b, 0x8a, 0x81,231 0x89, 0x00, 0x8c, 0x80, 0x8f, 0x8c, 0xb2, 0xa0,
230 0xf0, 0x82, 0xfc, 0x80, 0x8e, 0x80, 0xdf, 0x9f,232 0x4b, 0x8a, 0x81, 0xf0, 0x82, 0xfc, 0x80, 0x8e,
231 0xae, 0x80, 0x41, 0xd4, 0x80, 0xa3, 0x1a, 0x24,233 0x80, 0xdf, 0x9f, 0xae, 0x80, 0x41, 0xd4, 0x80,
232 0x80, 0xdc, 0x85, 0xdc, 0x82, 0x60, 0x6f, 0x15,234 0xa3, 0x1a, 0x24, 0x80, 0xdc, 0x85, 0xdc, 0x82,
233 0x80, 0x44, 0xe1, 0x85, 0x41, 0x0d, 0x80, 0xe1,235 0x60, 0x6f, 0x15, 0x80, 0x44, 0xe1, 0x85, 0x41,
234 0x18, 0x89, 0x00, 0x9b, 0x83, 0xcf, 0x81, 0x8d,236 0x0d, 0x80, 0xe1, 0x18, 0x89, 0x00, 0x9b, 0x83,
235 0xa1, 0xcd, 0x80, 0x96, 0x82, 0xec, 0x0f, 0x02,237 0xcf, 0x81, 0x8d, 0xa1, 0xcd, 0x80, 0x96, 0x82,
236 0x03, 0x80, 0x98, 0x81, 0x40, 0x9c, 0x81, 0x99,238 0xec, 0x0f, 0x02, 0x03, 0x80, 0x98, 0x0c, 0x80,
237 0x91, 0x8c, 0x80, 0xa5, 0x87, 0x98, 0x8a, 0xad,239 0x40, 0x96, 0x81, 0x99, 0x91, 0x8c, 0x80, 0xa5,
238 0x82, 0xaf, 0x01, 0x19, 0x81, 0x90, 0x80, 0x94,240 0x87, 0x98, 0x8a, 0xad, 0x82, 0xaf, 0x01, 0x19,
239 0x81, 0xc1, 0x29, 0x09, 0x81, 0x8b, 0x07, 0x80,241 0x81, 0x90, 0x80, 0x94, 0x81, 0xc1, 0x29, 0x09,
240 0xa2, 0x80, 0x8a, 0x80, 0xb2, 0x00, 0x11, 0x0c,242 0x81, 0x8b, 0x07, 0x80, 0xa2, 0x80, 0x8a, 0x80,
241 0x08, 0x80, 0x9a, 0x80, 0x8d, 0x0c, 0x08, 0x80,243 0xb2, 0x00, 0x11, 0x0c, 0x08, 0x80, 0x9a, 0x80,
242 0xe3, 0x84, 0x40, 0x84, 0x01, 0x03, 0x80, 0x60,244 0x8d, 0x0c, 0x08, 0x80, 0xe3, 0x84, 0x88, 0x82,
243 0x4f, 0x2f, 0x80, 0x40, 0x92, 0x8f, 0x42, 0x3d,245 0xf8, 0x01, 0x03, 0x80, 0x60, 0x4f, 0x2f, 0x80,
244 0x8f, 0x10, 0x8b, 0x8f, 0xa1, 0x01, 0x80, 0x40,246 0x40, 0x92, 0x8f, 0x42, 0x3d, 0x8f, 0x10, 0x8b,
245 0xa8, 0x06, 0x05, 0x80, 0x8a, 0x80, 0xa2, 0x00,247 0x8f, 0xa1, 0x01, 0x80, 0x40, 0xa8, 0x06, 0x05,
246 0x80, 0xae, 0x80, 0xac, 0x81, 0xc2, 0x80, 0x94,248 0x80, 0x8a, 0x80, 0xa2, 0x00, 0x80, 0xae, 0x80,
247 0x82, 0x42, 0x00, 0x80, 0x40, 0xe1, 0x80, 0x40,249 0xac, 0x81, 0xc2, 0x80, 0x94, 0x82, 0x42, 0x00,
248 0x94, 0x84, 0x46, 0x85, 0x10, 0x0c, 0x83, 0xa7,250 0x80, 0x40, 0xe1, 0x80, 0x40, 0x94, 0x84, 0x46,
249 0x13, 0x80, 0x40, 0xa4, 0x81, 0x42, 0x3c, 0x83,251 0x85, 0x10, 0x0c, 0x83, 0xa7, 0x13, 0x80, 0x40,
250 0x42, 0x1d, 0x8a, 0x40, 0xaf, 0x80, 0xb5, 0x8e,252 0xa4, 0x81, 0x42, 0x3c, 0x83, 0x41, 0x82, 0x81,
253 0x40, 0x98, 0x8a, 0x40, 0xaf, 0x80, 0xb5, 0x8e,
251 0xb7, 0x82, 0xb0, 0x19, 0x09, 0x80, 0x8e, 0x80,254 0xb7, 0x82, 0xb0, 0x19, 0x09, 0x80, 0x8e, 0x80,
252 0xb1, 0x82, 0xa3, 0x20, 0x87, 0xbd, 0x80, 0x8b,255 0xb1, 0x82, 0xa3, 0x20, 0x87, 0xbd, 0x80, 0x8b,
253 0x81, 0xb3, 0x88, 0x89, 0x83, 0xe1, 0x11, 0x00,256 0x81, 0xb3, 0x88, 0x89, 0x19, 0x80, 0xde, 0x11,
254 0x0d, 0x80, 0x40, 0x9f, 0x02, 0x87, 0x94, 0x81,257 0x00, 0x0d, 0x80, 0x40, 0x9f, 0x02, 0x87, 0x94,
255 0xb8, 0x0a, 0x80, 0xa4, 0x32, 0x84, 0x40, 0xc2,258 0x81, 0xb8, 0x0a, 0x80, 0xa4, 0x32, 0x84, 0x40,
256 0x39, 0x10, 0x80, 0x96, 0x80, 0xd3, 0x28, 0x03,259 0xc2, 0x39, 0x10, 0x80, 0x96, 0x80, 0xd3, 0x28,
257 0x08, 0x81, 0x40, 0xed, 0x1d, 0x08, 0x81, 0x9a,260 0x03, 0x08, 0x81, 0x40, 0xed, 0x1d, 0x08, 0x81,
258 0x81, 0xd4, 0x39, 0x00, 0x81, 0xe9, 0x00, 0x01,261 0x9a, 0x81, 0xd4, 0x39, 0x00, 0x81, 0xe9, 0x00,
259 0x28, 0x80, 0xe4, 0x11, 0x18, 0x84, 0x41, 0x02,262 0x01, 0x28, 0x80, 0xe4, 0x11, 0x18, 0x84, 0x41,
260 0x88, 0x01, 0x41, 0x98, 0x19, 0x0b, 0x80, 0x9f,263 0x02, 0x88, 0x01, 0x40, 0xff, 0x08, 0x03, 0x80,
261 0x89, 0xa7, 0x29, 0x1f, 0x80, 0x88, 0x29, 0x82,264 0x40, 0x8f, 0x19, 0x0b, 0x80, 0x9f, 0x89, 0xa7,
262 0xad, 0x8c, 0x01, 0x41, 0x95, 0x30, 0x28, 0x80,265 0x29, 0x1f, 0x80, 0x88, 0x29, 0x82, 0xad, 0x8c,
263 0xd1, 0x95, 0x0e, 0x01, 0x01, 0xf9, 0x2a, 0x00,266 0x01, 0x41, 0x95, 0x30, 0x28, 0x80, 0xd1, 0x95,
264 0x08, 0x30, 0x80, 0xc7, 0x0a, 0x00, 0x80, 0x41,267 0x0e, 0x01, 0x01, 0xf9, 0x2a, 0x00, 0x08, 0x30,
265 0x5a, 0x81, 0x55, 0x3a, 0x88, 0x60, 0x36, 0xb6,268 0x80, 0xc7, 0x0a, 0x00, 0x80, 0x41, 0x5a, 0x81,
266 0x84, 0xba, 0x86, 0x88, 0x83, 0x44, 0x0a, 0x80,269 0x55, 0x3a, 0x88, 0x60, 0x36, 0xb6, 0x84, 0xba,
267 0xbe, 0x90, 0xbf, 0x08, 0x80, 0x60, 0x4c, 0xb8,270 0x86, 0x88, 0x83, 0x44, 0x0a, 0x80, 0xbe, 0x90,
268 0x08, 0x83, 0x54, 0xc2, 0x82, 0x88, 0x8f, 0x0e,271 0xbf, 0x08, 0x81, 0x60, 0x4c, 0xb7, 0x08, 0x83,
269 0x9d, 0x83, 0x40, 0x93, 0x82, 0x47, 0xba, 0xb6,272 0x54, 0xc2, 0x82, 0x88, 0x8f, 0x0e, 0x9d, 0x83,
270 0x83, 0xb1, 0x38, 0x8d, 0x80, 0x95, 0x20, 0x8e,273 0x40, 0x93, 0x82, 0x47, 0xba, 0xb6, 0x83, 0xb1,
271 0x45, 0x4f, 0x30, 0x90, 0x0e, 0x01, 0x04, 0x41,274 0x38, 0x8d, 0x80, 0x95, 0x20, 0x8e, 0x45, 0x4f,
272 0x04, 0x8d, 0x41, 0xad, 0x83, 0x45, 0xdf, 0x86,275 0x30, 0x90, 0x0e, 0x01, 0x04, 0x41, 0x04, 0x8d,
273 0xec, 0x87, 0x4a, 0xae, 0x84, 0x6c, 0x0c, 0x00,276 0x41, 0xad, 0x83, 0x45, 0xdf, 0x86, 0xec, 0x87,
274 0x80, 0x9d, 0xdf, 0xff, 0x40, 0xef,277 0x4a, 0xae, 0x84, 0x6c, 0x0c, 0x00, 0x80, 0x9d,
278 0xdf, 0xff, 0x40, 0xef,
275};279};
276 280
277static const uint8_t unicode_prop_Case_Ignorable_index[66] = {281static const uint8_t unicode_prop_Case_Ignorable_index[66] = {
278 0xc0, 0x05, 0x00, 0x2e, 0x08, 0x20, 0x52, 0x0a,282 0xbe, 0x05, 0x00, 0xfe, 0x07, 0x00, 0x52, 0x0a,
279 0x00, 0x05, 0x0c, 0x00, 0x4f, 0x0e, 0x20, 0x75,283 0x20, 0x05, 0x0c, 0x20, 0x3b, 0x0e, 0x40, 0x61,
280 0x10, 0x20, 0x44, 0x18, 0x00, 0x43, 0x1b, 0x00,284 0x10, 0x40, 0x0f, 0x18, 0x20, 0x43, 0x1b, 0x60,
281 0x00, 0x1e, 0x00, 0x7e, 0x2c, 0x00, 0x7e, 0xa6,285 0x79, 0x1d, 0x00, 0xf1, 0x20, 0x00, 0x0d, 0xa6,
282 0x40, 0x83, 0xa9, 0x20, 0xf7, 0xaa, 0x00, 0x41,286 0x40, 0x2e, 0xa9, 0x20, 0xde, 0xaa, 0x00, 0x0f,
283 0xff, 0x20, 0x28, 0x0d, 0x01, 0x3f, 0x12, 0x41,287 0xff, 0x20, 0xe7, 0x0a, 0x41, 0x82, 0x11, 0x21,
284 0xde, 0x15, 0x21, 0x5c, 0x1a, 0x01, 0xf5, 0x6a,288 0xc4, 0x14, 0x61, 0x44, 0x19, 0x01, 0x48, 0x1d,
285 0x21, 0x37, 0xda, 0x01, 0x02, 0x00, 0x2e, 0xf0,289 0x21, 0xa4, 0xbc, 0x01, 0x3e, 0xe1, 0x01, 0xf0,
286 0x01, 0x0e,290 0x01, 0x0e,
287};291};
288 292
289static const uint8_t unicode_prop_ID_Start_table[1024] = {293static const uint8_t unicode_prop_ID_Start_table[1045] = {
290 0xc0, 0x99, 0x85, 0x99, 0xae, 0x80, 0x89, 0x03,294 0xc0, 0x99, 0x85, 0x99, 0xae, 0x80, 0x89, 0x03,
291 0x04, 0x96, 0x80, 0x9e, 0x80, 0x41, 0xc9, 0x83,295 0x04, 0x96, 0x80, 0x9e, 0x80, 0x41, 0xc9, 0x83,
292 0x8b, 0x8d, 0x26, 0x00, 0x80, 0x40, 0x80, 0x20,296 0x8b, 0x8d, 0x26, 0x00, 0x80, 0x40, 0x80, 0x20,
@@ -297,142 +301,146 @@ static const uint8_t unicode_prop_ID_Start_table[1024] = { · 4 unmodified lines
297 0x89, 0x11, 0x80, 0x8f, 0x00, 0x9d, 0x9c, 0xd8,301 0x89, 0x11, 0x80, 0x8f, 0x00, 0x9d, 0x9c, 0xd8,
298 0x8a, 0x80, 0x97, 0xa0, 0x88, 0x0b, 0x04, 0x95,302 0x8a, 0x80, 0x97, 0xa0, 0x88, 0x0b, 0x04, 0x95,
299 0x18, 0x88, 0x02, 0x80, 0x96, 0x98, 0x86, 0x8a,303 0x18, 0x88, 0x02, 0x80, 0x96, 0x98, 0x86, 0x8a,
300 0xb4, 0x94, 0x07, 0xc5, 0xb5, 0x10, 0x91, 0x06,304 0xb4, 0x94, 0x80, 0x91, 0xbb, 0xb5, 0x10, 0x91,
301 0x89, 0x8e, 0x8f, 0x1f, 0x09, 0x81, 0x95, 0x06,305 0x06, 0x89, 0x8e, 0x8f, 0x1f, 0x09, 0x81, 0x95,
302 0x00, 0x13, 0x10, 0x8f, 0x80, 0x8c, 0x08, 0x82,306 0x06, 0x00, 0x13, 0x10, 0x8f, 0x80, 0x8c, 0x08,
303 0x8d, 0x81, 0x89, 0x07, 0x2b, 0x09, 0x95, 0x06,307 0x82, 0x8d, 0x81, 0x89, 0x07, 0x2b, 0x09, 0x95,
304 0x01, 0x01, 0x01, 0x9e, 0x18, 0x80, 0x92, 0x82,308 0x06, 0x01, 0x01, 0x01, 0x9e, 0x18, 0x80, 0x92,
305 0x8f, 0x88, 0x02, 0x80, 0x95, 0x06, 0x01, 0x04,309 0x82, 0x8f, 0x88, 0x02, 0x80, 0x95, 0x06, 0x01,
306 0x10, 0x91, 0x80, 0x8e, 0x81, 0x96, 0x80, 0x8a,310 0x04, 0x10, 0x91, 0x80, 0x8e, 0x81, 0x96, 0x80,
307 0x39, 0x09, 0x95, 0x06, 0x01, 0x04, 0x10, 0x9d,311 0x8a, 0x39, 0x09, 0x95, 0x06, 0x01, 0x04, 0x10,
308 0x08, 0x82, 0x8e, 0x80, 0x90, 0x00, 0x2a, 0x10,312 0x9d, 0x08, 0x82, 0x8e, 0x80, 0x90, 0x00, 0x2a,
309 0x1a, 0x08, 0x00, 0x0a, 0x0a, 0x12, 0x8b, 0x95,313 0x10, 0x1a, 0x08, 0x00, 0x0a, 0x0a, 0x12, 0x8b,
310 0x80, 0xb3, 0x38, 0x10, 0x96, 0x80, 0x8f, 0x10,314 0x95, 0x80, 0xb3, 0x38, 0x10, 0x96, 0x80, 0x8f,
311 0x99, 0x14, 0x81, 0x9d, 0x03, 0x38, 0x10, 0x96,315 0x10, 0x99, 0x14, 0x81, 0x9d, 0x03, 0x38, 0x10,
312 0x80, 0x89, 0x04, 0x10, 0x9f, 0x00, 0x81, 0x8e,316 0x96, 0x80, 0x89, 0x04, 0x10, 0x9f, 0x00, 0x81,
313 0x81, 0x91, 0x38, 0x10, 0xa8, 0x08, 0x8f, 0x04,317 0x8e, 0x81, 0x90, 0x88, 0x02, 0x80, 0xa8, 0x08,
314 0x17, 0x82, 0x97, 0x2c, 0x91, 0x82, 0x97, 0x80,318 0x8f, 0x04, 0x17, 0x82, 0x97, 0x2c, 0x91, 0x82,
315 0x88, 0x00, 0x0e, 0xb9, 0xaf, 0x01, 0x8b, 0x86,319 0x97, 0x80, 0x88, 0x00, 0x0e, 0xb9, 0xaf, 0x01,
316 0xb9, 0x08, 0x00, 0x20, 0x97, 0x00, 0x80, 0x89,320 0x8b, 0x86, 0xb9, 0x08, 0x00, 0x20, 0x97, 0x00,
317 0x01, 0x88, 0x01, 0x20, 0x80, 0x94, 0x83, 0x9f,321 0x80, 0x89, 0x01, 0x88, 0x01, 0x20, 0x80, 0x94,
318 0x80, 0xbe, 0x38, 0xa3, 0x9a, 0x84, 0xf2, 0xaa,322 0x83, 0x9f, 0x80, 0xbe, 0x38, 0xa3, 0x9a, 0x84,
319 0x93, 0x80, 0x8f, 0x2b, 0x1a, 0x02, 0x0e, 0x13,323 0xf2, 0xaa, 0x93, 0x80, 0x8f, 0x2b, 0x1a, 0x02,
320 0x8c, 0x8b, 0x80, 0x90, 0xa5, 0x00, 0x20, 0x81,324 0x0e, 0x13, 0x8c, 0x8b, 0x80, 0x90, 0xa5, 0x00,
321 0xaa, 0x80, 0x41, 0x4c, 0x03, 0x0e, 0x00, 0x03,325 0x20, 0x81, 0xaa, 0x80, 0x41, 0x4c, 0x03, 0x0e,
322 0x81, 0xa8, 0x03, 0x81, 0xa0, 0x03, 0x0e, 0x00,326 0x00, 0x03, 0x81, 0xa8, 0x03, 0x81, 0xa0, 0x03,
323 0x03, 0x81, 0x8e, 0x80, 0xb8, 0x03, 0x81, 0xc2,327 0x0e, 0x00, 0x03, 0x81, 0x8e, 0x80, 0xb8, 0x03,
324 0xa4, 0x8f, 0x8f, 0xd5, 0x0d, 0x82, 0x42, 0x6b,328 0x81, 0xc2, 0xa4, 0x8f, 0x8f, 0xd5, 0x0d, 0x82,
325 0x81, 0x90, 0x80, 0x99, 0x84, 0xca, 0x82, 0x8a,329 0x42, 0x6b, 0x81, 0x90, 0x80, 0x99, 0x84, 0xca,
326 0x86, 0x8c, 0x03, 0x8d, 0x91, 0x8d, 0x91, 0x8d,330 0x82, 0x8a, 0x86, 0x8c, 0x03, 0x8d, 0x91, 0x8d,
327 0x8c, 0x02, 0x8e, 0xb3, 0xa2, 0x03, 0x80, 0xc2,331 0x91, 0x8d, 0x8c, 0x02, 0x8e, 0xb3, 0xa2, 0x03,
328 0xd8, 0x86, 0xa8, 0x00, 0x84, 0xc5, 0x89, 0x9e,332 0x80, 0xc2, 0xd8, 0x86, 0xa8, 0x00, 0x84, 0xc5,
329 0xb0, 0x9d, 0x0c, 0x8a, 0xab, 0x83, 0x99, 0xb5,333 0x89, 0x9e, 0xb0, 0x9d, 0x0c, 0x8a, 0xab, 0x83,
330 0x96, 0x88, 0xb4, 0xd1, 0x80, 0xdc, 0xae, 0x90,334 0x99, 0xb5, 0x96, 0x88, 0xb4, 0xd1, 0x80, 0xdc,
331 0x86, 0xb6, 0x9d, 0x8c, 0x81, 0x89, 0xab, 0x99,335 0xae, 0x90, 0x86, 0xb6, 0x9d, 0x8c, 0x81, 0x89,
332 0xa3, 0xa8, 0x82, 0x89, 0xa3, 0x81, 0x88, 0x86,336 0xab, 0x99, 0xa3, 0xa8, 0x82, 0x89, 0xa3, 0x81,
333 0xaa, 0x0a, 0xa8, 0x18, 0x28, 0x0a, 0x04, 0x40,337 0x88, 0x86, 0xaa, 0x0a, 0xa8, 0x18, 0x28, 0x0a,
334 0xbf, 0xbf, 0x41, 0x15, 0x0d, 0x81, 0xa5, 0x0d,338 0x04, 0x40, 0xbf, 0xbf, 0x41, 0x15, 0x0d, 0x81,
335 0x0f, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x81, 0xb4,339 0xa5, 0x0d, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x9e,
336 0x06, 0x00, 0x12, 0x06, 0x13, 0x0d, 0x83, 0x8c,340 0x81, 0xb4, 0x06, 0x00, 0x12, 0x06, 0x13, 0x0d,
337 0x22, 0x06, 0xf3, 0x80, 0x8c, 0x80, 0x8f, 0x8c,341 0x83, 0x8c, 0x22, 0x06, 0xf3, 0x80, 0x8c, 0x80,
338 0xe4, 0x03, 0x01, 0x89, 0x00, 0x0d, 0x28, 0x00,342 0x8f, 0x8c, 0xe4, 0x03, 0x01, 0x89, 0x00, 0x0d,
339 0x00, 0x80, 0x8f, 0x0b, 0x24, 0x18, 0x90, 0xa8,343 0x28, 0x00, 0x00, 0x80, 0x8f, 0x0b, 0x24, 0x18,
340 0x4a, 0x76, 0xae, 0x80, 0xae, 0x80, 0x40, 0x84,344 0x90, 0xa8, 0x4a, 0x76, 0xae, 0x80, 0xae, 0x80,
341 0x2b, 0x11, 0x8b, 0xa5, 0x00, 0x20, 0x81, 0xb7,345 0x40, 0x84, 0x2b, 0x11, 0x8b, 0xa5, 0x00, 0x20,
342 0x30, 0x8f, 0x96, 0x88, 0x30, 0x30, 0x30, 0x30,346 0x81, 0xb7, 0x30, 0x8f, 0x96, 0x88, 0x30, 0x30,
343 0x30, 0x30, 0x30, 0x86, 0x42, 0x25, 0x82, 0x98,347 0x30, 0x30, 0x30, 0x30, 0x30, 0x86, 0x42, 0x25,
344 0x88, 0x34, 0x0c, 0x83, 0xd5, 0x1c, 0x80, 0xd9,348 0x82, 0x98, 0x88, 0x34, 0x0c, 0x83, 0xd5, 0x1c,
345 0x03, 0x84, 0xaa, 0x80, 0xdd, 0x90, 0x9a, 0xb4,349 0x80, 0xd9, 0x03, 0x84, 0xaa, 0x80, 0xdd, 0x90,
346 0x8f, 0x41, 0xff, 0x59, 0xb5, 0xc9, 0x60, 0x51,350 0x9f, 0xaf, 0x8f, 0x41, 0xff, 0x59, 0xbf, 0xbf,
347 0xef, 0x8f, 0x44, 0x8c, 0xc2, 0xad, 0x81, 0x41,351 0x60, 0x51, 0xfc, 0x82, 0x44, 0x8c, 0xc2, 0xad,
348 0x0c, 0x82, 0x8f, 0x89, 0x81, 0x93, 0xae, 0x8f,352 0x81, 0x41, 0x0c, 0x82, 0x8f, 0x89, 0x81, 0x93,
349 0x9e, 0x81, 0xcf, 0xa6, 0x88, 0x81, 0xe6, 0x81,353 0xae, 0x8f, 0x9e, 0x81, 0xcf, 0xa6, 0x88, 0x81,
350 0xb4, 0x0c, 0xaf, 0x8a, 0x02, 0x03, 0x80, 0x96,354 0xe6, 0x81, 0xb4, 0x81, 0x88, 0xa9, 0x8c, 0x02,
351 0x9c, 0xb3, 0x8d, 0xb1, 0xbd, 0x2a, 0x00, 0x81,355 0x03, 0x80, 0x96, 0x9c, 0xb3, 0x8d, 0xb1, 0xbd,
352 0x8a, 0x9b, 0x89, 0x96, 0x98, 0x9c, 0x86, 0xae,356 0x2a, 0x00, 0x81, 0x8a, 0x9b, 0x89, 0x96, 0x98,
353 0x9b, 0x80, 0x8f, 0x20, 0x89, 0x89, 0x20, 0xa8,357 0x9c, 0x86, 0xae, 0x9b, 0x80, 0x8f, 0x20, 0x89,
354 0x96, 0x10, 0x87, 0x93, 0x96, 0x10, 0x82, 0xb1,358 0x89, 0x20, 0xa8, 0x96, 0x10, 0x87, 0x93, 0x96,
355 0x00, 0x11, 0x0c, 0x08, 0x00, 0x97, 0x11, 0x8a,359 0x10, 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x08, 0x00,
356 0x32, 0x8b, 0x29, 0x29, 0x85, 0x88, 0x30, 0x30,360 0x97, 0x11, 0x8a, 0x32, 0x8b, 0x29, 0x29, 0x85,
357 0xaa, 0x80, 0x8b, 0x87, 0xf2, 0x9c, 0x60, 0x2b,361 0x88, 0x30, 0x30, 0xaa, 0x80, 0x8d, 0x85, 0xf2,
358 0xa3, 0x8b, 0x96, 0x83, 0xb0, 0x60, 0x21, 0x03,362 0x9c, 0x60, 0x2b, 0xa3, 0x8b, 0x96, 0x83, 0xb0,
359 0x41, 0x6d, 0x81, 0xe9, 0xa5, 0x86, 0x8b, 0x24,363 0x60, 0x21, 0x03, 0x41, 0x6d, 0x81, 0xe9, 0xa5,
360 0x00, 0x89, 0x80, 0x8c, 0x04, 0x00, 0x01, 0x01,364 0x86, 0x8b, 0x24, 0x00, 0x89, 0x80, 0x8c, 0x04,
361 0x80, 0xeb, 0xa0, 0x41, 0x6a, 0x91, 0xbf, 0x81,365 0x00, 0x01, 0x01, 0x80, 0xeb, 0xa0, 0x41, 0x6a,
362 0xb5, 0xa7, 0x8b, 0xf3, 0x20, 0x40, 0x86, 0xa3,366 0x91, 0xbf, 0x81, 0xb5, 0xa7, 0x8b, 0xf3, 0x20,
363 0x99, 0x85, 0x99, 0x8a, 0xd8, 0x15, 0x0d, 0x0d,367 0x40, 0x86, 0xa3, 0x99, 0x85, 0x99, 0x8a, 0xd8,
364 0x0a, 0xa2, 0x8b, 0x80, 0x99, 0x80, 0x92, 0x01,368 0x15, 0x0d, 0x0d, 0x0a, 0xa2, 0x8b, 0x80, 0x99,
365 0x80, 0x8e, 0x81, 0x8d, 0xa1, 0xfa, 0xc4, 0xb4,369 0x80, 0x92, 0x01, 0x80, 0x8e, 0x81, 0x8d, 0xa1,
366 0x41, 0x0a, 0x9c, 0x82, 0xb0, 0xae, 0x9f, 0x8c,370 0xfa, 0xc4, 0xb4, 0x41, 0x0a, 0x9c, 0x82, 0xb0,
367 0x9d, 0x84, 0xa5, 0x89, 0x9d, 0x81, 0xa3, 0x1f,371 0xae, 0x9f, 0x8c, 0x9d, 0x84, 0xa5, 0x89, 0x9d,
368 0x04, 0xa9, 0x40, 0x9d, 0x91, 0xa3, 0x83, 0xa3,372 0x81, 0xa3, 0x1f, 0x04, 0xa9, 0x40, 0x9d, 0x91,
369 0x83, 0xa7, 0x87, 0xb3, 0x40, 0x9b, 0x41, 0x36,373 0xa3, 0x83, 0xa3, 0x83, 0xa7, 0x87, 0xb3, 0x40,
370 0x88, 0x95, 0x89, 0x87, 0x40, 0x97, 0x29, 0x00,374 0x9b, 0x41, 0x36, 0x88, 0x95, 0x89, 0x87, 0x40,
371 0xab, 0x01, 0x10, 0x81, 0x96, 0x89, 0x96, 0x88,375 0x97, 0x29, 0x00, 0xab, 0x01, 0x10, 0x81, 0x96,
372 0x9e, 0xc0, 0x92, 0x01, 0x89, 0x95, 0x89, 0x99,376 0x89, 0x96, 0x88, 0x9e, 0xc0, 0x92, 0x01, 0x89,
373 0xc5, 0xb7, 0x29, 0xbf, 0x80, 0x8e, 0x18, 0x10,377 0x95, 0x89, 0x99, 0xc5, 0xb7, 0x29, 0xbf, 0x80,
374 0x9c, 0xa9, 0x9c, 0x82, 0x9c, 0xa2, 0x38, 0x9b,378 0x8e, 0x18, 0x10, 0x9c, 0xa9, 0x9c, 0x82, 0x9c,
375 0x9a, 0xb5, 0x89, 0x95, 0x89, 0x92, 0x8c, 0x91,379 0xa2, 0x38, 0x9b, 0x9a, 0xb5, 0x89, 0x95, 0x89,
376 0xed, 0xc8, 0xb6, 0xb2, 0x8c, 0xb2, 0x8c, 0xa3,380 0x92, 0x8c, 0x91, 0xed, 0xc8, 0xb6, 0xb2, 0x8c,
377 0x41, 0xdb, 0x9c, 0x89, 0x07, 0x95, 0x40, 0x99,381 0xb2, 0x8c, 0xa3, 0x41, 0x5b, 0xa9, 0x29, 0xcd,
378 0x96, 0x8b, 0xb4, 0xca, 0xac, 0x9f, 0x98, 0x99,382 0x9c, 0x89, 0x07, 0x95, 0xe9, 0x94, 0x9a, 0x96,
379 0xa3, 0x9c, 0x80, 0x8a, 0xa2, 0x10, 0x8b, 0xaf,383 0x8b, 0xb4, 0xca, 0xac, 0x9f, 0x98, 0x99, 0xa3,
380 0x8d, 0x83, 0x94, 0x00, 0x80, 0xa2, 0x91, 0x80,384 0x9c, 0x01, 0x07, 0xa2, 0x10, 0x8b, 0xaf, 0x8d,
381 0x98, 0xd3, 0x30, 0x00, 0x18, 0x8e, 0x80, 0x89,385 0x83, 0x94, 0x00, 0x80, 0xa2, 0x91, 0x80, 0x98,
382 0x86, 0xae, 0xa5, 0x39, 0x09, 0x95, 0x06, 0x01,386 0xd3, 0x30, 0x00, 0x18, 0x8e, 0x80, 0x89, 0x86,
383 0x04, 0x10, 0x91, 0x80, 0x8b, 0x84, 0x40, 0x9d,387 0xae, 0xa5, 0x39, 0x09, 0x95, 0x06, 0x01, 0x04,
384 0xb4, 0x91, 0x83, 0x93, 0x80, 0x9f, 0xaf, 0x93,388 0x10, 0x91, 0x80, 0x8b, 0x84, 0x40, 0x9d, 0xb4,
385 0x08, 0x80, 0x40, 0xb7, 0xae, 0xa8, 0x83, 0xa3,389 0x91, 0x83, 0x93, 0x82, 0x9d, 0xaf, 0x93, 0x08,
386 0xaf, 0x93, 0x80, 0xba, 0xaa, 0x8c, 0x80, 0xc6,390 0x80, 0x40, 0xb7, 0xae, 0xa8, 0x83, 0xa3, 0xaf,
387 0x9a, 0x40, 0xe4, 0xab, 0xf3, 0xbf, 0x9e, 0x80,391 0x93, 0x80, 0xba, 0xaa, 0x8c, 0x80, 0xc6, 0x9a,
388 0x40, 0x9f, 0x39, 0xa6, 0x8f, 0x00, 0x80, 0x9b,392 0x40, 0xe4, 0xab, 0xf3, 0xbf, 0x9e, 0x39, 0x01,
389 0x80, 0x89, 0xa7, 0x30, 0x94, 0x80, 0x8a, 0xad,393 0x38, 0x08, 0x97, 0x8e, 0x00, 0x80, 0xdd, 0x39,
390 0x92, 0x80, 0xa1, 0xb8, 0x41, 0x06, 0x88, 0x80,394 0xa6, 0x8f, 0x00, 0x80, 0x9b, 0x80, 0x89, 0xa7,
391 0xa4, 0x90, 0x80, 0xb0, 0x9d, 0xef, 0x30, 0x08,395 0x30, 0x94, 0x80, 0x8a, 0xad, 0x92, 0x80, 0xa1,
392 0xa5, 0x94, 0x80, 0x98, 0x28, 0x08, 0x9f, 0x8d,396 0xb8, 0x41, 0x06, 0x88, 0x80, 0xa4, 0x90, 0x80,
393 0x80, 0x41, 0x46, 0x92, 0x41, 0x0c, 0x43, 0x99,397 0xb0, 0x9d, 0xef, 0x30, 0x08, 0xa5, 0x94, 0x80,
394 0xe5, 0xee, 0x90, 0x40, 0xc3, 0x4a, 0xbb, 0x44,398 0x98, 0x28, 0x08, 0x9f, 0x8d, 0x80, 0x41, 0x46,
395 0x2e, 0x4f, 0xd0, 0x42, 0x46, 0x60, 0x21, 0xb8,399 0x92, 0x40, 0xbc, 0x80, 0xce, 0x43, 0x99, 0xe5,
396 0x42, 0x38, 0x86, 0x9e, 0xf0, 0x9d, 0x91, 0xaf,400 0xee, 0x90, 0x40, 0xc3, 0x4a, 0xbb, 0x44, 0x2e,
397 0x8f, 0x83, 0x9e, 0x94, 0x84, 0x92, 0x42, 0xaf,401 0x4f, 0xd0, 0x42, 0x46, 0x60, 0x21, 0xb8, 0x42,
398 0xbf, 0xff, 0xca, 0x20, 0xc1, 0x8c, 0xbf, 0x08,402 0x38, 0x86, 0x9e, 0xf0, 0x9d, 0x91, 0xaf, 0x8f,
399 0x80, 0x9b, 0x57, 0xf7, 0x87, 0x42, 0xf2, 0x60,403 0x83, 0x9e, 0x94, 0x84, 0x92, 0x42, 0xaf, 0xbf,
400 0x25, 0x0c, 0x41, 0x1e, 0xb0, 0x82, 0x90, 0x1f,404 0xff, 0xca, 0x20, 0xc1, 0x8c, 0xbf, 0x08, 0x80,
401 0x41, 0x8b, 0x49, 0x03, 0xea, 0x84, 0x8c, 0x82,405 0x9b, 0x57, 0xf7, 0x87, 0x44, 0xd5, 0xa9, 0x88,
402 0x88, 0x86, 0x89, 0x57, 0x65, 0xd4, 0x80, 0xc6,406 0x60, 0x22, 0xf6, 0x41, 0x1e, 0xb0, 0x82, 0x90,
403 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06,407 0x1f, 0x41, 0x8b, 0x49, 0x03, 0xea, 0x84, 0x8c,
404 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03,408 0x82, 0x88, 0x86, 0x89, 0x57, 0x65, 0xd4, 0x80,
405 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81, 0x98,409 0xc6, 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00,
406 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, 0x9e,410 0x06, 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b,
407 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, 0x9e,411 0x03, 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81,
408 0x80, 0x98, 0x07, 0x49, 0x33, 0xac, 0x89, 0x86,412 0x98, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80,
409 0x8f, 0x80, 0x41, 0x70, 0xab, 0x45, 0x13, 0x40,413 0x9e, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80,
410 0xc4, 0xba, 0xc3, 0x30, 0x44, 0xb3, 0x18, 0x9a,414 0x9e, 0x80, 0x98, 0x07, 0x49, 0x33, 0xac, 0x89,
411 0x01, 0x00, 0x08, 0x80, 0x89, 0x03, 0x00, 0x00,415 0x86, 0x8f, 0x80, 0x41, 0x70, 0xab, 0x45, 0x13,
412 0x28, 0x18, 0x00, 0x00, 0x02, 0x01, 0x00, 0x08,416 0x40, 0xc4, 0xba, 0xc3, 0x30, 0x44, 0xb3, 0x18,
413 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x06,417 0x9a, 0x01, 0x00, 0x08, 0x80, 0x89, 0x03, 0x00,
414 0x03, 0x03, 0x00, 0x80, 0x89, 0x80, 0x90, 0x22,418 0x00, 0x28, 0x18, 0x00, 0x00, 0x02, 0x01, 0x00,
415 0x04, 0x80, 0x90, 0x51, 0x43, 0x60, 0xa6, 0xd6,419 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b,
416 0xa8, 0x50, 0x34, 0x8a, 0x40, 0xdd, 0x81, 0x56,420 0x06, 0x03, 0x03, 0x00, 0x80, 0x89, 0x80, 0x90,
417 0x81, 0x8d, 0x5d, 0x30, 0x4c, 0x1e, 0x42, 0x1d,421 0x22, 0x04, 0x80, 0x90, 0x51, 0x43, 0x60, 0xa6,
422 0xdd, 0xa1, 0x50, 0x34, 0x8a, 0x40, 0xdd, 0x81,
423 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x4c, 0x1e, 0x42,
424 0x1d, 0x45, 0xe1, 0x53, 0x4a,
418};425};
419 426
420static const uint8_t unicode_prop_ID_Start_index[96] = {427static const uint8_t unicode_prop_ID_Start_index[99] = {
421 0xf6, 0x03, 0x20, 0xa6, 0x07, 0x00, 0xb1, 0x09,428 0xf6, 0x03, 0x20, 0xa6, 0x07, 0x00, 0xa9, 0x09,
422 0x00, 0xba, 0x0a, 0x00, 0xd1, 0x0b, 0x20, 0x62,429 0x00, 0xb4, 0x0a, 0x00, 0xba, 0x0b, 0x00, 0x3e,
423 0x0d, 0x40, 0x01, 0x0f, 0x20, 0x5e, 0x12, 0x00,430 0x0d, 0x00, 0xe0, 0x0e, 0x20, 0x57, 0x12, 0x00,
424 0xf9, 0x16, 0x00, 0x17, 0x1a, 0x20, 0xc0, 0x1d,431 0xeb, 0x16, 0x00, 0xca, 0x19, 0x20, 0xc0, 0x1d,
425 0x20, 0x9d, 0x20, 0x00, 0x68, 0x2d, 0x00, 0x00,432 0x60, 0x80, 0x20, 0x00, 0x2e, 0x2d, 0x00, 0xc0,
426 0x32, 0x20, 0xc0, 0xa7, 0x20, 0x29, 0xaa, 0x00,433 0x31, 0x20, 0x89, 0xa7, 0x20, 0xf0, 0xa9, 0x00,
427 0xa4, 0xd7, 0x20, 0xc8, 0xfd, 0x20, 0x75, 0x01,434 0xe3, 0xab, 0x00, 0x3e, 0xfd, 0x00, 0xfb, 0x00,
428 0x01, 0x37, 0x07, 0x01, 0x36, 0x0a, 0x21, 0xf7,435 0x21, 0x37, 0x07, 0x61, 0x01, 0x0a, 0x01, 0x1d,
429 0x0f, 0x21, 0xa9, 0x12, 0x01, 0x30, 0x16, 0x21,436 0x0f, 0x21, 0x2c, 0x12, 0x01, 0xc8, 0x14, 0x21,
430 0x8a, 0x1a, 0x01, 0x9a, 0x23, 0x01, 0x80, 0x6e,437 0xd1, 0x19, 0x21, 0x47, 0x1d, 0x01, 0x39, 0x6a,
431 0x21, 0x89, 0xbc, 0x21, 0xc1, 0xd6, 0x01, 0xc5,438 0x21, 0x09, 0x8d, 0x01, 0xbc, 0xd4, 0x01, 0xa9,
432 0xe8, 0x21, 0x73, 0xee, 0x01, 0x1e, 0xfa, 0x02,439 0xd7, 0x21, 0x3a, 0xee, 0x01, 0xde, 0xa6, 0x22,
440 0x4b, 0x13, 0x03,
433};441};
434 442
435static const uint8_t unicode_prop_ID_Continue1_table[607] = {443static const uint8_t unicode_prop_ID_Continue1_table[626] = {
436 0xaf, 0x89, 0xa4, 0x80, 0xd6, 0x80, 0x42, 0x47,444 0xaf, 0x89, 0xa4, 0x80, 0xd6, 0x80, 0x42, 0x47,
437 0xef, 0x96, 0x80, 0x40, 0xfa, 0x84, 0x41, 0x08,445 0xef, 0x96, 0x80, 0x40, 0xfa, 0x84, 0x41, 0x08,
438 0xac, 0x00, 0x01, 0x01, 0x00, 0xc7, 0x8a, 0xaf,446 0xac, 0x00, 0x01, 0x01, 0x00, 0xc7, 0x8a, 0xaf,
@@ -445,14 +453,14 @@ static const uint8_t unicode_prop_ID_Continue1_table[607] = { · 6 unmodified lines
445 0x09, 0x89, 0x8d, 0x01, 0x82, 0xb7, 0x00, 0x23,453 0x09, 0x89, 0x8d, 0x01, 0x82, 0xb7, 0x00, 0x23,
446 0x09, 0x12, 0x80, 0x93, 0x8b, 0x10, 0x8a, 0x82,454 0x09, 0x12, 0x80, 0x93, 0x8b, 0x10, 0x8a, 0x82,
447 0xb7, 0x00, 0x38, 0x10, 0x82, 0x93, 0x09, 0x89,455 0xb7, 0x00, 0x38, 0x10, 0x82, 0x93, 0x09, 0x89,
448 0x89, 0x28, 0x82, 0xb7, 0x00, 0x31, 0x09, 0x17,456 0x89, 0x28, 0x82, 0xb7, 0x00, 0x31, 0x09, 0x16,
449 0x81, 0x89, 0x09, 0x89, 0x91, 0x80, 0xba, 0x22,457 0x82, 0x89, 0x09, 0x89, 0x91, 0x80, 0xba, 0x22,
450 0x10, 0x83, 0x88, 0x80, 0x8d, 0x89, 0x8f, 0x84,458 0x10, 0x83, 0x88, 0x80, 0x8d, 0x89, 0x8f, 0x84,
451 0xb8, 0x30, 0x10, 0x1e, 0x81, 0x8a, 0x09, 0x89,459 0xb8, 0x30, 0x10, 0x1e, 0x81, 0x8a, 0x09, 0x89,
452 0x90, 0x82, 0xb7, 0x00, 0x30, 0x10, 0x1e, 0x81,460 0x90, 0x82, 0xb7, 0x00, 0x30, 0x10, 0x1e, 0x81,
453 0x8a, 0x09, 0x89, 0x8f, 0x83, 0xb6, 0x08, 0x30,461 0x8a, 0x09, 0x89, 0x8f, 0x83, 0xb6, 0x08, 0x30,
454 0x10, 0x83, 0x88, 0x80, 0x89, 0x09, 0x89, 0x91,462 0x10, 0x83, 0x88, 0x80, 0x89, 0x09, 0x89, 0x90,
455 0x81, 0xc5, 0x03, 0x28, 0x00, 0x3d, 0x89, 0x09,463 0x82, 0xc5, 0x03, 0x28, 0x00, 0x3d, 0x89, 0x09,
456 0xbc, 0x01, 0x86, 0x8b, 0x38, 0x89, 0xd6, 0x01,464 0xbc, 0x01, 0x86, 0x8b, 0x38, 0x89, 0xd6, 0x01,
457 0x88, 0x8a, 0x29, 0x89, 0xbd, 0x0d, 0x89, 0x8a,465 0x88, 0x8a, 0x29, 0x89, 0xbd, 0x0d, 0x89, 0x8a,
458 0x00, 0x00, 0x03, 0x81, 0xb0, 0x93, 0x01, 0x84,466 0x00, 0x00, 0x03, 0x81, 0xb0, 0x93, 0x01, 0x84,
@@ -464,67 +472,70 @@ static const uint8_t unicode_prop_ID_Continue1_table[607] = { · 5 unmodified lines
464 0x89, 0x40, 0x8e, 0x80, 0xf5, 0x8b, 0x83, 0x8b,472 0x89, 0x40, 0x8e, 0x80, 0xf5, 0x8b, 0x83, 0x8b,
465 0x89, 0x89, 0xff, 0x8a, 0xbb, 0x84, 0xb8, 0x89,473 0x89, 0x89, 0xff, 0x8a, 0xbb, 0x84, 0xb8, 0x89,
466 0x80, 0x9c, 0x81, 0x8a, 0x85, 0x89, 0x95, 0x8d,474 0x80, 0x9c, 0x81, 0x8a, 0x85, 0x89, 0x95, 0x8d,
467 0xc1, 0x84, 0xae, 0x90, 0x8a, 0x89, 0x90, 0x88,475 0x01, 0xbe, 0x84, 0xae, 0x90, 0x8a, 0x89, 0x90,
468 0x8b, 0x82, 0x9d, 0x8c, 0x81, 0x89, 0xab, 0x8d,476 0x88, 0x8b, 0x82, 0x9d, 0x8c, 0x81, 0x89, 0xab,
469 0xaf, 0x93, 0x87, 0x89, 0x85, 0x89, 0xf5, 0x10,477 0x8d, 0xaf, 0x93, 0x87, 0x89, 0x85, 0x89, 0xf5,
470 0x94, 0x18, 0x28, 0x0a, 0x40, 0xc5, 0xb9, 0x04,478 0x10, 0x94, 0x18, 0x28, 0x0a, 0x40, 0xc5, 0xb9,
471 0x42, 0x3e, 0x81, 0x92, 0x80, 0xfa, 0x8c, 0x18,479 0x04, 0x42, 0x3e, 0x81, 0x92, 0x80, 0xfa, 0x8c,
472 0x82, 0x8b, 0x4b, 0xfd, 0x82, 0x40, 0x8c, 0x80,480 0x18, 0x82, 0x8b, 0x4b, 0xfd, 0x82, 0x40, 0x8c,
473 0xdf, 0x9f, 0x42, 0x29, 0x85, 0xe8, 0x81, 0x60,481 0x80, 0xdf, 0x9f, 0x42, 0x29, 0x85, 0xe8, 0x81,
474 0x75, 0x84, 0x89, 0xc4, 0x03, 0x89, 0x9f, 0x81,482 0x60, 0x75, 0x84, 0x89, 0xc4, 0x03, 0x89, 0x9f,
475 0xcf, 0x81, 0x41, 0x0f, 0x02, 0x03, 0x80, 0x96,483 0x81, 0xcf, 0x81, 0x41, 0x0f, 0x02, 0x03, 0x80,
476 0x84, 0xd7, 0x81, 0xb1, 0x91, 0x89, 0x89, 0x85,484 0x96, 0x23, 0x80, 0xd2, 0x81, 0xb1, 0x91, 0x89,
477 0x91, 0x8c, 0x8a, 0x9b, 0x87, 0x98, 0x8c, 0xab,485 0x89, 0x85, 0x91, 0x8c, 0x8a, 0x9b, 0x87, 0x98,
478 0x83, 0xae, 0x8d, 0x8e, 0x89, 0x8a, 0x80, 0x89,486 0x8c, 0xab, 0x83, 0xae, 0x8d, 0x8e, 0x89, 0x8a,
479 0x89, 0xae, 0x8d, 0x8b, 0x07, 0x09, 0x89, 0xa0,487 0x80, 0x89, 0x89, 0xae, 0x8d, 0x8b, 0x07, 0x09,
480 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x08, 0x80, 0xa8,488 0x89, 0xa0, 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x08,
481 0x24, 0x81, 0x40, 0xeb, 0x38, 0x09, 0x89, 0x60,489 0x80, 0xa8, 0x24, 0x81, 0x40, 0xeb, 0x38, 0x09,
482 0x4f, 0x23, 0x80, 0x42, 0xe0, 0x8f, 0x8f, 0x8f,490 0x89, 0x60, 0x4f, 0x23, 0x80, 0x42, 0xe0, 0x8f,
483 0x11, 0x97, 0x82, 0x40, 0xbf, 0x89, 0xa4, 0x80,491 0x8f, 0x8f, 0x11, 0x97, 0x82, 0x40, 0xbf, 0x89,
484 0x42, 0xbc, 0x80, 0x40, 0xe1, 0x80, 0x40, 0x94,492 0xa4, 0x80, 0x42, 0xbc, 0x80, 0x40, 0xe1, 0x80,
485 0x84, 0x41, 0x24, 0x89, 0x45, 0x56, 0x10, 0x0c,493 0x40, 0x94, 0x84, 0x41, 0x24, 0x89, 0x45, 0x56,
486 0x83, 0xa7, 0x13, 0x80, 0x40, 0xa4, 0x81, 0x42,494 0x10, 0x0c, 0x83, 0xa7, 0x13, 0x80, 0x40, 0xa4,
487 0x3c, 0x1f, 0x89, 0x42, 0x0b, 0x8a, 0x40, 0xae,495 0x81, 0x42, 0x3c, 0x1f, 0x89, 0x41, 0x70, 0x81,
488 0x82, 0xb4, 0x8e, 0x9e, 0x89, 0x8e, 0x83, 0xac,496 0x40, 0x98, 0x8a, 0x40, 0xae, 0x82, 0xb4, 0x8e,
489 0x8a, 0xb4, 0x89, 0x2a, 0xa3, 0x8d, 0x80, 0x89,497 0x9e, 0x89, 0x8e, 0x83, 0xac, 0x8a, 0xb4, 0x89,
490 0x21, 0xab, 0x80, 0x8b, 0x82, 0xaf, 0x8d, 0x3b,498 0x2a, 0xa3, 0x8d, 0x80, 0x89, 0x21, 0xab, 0x80,
491 0x82, 0x89, 0xd1, 0x8b, 0x28, 0x40, 0x9f, 0x8b,499 0x8b, 0x82, 0xaf, 0x8d, 0x3b, 0x80, 0x8b, 0xd1,
492 0x84, 0x89, 0x2b, 0xb6, 0x08, 0x31, 0x09, 0x82,500 0x8b, 0x28, 0x40, 0x9f, 0x8b, 0x84, 0x89, 0x2b,
493 0x88, 0x80, 0x89, 0x09, 0x32, 0x84, 0x40, 0xbf,501 0xb6, 0x08, 0x31, 0x09, 0x82, 0x88, 0x80, 0x89,
494 0x91, 0x88, 0x89, 0x18, 0xd0, 0x93, 0x8b, 0x89,502 0x09, 0x32, 0x84, 0x40, 0xbf, 0x91, 0x88, 0x89,
495 0x40, 0xd4, 0x31, 0x88, 0x9a, 0x81, 0xd1, 0x90,503 0x18, 0xd0, 0x93, 0x8b, 0x89, 0x40, 0xd4, 0x31,
496 0x8e, 0x89, 0xd0, 0x8c, 0x87, 0x89, 0xd2, 0x8e,504 0x88, 0x9a, 0x81, 0xd1, 0x90, 0x8e, 0x89, 0xd0,
497 0x83, 0x89, 0x40, 0xf1, 0x8e, 0x40, 0xa4, 0x89,505 0x8c, 0x87, 0x89, 0xd2, 0x8e, 0x83, 0x89, 0x40,
498 0x40, 0xe6, 0x31, 0x32, 0x80, 0x9b, 0x89, 0xa7,506 0xf1, 0x8e, 0x40, 0xa4, 0x89, 0xc5, 0x28, 0x09,
499 0x30, 0x1f, 0x80, 0x88, 0x8a, 0xad, 0x8f, 0x41,507 0x18, 0x00, 0x81, 0x8b, 0x89, 0xf6, 0x31, 0x32,
500 0x94, 0x38, 0x87, 0x8f, 0x89, 0xb7, 0x95, 0x80,508 0x80, 0x9b, 0x89, 0xa7, 0x30, 0x1f, 0x80, 0x88,
501 0x8d, 0xf9, 0x2a, 0x00, 0x08, 0x30, 0x07, 0x89,509 0x8a, 0xad, 0x8f, 0x41, 0x94, 0x38, 0x87, 0x8f,
502 0xaf, 0x20, 0x08, 0x27, 0x89, 0x41, 0x48, 0x83,510 0x89, 0xb7, 0x95, 0x80, 0x8d, 0xf9, 0x2a, 0x00,
503 0x60, 0x4b, 0x68, 0x89, 0x40, 0x85, 0x84, 0xba,511 0x08, 0x30, 0x07, 0x89, 0xaf, 0x20, 0x08, 0x27,
504 0x86, 0x98, 0x89, 0x43, 0xf4, 0x00, 0xb6, 0x33,512 0x89, 0x41, 0x48, 0x83, 0x60, 0x4b, 0x68, 0x89,
505 0x60, 0x4d, 0x09, 0x81, 0x54, 0xc5, 0x22, 0x2f,513 0x40, 0x85, 0x84, 0xba, 0x86, 0x98, 0x89, 0x43,
514 0xf4, 0x00, 0xb6, 0x33, 0xd0, 0x80, 0x8a, 0x81,
515 0x60, 0x4c, 0xaa, 0x81, 0x54, 0xc5, 0x22, 0x2f,
506 0x39, 0x86, 0x9d, 0x83, 0x40, 0x93, 0x82, 0x45,516 0x39, 0x86, 0x9d, 0x83, 0x40, 0x93, 0x82, 0x45,
507 0x88, 0xb1, 0x41, 0xff, 0xb6, 0x83, 0xb1, 0x38,517 0x88, 0xb1, 0x41, 0xff, 0xb6, 0x83, 0xb1, 0x38,
508 0x8d, 0x80, 0x95, 0x20, 0x8e, 0x45, 0x4f, 0x30,518 0x8d, 0x80, 0x95, 0x20, 0x8e, 0x45, 0x4f, 0x30,
509 0x90, 0x0e, 0x01, 0x04, 0x41, 0x04, 0x86, 0x88,519 0x90, 0x0e, 0x01, 0x04, 0x41, 0x04, 0x86, 0x88,
510 0x89, 0x41, 0xa1, 0x8d, 0x45, 0xd5, 0x86, 0xec,520 0x89, 0x41, 0xa1, 0x8d, 0x45, 0xd5, 0x86, 0xec,
511 0x34, 0x89, 0x6c, 0x17, 0xa5, 0x40, 0xef,521 0x34, 0x89, 0x52, 0x95, 0x89, 0x6c, 0x05, 0x05,
522 0x40, 0xef,
512};523};
513 524
514static const uint8_t unicode_prop_ID_Continue1_index[57] = {525static const uint8_t unicode_prop_ID_Continue1_index[60] = {
515 0xfa, 0x06, 0x00, 0x84, 0x09, 0x00, 0xf0, 0x0a,526 0xfa, 0x06, 0x00, 0x84, 0x09, 0x00, 0xf0, 0x0a,
516 0x00, 0x70, 0x0c, 0x00, 0xf4, 0x0d, 0x00, 0x4a,527 0x00, 0x70, 0x0c, 0x00, 0xf4, 0x0d, 0x00, 0x4a,
517 0x10, 0x20, 0x1a, 0x18, 0x20, 0x74, 0x1b, 0x00,528 0x10, 0x20, 0x1a, 0x18, 0x20, 0x74, 0x1b, 0x20,
518 0xe2, 0x20, 0x00, 0x28, 0xa8, 0x20, 0x7e, 0xaa,529 0xdd, 0x20, 0x00, 0x0c, 0xa8, 0x00, 0x5a, 0xaa,
519 0x20, 0x40, 0xff, 0x00, 0x03, 0x10, 0x21, 0xeb,530 0x20, 0x1a, 0xff, 0x00, 0xad, 0x0e, 0x01, 0x38,
520 0x12, 0x01, 0x41, 0x16, 0x01, 0x40, 0x1c, 0x61,531 0x12, 0x21, 0xc1, 0x15, 0x21, 0xe5, 0x19, 0x21,
521 0x37, 0x6b, 0x21, 0x76, 0xda, 0x01, 0xf0, 0x01,532 0xaa, 0x1d, 0x21, 0x8c, 0xd1, 0x41, 0x4a, 0xe1,
522 0x0e,533 0x21, 0xf0, 0x01, 0x0e,
523};534};
524 535
525#ifdef CONFIG_ALL_UNICODE536#ifdef CONFIG_ALL_UNICODE
526 537
527static const uint8_t unicode_cc_table[831] = {538static const uint8_t unicode_cc_table[851] = {
528 0xb2, 0xcf, 0xd4, 0x00, 0xe8, 0x03, 0xdc, 0x00,539 0xb2, 0xcf, 0xd4, 0x00, 0xe8, 0x03, 0xdc, 0x00,
529 0xe8, 0x00, 0xd8, 0x04, 0xdc, 0x01, 0xca, 0x03,540 0xe8, 0x00, 0xd8, 0x04, 0xdc, 0x01, 0xca, 0x03,
530 0xdc, 0x01, 0xca, 0x0a, 0xdc, 0x04, 0x01, 0x03,541 0xdc, 0x01, 0xca, 0x0a, 0xdc, 0x04, 0x01, 0x03,
@@ -574,77 +585,81 @@ static const uint8_t unicode_cc_table[831] = { · 43 unmodified lines
574 0x9a, 0x00, 0xe4, 0xb0, 0x5e, 0x00, 0xde, 0xc0,585 0x9a, 0x00, 0xe4, 0xb0, 0x5e, 0x00, 0xde, 0xc0,
575 0x00, 0xdc, 0xb0, 0xaa, 0xc0, 0x00, 0xdc, 0xb0,586 0x00, 0xdc, 0xb0, 0xaa, 0xc0, 0x00, 0xdc, 0xb0,
576 0x16, 0x00, 0x09, 0x93, 0xc7, 0x81, 0x00, 0xdc,587 0x16, 0x00, 0x09, 0x93, 0xc7, 0x81, 0x00, 0xdc,
577 0xaf, 0xc4, 0x05, 0xdc, 0xc1, 0x00, 0xdc, 0xb0,588 0xaf, 0xc4, 0x05, 0xdc, 0xc1, 0x00, 0xdc, 0x80,
578 0x45, 0x00, 0x07, 0x8e, 0x00, 0x09, 0xa5, 0xc0,589 0x01, 0xdc, 0xb0, 0x42, 0x00, 0x07, 0x8e, 0x00,
579 0x00, 0xdc, 0xc6, 0xb0, 0x05, 0x01, 0x09, 0xb0,590 0x09, 0xa5, 0xc0, 0x00, 0xdc, 0xc6, 0xb0, 0x05,
580 0x09, 0x00, 0x07, 0x8a, 0x01, 0x09, 0xb0, 0x12,591 0x01, 0x09, 0xb0, 0x09, 0x00, 0x07, 0x8a, 0x01,
581 0x00, 0x07, 0xb0, 0x67, 0xc2, 0x41, 0x00, 0x04,592 0x09, 0xb0, 0x12, 0x00, 0x07, 0xb0, 0x67, 0xc2,
582 0xdc, 0xc1, 0x03, 0xdc, 0xc0, 0x41, 0x00, 0x05,593 0x41, 0x00, 0x04, 0xdc, 0xc1, 0x03, 0xdc, 0xc0,
583 0x01, 0x83, 0x00, 0xdc, 0x85, 0xc0, 0x82, 0xc1,594 0x41, 0x00, 0x05, 0x01, 0x83, 0x00, 0xdc, 0x85,
584 0xb0, 0x95, 0xc1, 0x00, 0xdc, 0xc6, 0x00, 0xdc,595 0xc0, 0x82, 0xc1, 0xb0, 0x95, 0xc1, 0x00, 0xdc,
585 0xc1, 0x00, 0xea, 0x00, 0xd6, 0x00, 0xdc, 0x00,596 0xc6, 0x00, 0xdc, 0xc1, 0x00, 0xea, 0x00, 0xd6,
586 0xca, 0xe4, 0x00, 0xe8, 0x01, 0xe4, 0x00, 0xdc,597 0x00, 0xdc, 0x00, 0xca, 0xe4, 0x00, 0xe8, 0x01,
587 0x80, 0xc0, 0x00, 0xe9, 0x00, 0xdc, 0xc0, 0x00,598 0xe4, 0x00, 0xdc, 0x80, 0xc0, 0x00, 0xe9, 0x00,
588 0xdc, 0xb2, 0x9f, 0xc1, 0x01, 0x01, 0xc3, 0x02,599 0xdc, 0xc0, 0x00, 0xdc, 0xb2, 0x9f, 0xc1, 0x01,
589 0x01, 0xc1, 0x83, 0xc0, 0x82, 0x01, 0x01, 0xc0,600 0x01, 0xc3, 0x02, 0x01, 0xc1, 0x83, 0xc0, 0x82,
590 0x00, 0xdc, 0xc0, 0x01, 0x01, 0x03, 0xdc, 0xc0,601 0x01, 0x01, 0xc0, 0x00, 0xdc, 0xc0, 0x01, 0x01,
591 0xb8, 0x03, 0xcd, 0xc2, 0xb0, 0x5c, 0x00, 0x09,602 0x03, 0xdc, 0xc0, 0xb8, 0x03, 0xcd, 0xc2, 0xb0,
592 0xb0, 0x2f, 0xdf, 0xb1, 0xf9, 0x00, 0xda, 0x00,603 0x5c, 0x00, 0x09, 0xb0, 0x2f, 0xdf, 0xb1, 0xf9,
593 0xe4, 0x00, 0xe8, 0x00, 0xde, 0x01, 0xe0, 0xb0,604 0x00, 0xda, 0x00, 0xe4, 0x00, 0xe8, 0x00, 0xde,
594 0x38, 0x01, 0x08, 0xb8, 0x6d, 0xa3, 0xc0, 0x83,605 0x01, 0xe0, 0xb0, 0x38, 0x01, 0x08, 0xb8, 0x6d,
595 0xc9, 0x9f, 0xc1, 0xb0, 0x1f, 0xc1, 0xb0, 0xe3,606 0xa3, 0xc0, 0x83, 0xc9, 0x9f, 0xc1, 0xb0, 0x1f,
596 0x00, 0x09, 0xb0, 0x8c, 0x00, 0x09, 0x9a, 0xd1,607 0xc1, 0xb0, 0xe3, 0x00, 0x09, 0xa4, 0x00, 0x09,
597 0xb0, 0x08, 0x02, 0xdc, 0xa4, 0x00, 0x09, 0xb0,608 0xb0, 0x66, 0x00, 0x09, 0x9a, 0xd1, 0xb0, 0x08,
598 0x2e, 0x00, 0x07, 0x8b, 0x00, 0x09, 0xb0, 0xbe,609 0x02, 0xdc, 0xa4, 0x00, 0x09, 0xb0, 0x2e, 0x00,
599 0xc0, 0x80, 0xc1, 0x00, 0xdc, 0x81, 0xc1, 0x84,610 0x07, 0x8b, 0x00, 0x09, 0xb0, 0xbe, 0xc0, 0x80,
600 0xc1, 0x80, 0xc0, 0xb0, 0x03, 0x00, 0x09, 0xb0,611 0xc1, 0x00, 0xdc, 0x81, 0xc1, 0x84, 0xc1, 0x80,
601 0xc5, 0x00, 0x09, 0xb8, 0x46, 0xff, 0x00, 0x1a,612 0xc0, 0xb0, 0x03, 0x00, 0x09, 0xb0, 0xc5, 0x00,
602 0xb2, 0xd0, 0xc6, 0x06, 0xdc, 0xc1, 0xb3, 0x9c,613 0x09, 0xb8, 0x46, 0xff, 0x00, 0x1a, 0xb2, 0xd0,
603 0x00, 0xdc, 0xb0, 0xb1, 0x00, 0xdc, 0xb0, 0x64,614 0xc6, 0x06, 0xdc, 0xc1, 0xb3, 0x9c, 0x00, 0xdc,
604 0xc4, 0xb6, 0x61, 0x00, 0xdc, 0x80, 0xc0, 0xa7,615 0xb0, 0xb1, 0x00, 0xdc, 0xb0, 0x64, 0xc4, 0xb6,
605 0xc0, 0x00, 0x01, 0x00, 0xdc, 0x83, 0x00, 0x09,616 0x61, 0x00, 0xdc, 0x80, 0xc0, 0xa7, 0xc0, 0x00,
606 0xb0, 0x74, 0xc0, 0x00, 0xdc, 0xb2, 0x0c, 0xc3,617 0x01, 0x00, 0xdc, 0x83, 0x00, 0x09, 0xb0, 0x74,
607 0xb1, 0xed, 0x01, 0xdc, 0xc2, 0x00, 0xdc, 0xc0,618 0xc0, 0x00, 0xdc, 0xb2, 0x0c, 0xc3, 0xb1, 0x52,
608 0x03, 0xdc, 0xb0, 0xc4, 0x00, 0x09, 0xb0, 0x07,619 0xc1, 0xb0, 0x68, 0x01, 0xdc, 0xc2, 0x00, 0xdc,
609 0x00, 0x09, 0xb0, 0x08, 0x00, 0x09, 0x00, 0x07,620 0xc0, 0x03, 0xdc, 0xb0, 0xc4, 0x00, 0x09, 0xb0,
610 0xb0, 0x14, 0xc2, 0xaf, 0x01, 0x09, 0xb0, 0x0d,621 0x07, 0x00, 0x09, 0xb0, 0x08, 0x00, 0x09, 0x00,
611 0x00, 0x07, 0xb0, 0x1b, 0x00, 0x09, 0x88, 0x00,622 0x07, 0xb0, 0x14, 0xc2, 0xaf, 0x01, 0x09, 0xb0,
612 0x07, 0xb0, 0x39, 0x00, 0x09, 0x00, 0x07, 0xb0,623 0x0d, 0x00, 0x07, 0xb0, 0x1b, 0x00, 0x09, 0x88,
613 0x81, 0x00, 0x07, 0x00, 0x09, 0xb0, 0x1f, 0x01,624 0x00, 0x07, 0xb0, 0x39, 0x00, 0x09, 0x00, 0x07,
614 0x07, 0x8f, 0x00, 0x09, 0x97, 0xc6, 0x82, 0xc4,625 0xb0, 0x81, 0x00, 0x07, 0x00, 0x09, 0xb0, 0x1f,
615 0xb0, 0x9c, 0x00, 0x09, 0x82, 0x00, 0x07, 0x96,626 0x01, 0x07, 0x8f, 0x00, 0x09, 0x97, 0xc6, 0x82,
616 0xc0, 0xb0, 0x32, 0x00, 0x09, 0x00, 0x07, 0xb0,627 0xc4, 0xb0, 0x9c, 0x00, 0x09, 0x82, 0x00, 0x07,
617 0xca, 0x00, 0x09, 0x00, 0x07, 0xb0, 0x4d, 0x00,628 0x96, 0xc0, 0xb0, 0x32, 0x00, 0x09, 0x00, 0x07,
618 0x09, 0xb0, 0x45, 0x00, 0x09, 0x00, 0x07, 0xb0,629 0xb0, 0xca, 0x00, 0x09, 0x00, 0x07, 0xb0, 0x4d,
619 0x42, 0x00, 0x09, 0xb0, 0xdc, 0x00, 0x09, 0x00,630 0x00, 0x09, 0xb0, 0x45, 0x00, 0x09, 0x00, 0x07,
620 0x07, 0xb1, 0x74, 0x00, 0x09, 0xb0, 0x22, 0x00,631 0xb0, 0x42, 0x00, 0x09, 0xb0, 0xdc, 0x00, 0x09,
632 0x00, 0x07, 0xb0, 0xd1, 0x01, 0x09, 0x83, 0x00,
633 0x07, 0xb0, 0x6b, 0x00, 0x09, 0xb0, 0x22, 0x00,
621 0x09, 0x91, 0x00, 0x09, 0xb0, 0x20, 0x00, 0x09,634 0x09, 0x91, 0x00, 0x09, 0xb0, 0x20, 0x00, 0x09,
622 0xb1, 0x74, 0x00, 0x09, 0xb0, 0xd1, 0x00, 0x07,635 0xb1, 0x74, 0x00, 0x09, 0xb0, 0xd1, 0x00, 0x07,
623 0x80, 0x01, 0x09, 0xb0, 0x20, 0x00, 0x09, 0xb8,636 0x80, 0x01, 0x09, 0xb0, 0x20, 0x00, 0x09, 0xb8,
624 0x45, 0x27, 0x04, 0x01, 0xb0, 0x0a, 0xc6, 0xb8,637 0x45, 0x27, 0x04, 0x01, 0xb0, 0x0a, 0xc6, 0xb4,
625 0x49, 0x36, 0x00, 0x01, 0xb8, 0x0c, 0x95, 0x01,638 0x88, 0x01, 0x06, 0xb8, 0x44, 0x7b, 0x00, 0x01,
626 0xd8, 0x02, 0x01, 0x82, 0x00, 0xe2, 0x04, 0xd8,639 0xb8, 0x0c, 0x95, 0x01, 0xd8, 0x02, 0x01, 0x82,
627 0x87, 0x07, 0xdc, 0x81, 0xc4, 0x01, 0xdc, 0x9d,640 0x00, 0xe2, 0x04, 0xd8, 0x87, 0x07, 0xdc, 0x81,
628 0xc3, 0xb0, 0x63, 0xc2, 0xb8, 0x05, 0x8a, 0xc6,641 0xc4, 0x01, 0xdc, 0x9d, 0xc3, 0xb0, 0x63, 0xc2,
629 0x80, 0xd0, 0x81, 0xc6, 0x80, 0xc1, 0x80, 0xc4,642 0xb8, 0x05, 0x8a, 0xc6, 0x80, 0xd0, 0x81, 0xc6,
630 0xb0, 0xd4, 0xc6, 0xb1, 0x84, 0xc3, 0xb5, 0xaf,643 0x80, 0xc1, 0x80, 0xc4, 0xb0, 0xd4, 0xc6, 0xb1,
631 0x06, 0xdc, 0xb0, 0x3c, 0xc5, 0x00, 0x07,644 0x84, 0xc3, 0xb5, 0xaf, 0x06, 0xdc, 0xb0, 0x3c,
645 0xc5, 0x00, 0x07,
632};646};
633 647
634static const uint8_t unicode_cc_index[78] = {648static const uint8_t unicode_cc_index[81] = {
635 0x4d, 0x03, 0x00, 0x97, 0x05, 0x20, 0xc6, 0x05,649 0x4d, 0x03, 0x00, 0x97, 0x05, 0x20, 0xc6, 0x05,
636 0x00, 0xe7, 0x06, 0x00, 0x45, 0x07, 0x00, 0xe2,650 0x00, 0xe7, 0x06, 0x00, 0x45, 0x07, 0x00, 0xe2,
637 0x08, 0x00, 0x53, 0x09, 0x00, 0xcd, 0x0b, 0x20,651 0x08, 0x00, 0x53, 0x09, 0x00, 0xcd, 0x0b, 0x20,
638 0x38, 0x0e, 0x00, 0x73, 0x0f, 0x20, 0x5d, 0x13,652 0x38, 0x0e, 0x00, 0x73, 0x0f, 0x20, 0x5d, 0x13,
639 0x20, 0x60, 0x1a, 0x20, 0xe6, 0x1b, 0x20, 0xfa,653 0x20, 0x60, 0x1a, 0x20, 0xaa, 0x1b, 0x00, 0xf4,
640 0x1c, 0x00, 0x00, 0x1e, 0x20, 0x80, 0x2d, 0x00,654 0x1c, 0x00, 0xfe, 0x1d, 0x20, 0x7f, 0x2d, 0x20,
641 0x06, 0xa8, 0x00, 0xbe, 0xaa, 0x00, 0x76, 0x03,655 0xf0, 0xa6, 0x00, 0xb2, 0xaa, 0x00, 0xfe, 0x01,
642 0x01, 0x4d, 0x0f, 0x01, 0xcb, 0x11, 0x21, 0x5e,656 0x01, 0xab, 0x0e, 0x01, 0x73, 0x11, 0x21, 0x70,
643 0x14, 0x01, 0x3b, 0x18, 0x21, 0xf0, 0x6a, 0x41,657 0x13, 0x01, 0xb8, 0x16, 0x01, 0x9a, 0x1a, 0x01,
644 0xaa, 0xd1, 0x01, 0x4b, 0xe9, 0x01,658 0x9f, 0xbc, 0x01, 0x22, 0xe0, 0x01, 0x4b, 0xe9,
659 0x01,
645};660};
646 661
647static const uint32_t unicode_decomp_table1[687] = {662static const uint32_t unicode_decomp_table1[690] = {
648 0x00280081, 0x002a0097, 0x002a8081, 0x002bc097,663 0x00280081, 0x002a0097, 0x002a8081, 0x002bc097,
649 0x002c8115, 0x002d0097, 0x002d4081, 0x002e0097,664 0x002c8115, 0x002d0097, 0x002d4081, 0x002e0097,
650 0x002e4115, 0x002f0199, 0x00302016, 0x00400842,665 0x002e4115, 0x002f0199, 0x00302016, 0x00400842,
@@ -771,55 +786,56 @@ static const uint32_t unicode_decomp_table1[687] = { · 120 unmodified lines
771 0x0cf54119, 0x0cf5c097, 0x0cf6009b, 0x0cf64099,786 0x0cf54119, 0x0cf5c097, 0x0cf6009b, 0x0cf64099,
772 0x0cf68217, 0x0cf78119, 0x0cf804a1, 0x0cfa4525,787 0x0cf68217, 0x0cf78119, 0x0cf804a1, 0x0cfa4525,
773 0x0cfcc525, 0x0cff4125, 0x0cffc099, 0x29a70103,788 0x0cfcc525, 0x0cff4125, 0x0cffc099, 0x29a70103,
774 0x29dc0081, 0x29fe0103, 0x2ad70203, 0x3e401482,789 0x29dc0081, 0x29fe0103, 0x2ad70203, 0x2ada4081,
775 0x3e4a7f82, 0x3e6a3f82, 0x3e8aa102, 0x3e9b0110,790 0x3e401482, 0x3e4a7f82, 0x3e6a3f82, 0x3e8aa102,
776 0x3e9c2f82, 0x3eb3c590, 0x3ec00197, 0x3ec0c119,791 0x3e9b0110, 0x3e9c2f82, 0x3eb3c590, 0x3ec00197,
777 0x3ec1413f, 0x3ec4c2af, 0x3ec74184, 0x3ec804ad,792 0x3ec0c119, 0x3ec1413f, 0x3ec4c2af, 0x3ec74184,
778 0x3eca4081, 0x3eca8304, 0x3ecc03a0, 0x3ece02a0,793 0x3ec804ad, 0x3eca4081, 0x3eca8304, 0x3ecc03a0,
779 0x3ecf8084, 0x3ed00120, 0x3ed0c120, 0x3ed184ae,794 0x3ece02a0, 0x3ecf8084, 0x3ed00120, 0x3ed0c120,
780 0x3ed3c085, 0x3ed4312d, 0x3ef4cbad, 0x3efa892f,795 0x3ed184ae, 0x3ed3c085, 0x3ed4312d, 0x3ef4cbad,
781 0x3eff022d, 0x3f002f2f, 0x3f1782a5, 0x3f18c0b1,796 0x3efa892f, 0x3eff022d, 0x3f002f2f, 0x3f1782a5,
782 0x3f1907af, 0x3f1cffaf, 0x3f3c81a5, 0x3f3d64af,797 0x3f18c0b1, 0x3f1907af, 0x3f1cffaf, 0x3f3c81a5,
783 0x3f542031, 0x3f649b31, 0x3f7c0131, 0x3f7c83b3,798 0x3f3d64af, 0x3f542031, 0x3f649b31, 0x3f7c0131,
784 0x3f7e40b1, 0x3f7e80bd, 0x3f7ec0bb, 0x3f7f00b3,799 0x3f7c83b3, 0x3f7e40b1, 0x3f7e80bd, 0x3f7ec0bb,
785 0x3f840503, 0x3f8c01ad, 0x3f8cc315, 0x3f8e462d,800 0x3f7f00b3, 0x3f840503, 0x3f8c01ad, 0x3f8cc315,
786 0x3f91cc03, 0x3f97c695, 0x3f9c01af, 0x3f9d0085,801 0x3f8e462d, 0x3f91cc03, 0x3f97c695, 0x3f9c01af,
787 0x3f9d852f, 0x3fa03aad, 0x3fbd442f, 0x3fc06f1f,802 0x3f9d0085, 0x3f9d852f, 0x3fa03aad, 0x3fbd442f,
788 0x3fd7c11f, 0x3fd85fad, 0x3fe80081, 0x3fe84f1f,803 0x3fc06f1f, 0x3fd7c11f, 0x3fd85fad, 0x3fe80081,
789 0x3ff0831f, 0x3ff2831f, 0x3ff4831f, 0x3ff6819f,804 0x3fe84f1f, 0x3ff0831f, 0x3ff2831f, 0x3ff4831f,
790 0x3ff80783, 0x44268192, 0x442ac092, 0x444b8112,805 0x3ff6819f, 0x3ff80783, 0x44268192, 0x442ac092,
791 0x44d2c112, 0x452ec212, 0x456e8112, 0x74578392,806 0x444b8112, 0x44d2c112, 0x452ec212, 0x456e8112,
792 0x746ec312, 0x75000d1f, 0x75068d1f, 0x750d0d1f,807 0x464e0092, 0x74578392, 0x746ec312, 0x75000d1f,
793 0x7513839f, 0x7515891f, 0x751a0d1f, 0x75208d1f,808 0x75068d1f, 0x750d0d1f, 0x7513839f, 0x7515891f,
794 0x75271015, 0x752f439f, 0x7531459f, 0x75340d1f,809 0x751a0d1f, 0x75208d1f, 0x75271015, 0x752f439f,
795 0x753a8d1f, 0x75410395, 0x7543441f, 0x7545839f,810 0x7531459f, 0x75340d1f, 0x753a8d1f, 0x75410395,
796 0x75478d1f, 0x754e0795, 0x7552839f, 0x75548d1f,811 0x7543441f, 0x7545839f, 0x75478d1f, 0x754e0795,
797 0x755b0d1f, 0x75618d1f, 0x75680d1f, 0x756e8d1f,812 0x7552839f, 0x75548d1f, 0x755b0d1f, 0x75618d1f,
798 0x75750d1f, 0x757b8d1f, 0x75820d1f, 0x75888d1f,813 0x75680d1f, 0x756e8d1f, 0x75750d1f, 0x757b8d1f,
799 0x758f0d1f, 0x75958d1f, 0x759c0d1f, 0x75a28d1f,814 0x75820d1f, 0x75888d1f, 0x758f0d1f, 0x75958d1f,
800 0x75a90103, 0x75aa089f, 0x75ae4081, 0x75ae839f,815 0x759c0d1f, 0x75a28d1f, 0x75a90103, 0x75aa089f,
801 0x75b04081, 0x75b08c9f, 0x75b6c081, 0x75b7032d,816 0x75ae4081, 0x75ae839f, 0x75b04081, 0x75b08c9f,
802 0x75b8889f, 0x75bcc081, 0x75bd039f, 0x75bec081,817 0x75b6c081, 0x75b7032d, 0x75b8889f, 0x75bcc081,
803 0x75bf0c9f, 0x75c54081, 0x75c5832d, 0x75c7089f,818 0x75bd039f, 0x75bec081, 0x75bf0c9f, 0x75c54081,
804 0x75cb4081, 0x75cb839f, 0x75cd4081, 0x75cd8c9f,819 0x75c5832d, 0x75c7089f, 0x75cb4081, 0x75cb839f,
805 0x75d3c081, 0x75d4032d, 0x75d5889f, 0x75d9c081,820 0x75cd4081, 0x75cd8c9f, 0x75d3c081, 0x75d4032d,
806 0x75da039f, 0x75dbc081, 0x75dc0c9f, 0x75e24081,821 0x75d5889f, 0x75d9c081, 0x75da039f, 0x75dbc081,
807 0x75e2832d, 0x75e4089f, 0x75e84081, 0x75e8839f,822 0x75dc0c9f, 0x75e24081, 0x75e2832d, 0x75e4089f,
808 0x75ea4081, 0x75ea8c9f, 0x75f0c081, 0x75f1042d,823 0x75e84081, 0x75e8839f, 0x75ea4081, 0x75ea8c9f,
809 0x75f3851f, 0x75f6051f, 0x75f8851f, 0x75fb051f,824 0x75f0c081, 0x75f1042d, 0x75f3851f, 0x75f6051f,
810 0x75fd851f, 0x7b80022d, 0x7b814dad, 0x7b884203,825 0x75f8851f, 0x75fb051f, 0x75fd851f, 0x7b80022d,
811 0x7b89c081, 0x7b8a452d, 0x7b8d0403, 0x7b908081,826 0x7b814dad, 0x7b884203, 0x7b89c081, 0x7b8a452d,
812 0x7b91dc03, 0x7ba0052d, 0x7ba2c8ad, 0x7ba84483,827 0x7b8d0403, 0x7b908081, 0x7b91dc03, 0x7ba0052d,
813 0x7baac8ad, 0x7c400097, 0x7c404521, 0x7c440d25,828 0x7ba2c8ad, 0x7ba84483, 0x7baac8ad, 0x7c400097,
814 0x7c4a8087, 0x7c4ac115, 0x7c4b4117, 0x7c4c0d1f,829 0x7c404521, 0x7c440d25, 0x7c4a8087, 0x7c4ac115,
815 0x7c528217, 0x7c538099, 0x7c53c097, 0x7c5a8197,830 0x7c4b4117, 0x7c4c0d1f, 0x7c528217, 0x7c538099,
816 0x7c640097, 0x7c80012f, 0x7c808081, 0x7c841603,831 0x7c53c097, 0x7c5a8197, 0x7c640097, 0x7c80012f,
817 0x7c9004c1, 0x7c940103, 0xbe0001ac, 0xbe00d110,832 0x7c808081, 0x7c841603, 0x7c9004c1, 0x7c940103,
818 0xbe0947ac, 0xbe0d3910, 0xbe29872c, 0xbe2d022c,833 0x7efc051f, 0xbe0001ac, 0xbe00d110, 0xbe0947ac,
819 0xbe2e3790, 0xbe49ff90, 0xbe69bc10,834 0xbe0d3910, 0xbe29872c, 0xbe2d022c, 0xbe2e3790,
835 0xbe49ff90, 0xbe69bc10,
820};836};
821 837
822static const uint16_t unicode_decomp_table2[687] = {838static const uint16_t unicode_decomp_table2[690] = {
823 0x0020, 0x0000, 0x0061, 0x0002, 0x0004, 0x0006, 0x03bc, 0x0008,839 0x0020, 0x0000, 0x0061, 0x0002, 0x0004, 0x0006, 0x03bc, 0x0008,
824 0x000a, 0x000c, 0x0015, 0x0095, 0x00a5, 0x00b9, 0x00c1, 0x00c3,840 0x000a, 0x000c, 0x0015, 0x0095, 0x00a5, 0x00b9, 0x00c1, 0x00c3,
825 0x00c7, 0x00cb, 0x00d1, 0x00d7, 0x00dd, 0x00e0, 0x00e6, 0x00f8,841 0x00c7, 0x00cb, 0x00d1, 0x00d7, 0x00dd, 0x00e0, 0x00e6, 0x00f8,
@@ -883,32 +899,33 @@ static const uint16_t unicode_decomp_table2[687] = { · 57 unmodified lines
883 0x10f4, 0x1100, 0x1105, 0x1111, 0x1141, 0x1149, 0x114d, 0x1153,899 0x10f4, 0x1100, 0x1105, 0x1111, 0x1141, 0x1149, 0x114d, 0x1153,
884 0x1157, 0x115a, 0x116e, 0x1171, 0x1175, 0x117b, 0x117d, 0x1181,900 0x1157, 0x115a, 0x116e, 0x1171, 0x1175, 0x117b, 0x117d, 0x1181,
885 0x1184, 0x118c, 0x1192, 0x1196, 0x119c, 0x11a2, 0x11a8, 0x11ab,901 0x1184, 0x118c, 0x1192, 0x1196, 0x119c, 0x11a2, 0x11a8, 0x11ab,
886 0xa76f, 0x11af, 0x11b3, 0x11bb, 0x120d, 0x130b, 0x1409, 0x148d,902 0xa76f, 0x11af, 0x11b3, 0x028d, 0x11bb, 0x120d, 0x130b, 0x1409,
887 0x1492, 0x1550, 0x1569, 0x156f, 0x1575, 0x157b, 0x1587, 0x1593,903 0x148d, 0x1492, 0x1550, 0x1569, 0x156f, 0x1575, 0x157b, 0x1587,
888 0x002b, 0x159e, 0x15b6, 0x15ba, 0x15be, 0x15c2, 0x15c6, 0x15ca,904 0x1593, 0x002b, 0x159e, 0x15b6, 0x15ba, 0x15be, 0x15c2, 0x15c6,
889 0x15de, 0x15e2, 0x1646, 0x165f, 0x1685, 0x168b, 0x1749, 0x174f,905 0x15ca, 0x15de, 0x15e2, 0x1646, 0x165f, 0x1685, 0x168b, 0x1749,
890 0x1754, 0x1774, 0x1874, 0x187a, 0x190e, 0x19d0, 0x1a74, 0x1a7c,906 0x174f, 0x1754, 0x1774, 0x1874, 0x187a, 0x190e, 0x19d0, 0x1a74,
891 0x1a9a, 0x1a9f, 0x1ab3, 0x1abd, 0x1ac3, 0x1ad7, 0x1adc, 0x1ae2,907 0x1a7c, 0x1a9a, 0x1a9f, 0x1ab3, 0x1abd, 0x1ac3, 0x1ad7, 0x1adc,
892 0x1af0, 0x1b20, 0x1b2d, 0x1b35, 0x1b39, 0x1b4f, 0x1bc6, 0x1bd8,908 0x1ae2, 0x1af0, 0x1b20, 0x1b2d, 0x1b35, 0x1b39, 0x1b4f, 0x1bc6,
893 0x1bda, 0x1bdc, 0x3164, 0x1c1d, 0x1c1f, 0x1c21, 0x1c23, 0x1c25,909 0x1bd8, 0x1bda, 0x1bdc, 0x3164, 0x1c1d, 0x1c1f, 0x1c21, 0x1c23,
894 0x1c27, 0x1c45, 0x1c53, 0x1c58, 0x1c61, 0x1c6a, 0x1c7c, 0x1c85,910 0x1c25, 0x1c27, 0x1c45, 0x1c53, 0x1c58, 0x1c61, 0x1c6a, 0x1c7c,
895 0x1ca5, 0x1cc0, 0x1cc2, 0x1cc4, 0x1cc6, 0x1cc8, 0x1cca, 0x1ccc,911 0x1c85, 0x1c8a, 0x1caa, 0x1cc5, 0x1cc7, 0x1cc9, 0x1ccb, 0x1ccd,
896 0x1cce, 0x1cee, 0x1cf0, 0x1cf2, 0x1cf4, 0x1cf6, 0x1cfd, 0x1cff,912 0x1ccf, 0x1cd1, 0x1cd3, 0x1cf3, 0x1cf5, 0x1cf7, 0x1cf9, 0x1cfb,
897 0x1d01, 0x1d03, 0x1d12, 0x1d14, 0x1d16, 0x1d18, 0x1d1a, 0x1d1c,913 0x1d02, 0x1d04, 0x1d06, 0x1d08, 0x1d17, 0x1d19, 0x1d1b, 0x1d1d,
898 0x1d1e, 0x1d20, 0x1d22, 0x1d24, 0x1d26, 0x1d28, 0x1d2a, 0x1d2c,914 0x1d1f, 0x1d21, 0x1d23, 0x1d25, 0x1d27, 0x1d29, 0x1d2b, 0x1d2d,
899 0x1d2e, 0x1d32, 0x03f4, 0x1d34, 0x2207, 0x1d36, 0x2202, 0x1d38,915 0x1d2f, 0x1d31, 0x1d33, 0x1d37, 0x03f4, 0x1d39, 0x2207, 0x1d3b,
900 0x1d40, 0x03f4, 0x1d42, 0x2207, 0x1d44, 0x2202, 0x1d46, 0x1d4e,916 0x2202, 0x1d3d, 0x1d45, 0x03f4, 0x1d47, 0x2207, 0x1d49, 0x2202,
901 0x03f4, 0x1d50, 0x2207, 0x1d52, 0x2202, 0x1d54, 0x1d5c, 0x03f4,917 0x1d4b, 0x1d53, 0x03f4, 0x1d55, 0x2207, 0x1d57, 0x2202, 0x1d59,
902 0x1d5e, 0x2207, 0x1d60, 0x2202, 0x1d62, 0x1d6a, 0x03f4, 0x1d6c,918 0x1d61, 0x03f4, 0x1d63, 0x2207, 0x1d65, 0x2202, 0x1d67, 0x1d6f,
903 0x2207, 0x1d6e, 0x2202, 0x1d70, 0x1d7a, 0x1d7c, 0x1d7e, 0x1d80,919 0x03f4, 0x1d71, 0x2207, 0x1d73, 0x2202, 0x1d75, 0x1d7f, 0x1d81,
904 0x1d82, 0x1d84, 0x1d8a, 0x1da7, 0x062d, 0x1daf, 0x1dbb, 0x062c,920 0x1d83, 0x1d85, 0x1d87, 0x1d89, 0x1d8f, 0x1dac, 0x062d, 0x1db4,
905 0x1dcb, 0x1e3b, 0x1e47, 0x1e5a, 0x1e6c, 0x1e7f, 0x1e81, 0x1e85,921 0x1dc0, 0x062c, 0x1dd0, 0x1e40, 0x1e4c, 0x1e5f, 0x1e71, 0x1e84,
906 0x1e8b, 0x1e91, 0x1e93, 0x1e97, 0x1e99, 0x1ea1, 0x1ea4, 0x1ea6,922 0x1e86, 0x1e8a, 0x1e90, 0x1e96, 0x1e98, 0x1e9c, 0x1e9e, 0x1ea6,
907 0x1eac, 0x1eae, 0x30b5, 0x1eb4, 0x1f0c, 0x1f22, 0x1f26, 0x1f2b,923 0x1ea9, 0x1eab, 0x1eb1, 0x1eb3, 0x30b5, 0x1eb9, 0x1f11, 0x1f27,
908 0x1f78, 0x1f89, 0x208a, 0x209a, 0x20a0, 0x219a, 0x22b8,924 0x1f2b, 0x1f2d, 0x1f32, 0x1f7f, 0x1f90, 0x2091, 0x20a1, 0x20a7,
925 0x21a1, 0x22bf,
909};926};
910 927
911static const uint8_t unicode_decomp_data[9158] = {928static const uint8_t unicode_decomp_data[9165] = {
912 0x20, 0x88, 0x20, 0x84, 0x32, 0x33, 0x20, 0x81,929 0x20, 0x88, 0x20, 0x84, 0x32, 0x33, 0x20, 0x81,
913 0x20, 0xa7, 0x31, 0x6f, 0x31, 0xd0, 0x34, 0x31,930 0x20, 0xa7, 0x31, 0x6f, 0x31, 0xd0, 0x34, 0x31,
914 0xd0, 0x32, 0x33, 0xd0, 0x34, 0x41, 0x80, 0x41,931 0xd0, 0x32, 0x33, 0xd0, 0x34, 0x41, 0x80, 0x41,
@@ -1821,242 +1838,243 @@ static const uint8_t unicode_decomp_data[9158] = { · 906 unmodified lines
1821 0x13, 0x55, 0xb9, 0x14, 0xba, 0x14, 0xb9, 0x14,1838 0x13, 0x55, 0xb9, 0x14, 0xba, 0x14, 0xb9, 0x14,
1822 0xb0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x14,1839 0xb0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x14,
1823 0xbd, 0x14, 0x55, 0x50, 0xb8, 0x15, 0xaf, 0x15,1840 0xbd, 0x14, 0x55, 0x50, 0xb8, 0x15, 0xaf, 0x15,
1824 0xb9, 0x15, 0xaf, 0x15, 0x55, 0x57, 0xd1, 0x65,1841 0xb9, 0x15, 0xaf, 0x15, 0x55, 0x35, 0x19, 0x30,
1825 0xd1, 0x58, 0xd1, 0x65, 0xd1, 0x5f, 0xd1, 0x6e,1842 0x19, 0x05, 0x57, 0xd1, 0x65, 0xd1, 0x58, 0xd1,
1826 0xd1, 0x5f, 0xd1, 0x6f, 0xd1, 0x5f, 0xd1, 0x70,1843 0x65, 0xd1, 0x5f, 0xd1, 0x6e, 0xd1, 0x5f, 0xd1,
1827 0xd1, 0x5f, 0xd1, 0x71, 0xd1, 0x5f, 0xd1, 0x72,1844 0x6f, 0xd1, 0x5f, 0xd1, 0x70, 0xd1, 0x5f, 0xd1,
1828 0xd1, 0x55, 0x55, 0x55, 0x05, 0xb9, 0xd1, 0x65,1845 0x71, 0xd1, 0x5f, 0xd1, 0x72, 0xd1, 0x55, 0x55,
1829 0xd1, 0xba, 0xd1, 0x65, 0xd1, 0xbb, 0xd1, 0x6e,1846 0x55, 0x05, 0xb9, 0xd1, 0x65, 0xd1, 0xba, 0xd1,
1830 0xd1, 0xbc, 0xd1, 0x6e, 0xd1, 0xbb, 0xd1, 0x6f,1847 0x65, 0xd1, 0xbb, 0xd1, 0x6e, 0xd1, 0xbc, 0xd1,
1831 0xd1, 0xbc, 0xd1, 0x6f, 0xd1, 0x55, 0x55, 0x55,1848 0x6e, 0xd1, 0xbb, 0xd1, 0x6f, 0xd1, 0xbc, 0xd1,
1832 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00,1849 0x6f, 0xd1, 0x55, 0x55, 0x55, 0x41, 0x00, 0x61,
1833 0x69, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00,1850 0x00, 0x41, 0x00, 0x61, 0x00, 0x69, 0x00, 0x41,
1834 0x43, 0x44, 0x00, 0x00, 0x47, 0x00, 0x00, 0x4a,1851 0x00, 0x61, 0x00, 0x41, 0x00, 0x43, 0x44, 0x00,
1835 0x4b, 0x00, 0x00, 0x4e, 0x4f, 0x50, 0x51, 0x00,1852 0x00, 0x47, 0x00, 0x00, 0x4a, 0x4b, 0x00, 0x00,
1836 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,1853 0x4e, 0x4f, 0x50, 0x51, 0x00, 0x53, 0x54, 0x55,
1837 0x61, 0x62, 0x63, 0x64, 0x00, 0x66, 0x68, 0x00,1854 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63,
1838 0x70, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x42,1855 0x64, 0x00, 0x66, 0x68, 0x00, 0x70, 0x00, 0x41,
1839 0x00, 0x44, 0x45, 0x46, 0x47, 0x4a, 0x00, 0x53,
1840 0x00, 0x61, 0x00, 0x41, 0x42, 0x00, 0x44, 0x45,1856 0x00, 0x61, 0x00, 0x41, 0x42, 0x00, 0x44, 0x45,
1841 0x46, 0x47, 0x00, 0x49, 0x4a, 0x4b, 0x4c, 0x4d,1857 0x46, 0x47, 0x4a, 0x00, 0x53, 0x00, 0x61, 0x00,
1842 0x00, 0x4f, 0x53, 0x00, 0x61, 0x00, 0x41, 0x00,1858 0x41, 0x42, 0x00, 0x44, 0x45, 0x46, 0x47, 0x00,
1843 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00,1859 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x00, 0x4f, 0x53,
1844 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00,1860 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41,
1845 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x31, 0x01,1861 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41,
1846 0x37, 0x02, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03,1862 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41,
1847 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05,1863 0x00, 0x61, 0x00, 0x31, 0x01, 0x37, 0x02, 0x91,
1848 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03,1864 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24,
1849 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03,1865 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3,
1850 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00,1866 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f,
1851 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03,1867 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1,
1852 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04,1868 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20,
1853 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03,1869 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1,
1854 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05,1870 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91,
1855 0x0b, 0x0c, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,1871 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24,
1856 0x30, 0x00, 0x30, 0x00, 0x27, 0x06, 0x00, 0x01,1872 0x00, 0x1f, 0x04, 0x20, 0x05, 0x0b, 0x0c, 0x30,
1857 0x05, 0x08, 0x2a, 0x06, 0x1e, 0x08, 0x03, 0x0d,1873 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30,
1858 0x20, 0x19, 0x1a, 0x1b, 0x1c, 0x09, 0x0f, 0x17,1874 0x00, 0x27, 0x06, 0x00, 0x01, 0x05, 0x08, 0x2a,
1859 0x0b, 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04, 0x06,1875 0x06, 0x1e, 0x08, 0x03, 0x0d, 0x20, 0x19, 0x1a,
1860 0x0c, 0x0e, 0x10, 0x44, 0x90, 0x77, 0x45, 0x28,1876 0x1b, 0x1c, 0x09, 0x0f, 0x17, 0x0b, 0x18, 0x07,
1861 0x06, 0x2c, 0x06, 0x00, 0x00, 0x47, 0x06, 0x33,1877 0x0a, 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10,
1862 0x06, 0x17, 0x10, 0x11, 0x12, 0x13, 0x00, 0x06,1878 0x44, 0x90, 0x77, 0x45, 0x28, 0x06, 0x2c, 0x06,
1863 0x0e, 0x02, 0x0f, 0x34, 0x06, 0x2a, 0x06, 0x2b,1879 0x00, 0x00, 0x47, 0x06, 0x33, 0x06, 0x17, 0x10,
1864 0x06, 0x2e, 0x06, 0x00, 0x00, 0x36, 0x06, 0x00,1880 0x11, 0x12, 0x13, 0x00, 0x06, 0x0e, 0x02, 0x0f,
1865 0x00, 0x3a, 0x06, 0x2d, 0x06, 0x00, 0x00, 0x4a,1881 0x34, 0x06, 0x2a, 0x06, 0x2b, 0x06, 0x2e, 0x06,
1866 0x06, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x46,1882 0x00, 0x00, 0x36, 0x06, 0x00, 0x00, 0x3a, 0x06,
1867 0x06, 0x33, 0x06, 0x39, 0x06, 0x00, 0x00, 0x35,1883 0x2d, 0x06, 0x00, 0x00, 0x4a, 0x06, 0x00, 0x00,
1868 0x06, 0x42, 0x06, 0x00, 0x00, 0x34, 0x06, 0x00,1884 0x44, 0x06, 0x00, 0x00, 0x46, 0x06, 0x33, 0x06,
1869 0x00, 0x00, 0x00, 0x2e, 0x06, 0x00, 0x00, 0x36,1885 0x39, 0x06, 0x00, 0x00, 0x35, 0x06, 0x42, 0x06,
1870 0x06, 0x00, 0x00, 0x3a, 0x06, 0x00, 0x00, 0xba,1886 0x00, 0x00, 0x34, 0x06, 0x00, 0x00, 0x00, 0x00,
1871 0x06, 0x00, 0x00, 0x6f, 0x06, 0x00, 0x00, 0x28,1887 0x2e, 0x06, 0x00, 0x00, 0x36, 0x06, 0x00, 0x00,
1872 0x06, 0x2c, 0x06, 0x00, 0x00, 0x47, 0x06, 0x00,1888 0x3a, 0x06, 0x00, 0x00, 0xba, 0x06, 0x00, 0x00,
1873 0x00, 0x00, 0x00, 0x2d, 0x06, 0x37, 0x06, 0x4a,1889 0x6f, 0x06, 0x00, 0x00, 0x28, 0x06, 0x2c, 0x06,
1874 0x06, 0x43, 0x06, 0x00, 0x00, 0x45, 0x06, 0x46,1890 0x00, 0x00, 0x47, 0x06, 0x00, 0x00, 0x00, 0x00,
1875 0x06, 0x33, 0x06, 0x39, 0x06, 0x41, 0x06, 0x35,1891 0x2d, 0x06, 0x37, 0x06, 0x4a, 0x06, 0x43, 0x06,
1876 0x06, 0x42, 0x06, 0x00, 0x00, 0x34, 0x06, 0x2a,1892 0x00, 0x00, 0x45, 0x06, 0x46, 0x06, 0x33, 0x06,
1877 0x06, 0x2b, 0x06, 0x2e, 0x06, 0x00, 0x00, 0x36,1893 0x39, 0x06, 0x41, 0x06, 0x35, 0x06, 0x42, 0x06,
1878 0x06, 0x38, 0x06, 0x3a, 0x06, 0x6e, 0x06, 0x00,1894 0x00, 0x00, 0x34, 0x06, 0x2a, 0x06, 0x2b, 0x06,
1879 0x00, 0xa1, 0x06, 0x27, 0x06, 0x00, 0x01, 0x05,1895 0x2e, 0x06, 0x00, 0x00, 0x36, 0x06, 0x38, 0x06,
1880 0x08, 0x20, 0x21, 0x0b, 0x06, 0x10, 0x23, 0x2a,1896 0x3a, 0x06, 0x6e, 0x06, 0x00, 0x00, 0xa1, 0x06,
1881 0x06, 0x1a, 0x1b, 0x1c, 0x09, 0x0f, 0x17, 0x0b,1897 0x27, 0x06, 0x00, 0x01, 0x05, 0x08, 0x20, 0x21,
1882 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04, 0x06, 0x0c,1898 0x0b, 0x06, 0x10, 0x23, 0x2a, 0x06, 0x1a, 0x1b,
1883 0x0e, 0x10, 0x28, 0x06, 0x2c, 0x06, 0x2f, 0x06,
1884 0x00, 0x00, 0x48, 0x06, 0x32, 0x06, 0x2d, 0x06,
1885 0x37, 0x06, 0x4a, 0x06, 0x2a, 0x06, 0x1a, 0x1b,
1886 0x1c, 0x09, 0x0f, 0x17, 0x0b, 0x18, 0x07, 0x0a,1899 0x1c, 0x09, 0x0f, 0x17, 0x0b, 0x18, 0x07, 0x0a,
1887 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10, 0x30,1900 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10, 0x28,
1888 0x2e, 0x30, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x41,1901 0x06, 0x2c, 0x06, 0x2f, 0x06, 0x00, 0x00, 0x48,
1889 0x00, 0x29, 0x00, 0x14, 0x30, 0x53, 0x00, 0x15,1902 0x06, 0x32, 0x06, 0x2d, 0x06, 0x37, 0x06, 0x4a,
1890 0x30, 0x43, 0x52, 0x43, 0x44, 0x57, 0x5a, 0x41,1903 0x06, 0x2a, 0x06, 0x1a, 0x1b, 0x1c, 0x09, 0x0f,
1891 0x00, 0x48, 0x56, 0x4d, 0x56, 0x53, 0x44, 0x53,1904 0x17, 0x0b, 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04,
1892 0x53, 0x50, 0x50, 0x56, 0x57, 0x43, 0x4d, 0x43,1905 0x06, 0x0c, 0x0e, 0x10, 0x30, 0x2e, 0x30, 0x00,
1893 0x4d, 0x44, 0x4d, 0x52, 0x44, 0x4a, 0x4b, 0x30,1906 0x2c, 0x00, 0x28, 0x00, 0x41, 0x00, 0x29, 0x00,
1894 0x30, 0x00, 0x68, 0x68, 0x4b, 0x62, 0x57, 0x5b,1907 0x14, 0x30, 0x53, 0x00, 0x15, 0x30, 0x43, 0x52,
1895 0xcc, 0x53, 0xc7, 0x30, 0x8c, 0x4e, 0x1a, 0x59,1908 0x43, 0x44, 0x57, 0x5a, 0x41, 0x00, 0x48, 0x56,
1896 0xe3, 0x89, 0x29, 0x59, 0xa4, 0x4e, 0x20, 0x66,1909 0x4d, 0x56, 0x53, 0x44, 0x53, 0x53, 0x50, 0x50,
1897 0x21, 0x71, 0x99, 0x65, 0x4d, 0x52, 0x8c, 0x5f,1910 0x56, 0x57, 0x43, 0x4d, 0x43, 0x4d, 0x44, 0x4d,
1898 0x8d, 0x51, 0xb0, 0x65, 0x1d, 0x52, 0x42, 0x7d,1911 0x52, 0x44, 0x4a, 0x4b, 0x30, 0x30, 0x00, 0x68,
1899 0x1f, 0x75, 0xa9, 0x8c, 0xf0, 0x58, 0x39, 0x54,1912 0x68, 0x4b, 0x62, 0x57, 0x5b, 0xcc, 0x53, 0xc7,
1900 0x14, 0x6f, 0x95, 0x62, 0x55, 0x63, 0x00, 0x4e,1913 0x30, 0x8c, 0x4e, 0x1a, 0x59, 0xe3, 0x89, 0x29,
1901 0x09, 0x4e, 0x4a, 0x90, 0xe6, 0x5d, 0x2d, 0x4e,1914 0x59, 0xa4, 0x4e, 0x20, 0x66, 0x21, 0x71, 0x99,
1902 0xf3, 0x53, 0x07, 0x63, 0x70, 0x8d, 0x53, 0x62,1915 0x65, 0x4d, 0x52, 0x8c, 0x5f, 0x8d, 0x51, 0xb0,
1903 0x81, 0x79, 0x7a, 0x7a, 0x08, 0x54, 0x80, 0x6e,1916 0x65, 0x1d, 0x52, 0x42, 0x7d, 0x1f, 0x75, 0xa9,
1904 0x09, 0x67, 0x08, 0x67, 0x33, 0x75, 0x72, 0x52,1917 0x8c, 0xf0, 0x58, 0x39, 0x54, 0x14, 0x6f, 0x95,
1905 0xb6, 0x55, 0x4d, 0x91, 0x14, 0x30, 0x15, 0x30,1918 0x62, 0x55, 0x63, 0x00, 0x4e, 0x09, 0x4e, 0x4a,
1906 0x2c, 0x67, 0x09, 0x4e, 0x8c, 0x4e, 0x89, 0x5b,1919 0x90, 0xe6, 0x5d, 0x2d, 0x4e, 0xf3, 0x53, 0x07,
1907 0xb9, 0x70, 0x53, 0x62, 0xd7, 0x76, 0xdd, 0x52,1920 0x63, 0x70, 0x8d, 0x53, 0x62, 0x81, 0x79, 0x7a,
1908 0x57, 0x65, 0x97, 0x5f, 0xef, 0x53, 0x38, 0x4e,1921 0x7a, 0x08, 0x54, 0x80, 0x6e, 0x09, 0x67, 0x08,
1909 0x05, 0x00, 0x09, 0x22, 0x01, 0x60, 0x4f, 0xae,1922 0x67, 0x33, 0x75, 0x72, 0x52, 0xb6, 0x55, 0x4d,
1910 0x4f, 0xbb, 0x4f, 0x02, 0x50, 0x7a, 0x50, 0x99,1923 0x91, 0x14, 0x30, 0x15, 0x30, 0x2c, 0x67, 0x09,
1911 0x50, 0xe7, 0x50, 0xcf, 0x50, 0x9e, 0x34, 0x3a,1924 0x4e, 0x8c, 0x4e, 0x89, 0x5b, 0xb9, 0x70, 0x53,
1912 0x06, 0x4d, 0x51, 0x54, 0x51, 0x64, 0x51, 0x77,1925 0x62, 0xd7, 0x76, 0xdd, 0x52, 0x57, 0x65, 0x97,
1913 0x51, 0x1c, 0x05, 0xb9, 0x34, 0x67, 0x51, 0x8d,1926 0x5f, 0xef, 0x53, 0x30, 0x00, 0x38, 0x4e, 0x05,
1914 0x51, 0x4b, 0x05, 0x97, 0x51, 0xa4, 0x51, 0xcc,1927 0x00, 0x09, 0x22, 0x01, 0x60, 0x4f, 0xae, 0x4f,
1915 0x4e, 0xac, 0x51, 0xb5, 0x51, 0xdf, 0x91, 0xf5,1928 0xbb, 0x4f, 0x02, 0x50, 0x7a, 0x50, 0x99, 0x50,
1916 0x51, 0x03, 0x52, 0xdf, 0x34, 0x3b, 0x52, 0x46,1929 0xe7, 0x50, 0xcf, 0x50, 0x9e, 0x34, 0x3a, 0x06,
1917 0x52, 0x72, 0x52, 0x77, 0x52, 0x15, 0x35, 0x02,1930 0x4d, 0x51, 0x54, 0x51, 0x64, 0x51, 0x77, 0x51,
1918 0x00, 0x20, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00,1931 0x1c, 0x05, 0xb9, 0x34, 0x67, 0x51, 0x8d, 0x51,
1919 0xc7, 0x52, 0x00, 0x02, 0x1d, 0x33, 0x3e, 0x3f,1932 0x4b, 0x05, 0x97, 0x51, 0xa4, 0x51, 0xcc, 0x4e,
1920 0x50, 0x82, 0x8a, 0x93, 0xac, 0xb6, 0xb8, 0xb8,1933 0xac, 0x51, 0xb5, 0x51, 0xdf, 0x91, 0xf5, 0x51,
1921 0xb8, 0x2c, 0x0a, 0x70, 0x70, 0xca, 0x53, 0xdf,1934 0x03, 0x52, 0xdf, 0x34, 0x3b, 0x52, 0x46, 0x52,
1922 0x53, 0x63, 0x0b, 0xeb, 0x53, 0xf1, 0x53, 0x06,1935 0x72, 0x52, 0x77, 0x52, 0x15, 0x35, 0x02, 0x00,
1923 0x54, 0x9e, 0x54, 0x38, 0x54, 0x48, 0x54, 0x68,1936 0x20, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00, 0xc7,
1924 0x54, 0xa2, 0x54, 0xf6, 0x54, 0x10, 0x55, 0x53,1937 0x52, 0x00, 0x02, 0x1d, 0x33, 0x3e, 0x3f, 0x50,
1925 0x55, 0x63, 0x55, 0x84, 0x55, 0x84, 0x55, 0x99,1938 0x82, 0x8a, 0x93, 0xac, 0xb6, 0xb8, 0xb8, 0xb8,
1926 0x55, 0xab, 0x55, 0xb3, 0x55, 0xc2, 0x55, 0x16,1939 0x2c, 0x0a, 0x70, 0x70, 0xca, 0x53, 0xdf, 0x53,
1927 0x57, 0x06, 0x56, 0x17, 0x57, 0x51, 0x56, 0x74,1940 0x63, 0x0b, 0xeb, 0x53, 0xf1, 0x53, 0x06, 0x54,
1928 0x56, 0x07, 0x52, 0xee, 0x58, 0xce, 0x57, 0xf4,1941 0x9e, 0x54, 0x38, 0x54, 0x48, 0x54, 0x68, 0x54,
1929 0x57, 0x0d, 0x58, 0x8b, 0x57, 0x32, 0x58, 0x31,1942 0xa2, 0x54, 0xf6, 0x54, 0x10, 0x55, 0x53, 0x55,
1930 0x58, 0xac, 0x58, 0xe4, 0x14, 0xf2, 0x58, 0xf7,1943 0x63, 0x55, 0x84, 0x55, 0x84, 0x55, 0x99, 0x55,
1931 0x58, 0x06, 0x59, 0x1a, 0x59, 0x22, 0x59, 0x62,1944 0xab, 0x55, 0xb3, 0x55, 0xc2, 0x55, 0x16, 0x57,
1932 0x59, 0xa8, 0x16, 0xea, 0x16, 0xec, 0x59, 0x1b,1945 0x06, 0x56, 0x17, 0x57, 0x51, 0x56, 0x74, 0x56,
1933 0x5a, 0x27, 0x5a, 0xd8, 0x59, 0x66, 0x5a, 0xee,1946 0x07, 0x52, 0xee, 0x58, 0xce, 0x57, 0xf4, 0x57,
1934 0x36, 0xfc, 0x36, 0x08, 0x5b, 0x3e, 0x5b, 0x3e,1947 0x0d, 0x58, 0x8b, 0x57, 0x32, 0x58, 0x31, 0x58,
1935 0x5b, 0xc8, 0x19, 0xc3, 0x5b, 0xd8, 0x5b, 0xe7,1948 0xac, 0x58, 0xe4, 0x14, 0xf2, 0x58, 0xf7, 0x58,
1936 0x5b, 0xf3, 0x5b, 0x18, 0x1b, 0xff, 0x5b, 0x06,1949 0x06, 0x59, 0x1a, 0x59, 0x22, 0x59, 0x62, 0x59,
1937 0x5c, 0x53, 0x5f, 0x22, 0x5c, 0x81, 0x37, 0x60,1950 0xa8, 0x16, 0xea, 0x16, 0xec, 0x59, 0x1b, 0x5a,
1938 0x5c, 0x6e, 0x5c, 0xc0, 0x5c, 0x8d, 0x5c, 0xe4,1951 0x27, 0x5a, 0xd8, 0x59, 0x66, 0x5a, 0xee, 0x36,
1939 0x1d, 0x43, 0x5d, 0xe6, 0x1d, 0x6e, 0x5d, 0x6b,1952 0xfc, 0x36, 0x08, 0x5b, 0x3e, 0x5b, 0x3e, 0x5b,
1940 0x5d, 0x7c, 0x5d, 0xe1, 0x5d, 0xe2, 0x5d, 0x2f,1953 0xc8, 0x19, 0xc3, 0x5b, 0xd8, 0x5b, 0xe7, 0x5b,
1941 0x38, 0xfd, 0x5d, 0x28, 0x5e, 0x3d, 0x5e, 0x69,1954 0xf3, 0x5b, 0x18, 0x1b, 0xff, 0x5b, 0x06, 0x5c,
1942 0x5e, 0x62, 0x38, 0x83, 0x21, 0x7c, 0x38, 0xb0,1955 0x53, 0x5f, 0x22, 0x5c, 0x81, 0x37, 0x60, 0x5c,
1943 0x5e, 0xb3, 0x5e, 0xb6, 0x5e, 0xca, 0x5e, 0x92,1956 0x6e, 0x5c, 0xc0, 0x5c, 0x8d, 0x5c, 0xe4, 0x1d,
1944 0xa3, 0xfe, 0x5e, 0x31, 0x23, 0x31, 0x23, 0x01,1957 0x43, 0x5d, 0xe6, 0x1d, 0x6e, 0x5d, 0x6b, 0x5d,
1945 0x82, 0x22, 0x5f, 0x22, 0x5f, 0xc7, 0x38, 0xb8,1958 0x7c, 0x5d, 0xe1, 0x5d, 0xe2, 0x5d, 0x2f, 0x38,
1946 0x32, 0xda, 0x61, 0x62, 0x5f, 0x6b, 0x5f, 0xe3,1959 0xfd, 0x5d, 0x28, 0x5e, 0x3d, 0x5e, 0x69, 0x5e,
1947 0x38, 0x9a, 0x5f, 0xcd, 0x5f, 0xd7, 0x5f, 0xf9,1960 0x62, 0x38, 0x83, 0x21, 0x7c, 0x38, 0xb0, 0x5e,
1948 0x5f, 0x81, 0x60, 0x3a, 0x39, 0x1c, 0x39, 0x94,1961 0xb3, 0x5e, 0xb6, 0x5e, 0xca, 0x5e, 0x92, 0xa3,
1949 0x60, 0xd4, 0x26, 0xc7, 0x60, 0x02, 0x02, 0x00,1962 0xfe, 0x5e, 0x31, 0x23, 0x31, 0x23, 0x01, 0x82,
1950 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,1963 0x22, 0x5f, 0x22, 0x5f, 0xc7, 0x38, 0xb8, 0x32,
1951 0x0a, 0x00, 0x00, 0x02, 0x08, 0x00, 0x80, 0x08,1964 0xda, 0x61, 0x62, 0x5f, 0x6b, 0x5f, 0xe3, 0x38,
1952 0x00, 0x00, 0x08, 0x80, 0x28, 0x80, 0x02, 0x00,1965 0x9a, 0x5f, 0xcd, 0x5f, 0xd7, 0x5f, 0xf9, 0x5f,
1953 0x00, 0x02, 0x48, 0x61, 0x00, 0x04, 0x06, 0x04,1966 0x81, 0x60, 0x3a, 0x39, 0x1c, 0x39, 0x94, 0x60,
1954 0x32, 0x46, 0x6a, 0x5c, 0x67, 0x96, 0xaa, 0xae,1967 0xd4, 0x26, 0xc7, 0x60, 0x02, 0x02, 0x00, 0x00,
1955 0xc8, 0xd3, 0x5d, 0x62, 0x00, 0x54, 0x77, 0xf3,1968 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a,
1956 0x0c, 0x2b, 0x3d, 0x63, 0xfc, 0x62, 0x68, 0x63,1969 0x00, 0x00, 0x02, 0x08, 0x00, 0x80, 0x08, 0x00,
1957 0x83, 0x63, 0xe4, 0x63, 0xf1, 0x2b, 0x22, 0x64,1970 0x00, 0x08, 0x80, 0x28, 0x80, 0x02, 0x00, 0x00,
1958 0xc5, 0x63, 0xa9, 0x63, 0x2e, 0x3a, 0x69, 0x64,1971 0x02, 0x48, 0x61, 0x00, 0x04, 0x06, 0x04, 0x32,
1959 0x7e, 0x64, 0x9d, 0x64, 0x77, 0x64, 0x6c, 0x3a,1972 0x46, 0x6a, 0x5c, 0x67, 0x96, 0xaa, 0xae, 0xc8,
1960 0x4f, 0x65, 0x6c, 0x65, 0x0a, 0x30, 0xe3, 0x65,1973 0xd3, 0x5d, 0x62, 0x00, 0x54, 0x77, 0xf3, 0x0c,
1961 0xf8, 0x66, 0x49, 0x66, 0x19, 0x3b, 0x91, 0x66,1974 0x2b, 0x3d, 0x63, 0xfc, 0x62, 0x68, 0x63, 0x83,
1962 0x08, 0x3b, 0xe4, 0x3a, 0x92, 0x51, 0x95, 0x51,1975 0x63, 0xe4, 0x63, 0xf1, 0x2b, 0x22, 0x64, 0xc5,
1963 0x00, 0x67, 0x9c, 0x66, 0xad, 0x80, 0xd9, 0x43,1976 0x63, 0xa9, 0x63, 0x2e, 0x3a, 0x69, 0x64, 0x7e,
1964 0x17, 0x67, 0x1b, 0x67, 0x21, 0x67, 0x5e, 0x67,1977 0x64, 0x9d, 0x64, 0x77, 0x64, 0x6c, 0x3a, 0x4f,
1965 0x53, 0x67, 0xc3, 0x33, 0x49, 0x3b, 0xfa, 0x67,1978 0x65, 0x6c, 0x65, 0x0a, 0x30, 0xe3, 0x65, 0xf8,
1966 0x85, 0x67, 0x52, 0x68, 0x85, 0x68, 0x6d, 0x34,1979 0x66, 0x49, 0x66, 0x19, 0x3b, 0x91, 0x66, 0x08,
1967 0x8e, 0x68, 0x1f, 0x68, 0x14, 0x69, 0x9d, 0x3b,1980 0x3b, 0xe4, 0x3a, 0x92, 0x51, 0x95, 0x51, 0x00,
1968 0x42, 0x69, 0xa3, 0x69, 0xea, 0x69, 0xa8, 0x6a,1981 0x67, 0x9c, 0x66, 0xad, 0x80, 0xd9, 0x43, 0x17,
1969 0xa3, 0x36, 0xdb, 0x6a, 0x18, 0x3c, 0x21, 0x6b,1982 0x67, 0x1b, 0x67, 0x21, 0x67, 0x5e, 0x67, 0x53,
1970 0xa7, 0x38, 0x54, 0x6b, 0x4e, 0x3c, 0x72, 0x6b,1983 0x67, 0xc3, 0x33, 0x49, 0x3b, 0xfa, 0x67, 0x85,
1971 0x9f, 0x6b, 0xba, 0x6b, 0xbb, 0x6b, 0x8d, 0x3a,1984 0x67, 0x52, 0x68, 0x85, 0x68, 0x6d, 0x34, 0x8e,
1972 0x0b, 0x1d, 0xfa, 0x3a, 0x4e, 0x6c, 0xbc, 0x3c,1985 0x68, 0x1f, 0x68, 0x14, 0x69, 0x9d, 0x3b, 0x42,
1973 0xbf, 0x6c, 0xcd, 0x6c, 0x67, 0x6c, 0x16, 0x6d,1986 0x69, 0xa3, 0x69, 0xea, 0x69, 0xa8, 0x6a, 0xa3,
1974 0x3e, 0x6d, 0x77, 0x6d, 0x41, 0x6d, 0x69, 0x6d,1987 0x36, 0xdb, 0x6a, 0x18, 0x3c, 0x21, 0x6b, 0xa7,
1975 0x78, 0x6d, 0x85, 0x6d, 0x1e, 0x3d, 0x34, 0x6d,1988 0x38, 0x54, 0x6b, 0x4e, 0x3c, 0x72, 0x6b, 0x9f,
1976 0x2f, 0x6e, 0x6e, 0x6e, 0x33, 0x3d, 0xcb, 0x6e,1989 0x6b, 0xba, 0x6b, 0xbb, 0x6b, 0x8d, 0x3a, 0x0b,
1977 0xc7, 0x6e, 0xd1, 0x3e, 0xf9, 0x6d, 0x6e, 0x6f,1990 0x1d, 0xfa, 0x3a, 0x4e, 0x6c, 0xbc, 0x3c, 0xbf,
1978 0x5e, 0x3f, 0x8e, 0x3f, 0xc6, 0x6f, 0x39, 0x70,1991 0x6c, 0xcd, 0x6c, 0x67, 0x6c, 0x16, 0x6d, 0x3e,
1979 0x1e, 0x70, 0x1b, 0x70, 0x96, 0x3d, 0x4a, 0x70,1992 0x6d, 0x77, 0x6d, 0x41, 0x6d, 0x69, 0x6d, 0x78,
1980 0x7d, 0x70, 0x77, 0x70, 0xad, 0x70, 0x25, 0x05,1993 0x6d, 0x85, 0x6d, 0x1e, 0x3d, 0x34, 0x6d, 0x2f,
1981 0x45, 0x71, 0x63, 0x42, 0x9c, 0x71, 0xab, 0x43,1994 0x6e, 0x6e, 0x6e, 0x33, 0x3d, 0xcb, 0x6e, 0xc7,
1982 0x28, 0x72, 0x35, 0x72, 0x50, 0x72, 0x08, 0x46,1995 0x6e, 0xd1, 0x3e, 0xf9, 0x6d, 0x6e, 0x6f, 0x5e,
1983 0x80, 0x72, 0x95, 0x72, 0x35, 0x47, 0x02, 0x20,1996 0x3f, 0x8e, 0x3f, 0xc6, 0x6f, 0x39, 0x70, 0x1e,
1984 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08,1997 0x70, 0x1b, 0x70, 0x96, 0x3d, 0x4a, 0x70, 0x7d,
1985 0x80, 0x00, 0x00, 0x02, 0x02, 0x80, 0x8a, 0x00,1998 0x70, 0x77, 0x70, 0xad, 0x70, 0x25, 0x05, 0x45,
1986 0x00, 0x20, 0x00, 0x08, 0x0a, 0x00, 0x80, 0x88,1999 0x71, 0x63, 0x42, 0x9c, 0x71, 0xab, 0x43, 0x28,
1987 0x80, 0x20, 0x14, 0x48, 0x7a, 0x73, 0x8b, 0x73,2000 0x72, 0x35, 0x72, 0x50, 0x72, 0x08, 0x46, 0x80,
1988 0xac, 0x3e, 0xa5, 0x73, 0xb8, 0x3e, 0xb8, 0x3e,2001 0x72, 0x95, 0x72, 0x35, 0x47, 0x02, 0x20, 0x00,
1989 0x47, 0x74, 0x5c, 0x74, 0x71, 0x74, 0x85, 0x74,2002 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80,
1990 0xca, 0x74, 0x1b, 0x3f, 0x24, 0x75, 0x36, 0x4c,2003 0x00, 0x00, 0x02, 0x02, 0x80, 0x8a, 0x00, 0x00,
1991 0x3e, 0x75, 0x92, 0x4c, 0x70, 0x75, 0x9f, 0x21,2004 0x20, 0x00, 0x08, 0x0a, 0x00, 0x80, 0x88, 0x80,
1992 0x10, 0x76, 0xa1, 0x4f, 0xb8, 0x4f, 0x44, 0x50,2005 0x20, 0x14, 0x48, 0x7a, 0x73, 0x8b, 0x73, 0xac,
1993 0xfc, 0x3f, 0x08, 0x40, 0xf4, 0x76, 0xf3, 0x50,2006 0x3e, 0xa5, 0x73, 0xb8, 0x3e, 0xb8, 0x3e, 0x47,
1994 0xf2, 0x50, 0x19, 0x51, 0x33, 0x51, 0x1e, 0x77,2007 0x74, 0x5c, 0x74, 0x71, 0x74, 0x85, 0x74, 0xca,
1995 0x1f, 0x77, 0x1f, 0x77, 0x4a, 0x77, 0x39, 0x40,2008 0x74, 0x1b, 0x3f, 0x24, 0x75, 0x36, 0x4c, 0x3e,
1996 0x8b, 0x77, 0x46, 0x40, 0x96, 0x40, 0x1d, 0x54,2009 0x75, 0x92, 0x4c, 0x70, 0x75, 0x9f, 0x21, 0x10,
1997 0x4e, 0x78, 0x8c, 0x78, 0xcc, 0x78, 0xe3, 0x40,2010 0x76, 0xa1, 0x4f, 0xb8, 0x4f, 0x44, 0x50, 0xfc,
1998 0x26, 0x56, 0x56, 0x79, 0x9a, 0x56, 0xc5, 0x56,2011 0x3f, 0x08, 0x40, 0xf4, 0x76, 0xf3, 0x50, 0xf2,
1999 0x8f, 0x79, 0xeb, 0x79, 0x2f, 0x41, 0x40, 0x7a,2012 0x50, 0x19, 0x51, 0x33, 0x51, 0x1e, 0x77, 0x1f,
2000 0x4a, 0x7a, 0x4f, 0x7a, 0x7c, 0x59, 0xa7, 0x5a,2013 0x77, 0x1f, 0x77, 0x4a, 0x77, 0x39, 0x40, 0x8b,
2001 0xa7, 0x5a, 0xee, 0x7a, 0x02, 0x42, 0xab, 0x5b,2014 0x77, 0x46, 0x40, 0x96, 0x40, 0x1d, 0x54, 0x4e,
2002 0xc6, 0x7b, 0xc9, 0x7b, 0x27, 0x42, 0x80, 0x5c,2015 0x78, 0x8c, 0x78, 0xcc, 0x78, 0xe3, 0x40, 0x26,
2003 0xd2, 0x7c, 0xa0, 0x42, 0xe8, 0x7c, 0xe3, 0x7c,2016 0x56, 0x56, 0x79, 0x9a, 0x56, 0xc5, 0x56, 0x8f,
2004 0x00, 0x7d, 0x86, 0x5f, 0x63, 0x7d, 0x01, 0x43,2017 0x79, 0xeb, 0x79, 0x2f, 0x41, 0x40, 0x7a, 0x4a,
2005 0xc7, 0x7d, 0x02, 0x7e, 0x45, 0x7e, 0x34, 0x43,2018 0x7a, 0x4f, 0x7a, 0x7c, 0x59, 0xa7, 0x5a, 0xa7,
2006 0x28, 0x62, 0x47, 0x62, 0x59, 0x43, 0xd9, 0x62,2019 0x5a, 0xee, 0x7a, 0x02, 0x42, 0xab, 0x5b, 0xc6,
2007 0x7a, 0x7f, 0x3e, 0x63, 0x95, 0x7f, 0xfa, 0x7f,2020 0x7b, 0xc9, 0x7b, 0x27, 0x42, 0x80, 0x5c, 0xd2,
2008 0x05, 0x80, 0xda, 0x64, 0x23, 0x65, 0x60, 0x80,2021 0x7c, 0xa0, 0x42, 0xe8, 0x7c, 0xe3, 0x7c, 0x00,
2009 0xa8, 0x65, 0x70, 0x80, 0x5f, 0x33, 0xd5, 0x43,2022 0x7d, 0x86, 0x5f, 0x63, 0x7d, 0x01, 0x43, 0xc7,
2010 0xb2, 0x80, 0x03, 0x81, 0x0b, 0x44, 0x3e, 0x81,2023 0x7d, 0x02, 0x7e, 0x45, 0x7e, 0x34, 0x43, 0x28,
2011 0xb5, 0x5a, 0xa7, 0x67, 0xb5, 0x67, 0x93, 0x33,2024 0x62, 0x47, 0x62, 0x59, 0x43, 0xd9, 0x62, 0x7a,
2012 0x9c, 0x33, 0x01, 0x82, 0x04, 0x82, 0x9e, 0x8f,2025 0x7f, 0x3e, 0x63, 0x95, 0x7f, 0xfa, 0x7f, 0x05,
2013 0x6b, 0x44, 0x91, 0x82, 0x8b, 0x82, 0x9d, 0x82,2026 0x80, 0xda, 0x64, 0x23, 0x65, 0x60, 0x80, 0xa8,
2014 0xb3, 0x52, 0xb1, 0x82, 0xb3, 0x82, 0xbd, 0x82,2027 0x65, 0x70, 0x80, 0x5f, 0x33, 0xd5, 0x43, 0xb2,
2015 0xe6, 0x82, 0x3c, 0x6b, 0xe5, 0x82, 0x1d, 0x83,2028 0x80, 0x03, 0x81, 0x0b, 0x44, 0x3e, 0x81, 0xb5,
2016 0x63, 0x83, 0xad, 0x83, 0x23, 0x83, 0xbd, 0x83,2029 0x5a, 0xa7, 0x67, 0xb5, 0x67, 0x93, 0x33, 0x9c,
2017 0xe7, 0x83, 0x57, 0x84, 0x53, 0x83, 0xca, 0x83,2030 0x33, 0x01, 0x82, 0x04, 0x82, 0x9e, 0x8f, 0x6b,
2018 0xcc, 0x83, 0xdc, 0x83, 0x36, 0x6c, 0x6b, 0x6d,2031 0x44, 0x91, 0x82, 0x8b, 0x82, 0x9d, 0x82, 0xb3,
2019 0x02, 0x00, 0x00, 0x20, 0x22, 0x2a, 0xa0, 0x0a,2032 0x52, 0xb1, 0x82, 0xb3, 0x82, 0xbd, 0x82, 0xe6,
2020 0x00, 0x20, 0x80, 0x28, 0x00, 0xa8, 0x20, 0x20,2033 0x82, 0x3c, 0x6b, 0xe5, 0x82, 0x1d, 0x83, 0x63,
2021 0x00, 0x02, 0x80, 0x22, 0x02, 0x8a, 0x08, 0x00,2034 0x83, 0xad, 0x83, 0x23, 0x83, 0xbd, 0x83, 0xe7,
2022 0xaa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x28,2035 0x83, 0x57, 0x84, 0x53, 0x83, 0xca, 0x83, 0xcc,
2023 0xd5, 0x6c, 0x2b, 0x45, 0xf1, 0x84, 0xf3, 0x84,2036 0x83, 0xdc, 0x83, 0x36, 0x6c, 0x6b, 0x6d, 0x02,
2024 0x16, 0x85, 0xca, 0x73, 0x64, 0x85, 0x2c, 0x6f,2037 0x00, 0x00, 0x20, 0x22, 0x2a, 0xa0, 0x0a, 0x00,
2025 0x5d, 0x45, 0x61, 0x45, 0xb1, 0x6f, 0xd2, 0x70,2038 0x20, 0x80, 0x28, 0x00, 0xa8, 0x20, 0x20, 0x00,
2026 0x6b, 0x45, 0x50, 0x86, 0x5c, 0x86, 0x67, 0x86,2039 0x02, 0x80, 0x22, 0x02, 0x8a, 0x08, 0x00, 0xaa,
2027 0x69, 0x86, 0xa9, 0x86, 0x88, 0x86, 0x0e, 0x87,2040 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x28, 0xd5,
2028 0xe2, 0x86, 0x79, 0x87, 0x28, 0x87, 0x6b, 0x87,2041 0x6c, 0x2b, 0x45, 0xf1, 0x84, 0xf3, 0x84, 0x16,
2029 0x86, 0x87, 0xd7, 0x45, 0xe1, 0x87, 0x01, 0x88,2042 0x85, 0xca, 0x73, 0x64, 0x85, 0x2c, 0x6f, 0x5d,
2030 0xf9, 0x45, 0x60, 0x88, 0x63, 0x88, 0x67, 0x76,2043 0x45, 0x61, 0x45, 0xb1, 0x6f, 0xd2, 0x70, 0x6b,
2031 0xd7, 0x88, 0xde, 0x88, 0x35, 0x46, 0xfa, 0x88,2044 0x45, 0x50, 0x86, 0x5c, 0x86, 0x67, 0x86, 0x69,
2032 0xbb, 0x34, 0xae, 0x78, 0x66, 0x79, 0xbe, 0x46,2045 0x86, 0xa9, 0x86, 0x88, 0x86, 0x0e, 0x87, 0xe2,
2033 0xc7, 0x46, 0xa0, 0x8a, 0xed, 0x8a, 0x8a, 0x8b,2046 0x86, 0x79, 0x87, 0x28, 0x87, 0x6b, 0x87, 0x86,
2034 0x55, 0x8c, 0xa8, 0x7c, 0xab, 0x8c, 0xc1, 0x8c,2047 0x87, 0xd7, 0x45, 0xe1, 0x87, 0x01, 0x88, 0xf9,
2035 0x1b, 0x8d, 0x77, 0x8d, 0x2f, 0x7f, 0x04, 0x08,2048 0x45, 0x60, 0x88, 0x63, 0x88, 0x67, 0x76, 0xd7,
2036 0xcb, 0x8d, 0xbc, 0x8d, 0xf0, 0x8d, 0xde, 0x08,2049 0x88, 0xde, 0x88, 0x35, 0x46, 0xfa, 0x88, 0xbb,
2037 0xd4, 0x8e, 0x38, 0x8f, 0xd2, 0x85, 0xed, 0x85,2050 0x34, 0xae, 0x78, 0x66, 0x79, 0xbe, 0x46, 0xc7,
2038 0x94, 0x90, 0xf1, 0x90, 0x11, 0x91, 0x2e, 0x87,2051 0x46, 0xa0, 0x8a, 0xed, 0x8a, 0x8a, 0x8b, 0x55,
2039 0x1b, 0x91, 0x38, 0x92, 0xd7, 0x92, 0xd8, 0x92,2052 0x8c, 0xa8, 0x7c, 0xab, 0x8c, 0xc1, 0x8c, 0x1b,
2040 0x7c, 0x92, 0xf9, 0x93, 0x15, 0x94, 0xfa, 0x8b,2053 0x8d, 0x77, 0x8d, 0x2f, 0x7f, 0x04, 0x08, 0xcb,
2041 0x8b, 0x95, 0x95, 0x49, 0xb7, 0x95, 0x77, 0x8d,2054 0x8d, 0xbc, 0x8d, 0xf0, 0x8d, 0xde, 0x08, 0xd4,
2042 0xe6, 0x49, 0xc3, 0x96, 0xb2, 0x5d, 0x23, 0x97,2055 0x8e, 0x38, 0x8f, 0xd2, 0x85, 0xed, 0x85, 0x94,
2043 0x45, 0x91, 0x1a, 0x92, 0x6e, 0x4a, 0x76, 0x4a,2056 0x90, 0xf1, 0x90, 0x11, 0x91, 0x2e, 0x87, 0x1b,
2044 0xe0, 0x97, 0x0a, 0x94, 0xb2, 0x4a, 0x96, 0x94,2057 0x91, 0x38, 0x92, 0xd7, 0x92, 0xd8, 0x92, 0x7c,
2045 0x0b, 0x98, 0x0b, 0x98, 0x29, 0x98, 0xb6, 0x95,2058 0x92, 0xf9, 0x93, 0x15, 0x94, 0xfa, 0x8b, 0x8b,
2046 0xe2, 0x98, 0x33, 0x4b, 0x29, 0x99, 0xa7, 0x99,2059 0x95, 0x95, 0x49, 0xb7, 0x95, 0x77, 0x8d, 0xe6,
2047 0xc2, 0x99, 0xfe, 0x99, 0xce, 0x4b, 0x30, 0x9b,2060 0x49, 0xc3, 0x96, 0xb2, 0x5d, 0x23, 0x97, 0x45,
2048 0x12, 0x9b, 0x40, 0x9c, 0xfd, 0x9c, 0xce, 0x4c,2061 0x91, 0x1a, 0x92, 0x6e, 0x4a, 0x76, 0x4a, 0xe0,
2049 0xed, 0x4c, 0x67, 0x9d, 0xce, 0xa0, 0xf8, 0x4c,2062 0x97, 0x0a, 0x94, 0xb2, 0x4a, 0x96, 0x94, 0x0b,
2050 0x05, 0xa1, 0x0e, 0xa2, 0x91, 0xa2, 0xbb, 0x9e,2063 0x98, 0x0b, 0x98, 0x29, 0x98, 0xb6, 0x95, 0xe2,
2051 0x56, 0x4d, 0xf9, 0x9e, 0xfe, 0x9e, 0x05, 0x9f,2064 0x98, 0x33, 0x4b, 0x29, 0x99, 0xa7, 0x99, 0xc2,
2052 0x0f, 0x9f, 0x16, 0x9f, 0x3b, 0x9f, 0x00, 0xa6,2065 0x99, 0xfe, 0x99, 0xce, 0x4b, 0x30, 0x9b, 0x12,
2053 0x02, 0x88, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80,2066 0x9b, 0x40, 0x9c, 0xfd, 0x9c, 0xce, 0x4c, 0xed,
2054 0x00, 0x28, 0x00, 0x08, 0xa0, 0x80, 0xa0, 0x80,2067 0x4c, 0x67, 0x9d, 0xce, 0xa0, 0xf8, 0x4c, 0x05,
2055 0x00, 0x80, 0x80, 0x00, 0x0a, 0x88, 0x80, 0x00,2068 0xa1, 0x0e, 0xa2, 0x91, 0xa2, 0xbb, 0x9e, 0x56,
2056 0x80, 0x00, 0x20, 0x2a, 0x00, 0x80,2069 0x4d, 0xf9, 0x9e, 0xfe, 0x9e, 0x05, 0x9f, 0x0f,
2070 0x9f, 0x16, 0x9f, 0x3b, 0x9f, 0x00, 0xa6, 0x02,
2071 0x88, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
2072 0x28, 0x00, 0x08, 0xa0, 0x80, 0xa0, 0x80, 0x00,
2073 0x80, 0x80, 0x00, 0x0a, 0x88, 0x80, 0x00, 0x80,
2074 0x00, 0x20, 0x2a, 0x00, 0x80,
2057};2075};
2058 2076
2059static const uint16_t unicode_comp_table[944] = {2077static const uint16_t unicode_comp_table[945] = {
2060 0x4a01, 0x49c0, 0x4a02, 0x0280, 0x0281, 0x0282, 0x0283, 0x02c0,2078 0x4a01, 0x49c0, 0x4a02, 0x0280, 0x0281, 0x0282, 0x0283, 0x02c0,
2061 0x02c2, 0x0a00, 0x0284, 0x2442, 0x0285, 0x07c0, 0x0980, 0x0982,2079 0x02c2, 0x0a00, 0x0284, 0x2442, 0x0285, 0x07c0, 0x0980, 0x0982,
2062 0x2440, 0x2280, 0x02c4, 0x2282, 0x2284, 0x2286, 0x02c6, 0x02c8,2080 0x2440, 0x2280, 0x02c4, 0x2282, 0x2284, 0x2286, 0x02c6, 0x02c8,
@@ -2173,8 +2191,9 @@ static const uint16_t unicode_comp_table[944] = { · 110 unmodified lines
2173 0x5704, 0x5706, 0x5708, 0x570a, 0x570c, 0x570e, 0x5710, 0x5712,2191 0x5704, 0x5706, 0x5708, 0x570a, 0x570c, 0x570e, 0x5710, 0x5712,
2174 0x5714, 0x5716, 0x5740, 0x5742, 0x5744, 0x5780, 0x5781, 0x57c0,2192 0x5714, 0x5716, 0x5740, 0x5742, 0x5744, 0x5780, 0x5781, 0x57c0,
2175 0x57c1, 0x5800, 0x5801, 0x5840, 0x5841, 0x5880, 0x5881, 0x5900,2193 0x57c1, 0x5800, 0x5801, 0x5840, 0x5841, 0x5880, 0x5881, 0x5900,
2176 0x5901, 0x5902, 0x5903, 0x5940, 0x8e40, 0x8e42, 0x8e80, 0x8ec0,2194 0x5901, 0x5902, 0x5903, 0x5940, 0x8e80, 0x8e82, 0x8ec0, 0x8f00,
2177 0x8ec1, 0x8f00, 0x8f01, 0x8f41, 0x8f40, 0x8f43, 0x8f80, 0x8f81,2195 0x8f01, 0x8f40, 0x8f41, 0x8f81, 0x8f80, 0x8f83, 0x8fc0, 0x8fc1,
2196 0x9000,
2178};2197};
2179 2198
2180typedef enum {2199typedef enum {
@@ -2260,7 +2279,7 @@ static const char unicode_gc_name_table[] = · 79 unmodified lines
2260 "C,Other" "\0"2279 "C,Other" "\0"
2261;2280;
2262 2281
2263static const uint8_t unicode_gc_table[3719] = {2282static const uint8_t unicode_gc_table[3790] = {
2264 0xfa, 0x18, 0x17, 0x56, 0x0d, 0x56, 0x12, 0x13,2283 0xfa, 0x18, 0x17, 0x56, 0x0d, 0x56, 0x12, 0x13,
2265 0x16, 0x0c, 0x16, 0x11, 0x36, 0xe9, 0x02, 0x36,2284 0x16, 0x0c, 0x16, 0x11, 0x36, 0xe9, 0x02, 0x36,
2266 0x4c, 0x36, 0xe1, 0x12, 0x12, 0x16, 0x13, 0x0e,2285 0x4c, 0x36, 0xe1, 0x12, 0x12, 0x16, 0x13, 0x0e,
@@ -2304,8 +2323,8 @@ static const uint8_t unicode_gc_table[3719] = { · 37 unmodified lines
2304 0x06, 0x2d, 0xe5, 0x0e, 0x66, 0x04, 0xe6, 0x01,2323 0x06, 0x2d, 0xe5, 0x0e, 0x66, 0x04, 0xe6, 0x01,
2305 0x04, 0x46, 0x04, 0x86, 0x20, 0xf6, 0x07, 0x00,2324 0x04, 0x46, 0x04, 0x86, 0x20, 0xf6, 0x07, 0x00,
2306 0xe5, 0x11, 0x46, 0x20, 0x16, 0x00, 0xe5, 0x03,2325 0xe5, 0x11, 0x46, 0x20, 0x16, 0x00, 0xe5, 0x03,
2307 0xe0, 0x2d, 0xe5, 0x0d, 0x00, 0xe5, 0x00, 0xe0,2326 0xe0, 0x2d, 0xe5, 0x0d, 0x00, 0xe5, 0x0a, 0xe0,
2308 0x0d, 0xe6, 0x07, 0x1b, 0xe6, 0x18, 0x07, 0xe5,2327 0x03, 0xe6, 0x07, 0x1b, 0xe6, 0x18, 0x07, 0xe5,
2309 0x2e, 0x06, 0x07, 0x06, 0x05, 0x47, 0xe6, 0x00,2328 0x2e, 0x06, 0x07, 0x06, 0x05, 0x47, 0xe6, 0x00,
2310 0x67, 0x06, 0x27, 0x05, 0xc6, 0xe5, 0x02, 0x26,2329 0x67, 0x06, 0x27, 0x05, 0xc6, 0xe5, 0x02, 0x26,
2311 0x36, 0xe9, 0x02, 0x16, 0x04, 0xe5, 0x07, 0x06,2330 0x36, 0xe9, 0x02, 0x16, 0x04, 0xe5, 0x07, 0x06,
@@ -2328,80 +2347,80 @@ static const uint8_t unicode_gc_table[3719] = { · 16 unmodified lines
2328 0x00, 0x06, 0x27, 0x00, 0xe5, 0x00, 0x20, 0x25,2347 0x00, 0x06, 0x27, 0x00, 0xe5, 0x00, 0x20, 0x25,
2329 0x20, 0xe5, 0x0e, 0x00, 0xc5, 0x00, 0x25, 0x00,2348 0x20, 0xe5, 0x0e, 0x00, 0xc5, 0x00, 0x25, 0x00,
2330 0x85, 0x20, 0x06, 0x05, 0x07, 0x06, 0x07, 0x66,2349 0x85, 0x20, 0x06, 0x05, 0x07, 0x06, 0x07, 0x66,
2331 0x20, 0x27, 0x20, 0x27, 0x06, 0xe0, 0x00, 0x06,2350 0x20, 0x27, 0x20, 0x27, 0x06, 0xc0, 0x26, 0x07,
2332 0x07, 0x60, 0x25, 0x00, 0x45, 0x26, 0x20, 0xe9,2351 0x60, 0x25, 0x00, 0x45, 0x26, 0x20, 0xe9, 0x02,
2333 0x02, 0x0f, 0x05, 0xab, 0xe0, 0x02, 0x06, 0x05,2352 0x0f, 0x05, 0xab, 0xe0, 0x02, 0x06, 0x05, 0x00,
2334 0x00, 0xa5, 0x40, 0x45, 0x00, 0x65, 0x40, 0x25,2353 0xa5, 0x40, 0x45, 0x00, 0x65, 0x40, 0x25, 0x00,
2335 0x00, 0x05, 0x00, 0x25, 0x40, 0x25, 0x40, 0x45,2354 0x05, 0x00, 0x25, 0x40, 0x25, 0x40, 0x45, 0x40,
2336 0x40, 0xe5, 0x04, 0x60, 0x27, 0x06, 0x27, 0x40,2355 0xe5, 0x04, 0x60, 0x27, 0x06, 0x27, 0x40, 0x47,
2337 0x47, 0x00, 0x47, 0x06, 0x20, 0x05, 0xa0, 0x07,2356 0x00, 0x47, 0x06, 0x20, 0x05, 0xa0, 0x07, 0xe0,
2338 0xe0, 0x06, 0xe9, 0x02, 0x4b, 0xaf, 0x0d, 0x0f,2357 0x06, 0xe9, 0x02, 0x4b, 0xaf, 0x0d, 0x0f, 0x80,
2339 0x80, 0x06, 0x47, 0x06, 0xe5, 0x00, 0x00, 0x45,2358 0x06, 0x47, 0x06, 0xe5, 0x00, 0x00, 0x45, 0x00,
2340 0x00, 0xe5, 0x0f, 0x00, 0xe5, 0x08, 0x40, 0x05,2359 0xe5, 0x0f, 0x00, 0xe5, 0x08, 0x40, 0x05, 0x46,
2341 0x46, 0x67, 0x00, 0x46, 0x00, 0x66, 0xc0, 0x26,2360 0x67, 0x00, 0x46, 0x00, 0x66, 0xc0, 0x26, 0x00,
2342 0x00, 0x45, 0x80, 0x25, 0x26, 0x20, 0xe9, 0x02,2361 0x45, 0x80, 0x25, 0x26, 0x20, 0xe9, 0x02, 0xc0,
2343 0xc0, 0x16, 0xcb, 0x0f, 0x05, 0x06, 0x27, 0x16,2362 0x16, 0xcb, 0x0f, 0x05, 0x06, 0x27, 0x16, 0xe5,
2344 0xe5, 0x00, 0x00, 0x45, 0x00, 0xe5, 0x0f, 0x00,2363 0x00, 0x00, 0x45, 0x00, 0xe5, 0x0f, 0x00, 0xe5,
2345 0xe5, 0x02, 0x00, 0x85, 0x20, 0x06, 0x05, 0x07,2364 0x02, 0x00, 0x85, 0x20, 0x06, 0x05, 0x07, 0x06,
2346 0x06, 0x87, 0x00, 0x06, 0x27, 0x00, 0x27, 0x26,2365 0x87, 0x00, 0x06, 0x27, 0x00, 0x27, 0x26, 0xc0,
2347 0xc0, 0x27, 0xc0, 0x05, 0x00, 0x25, 0x26, 0x20,2366 0x27, 0xc0, 0x05, 0x00, 0x25, 0x26, 0x20, 0xe9,
2348 0xe9, 0x02, 0x00, 0x25, 0xe0, 0x05, 0x26, 0x27,2367 0x02, 0x00, 0x25, 0xe0, 0x05, 0x26, 0x27, 0xe5,
2349 0x00, 0xe5, 0x00, 0x00, 0x45, 0x00, 0xe5, 0x21,2368 0x01, 0x00, 0x45, 0x00, 0xe5, 0x21, 0x26, 0x05,
2350 0x26, 0x05, 0x47, 0x66, 0x00, 0x47, 0x00, 0x47,2369 0x47, 0x66, 0x00, 0x47, 0x00, 0x47, 0x06, 0x05,
2351 0x06, 0x05, 0x0f, 0x60, 0x45, 0x07, 0xcb, 0x45,2370 0x0f, 0x60, 0x45, 0x07, 0xcb, 0x45, 0x26, 0x20,
2352 0x26, 0x20, 0xe9, 0x02, 0xeb, 0x01, 0x0f, 0xa5,2371 0xe9, 0x02, 0xeb, 0x01, 0x0f, 0xa5, 0x00, 0x06,
2353 0x20, 0x27, 0x00, 0xe5, 0x0a, 0x40, 0xe5, 0x10,2372 0x27, 0x00, 0xe5, 0x0a, 0x40, 0xe5, 0x10, 0x00,
2354 0x00, 0xe5, 0x01, 0x00, 0x05, 0x20, 0xc5, 0x40,2373 0xe5, 0x01, 0x00, 0x05, 0x20, 0xc5, 0x40, 0x06,
2355 0x06, 0x60, 0x47, 0x46, 0x00, 0x06, 0x00, 0xe7,2374 0x60, 0x47, 0x46, 0x00, 0x06, 0x00, 0xe7, 0x00,
2356 0x00, 0xa0, 0xe9, 0x02, 0x20, 0x27, 0x16, 0xe0,2375 0xa0, 0xe9, 0x02, 0x20, 0x27, 0x16, 0xe0, 0x04,
2357 0x04, 0xe5, 0x28, 0x06, 0x25, 0xc6, 0x60, 0x0d,2376 0xe5, 0x28, 0x06, 0x25, 0xc6, 0x60, 0x0d, 0xa5,
2358 0xa5, 0x04, 0xe6, 0x00, 0x16, 0xe9, 0x02, 0x36,2377 0x04, 0xe6, 0x00, 0x16, 0xe9, 0x02, 0x36, 0xe0,
2359 0xe0, 0x1d, 0x25, 0x00, 0x05, 0x00, 0x85, 0x00,2378 0x1d, 0x25, 0x00, 0x05, 0x00, 0x85, 0x00, 0xe5,
2360 0xe5, 0x10, 0x00, 0x05, 0x00, 0xe5, 0x02, 0x06,2379 0x10, 0x00, 0x05, 0x00, 0xe5, 0x02, 0x06, 0x25,
2361 0x25, 0xe6, 0x01, 0x05, 0x20, 0x85, 0x00, 0x04,2380 0xe6, 0x01, 0x05, 0x20, 0x85, 0x00, 0x04, 0x00,
2362 0x00, 0xa6, 0x20, 0xe9, 0x02, 0x20, 0x65, 0xe0,2381 0xa6, 0x20, 0xe9, 0x02, 0x20, 0x65, 0xe0, 0x18,
2363 0x18, 0x05, 0x4f, 0xf6, 0x07, 0x0f, 0x16, 0x4f,2382 0x05, 0x4f, 0xf6, 0x07, 0x0f, 0x16, 0x4f, 0x26,
2364 0x26, 0xaf, 0xe9, 0x02, 0xeb, 0x02, 0x0f, 0x06,2383 0xaf, 0xe9, 0x02, 0xeb, 0x02, 0x0f, 0x06, 0x0f,
2365 0x0f, 0x06, 0x0f, 0x06, 0x12, 0x13, 0x12, 0x13,2384 0x06, 0x0f, 0x06, 0x12, 0x13, 0x12, 0x13, 0x27,
2366 0x27, 0xe5, 0x00, 0x00, 0xe5, 0x1c, 0x60, 0xe6,2385 0xe5, 0x00, 0x00, 0xe5, 0x1c, 0x60, 0xe6, 0x06,
2367 0x06, 0x07, 0x86, 0x16, 0x26, 0x85, 0xe6, 0x03,2386 0x07, 0x86, 0x16, 0x26, 0x85, 0xe6, 0x03, 0x00,
2368 0x00, 0xe6, 0x1c, 0x00, 0xef, 0x00, 0x06, 0xaf,2387 0xe6, 0x1c, 0x00, 0xef, 0x00, 0x06, 0xaf, 0x00,
2369 0x00, 0x2f, 0x96, 0x6f, 0x36, 0xe0, 0x1d, 0xe5,2388 0x2f, 0x96, 0x6f, 0x36, 0xe0, 0x1d, 0xe5, 0x23,
2370 0x23, 0x27, 0x66, 0x07, 0xa6, 0x07, 0x26, 0x27,2389 0x27, 0x66, 0x07, 0xa6, 0x07, 0x26, 0x27, 0x26,
2371 0x26, 0x05, 0xe9, 0x02, 0xb6, 0xa5, 0x27, 0x26,2390 0x05, 0xe9, 0x02, 0xb6, 0xa5, 0x27, 0x26, 0x65,
2372 0x65, 0x46, 0x05, 0x47, 0x25, 0xc7, 0x45, 0x66,2391 0x46, 0x05, 0x47, 0x25, 0xc7, 0x45, 0x66, 0xe5,
2373 0xe5, 0x05, 0x06, 0x27, 0x26, 0xa7, 0x06, 0x05,2392 0x05, 0x06, 0x27, 0x26, 0xa7, 0x06, 0x05, 0x07,
2374 0x07, 0xe9, 0x02, 0x47, 0x06, 0x2f, 0xe1, 0x1e,2393 0xe9, 0x02, 0x47, 0x06, 0x2f, 0xe1, 0x1e, 0x00,
2375 0x00, 0x01, 0x80, 0x01, 0x20, 0xe2, 0x23, 0x16,2394 0x01, 0x80, 0x01, 0x20, 0xe2, 0x23, 0x16, 0x04,
2376 0x04, 0x42, 0xe5, 0x80, 0xc1, 0x00, 0x65, 0x20,2395 0x42, 0xe5, 0x80, 0xc1, 0x00, 0x65, 0x20, 0xc5,
2377 0xc5, 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x21,2396 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x21, 0x00,
2378 0x00, 0x65, 0x20, 0xe5, 0x19, 0x00, 0x65, 0x20,2397 0x65, 0x20, 0xe5, 0x19, 0x00, 0x65, 0x20, 0xc5,
2379 0xc5, 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x07,2398 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x07, 0x00,
2380 0x00, 0xe5, 0x31, 0x00, 0x65, 0x20, 0xe5, 0x3b,2399 0xe5, 0x31, 0x00, 0x65, 0x20, 0xe5, 0x3b, 0x20,
2381 0x20, 0x46, 0xf6, 0x01, 0xeb, 0x0c, 0x40, 0xe5,2400 0x46, 0xf6, 0x01, 0xeb, 0x0c, 0x40, 0xe5, 0x08,
2382 0x08, 0xef, 0x02, 0xa0, 0xe1, 0x4e, 0x20, 0xa2,2401 0xef, 0x02, 0xa0, 0xe1, 0x4e, 0x20, 0xa2, 0x20,
2383 0x20, 0x11, 0xe5, 0x81, 0xe4, 0x0f, 0x16, 0xe5,2402 0x11, 0xe5, 0x81, 0xe4, 0x0f, 0x16, 0xe5, 0x09,
2384 0x09, 0x17, 0xe5, 0x12, 0x12, 0x13, 0x40, 0xe5,2403 0x17, 0xe5, 0x12, 0x12, 0x13, 0x40, 0xe5, 0x43,
2385 0x43, 0x56, 0x4a, 0xe5, 0x00, 0xc0, 0xe5, 0x05,2404 0x56, 0x4a, 0xe5, 0x00, 0xc0, 0xe5, 0x05, 0x00,
2386 0x00, 0x65, 0x46, 0xe0, 0x03, 0xe5, 0x0a, 0x46,2405 0x65, 0x46, 0xe0, 0x03, 0xe5, 0x0a, 0x46, 0x36,
2387 0x36, 0xe0, 0x01, 0xe5, 0x0a, 0x26, 0xe0, 0x04,2406 0xe0, 0x01, 0xe5, 0x0a, 0x26, 0xe0, 0x04, 0xe5,
2388 0xe5, 0x05, 0x00, 0x45, 0x00, 0x26, 0xe0, 0x04,2407 0x05, 0x00, 0x45, 0x00, 0x26, 0xe0, 0x04, 0xe5,
2389 0xe5, 0x2c, 0x26, 0x07, 0xc6, 0xe7, 0x00, 0x06,2408 0x2c, 0x26, 0x07, 0xc6, 0xe7, 0x00, 0x06, 0x27,
2390 0x27, 0xe6, 0x03, 0x56, 0x04, 0x56, 0x0d, 0x05,2409 0xe6, 0x03, 0x56, 0x04, 0x56, 0x0d, 0x05, 0x06,
2391 0x06, 0x20, 0xe9, 0x02, 0xa0, 0xeb, 0x02, 0xa0,2410 0x20, 0xe9, 0x02, 0xa0, 0xeb, 0x02, 0xa0, 0xb6,
2392 0xb6, 0x11, 0x76, 0x46, 0x1b, 0x00, 0xe9, 0x02,2411 0x11, 0x76, 0x46, 0x1b, 0x00, 0xe9, 0x02, 0xa0,
2393 0xa0, 0xe5, 0x1b, 0x04, 0xe5, 0x2d, 0xc0, 0x85,2412 0xe5, 0x1b, 0x04, 0xe5, 0x2d, 0xc0, 0x85, 0x26,
2394 0x26, 0xe5, 0x1a, 0x06, 0x05, 0x80, 0xe5, 0x3e,2413 0xe5, 0x1a, 0x06, 0x05, 0x80, 0xe5, 0x3e, 0xe0,
2395 0xe0, 0x02, 0xe5, 0x17, 0x00, 0x46, 0x67, 0x26,2414 0x02, 0xe5, 0x17, 0x00, 0x46, 0x67, 0x26, 0x47,
2396 0x47, 0x60, 0x27, 0x06, 0xa7, 0x46, 0x60, 0x0f,2415 0x60, 0x27, 0x06, 0xa7, 0x46, 0x60, 0x0f, 0x40,
2397 0x40, 0x36, 0xe9, 0x02, 0xe5, 0x16, 0x20, 0x85,2416 0x36, 0xe9, 0x02, 0xe5, 0x16, 0x20, 0x85, 0xe0,
2398 0xe0, 0x03, 0xe5, 0x24, 0x60, 0xe5, 0x12, 0xa0,2417 0x03, 0xe5, 0x24, 0x60, 0xe5, 0x12, 0xa0, 0xe9,
2399 0xe9, 0x02, 0x0b, 0x40, 0xef, 0x1a, 0xe5, 0x0f,2418 0x02, 0x0b, 0x40, 0xef, 0x1a, 0xe5, 0x0f, 0x26,
2400 0x26, 0x27, 0x06, 0x20, 0x36, 0xe5, 0x2d, 0x07,2419 0x27, 0x06, 0x20, 0x36, 0xe5, 0x2d, 0x07, 0x06,
2401 0x06, 0x07, 0xc6, 0x00, 0x06, 0x07, 0x06, 0x27,2420 0x07, 0xc6, 0x00, 0x06, 0x07, 0x06, 0x27, 0xe6,
2402 0xe6, 0x00, 0xa7, 0xe6, 0x02, 0x20, 0x06, 0xe9,2421 0x00, 0xa7, 0xe6, 0x02, 0x20, 0x06, 0xe9, 0x02,
2403 0x02, 0xa0, 0xe9, 0x02, 0xa0, 0xd6, 0x04, 0xb6,2422 0xa0, 0xe9, 0x02, 0xa0, 0xd6, 0x04, 0xb6, 0x20,
2404 0x20, 0xe6, 0x06, 0x08, 0xe0, 0x39, 0x66, 0x07,2423 0xe6, 0x06, 0x08, 0x26, 0xe0, 0x37, 0x66, 0x07,
2405 0xe5, 0x27, 0x06, 0x07, 0x86, 0x07, 0x06, 0x87,2424 0xe5, 0x27, 0x06, 0x07, 0x86, 0x07, 0x06, 0x87,
2406 0x06, 0x27, 0xc5, 0x60, 0xe9, 0x02, 0xd6, 0xef,2425 0x06, 0x27, 0xc5, 0x60, 0xe9, 0x02, 0xd6, 0xef,
2407 0x02, 0xe6, 0x01, 0xef, 0x01, 0x40, 0x26, 0x07,2426 0x02, 0xe6, 0x01, 0xef, 0x01, 0x40, 0x26, 0x07,
@@ -2461,7 +2480,7 @@ static const uint8_t unicode_gc_table[3719] = { · 53 unmodified lines
2461 0x13, 0x12, 0x13, 0x12, 0x13, 0xec, 0x37, 0x12,2480 0x13, 0x12, 0x13, 0x12, 0x13, 0xec, 0x37, 0x12,
2462 0x13, 0x12, 0x13, 0xec, 0x18, 0x12, 0x13, 0xec,2481 0x13, 0x12, 0x13, 0xec, 0x18, 0x12, 0x13, 0xec,
2463 0x80, 0x7a, 0xef, 0x28, 0xec, 0x0d, 0x2f, 0xac,2482 0x80, 0x7a, 0xef, 0x28, 0xec, 0x0d, 0x2f, 0xac,
2464 0xef, 0x1f, 0x20, 0xef, 0x18, 0x20, 0xef, 0x60,2483 0xef, 0x1f, 0x20, 0xef, 0x18, 0x00, 0xef, 0x61,
2465 0xe1, 0x27, 0x00, 0xe2, 0x27, 0x00, 0x5f, 0x21,2484 0xe1, 0x27, 0x00, 0xe2, 0x27, 0x00, 0x5f, 0x21,
2466 0x22, 0xdf, 0x41, 0x02, 0x3f, 0x02, 0x3f, 0x82,2485 0x22, 0xdf, 0x41, 0x02, 0x3f, 0x02, 0x3f, 0x82,
2467 0x24, 0x41, 0x02, 0xff, 0x5a, 0x02, 0xaf, 0x7f,2486 0x24, 0x41, 0x02, 0xff, 0x5a, 0x02, 0xaf, 0x7f,
@@ -2475,257 +2494,266 @@ static const uint8_t unicode_gc_table[3719] = { · 7 unmodified lines
2475 0x11, 0x36, 0x11, 0x16, 0x14, 0x15, 0x36, 0x14,2494 0x11, 0x36, 0x11, 0x16, 0x14, 0x15, 0x36, 0x14,
2476 0x15, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12,2495 0x15, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12,
2477 0x13, 0x96, 0x04, 0xf6, 0x02, 0x31, 0x76, 0x11,2496 0x13, 0x96, 0x04, 0xf6, 0x02, 0x31, 0x76, 0x11,
2478 0x16, 0x12, 0xf6, 0x05, 0xe0, 0x28, 0xef, 0x12,2497 0x16, 0x12, 0xf6, 0x05, 0x2f, 0x16, 0xe0, 0x25,
2479 0x00, 0xef, 0x51, 0xe0, 0x04, 0xef, 0x80, 0x4e,2498 0xef, 0x12, 0x00, 0xef, 0x51, 0xe0, 0x04, 0xef,
2480 0xe0, 0x12, 0xef, 0x04, 0x60, 0x17, 0x56, 0x0f,2499 0x80, 0x4e, 0xe0, 0x12, 0xef, 0x04, 0x60, 0x17,
2481 0x04, 0x05, 0x0a, 0x12, 0x13, 0x12, 0x13, 0x12,2500 0x56, 0x0f, 0x04, 0x05, 0x0a, 0x12, 0x13, 0x12,
2482 0x13, 0x12, 0x13, 0x12, 0x13, 0x2f, 0x12, 0x13,2501 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x2f,
2483 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x11, 0x12,2502 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13,
2484 0x33, 0x0f, 0xea, 0x01, 0x66, 0x27, 0x11, 0x84,2503 0x11, 0x12, 0x33, 0x0f, 0xea, 0x01, 0x66, 0x27,
2485 0x2f, 0x4a, 0x04, 0x05, 0x16, 0x2f, 0x00, 0xe5,2504 0x11, 0x84, 0x2f, 0x4a, 0x04, 0x05, 0x16, 0x2f,
2486 0x4e, 0x20, 0x26, 0x2e, 0x24, 0x05, 0x11, 0xe5,2505 0x00, 0xe5, 0x4e, 0x20, 0x26, 0x2e, 0x24, 0x05,
2487 0x52, 0x16, 0x44, 0x05, 0x80, 0xe5, 0x23, 0x00,2506 0x11, 0xe5, 0x52, 0x16, 0x44, 0x05, 0x80, 0xe5,
2488 0xe5, 0x56, 0x00, 0x2f, 0x6b, 0xef, 0x02, 0xe5,2507 0x23, 0x00, 0xe5, 0x56, 0x00, 0x2f, 0x6b, 0xef,
2489 0x13, 0x80, 0xef, 0x1c, 0xe0, 0x04, 0xe5, 0x08,2508 0x02, 0xe5, 0x18, 0xef, 0x1c, 0xe0, 0x04, 0xe5,
2490 0xef, 0x17, 0x00, 0xeb, 0x02, 0xef, 0x16, 0xeb,2509 0x08, 0xef, 0x17, 0x00, 0xeb, 0x02, 0xef, 0x16,
2491 0x00, 0x0f, 0xeb, 0x07, 0xef, 0x18, 0xeb, 0x02,2510 0xeb, 0x00, 0x0f, 0xeb, 0x07, 0xef, 0x18, 0xeb,
2492 0xef, 0x1f, 0xeb, 0x07, 0xef, 0x80, 0xb8, 0xe5,2511 0x02, 0xef, 0x1f, 0xeb, 0x07, 0xef, 0x80, 0xb8,
2493 0x99, 0x2e, 0xe0, 0x02, 0xef, 0x38, 0xe5, 0xc0,2512 0xe5, 0x99, 0x38, 0xef, 0x38, 0xe5, 0xc0, 0x11,
2494 0x11, 0x68, 0xe0, 0x08, 0xe5, 0x0d, 0x04, 0xe5,2513 0x75, 0x40, 0xe5, 0x0d, 0x04, 0xe5, 0x83, 0xef,
2495 0x83, 0xef, 0x40, 0xef, 0x2f, 0xe0, 0x01, 0xe5,2514 0x40, 0xef, 0x2f, 0xe0, 0x01, 0xe5, 0x20, 0xa4,
2496 0x20, 0xa4, 0x36, 0xe5, 0x80, 0x84, 0x04, 0x56,2515 0x36, 0xe5, 0x80, 0x84, 0x04, 0x56, 0xe5, 0x08,
2497 0xe5, 0x08, 0xe9, 0x02, 0x25, 0xe0, 0x0c, 0xff,2516 0xe9, 0x02, 0x25, 0xe0, 0x0c, 0xff, 0x26, 0x05,
2498 0x26, 0x05, 0x06, 0x48, 0x16, 0xe6, 0x02, 0x16,2517 0x06, 0x48, 0x16, 0xe6, 0x02, 0x16, 0x04, 0xff,
2499 0x04, 0xff, 0x14, 0x24, 0x26, 0xe5, 0x3e, 0xea,2518 0x14, 0x24, 0x26, 0xe5, 0x3e, 0xea, 0x02, 0x26,
2500 0x02, 0x26, 0xb6, 0xe0, 0x00, 0xee, 0x0f, 0xe4,2519 0xb6, 0xe0, 0x00, 0xee, 0x0f, 0xe4, 0x01, 0x2e,
2501 0x01, 0x2e, 0xff, 0x06, 0x22, 0xff, 0x36, 0x04,2520 0xff, 0x06, 0x22, 0xff, 0x36, 0x04, 0xe2, 0x00,
2502 0xe2, 0x00, 0x9f, 0xff, 0x02, 0x04, 0x2e, 0x7f,2521 0x9f, 0xff, 0x02, 0x04, 0x2e, 0x7f, 0x05, 0x7f,
2503 0x05, 0x7f, 0x22, 0xff, 0x0d, 0x61, 0x02, 0x81,2522 0x22, 0xff, 0x0d, 0x61, 0x02, 0x81, 0x02, 0xff,
2504 0x02, 0xff, 0x02, 0x20, 0x5f, 0x21, 0xe0, 0x28,2523 0x02, 0x20, 0x5f, 0x41, 0x02, 0x3f, 0xe0, 0x22,
2505 0x05, 0x24, 0x02, 0xc5, 0x06, 0x45, 0x06, 0x65,2524 0x3f, 0x05, 0x24, 0x02, 0xc5, 0x06, 0x45, 0x06,
2506 0x06, 0xe5, 0x0f, 0x27, 0x26, 0x07, 0x6f, 0x60,2525 0x65, 0x06, 0xe5, 0x0f, 0x27, 0x26, 0x07, 0x6f,
2507 0xab, 0x2f, 0x0d, 0x0f, 0xa0, 0xe5, 0x2c, 0x76,2526 0x06, 0x40, 0xab, 0x2f, 0x0d, 0x0f, 0xa0, 0xe5,
2508 0xe0, 0x00, 0x27, 0xe5, 0x2a, 0xe7, 0x08, 0x26,2527 0x2c, 0x76, 0xe0, 0x00, 0x27, 0xe5, 0x2a, 0xe7,
2509 0xe0, 0x00, 0x36, 0xe9, 0x02, 0xa0, 0xe6, 0x0a,2528 0x08, 0x26, 0xe0, 0x00, 0x36, 0xe9, 0x02, 0xa0,
2510 0xa5, 0x56, 0x05, 0x16, 0x25, 0x06, 0xe9, 0x02,2529 0xe6, 0x0a, 0xa5, 0x56, 0x05, 0x16, 0x25, 0x06,
2511 0xe5, 0x14, 0xe6, 0x00, 0x36, 0xe5, 0x0f, 0xe6,2530 0xe9, 0x02, 0xe5, 0x14, 0xe6, 0x00, 0x36, 0xe5,
2512 0x03, 0x27, 0xe0, 0x03, 0x16, 0xe5, 0x15, 0x40,2531 0x0f, 0xe6, 0x03, 0x27, 0xe0, 0x03, 0x16, 0xe5,
2513 0x46, 0x07, 0xe5, 0x27, 0x06, 0x27, 0x66, 0x27,2532 0x15, 0x40, 0x46, 0x07, 0xe5, 0x27, 0x06, 0x27,
2514 0x26, 0x47, 0xf6, 0x05, 0x00, 0x04, 0xe9, 0x02,2533 0x66, 0x27, 0x26, 0x47, 0xf6, 0x05, 0x00, 0x04,
2515 0x60, 0x36, 0x85, 0x06, 0x04, 0xe5, 0x01, 0xe9,2534 0xe9, 0x02, 0x60, 0x36, 0x85, 0x06, 0x04, 0xe5,
2516 0x02, 0x85, 0x00, 0xe5, 0x21, 0xa6, 0x27, 0x26,2535 0x01, 0xe9, 0x02, 0x85, 0x00, 0xe5, 0x21, 0xa6,
2517 0x27, 0x26, 0xe0, 0x01, 0x45, 0x06, 0xe5, 0x00,2536 0x27, 0x26, 0x27, 0x26, 0xe0, 0x01, 0x45, 0x06,
2518 0x06, 0x07, 0x20, 0xe9, 0x02, 0x20, 0x76, 0xe5,2537 0xe5, 0x00, 0x06, 0x07, 0x20, 0xe9, 0x02, 0x20,
2519 0x08, 0x04, 0xa5, 0x4f, 0x05, 0x07, 0x06, 0x07,2538 0x76, 0xe5, 0x08, 0x04, 0xa5, 0x4f, 0x05, 0x07,
2520 0xe5, 0x2a, 0x06, 0x05, 0x46, 0x25, 0x26, 0x85,2539 0x06, 0x07, 0xe5, 0x2a, 0x06, 0x05, 0x46, 0x25,
2521 0x26, 0x05, 0x06, 0x05, 0xe0, 0x10, 0x25, 0x04,2540 0x26, 0x85, 0x26, 0x05, 0x06, 0x05, 0xe0, 0x10,
2522 0x36, 0xe5, 0x03, 0x07, 0x26, 0x27, 0x36, 0x05,2541 0x25, 0x04, 0x36, 0xe5, 0x03, 0x07, 0x26, 0x27,
2523 0x24, 0x07, 0x06, 0xe0, 0x02, 0xa5, 0x20, 0xa5,2542 0x36, 0x05, 0x24, 0x07, 0x06, 0xe0, 0x02, 0xa5,
2524 0x20, 0xa5, 0xe0, 0x01, 0xc5, 0x00, 0xc5, 0x00,2543 0x20, 0xa5, 0x20, 0xa5, 0xe0, 0x01, 0xc5, 0x00,
2525 0xe2, 0x23, 0x0e, 0x64, 0xe2, 0x00, 0xe0, 0x00,2544 0xc5, 0x00, 0xe2, 0x23, 0x0e, 0x64, 0xe2, 0x01,
2526 0xe2, 0x48, 0xe5, 0x1b, 0x27, 0x06, 0x27, 0x06,2545 0x04, 0x2e, 0x60, 0xe2, 0x48, 0xe5, 0x1b, 0x27,
2527 0x27, 0x16, 0x07, 0x06, 0x20, 0xe9, 0x02, 0xa0,2546 0x06, 0x27, 0x06, 0x27, 0x16, 0x07, 0x06, 0x20,
2528 0xe5, 0xab, 0x1c, 0xe0, 0x04, 0xe5, 0x0f, 0x60,2547 0xe9, 0x02, 0xa0, 0xe5, 0xab, 0x1c, 0xe0, 0x04,
2529 0xe5, 0x29, 0x60, 0xfc, 0x87, 0x78, 0xfd, 0x98,2548 0xe5, 0x0f, 0x60, 0xe5, 0x29, 0x60, 0xfc, 0x87,
2530 0x78, 0xe5, 0x80, 0xe6, 0x20, 0xe5, 0x62, 0xe0,2549 0x78, 0xfd, 0x98, 0x78, 0xe5, 0x80, 0xe6, 0x20,
2531 0x1e, 0xc2, 0xe0, 0x04, 0x82, 0x80, 0x05, 0x06,2550 0xe5, 0x62, 0xe0, 0x1e, 0xc2, 0xe0, 0x04, 0x82,
2532 0xe5, 0x02, 0x0c, 0xe5, 0x05, 0x00, 0x85, 0x00,2551 0x80, 0x05, 0x06, 0xe5, 0x02, 0x0c, 0xe5, 0x05,
2533 0x05, 0x00, 0x25, 0x00, 0x25, 0x00, 0xe5, 0x64,2552 0x00, 0x85, 0x00, 0x05, 0x00, 0x25, 0x00, 0x25,
2534 0xee, 0x08, 0xe0, 0x09, 0xe5, 0x80, 0xe3, 0x13,2553 0x00, 0xe5, 0x64, 0xee, 0x08, 0xe0, 0x09, 0xe5,
2535 0x12, 0xe0, 0x08, 0xe5, 0x38, 0x20, 0xe5, 0x2e,2554 0x80, 0xe3, 0x13, 0x12, 0xe0, 0x08, 0xe5, 0x38,
2536 0xe0, 0x20, 0xe5, 0x04, 0x0d, 0x0f, 0x20, 0xe6,2555 0x20, 0xe5, 0x2e, 0xe0, 0x20, 0xe5, 0x04, 0x0d,
2537 0x08, 0xd6, 0x12, 0x13, 0x16, 0xa0, 0xe6, 0x08,2556 0x0f, 0x20, 0xe6, 0x08, 0xd6, 0x12, 0x13, 0x16,
2538 0x16, 0x31, 0x30, 0x12, 0x13, 0x12, 0x13, 0x12,2557 0xa0, 0xe6, 0x08, 0x16, 0x31, 0x30, 0x12, 0x13,
2539 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12,2558 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13,
2540 0x13, 0x12, 0x13, 0x36, 0x12, 0x13, 0x76, 0x50,2559 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x36, 0x12,
2541 0x56, 0x00, 0x76, 0x11, 0x12, 0x13, 0x12, 0x13,2560 0x13, 0x76, 0x50, 0x56, 0x00, 0x76, 0x11, 0x12,
2542 0x12, 0x13, 0x56, 0x0c, 0x11, 0x4c, 0x00, 0x16,2561 0x13, 0x12, 0x13, 0x12, 0x13, 0x56, 0x0c, 0x11,
2543 0x0d, 0x36, 0x60, 0x85, 0x00, 0xe5, 0x7f, 0x20,2562 0x4c, 0x00, 0x16, 0x0d, 0x36, 0x60, 0x85, 0x00,
2544 0x1b, 0x00, 0x56, 0x0d, 0x56, 0x12, 0x13, 0x16,2563 0xe5, 0x7f, 0x20, 0x1b, 0x00, 0x56, 0x0d, 0x56,
2545 0x0c, 0x16, 0x11, 0x36, 0xe9, 0x02, 0x36, 0x4c,2564 0x12, 0x13, 0x16, 0x0c, 0x16, 0x11, 0x36, 0xe9,
2546 0x36, 0xe1, 0x12, 0x12, 0x16, 0x13, 0x0e, 0x10,2565 0x02, 0x36, 0x4c, 0x36, 0xe1, 0x12, 0x12, 0x16,
2547 0x0e, 0xe2, 0x12, 0x12, 0x0c, 0x13, 0x0c, 0x12,2566 0x13, 0x0e, 0x10, 0x0e, 0xe2, 0x12, 0x12, 0x0c,
2548 0x13, 0x16, 0x12, 0x13, 0x36, 0xe5, 0x02, 0x04,2567 0x13, 0x0c, 0x12, 0x13, 0x16, 0x12, 0x13, 0x36,
2549 0xe5, 0x25, 0x24, 0xe5, 0x17, 0x40, 0xa5, 0x20,2568 0xe5, 0x02, 0x04, 0xe5, 0x25, 0x24, 0xe5, 0x17,
2550 0xa5, 0x20, 0xa5, 0x20, 0x45, 0x40, 0x2d, 0x0c,2569 0x40, 0xa5, 0x20, 0xa5, 0x20, 0xa5, 0x20, 0x45,
2551 0x0e, 0x0f, 0x2d, 0x00, 0x0f, 0x6c, 0x2f, 0xe0,2570 0x40, 0x2d, 0x0c, 0x0e, 0x0f, 0x2d, 0x00, 0x0f,
2552 0x02, 0x5b, 0x2f, 0x20, 0xe5, 0x04, 0x00, 0xe5,2571 0x6c, 0x2f, 0xe0, 0x02, 0x5b, 0x2f, 0x20, 0xe5,
2553 0x12, 0x00, 0xe5, 0x0b, 0x00, 0x25, 0x00, 0xe5,2572 0x04, 0x00, 0xe5, 0x12, 0x00, 0xe5, 0x0b, 0x00,
2554 0x07, 0x20, 0xe5, 0x06, 0xe0, 0x1a, 0xe5, 0x73,2573 0x25, 0x00, 0xe5, 0x07, 0x20, 0xe5, 0x06, 0xe0,
2555 0x80, 0x56, 0x60, 0xeb, 0x25, 0x40, 0xef, 0x01,2574 0x1a, 0xe5, 0x73, 0x80, 0x56, 0x60, 0xeb, 0x25,
2556 0xea, 0x2d, 0x6b, 0xef, 0x09, 0x2b, 0x4f, 0x00,2575 0x40, 0xef, 0x01, 0xea, 0x2d, 0x6b, 0xef, 0x09,
2557 0xef, 0x04, 0x60, 0x0f, 0xe0, 0x27, 0xef, 0x25,2576 0x2b, 0x4f, 0x00, 0xef, 0x05, 0x40, 0x0f, 0xe0,
2558 0x06, 0xe0, 0x7a, 0xe5, 0x15, 0x40, 0xe5, 0x29,2577 0x27, 0xef, 0x25, 0x06, 0xe0, 0x7a, 0xe5, 0x15,
2559 0xe0, 0x07, 0x06, 0xeb, 0x13, 0x60, 0xe5, 0x18,2578 0x40, 0xe5, 0x29, 0xe0, 0x07, 0x06, 0xeb, 0x13,
2560 0x6b, 0xe0, 0x01, 0xe5, 0x0c, 0x0a, 0xe5, 0x00,2579 0x60, 0xe5, 0x18, 0x6b, 0xe0, 0x01, 0xe5, 0x0c,
2561 0x0a, 0x80, 0xe5, 0x1e, 0x86, 0x80, 0xe5, 0x16,2580 0x0a, 0xe5, 0x00, 0x0a, 0x80, 0xe5, 0x1e, 0x86,
2562 0x00, 0x16, 0xe5, 0x1c, 0x60, 0xe5, 0x00, 0x16,2581 0x80, 0xe5, 0x16, 0x00, 0x16, 0xe5, 0x1c, 0x60,
2563 0x8a, 0xe0, 0x22, 0xe1, 0x20, 0xe2, 0x20, 0xe5,2582 0xe5, 0x00, 0x16, 0x8a, 0xe0, 0x22, 0xe1, 0x20,
2564 0x46, 0x20, 0xe9, 0x02, 0xa0, 0xe1, 0x1c, 0x60,2583 0xe2, 0x20, 0xe5, 0x46, 0x20, 0xe9, 0x02, 0xa0,
2565 0xe2, 0x1c, 0x60, 0xe5, 0x20, 0xe0, 0x00, 0xe5,2584 0xe1, 0x1c, 0x60, 0xe2, 0x1c, 0x60, 0xe5, 0x20,
2566 0x2c, 0xe0, 0x03, 0x16, 0xe0, 0x80, 0x08, 0xe5,2585 0xe0, 0x00, 0xe5, 0x2c, 0xe0, 0x03, 0x16, 0xe0,
2567 0x80, 0xaf, 0xe0, 0x01, 0xe5, 0x0e, 0xe0, 0x02,2586 0x80, 0x08, 0xe5, 0x80, 0xaf, 0xe0, 0x01, 0xe5,
2568 0xe5, 0x00, 0xe0, 0x80, 0x10, 0xa5, 0x20, 0x05,2587 0x0e, 0xe0, 0x02, 0xe5, 0x00, 0xe0, 0x80, 0x10,
2569 0x00, 0xe5, 0x24, 0x00, 0x25, 0x40, 0x05, 0x20,2588 0xa5, 0x20, 0x05, 0x00, 0xe5, 0x24, 0x00, 0x25,
2570 0xe5, 0x0f, 0x00, 0x16, 0xeb, 0x00, 0xe5, 0x0f,2589 0x40, 0x05, 0x20, 0xe5, 0x0f, 0x00, 0x16, 0xeb,
2571 0x2f, 0xcb, 0xe5, 0x17, 0xe0, 0x00, 0xeb, 0x01,2590 0x00, 0xe5, 0x0f, 0x2f, 0xcb, 0xe5, 0x17, 0xe0,
2572 0xe0, 0x28, 0xe5, 0x0b, 0x00, 0x25, 0x80, 0x8b,2591 0x00, 0xeb, 0x01, 0xe0, 0x28, 0xe5, 0x0b, 0x00,
2573 0xe5, 0x0e, 0xab, 0x40, 0x16, 0xe5, 0x12, 0x80,2592 0x25, 0x80, 0x8b, 0xe5, 0x0e, 0xab, 0x40, 0x16,
2574 0x16, 0xe0, 0x38, 0xe5, 0x30, 0x60, 0x2b, 0x25,2593 0xe5, 0x12, 0x80, 0x16, 0xe0, 0x38, 0xe5, 0x30,
2575 0xeb, 0x08, 0x20, 0xeb, 0x26, 0x05, 0x46, 0x00,2594 0x60, 0x2b, 0x25, 0xeb, 0x08, 0x20, 0xeb, 0x26,
2576 0x26, 0x80, 0x66, 0x65, 0x00, 0x45, 0x00, 0xe5,2595 0x05, 0x46, 0x00, 0x26, 0x80, 0x66, 0x65, 0x00,
2577 0x15, 0x20, 0x46, 0x60, 0x06, 0xeb, 0x01, 0xc0,2596 0x45, 0x00, 0xe5, 0x15, 0x20, 0x46, 0x60, 0x06,
2578 0xf6, 0x01, 0xc0, 0xe5, 0x15, 0x2b, 0x16, 0xe5,2597 0xeb, 0x01, 0xc0, 0xf6, 0x01, 0xc0, 0xe5, 0x15,
2579 0x15, 0x4b, 0xe0, 0x18, 0xe5, 0x00, 0x0f, 0xe5,2598 0x2b, 0x16, 0xe5, 0x15, 0x4b, 0xe0, 0x18, 0xe5,
2580 0x14, 0x26, 0x60, 0x8b, 0xd6, 0xe0, 0x01, 0xe5,2599 0x00, 0x0f, 0xe5, 0x14, 0x26, 0x60, 0x8b, 0xd6,
2581 0x2e, 0x40, 0xd6, 0xe5, 0x0e, 0x20, 0xeb, 0x00,2600 0xe0, 0x01, 0xe5, 0x2e, 0x40, 0xd6, 0xe5, 0x0e,
2582 0xe5, 0x0b, 0x80, 0xeb, 0x00, 0xe5, 0x0a, 0xc0,2601 0x20, 0xeb, 0x00, 0xe5, 0x0b, 0x80, 0xeb, 0x00,
2583 0x76, 0xe0, 0x04, 0xcb, 0xe0, 0x48, 0xe5, 0x41,2602 0xe5, 0x0a, 0xc0, 0x76, 0xe0, 0x04, 0xcb, 0xe0,
2584 0xe0, 0x2f, 0xe1, 0x2b, 0xe0, 0x05, 0xe2, 0x2b,2603 0x48, 0xe5, 0x41, 0xe0, 0x2f, 0xe1, 0x2b, 0xe0,
2585 0xc0, 0xab, 0xe5, 0x1c, 0x66, 0xe0, 0x00, 0xe9,2604 0x05, 0xe2, 0x2b, 0xc0, 0xab, 0xe5, 0x1c, 0x66,
2586 0x02, 0xe0, 0x80, 0x9e, 0xeb, 0x17, 0xe0, 0x79,2605 0xe0, 0x00, 0xe9, 0x02, 0xe0, 0x80, 0x9e, 0xeb,
2587 0xe5, 0x15, 0xeb, 0x02, 0x05, 0xe0, 0x00, 0xe5,2606 0x17, 0x00, 0xe5, 0x22, 0x00, 0x26, 0x11, 0x20,
2588 0x0e, 0xe6, 0x03, 0x6b, 0x96, 0xe0, 0x7e, 0xe5,2607 0x25, 0xe0, 0x46, 0xe5, 0x15, 0xeb, 0x02, 0x05,
2608 0xe0, 0x00, 0xe5, 0x0e, 0xe6, 0x03, 0x6b, 0x96,
2609 0xe0, 0x4e, 0xe5, 0x0d, 0xcb, 0xe0, 0x0c, 0xe5,
2589 0x0f, 0xe0, 0x01, 0x07, 0x06, 0x07, 0xe5, 0x2d,2610 0x0f, 0xe0, 0x01, 0x07, 0x06, 0x07, 0xe5, 0x2d,
2590 0xe6, 0x07, 0xd6, 0x60, 0xeb, 0x0c, 0xe9, 0x02,2611 0xe6, 0x07, 0xd6, 0x60, 0xeb, 0x0c, 0xe9, 0x02,
2591 0xe0, 0x07, 0x46, 0x07, 0xe5, 0x25, 0x47, 0x66,2612 0xe0, 0x07, 0x46, 0x07, 0xe5, 0x25, 0x47, 0x66,
2592 0x27, 0x26, 0x36, 0x1b, 0x76, 0xe0, 0x03, 0x1b,2613 0x27, 0x26, 0x36, 0x1b, 0x76, 0xe0, 0x03, 0x1b,
2593 0x20, 0xe5, 0x11, 0xc0, 0xe9, 0x02, 0xa0, 0x46,2614 0x20, 0xe5, 0x11, 0xc0, 0xe9, 0x02, 0xa0, 0x46,
2594 0xe5, 0x1c, 0x86, 0x07, 0xe6, 0x00, 0x00, 0xe9,2615 0xe5, 0x1c, 0x86, 0x07, 0xe6, 0x00, 0x00, 0xe9,
2595 0x02, 0x76, 0x05, 0x27, 0xe0, 0x01, 0xe5, 0x1b,2616 0x02, 0x76, 0x05, 0x27, 0x05, 0xe0, 0x00, 0xe5,
2596 0x06, 0x36, 0x05, 0xe0, 0x01, 0x26, 0x07, 0xe5,2617 0x1b, 0x06, 0x36, 0x05, 0xe0, 0x01, 0x26, 0x07,
2597 0x28, 0x47, 0xe6, 0x01, 0x27, 0x65, 0x76, 0x66,2618 0xe5, 0x28, 0x47, 0xe6, 0x01, 0x27, 0x65, 0x76,
2598 0x16, 0x20, 0xe9, 0x02, 0x05, 0x16, 0x05, 0x56,2619 0x66, 0x16, 0x07, 0x06, 0xe9, 0x02, 0x05, 0x16,
2599 0x00, 0xeb, 0x0c, 0xe0, 0x03, 0xe5, 0x0a, 0x00,2620 0x05, 0x56, 0x00, 0xeb, 0x0c, 0xe0, 0x03, 0xe5,
2600 0xe5, 0x11, 0x47, 0x46, 0x27, 0x06, 0x07, 0x26,2621 0x0a, 0x00, 0xe5, 0x11, 0x47, 0x46, 0x27, 0x06,
2601 0xb6, 0x06, 0xe0, 0x39, 0xc5, 0x00, 0x05, 0x00,2622 0x07, 0x26, 0xb6, 0x06, 0xe0, 0x39, 0xc5, 0x00,
2602 0x65, 0x00, 0xe5, 0x07, 0x00, 0xe5, 0x02, 0x16,2623 0x05, 0x00, 0x65, 0x00, 0xe5, 0x07, 0x00, 0xe5,
2603 0xa0, 0xe5, 0x27, 0x06, 0x47, 0xe6, 0x00, 0x80,2624 0x02, 0x16, 0xa0, 0xe5, 0x27, 0x06, 0x47, 0xe6,
2604 0xe9, 0x02, 0xa0, 0x26, 0x27, 0x00, 0xe5, 0x00,2625 0x00, 0x80, 0xe9, 0x02, 0xa0, 0x26, 0x27, 0x00,
2605 0x20, 0x25, 0x20, 0xe5, 0x0e, 0x00, 0xc5, 0x00,2626 0xe5, 0x00, 0x20, 0x25, 0x20, 0xe5, 0x0e, 0x00,
2606 0x25, 0x00, 0x85, 0x00, 0x26, 0x05, 0x27, 0x06,2627 0xc5, 0x00, 0x25, 0x00, 0x85, 0x00, 0x26, 0x05,
2607 0x67, 0x20, 0x27, 0x20, 0x47, 0x20, 0x05, 0xa0,2628 0x27, 0x06, 0x67, 0x20, 0x27, 0x20, 0x47, 0x20,
2608 0x07, 0x80, 0x85, 0x27, 0x20, 0xc6, 0x40, 0x86,2629 0x05, 0xa0, 0x07, 0x80, 0x85, 0x27, 0x20, 0xc6,
2609 0xe0, 0x80, 0x03, 0xe5, 0x2d, 0x47, 0xe6, 0x00,2630 0x40, 0x86, 0xe0, 0x80, 0x03, 0xe5, 0x2d, 0x47,
2610 0x27, 0x46, 0x07, 0x06, 0x65, 0x96, 0xe9, 0x02,2631 0xe6, 0x00, 0x27, 0x46, 0x07, 0x06, 0x65, 0x96,
2611 0x00, 0x16, 0x00, 0x16, 0x06, 0x05, 0xe0, 0x18,2632 0xe9, 0x02, 0x36, 0x00, 0x16, 0x06, 0x45, 0xe0,
2612 0xe5, 0x28, 0x47, 0xa6, 0x07, 0x06, 0x67, 0x26,2633 0x16, 0xe5, 0x28, 0x47, 0xa6, 0x07, 0x06, 0x67,
2613 0x07, 0x26, 0x25, 0x16, 0x05, 0xe0, 0x00, 0xe9,2634 0x26, 0x07, 0x26, 0x25, 0x16, 0x05, 0xe0, 0x00,
2614 0x02, 0xe0, 0x80, 0x1e, 0xe5, 0x27, 0x47, 0x66,2635 0xe9, 0x02, 0xe0, 0x80, 0x1e, 0xe5, 0x27, 0x47,
2615 0x20, 0x67, 0x26, 0x07, 0x26, 0xf6, 0x0f, 0x65,2636 0x66, 0x20, 0x67, 0x26, 0x07, 0x26, 0xf6, 0x0f,
2616 0x26, 0xe0, 0x1a, 0xe5, 0x28, 0x47, 0xe6, 0x00,2637 0x65, 0x26, 0xe0, 0x1a, 0xe5, 0x28, 0x47, 0xe6,
2617 0x27, 0x06, 0x07, 0x26, 0x56, 0x05, 0xe0, 0x03,2638 0x00, 0x27, 0x06, 0x07, 0x26, 0x56, 0x05, 0xe0,
2618 0xe9, 0x02, 0xa0, 0xf6, 0x05, 0xe0, 0x0b, 0xe5,2639 0x03, 0xe9, 0x02, 0xa0, 0xf6, 0x05, 0xe0, 0x0b,
2619 0x23, 0x06, 0x07, 0x06, 0x27, 0xa6, 0x07, 0x06,2640 0xe5, 0x23, 0x06, 0x07, 0x06, 0x27, 0xa6, 0x07,
2620 0x05, 0xc0, 0xe9, 0x02, 0xe0, 0x2e, 0xe5, 0x13,2641 0x06, 0x05, 0xc0, 0xe9, 0x02, 0xe0, 0x2e, 0xe5,
2621 0x20, 0x46, 0x27, 0x66, 0x07, 0x86, 0x60, 0xe9,2642 0x13, 0x20, 0x46, 0x27, 0x66, 0x07, 0x86, 0x60,
2622 0x02, 0x2b, 0x56, 0x0f, 0xe0, 0x80, 0x38, 0xe5,2643 0xe9, 0x02, 0x2b, 0x56, 0x0f, 0xe0, 0x80, 0x38,
2623 0x24, 0x47, 0xe6, 0x01, 0x07, 0x26, 0x16, 0xe0,2644 0xe5, 0x24, 0x47, 0xe6, 0x01, 0x07, 0x26, 0x16,
2624 0x5c, 0xe1, 0x18, 0xe2, 0x18, 0xe9, 0x02, 0xeb,2645 0xe0, 0x5c, 0xe1, 0x18, 0xe2, 0x18, 0xe9, 0x02,
2625 0x01, 0xe0, 0x04, 0x05, 0xe0, 0x80, 0x18, 0xe5,2646 0xeb, 0x01, 0xe0, 0x04, 0xe5, 0x00, 0x20, 0x05,
2626 0x00, 0x20, 0xe5, 0x1f, 0x47, 0x66, 0x20, 0x26,2647 0x20, 0xe5, 0x00, 0x00, 0x25, 0x00, 0xe5, 0x10,
2627 0x67, 0x06, 0x05, 0x16, 0x05, 0x07, 0xe0, 0x13,2648 0xa7, 0x00, 0x27, 0x20, 0x26, 0x07, 0x06, 0x05,
2628 0x05, 0xe6, 0x02, 0xe5, 0x20, 0xa6, 0x07, 0x05,2649 0x07, 0x05, 0x07, 0x06, 0x56, 0xe0, 0x01, 0xe9,
2629 0x66, 0xf6, 0x00, 0x06, 0xe0, 0x00, 0x05, 0xa6,2650 0x02, 0xe0, 0x3e, 0xe5, 0x00, 0x20, 0xe5, 0x1f,
2630 0x27, 0x46, 0xe5, 0x26, 0xe6, 0x05, 0x07, 0x26,2651 0x47, 0x66, 0x20, 0x26, 0x67, 0x06, 0x05, 0x16,
2631 0x56, 0x05, 0x96, 0xe0, 0x15, 0xe5, 0x31, 0xe0,2652 0x05, 0x07, 0xe0, 0x13, 0x05, 0xe6, 0x02, 0xe5,
2632 0x80, 0x7f, 0xe5, 0x01, 0x00, 0xe5, 0x1d, 0x07,2653 0x20, 0xa6, 0x07, 0x05, 0x66, 0xf6, 0x00, 0x06,
2633 0xc6, 0x00, 0xa6, 0x07, 0x06, 0x05, 0x96, 0xe0,2654 0xe0, 0x00, 0x05, 0xa6, 0x27, 0x46, 0xe5, 0x26,
2634 0x02, 0xe9, 0x02, 0xeb, 0x0b, 0x40, 0x36, 0xe5,2655 0xe6, 0x05, 0x07, 0x26, 0x56, 0x05, 0x96, 0xe0,
2635 0x16, 0x20, 0xe6, 0x0e, 0x00, 0x07, 0xc6, 0x07,2656 0x15, 0xe5, 0x31, 0xe0, 0x80, 0x7f, 0xe5, 0x01,
2636 0x26, 0x07, 0x26, 0xe0, 0x41, 0xc5, 0x00, 0x25,2657 0x00, 0xe5, 0x1d, 0x07, 0xc6, 0x00, 0xa6, 0x07,
2637 0x00, 0xe5, 0x1e, 0xa6, 0x40, 0x06, 0x00, 0x26,2658 0x06, 0x05, 0x96, 0xe0, 0x02, 0xe9, 0x02, 0xeb,
2638 0x00, 0xc6, 0x05, 0x06, 0xe0, 0x00, 0xe9, 0x02,2659 0x0b, 0x40, 0x36, 0xe5, 0x16, 0x20, 0xe6, 0x0e,
2639 0xa0, 0xa5, 0x00, 0x25, 0x00, 0xe5, 0x18, 0x87,2660 0x00, 0x07, 0xc6, 0x07, 0x26, 0x07, 0x26, 0xe0,
2640 0x00, 0x26, 0x00, 0x27, 0x06, 0x07, 0x06, 0x05,2661 0x41, 0xc5, 0x00, 0x25, 0x00, 0xe5, 0x1e, 0xa6,
2641 0xc0, 0xe9, 0x02, 0xe0, 0x80, 0xae, 0xe5, 0x0b,2662 0x40, 0x06, 0x00, 0x26, 0x00, 0xc6, 0x05, 0x06,
2642 0x26, 0x27, 0x36, 0xe0, 0x80, 0x3f, 0xeb, 0x0d,2663 0xe0, 0x00, 0xe9, 0x02, 0xa0, 0xa5, 0x00, 0x25,
2643 0xef, 0x00, 0x6d, 0xef, 0x09, 0xe0, 0x05, 0x16,2664 0x00, 0xe5, 0x18, 0x87, 0x00, 0x26, 0x00, 0x27,
2644 0xe5, 0x83, 0x12, 0xe0, 0x5e, 0xea, 0x67, 0x00,2665 0x06, 0x07, 0x06, 0x05, 0xc0, 0xe9, 0x02, 0xe0,
2645 0x96, 0xe0, 0x03, 0xe5, 0x80, 0x3c, 0xe0, 0x8a,2666 0x80, 0xae, 0xe5, 0x0b, 0x26, 0x27, 0x36, 0xe0,
2646 0x34, 0xe5, 0x83, 0xa7, 0x00, 0xfb, 0x01, 0xe0,2667 0x80, 0x2f, 0x05, 0xe0, 0x07, 0xeb, 0x0d, 0xef,
2647 0x8f, 0x3f, 0xe5, 0x81, 0xbf, 0xe0, 0xa1, 0x31,2668 0x00, 0x6d, 0xef, 0x09, 0xe0, 0x05, 0x16, 0xe5,
2648 0xe5, 0x81, 0xb1, 0xc0, 0xe5, 0x17, 0x00, 0xe9,2669 0x83, 0x12, 0xe0, 0x5e, 0xea, 0x67, 0x00, 0x96,
2649 0x02, 0x60, 0x36, 0xe0, 0x58, 0xe5, 0x16, 0x20,2670 0xe0, 0x03, 0xe5, 0x80, 0x3c, 0xe0, 0x8a, 0x34,
2650 0x86, 0x16, 0xe0, 0x02, 0xe5, 0x28, 0xc6, 0x96,2671 0xe5, 0x83, 0xa7, 0x00, 0xfb, 0x01, 0xe0, 0x8f,
2651 0x6f, 0x64, 0x16, 0x0f, 0xe0, 0x02, 0xe9, 0x02,2672 0x3f, 0xe5, 0x81, 0xbf, 0xe0, 0xa1, 0x31, 0xe5,
2652 0x00, 0xcb, 0x00, 0xe5, 0x0d, 0x80, 0xe5, 0x0b,2673 0x81, 0xb1, 0xc0, 0xe5, 0x17, 0x00, 0xe9, 0x02,
2653 0xe0, 0x82, 0x28, 0xe1, 0x18, 0xe2, 0x18, 0xeb,2674 0x60, 0x36, 0xe0, 0x58, 0xe5, 0x16, 0x20, 0x86,
2654 0x0f, 0x76, 0xe0, 0x5d, 0xe5, 0x43, 0x60, 0x06,2675 0x16, 0xe0, 0x02, 0xe5, 0x28, 0xc6, 0x96, 0x6f,
2655 0x05, 0xe7, 0x2f, 0xc0, 0x66, 0xe4, 0x05, 0xe0,2676 0x64, 0x16, 0x0f, 0xe0, 0x02, 0xe9, 0x02, 0x00,
2656 0x38, 0x24, 0x16, 0x04, 0xe0, 0x14, 0xe5, 0x97,2677 0xcb, 0x00, 0xe5, 0x0d, 0x80, 0xe5, 0x0b, 0xe0,
2657 0x70, 0xe0, 0x00, 0xe5, 0x82, 0x6b, 0xe0, 0xa4,2678 0x82, 0x28, 0xe1, 0x18, 0xe2, 0x18, 0xeb, 0x0f,
2658 0x85, 0xe5, 0x80, 0x97, 0xe0, 0x29, 0x45, 0xe0,2679 0x76, 0xe0, 0x5d, 0xe5, 0x43, 0x60, 0x06, 0x05,
2659 0x09, 0x65, 0xe0, 0x00, 0xe5, 0x81, 0x04, 0xe0,2680 0xe7, 0x2f, 0xc0, 0x66, 0xe4, 0x05, 0xe0, 0x38,
2660 0x88, 0x7c, 0xe5, 0x63, 0x80, 0xe5, 0x05, 0x40,2681 0x24, 0x16, 0x04, 0x06, 0xe0, 0x03, 0x27, 0xe0,
2661 0xe5, 0x01, 0xc0, 0xe5, 0x02, 0x20, 0x0f, 0x26,2682 0x06, 0xe5, 0x97, 0x70, 0xe0, 0x00, 0xe5, 0x84,
2662 0x16, 0x7b, 0xe0, 0x92, 0xd4, 0xef, 0x80, 0x6e,2683 0x4e, 0xe0, 0x22, 0xe5, 0x01, 0xe0, 0xa2, 0x6f,
2663 0xe0, 0x02, 0xef, 0x1f, 0x20, 0xef, 0x34, 0x27,2684 0xe5, 0x80, 0x97, 0xe0, 0x29, 0x45, 0xe0, 0x09,
2664 0x46, 0x4f, 0xa7, 0xfb, 0x00, 0xe6, 0x00, 0x2f,2685 0x65, 0xe0, 0x00, 0xe5, 0x81, 0x04, 0xe0, 0x88,
2665 0xc6, 0xef, 0x16, 0x66, 0xef, 0x33, 0xe0, 0x0f,2686 0x7c, 0xe5, 0x63, 0x80, 0xe5, 0x05, 0x40, 0xe5,
2666 0xef, 0x3a, 0x46, 0x0f, 0xe0, 0x80, 0x12, 0xeb,2687 0x01, 0xc0, 0xe5, 0x02, 0x20, 0x0f, 0x26, 0x16,
2667 0x0c, 0xe0, 0x04, 0xef, 0x4f, 0xe0, 0x01, 0xeb,2688 0x7b, 0xe0, 0x92, 0xd4, 0xef, 0x80, 0x6e, 0xe0,
2668 0x11, 0xe0, 0x7f, 0xe1, 0x12, 0xe2, 0x12, 0xe1,2689 0x02, 0xef, 0x1f, 0x20, 0xef, 0x34, 0x27, 0x46,
2669 0x12, 0xc2, 0x00, 0xe2, 0x0a, 0xe1, 0x12, 0xe2,2690 0x4f, 0xa7, 0xfb, 0x00, 0xe6, 0x00, 0x2f, 0xc6,
2670 0x12, 0x01, 0x00, 0x21, 0x20, 0x01, 0x20, 0x21,2691 0xef, 0x16, 0x66, 0xef, 0x33, 0xe0, 0x0f, 0xef,
2671 0x20, 0x61, 0x00, 0xe1, 0x00, 0x62, 0x00, 0x02,2692 0x3a, 0x46, 0x0f, 0xe0, 0x80, 0x12, 0xeb, 0x0c,
2672 0x00, 0xc2, 0x00, 0xe2, 0x03, 0xe1, 0x12, 0xe2,2693 0xe0, 0x04, 0xef, 0x4f, 0xe0, 0x01, 0xeb, 0x11,
2673 0x12, 0x21, 0x00, 0x61, 0x20, 0xe1, 0x00, 0x00,2694 0xe0, 0x7f, 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12,
2674 0xc1, 0x00, 0xe2, 0x12, 0x21, 0x00, 0x61, 0x00,2695 0xc2, 0x00, 0xe2, 0x0a, 0xe1, 0x12, 0xe2, 0x12,
2675 0x81, 0x00, 0x01, 0x40, 0xc1, 0x00, 0xe2, 0x12,2696 0x01, 0x00, 0x21, 0x20, 0x01, 0x20, 0x21, 0x20,
2676 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12,2697 0x61, 0x00, 0xe1, 0x00, 0x62, 0x00, 0x02, 0x00,
2677 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12,2698 0xc2, 0x00, 0xe2, 0x03, 0xe1, 0x12, 0xe2, 0x12,
2678 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x14,2699 0x21, 0x00, 0x61, 0x20, 0xe1, 0x00, 0x00, 0xc1,
2679 0x20, 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2,2700 0x00, 0xe2, 0x12, 0x21, 0x00, 0x61, 0x00, 0x81,
2701 0x00, 0x01, 0x40, 0xc1, 0x00, 0xe2, 0x12, 0xe1,
2702 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, 0xe1,
2703 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, 0xe1,
2704 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x14, 0x20,
2680 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1,2705 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1,
2681 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11,2706 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11,
2682 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11, 0x0c,2707 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11, 0x0c,
2683 0xe2, 0x11, 0x0c, 0xa2, 0x3f, 0x20, 0xe9, 0x2a,2708 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11, 0x0c, 0xe2,
2684 0xef, 0x81, 0x78, 0xe6, 0x2f, 0x6f, 0xe6, 0x2a,2709 0x11, 0x0c, 0xa2, 0x3f, 0x20, 0xe9, 0x2a, 0xef,
2685 0xef, 0x00, 0x06, 0xef, 0x06, 0x06, 0x2f, 0x96,2710 0x81, 0x78, 0xe6, 0x2f, 0x6f, 0xe6, 0x2a, 0xef,
2686 0xe0, 0x07, 0x86, 0x00, 0xe6, 0x07, 0xe0, 0x84,2711 0x00, 0x06, 0xef, 0x06, 0x06, 0x2f, 0x96, 0xe0,
2687 0xc8, 0xc6, 0x00, 0xe6, 0x09, 0x20, 0xc6, 0x00,2712 0x07, 0x86, 0x00, 0xe6, 0x07, 0xe0, 0x84, 0xc8,
2688 0x26, 0x00, 0x86, 0xe0, 0x80, 0x4d, 0xe5, 0x25,2713 0xc6, 0x00, 0xe6, 0x09, 0x20, 0xc6, 0x00, 0x26,
2689 0x40, 0xc6, 0xc4, 0x20, 0xe9, 0x02, 0x60, 0x05,2714 0x00, 0x86, 0xe0, 0x80, 0x4d, 0xe5, 0x25, 0x40,
2690 0x0f, 0xe0, 0x80, 0xe8, 0xe5, 0x24, 0x66, 0xe9,2715 0xc6, 0xc4, 0x20, 0xe9, 0x02, 0x60, 0x05, 0x0f,
2691 0x02, 0x80, 0x0d, 0xe0, 0x84, 0x78, 0xe5, 0x80,2716 0xe0, 0x80, 0xe8, 0xe5, 0x24, 0x66, 0xe9, 0x02,
2692 0x3d, 0x20, 0xeb, 0x01, 0xc6, 0xe0, 0x21, 0xe1,2717 0x80, 0x0d, 0xe0, 0x84, 0x78, 0xe5, 0x80, 0x3d,
2693 0x1a, 0xe2, 0x1a, 0xc6, 0x04, 0x60, 0xe9, 0x02,2718 0x20, 0xeb, 0x01, 0xc6, 0xe0, 0x21, 0xe1, 0x1a,
2694 0x60, 0x36, 0xe0, 0x82, 0x89, 0xeb, 0x33, 0x0f,2719 0xe2, 0x1a, 0xc6, 0x04, 0x60, 0xe9, 0x02, 0x60,
2695 0x4b, 0x0d, 0x6b, 0xe0, 0x44, 0xeb, 0x25, 0x0f,2720 0x36, 0xe0, 0x82, 0x89, 0xeb, 0x33, 0x0f, 0x4b,
2696 0xeb, 0x07, 0xe0, 0x80, 0x3a, 0x65, 0x00, 0xe5,2721 0x0d, 0x6b, 0xe0, 0x44, 0xeb, 0x25, 0x0f, 0xeb,
2697 0x13, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00,2722 0x07, 0xe0, 0x80, 0x3a, 0x65, 0x00, 0xe5, 0x13,
2698 0xe5, 0x02, 0x00, 0x65, 0x00, 0x05, 0x00, 0x05,2723 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00, 0xe5,
2699 0xa0, 0x05, 0x60, 0x05, 0x00, 0x05, 0x00, 0x05,2724 0x02, 0x00, 0x65, 0x00, 0x05, 0x00, 0x05, 0xa0,
2700 0x00, 0x45, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05,2725 0x05, 0x60, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00,
2701 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05,2726 0x45, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00,
2702 0x00, 0x25, 0x00, 0x05, 0x20, 0x65, 0x00, 0xc5,2727 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00,
2703 0x00, 0x65, 0x00, 0x65, 0x00, 0x05, 0x00, 0xe5,2728 0x25, 0x00, 0x05, 0x20, 0x65, 0x00, 0xc5, 0x00,
2704 0x02, 0x00, 0xe5, 0x09, 0x80, 0x45, 0x00, 0x85,2729 0x65, 0x00, 0x65, 0x00, 0x05, 0x00, 0xe5, 0x02,
2705 0x00, 0xe5, 0x09, 0xe0, 0x2c, 0x2c, 0xe0, 0x80,2730 0x00, 0xe5, 0x09, 0x80, 0x45, 0x00, 0x85, 0x00,
2706 0x86, 0xef, 0x24, 0x60, 0xef, 0x5c, 0xe0, 0x04,2731 0xe5, 0x09, 0xe0, 0x2c, 0x2c, 0xe0, 0x80, 0x86,
2707 0xef, 0x07, 0x20, 0xef, 0x07, 0x00, 0xef, 0x07,2732 0xef, 0x24, 0x60, 0xef, 0x5c, 0xe0, 0x04, 0xef,
2708 0x00, 0xef, 0x1d, 0xe0, 0x02, 0xeb, 0x05, 0x40,2733 0x07, 0x20, 0xef, 0x07, 0x00, 0xef, 0x07, 0x00,
2709 0xef, 0x55, 0x40, 0xef, 0x35, 0xe0, 0x31, 0xef,2734 0xef, 0x1d, 0xe0, 0x02, 0xeb, 0x05, 0xef, 0x80,
2710 0x15, 0xe0, 0x05, 0xef, 0x24, 0x60, 0xef, 0x01,2735 0x19, 0xe0, 0x30, 0xef, 0x15, 0xe0, 0x05, 0xef,
2711 0xc0, 0x2f, 0xe0, 0x06, 0xaf, 0xe0, 0x80, 0x12,2736 0x24, 0x60, 0xef, 0x01, 0xc0, 0x2f, 0xe0, 0x06,
2712 0xef, 0x80, 0x73, 0x8e, 0xef, 0x82, 0x4e, 0xe0,2737 0xaf, 0xe0, 0x80, 0x12, 0xef, 0x80, 0x73, 0x8e,
2713 0x02, 0xef, 0x05, 0x40, 0xef, 0x03, 0x80, 0xef,2738 0xef, 0x82, 0x50, 0xe0, 0x00, 0xef, 0x05, 0x40,
2714 0x6c, 0xe0, 0x04, 0xef, 0x51, 0xc0, 0xef, 0x04,2739 0xef, 0x05, 0x40, 0xef, 0x6c, 0xe0, 0x04, 0xef,
2715 0xe0, 0x0c, 0xef, 0x04, 0x60, 0xef, 0x30, 0xe0,2740 0x51, 0xc0, 0xef, 0x04, 0xe0, 0x0c, 0xef, 0x04,
2716 0x00, 0xef, 0x02, 0xa0, 0xef, 0x20, 0xe0, 0x00,2741 0x60, 0xef, 0x30, 0xe0, 0x00, 0xef, 0x02, 0xa0,
2717 0xef, 0x16, 0xe0, 0x4a, 0xef, 0x04, 0x00, 0xef,2742 0xef, 0x20, 0xe0, 0x00, 0xef, 0x16, 0x20, 0x2f,
2718 0x5d, 0x00, 0x6f, 0x40, 0xef, 0x21, 0x20, 0xaf,2743 0xe0, 0x46, 0xef, 0x71, 0x00, 0xef, 0x4a, 0x00,
2719 0x40, 0xef, 0x15, 0x20, 0xef, 0x7f, 0xe0, 0x04,2744 0xef, 0x7f, 0xe0, 0x04, 0xef, 0x06, 0x20, 0x8f,
2720 0xef, 0x06, 0x20, 0x6f, 0x60, 0x4f, 0x80, 0x4f,2745 0x40, 0x4f, 0x80, 0xcf, 0xe0, 0x01, 0xef, 0x11,
2721 0xe0, 0x05, 0xaf, 0xe0, 0x84, 0xe2, 0xe5, 0xc0,2746 0xc0, 0xcf, 0xe0, 0x01, 0x4f, 0xe0, 0x05, 0xcf,
2722 0x66, 0x4f, 0xe0, 0x21, 0xe5, 0x8f, 0xad, 0xe0,2747 0xe0, 0x21, 0xef, 0x80, 0x0b, 0x00, 0xef, 0x2f,
2723 0x03, 0xe5, 0x80, 0x56, 0x20, 0xe5, 0x95, 0xfa,2748 0xe0, 0x1d, 0xe9, 0x02, 0xe0, 0x83, 0x7e, 0xe5,
2724 0xe0, 0x06, 0xe5, 0x9c, 0xa9, 0xe0, 0x8b, 0x97,2749 0xc0, 0x66, 0x56, 0xe0, 0x1a, 0xe5, 0x8f, 0xad,
2725 0xe5, 0x81, 0x96, 0xe0, 0xca, 0xc5, 0x5b, 0x1b,2750 0xe0, 0x03, 0xe5, 0x80, 0x56, 0x20, 0xe5, 0x95,
2726 0xe0, 0x16, 0xfb, 0x58, 0xe0, 0x78, 0xe6, 0x80,2751 0xfa, 0xe0, 0x06, 0xe5, 0x9c, 0xa9, 0xe0, 0x8b,
2727 0x68, 0xe0, 0xc0, 0xbd, 0x88, 0xfd, 0xc0, 0xbf,2752 0x97, 0xe5, 0x81, 0x96, 0xe0, 0x85, 0x5a, 0xe5,
2728 0x76, 0x20, 0xfd, 0xc0, 0xbf, 0x76, 0x20,2753 0x92, 0xc3, 0xe0, 0xca, 0xac, 0x2e, 0x1b, 0xe0,
2754 0x16, 0xfb, 0x58, 0xe0, 0x78, 0xe6, 0x80, 0x68,
2755 0xe0, 0xc0, 0xbd, 0x88, 0xfd, 0xc0, 0xbf, 0x76,
2756 0x20, 0xfd, 0xc0, 0xbf, 0x76, 0x20,
2729};2757};
2730 2758
2731typedef enum {2759typedef enum {
@@ -2753,6 +2781,7 @@ typedef enum { · 21 unmodified lines
2753 UNICODE_SCRIPT_Chakma,2781 UNICODE_SCRIPT_Chakma,
2754 UNICODE_SCRIPT_Cham,2782 UNICODE_SCRIPT_Cham,
2755 UNICODE_SCRIPT_Cherokee,2783 UNICODE_SCRIPT_Cherokee,
2784 UNICODE_SCRIPT_Chorasmian,
2756 UNICODE_SCRIPT_Common,2785 UNICODE_SCRIPT_Common,
2757 UNICODE_SCRIPT_Coptic,2786 UNICODE_SCRIPT_Coptic,
2758 UNICODE_SCRIPT_Cuneiform,2787 UNICODE_SCRIPT_Cuneiform,
@@ -2760,6 +2789,7 @@ typedef enum { · 1 unmodified line
2760 UNICODE_SCRIPT_Cyrillic,2789 UNICODE_SCRIPT_Cyrillic,
2761 UNICODE_SCRIPT_Deseret,2790 UNICODE_SCRIPT_Deseret,
2762 UNICODE_SCRIPT_Devanagari,2791 UNICODE_SCRIPT_Devanagari,
2792 UNICODE_SCRIPT_Dives_Akuru,
2763 UNICODE_SCRIPT_Dogra,2793 UNICODE_SCRIPT_Dogra,
2764 UNICODE_SCRIPT_Duployan,2794 UNICODE_SCRIPT_Duployan,
2765 UNICODE_SCRIPT_Egyptian_Hieroglyphs,2795 UNICODE_SCRIPT_Egyptian_Hieroglyphs,
@@ -2793,6 +2823,7 @@ typedef enum { · 27 unmodified lines
2793 UNICODE_SCRIPT_Kharoshthi,2823 UNICODE_SCRIPT_Kharoshthi,
2794 UNICODE_SCRIPT_Khmer,2824 UNICODE_SCRIPT_Khmer,
2795 UNICODE_SCRIPT_Khojki,2825 UNICODE_SCRIPT_Khojki,
2826 UNICODE_SCRIPT_Khitan_Small_Script,
2796 UNICODE_SCRIPT_Khudawadi,2827 UNICODE_SCRIPT_Khudawadi,
2797 UNICODE_SCRIPT_Lao,2828 UNICODE_SCRIPT_Lao,
2798 UNICODE_SCRIPT_Latin,2829 UNICODE_SCRIPT_Latin,
@@ -2880,6 +2911,7 @@ typedef enum { · 81 unmodified lines
2880 UNICODE_SCRIPT_Vai,2911 UNICODE_SCRIPT_Vai,
2881 UNICODE_SCRIPT_Wancho,2912 UNICODE_SCRIPT_Wancho,
2882 UNICODE_SCRIPT_Warang_Citi,2913 UNICODE_SCRIPT_Warang_Citi,
2914 UNICODE_SCRIPT_Yezidi,
2883 UNICODE_SCRIPT_Yi,2915 UNICODE_SCRIPT_Yi,
2884 UNICODE_SCRIPT_Zanabazar_Square,2916 UNICODE_SCRIPT_Zanabazar_Square,
2885 UNICODE_SCRIPT_COUNT,2917 UNICODE_SCRIPT_COUNT,
@@ -2909,6 +2941,7 @@ static const char unicode_script_name_table[] = · 23 unmodified lines
2909 "Chakma,Cakm" "\0"2941 "Chakma,Cakm" "\0"
2910 "Cham,Cham" "\0"2942 "Cham,Cham" "\0"
2911 "Cherokee,Cher" "\0"2943 "Cherokee,Cher" "\0"
2944 "Chorasmian,Chrs" "\0"
2912 "Common,Zyyy" "\0"2945 "Common,Zyyy" "\0"
2913 "Coptic,Copt,Qaac" "\0"2946 "Coptic,Copt,Qaac" "\0"
2914 "Cuneiform,Xsux" "\0"2947 "Cuneiform,Xsux" "\0"
@@ -2916,6 +2949,7 @@ static const char unicode_script_name_table[] = · 1 unmodified line
2916 "Cyrillic,Cyrl" "\0"2949 "Cyrillic,Cyrl" "\0"
2917 "Deseret,Dsrt" "\0"2950 "Deseret,Dsrt" "\0"
2918 "Devanagari,Deva" "\0"2951 "Devanagari,Deva" "\0"
2952 "Dives_Akuru,Diak" "\0"
2919 "Dogra,Dogr" "\0"2953 "Dogra,Dogr" "\0"
2920 "Duployan,Dupl" "\0"2954 "Duployan,Dupl" "\0"
2921 "Egyptian_Hieroglyphs,Egyp" "\0"2955 "Egyptian_Hieroglyphs,Egyp" "\0"
@@ -2949,6 +2983,7 @@ static const char unicode_script_name_table[] = · 27 unmodified lines
2949 "Kharoshthi,Khar" "\0"2983 "Kharoshthi,Khar" "\0"
2950 "Khmer,Khmr" "\0"2984 "Khmer,Khmr" "\0"
2951 "Khojki,Khoj" "\0"2985 "Khojki,Khoj" "\0"
2986 "Khitan_Small_Script,Kits" "\0"
2952 "Khudawadi,Sind" "\0"2987 "Khudawadi,Sind" "\0"
2953 "Lao,Laoo" "\0"2988 "Lao,Laoo" "\0"
2954 "Latin,Latn" "\0"2989 "Latin,Latn" "\0"
@@ -3036,434 +3071,442 @@ static const char unicode_script_name_table[] = · 81 unmodified lines
3036 "Vai,Vaii" "\0"3071 "Vai,Vaii" "\0"
3037 "Wancho,Wcho" "\0"3072 "Wancho,Wcho" "\0"
3038 "Warang_Citi,Wara" "\0"3073 "Warang_Citi,Wara" "\0"
3074 "Yezidi,Yezi" "\0"
3039 "Yi,Yiii" "\0"3075 "Yi,Yiii" "\0"
3040 "Zanabazar_Square,Zanb" "\0"3076 "Zanabazar_Square,Zanb" "\0"
3041;3077;
3042 3078
3043static const uint8_t unicode_script_table[2565] = {3079static const uint8_t unicode_script_table[2609] = {
3044 0xc0, 0x18, 0x99, 0x42, 0x85, 0x18, 0x99, 0x42,3080 0xc0, 0x19, 0x99, 0x45, 0x85, 0x19, 0x99, 0x45,
3045 0xae, 0x18, 0x80, 0x42, 0x8e, 0x18, 0x80, 0x42,3081 0xae, 0x19, 0x80, 0x45, 0x8e, 0x19, 0x80, 0x45,
3046 0x84, 0x18, 0x96, 0x42, 0x80, 0x18, 0x9e, 0x42,3082 0x84, 0x19, 0x96, 0x45, 0x80, 0x19, 0x9e, 0x45,
3047 0x80, 0x18, 0xe1, 0x60, 0x42, 0xa6, 0x18, 0x84,3083 0x80, 0x19, 0xe1, 0x60, 0x45, 0xa6, 0x19, 0x84,
3048 0x42, 0x84, 0x18, 0x81, 0x0d, 0x93, 0x18, 0xe0,3084 0x45, 0x84, 0x19, 0x81, 0x0d, 0x93, 0x19, 0xe0,
3049 0x0f, 0x35, 0x83, 0x29, 0x80, 0x18, 0x82, 0x29,3085 0x0f, 0x37, 0x83, 0x2b, 0x80, 0x19, 0x82, 0x2b,
3050 0x01, 0x83, 0x29, 0x80, 0x18, 0x80, 0x29, 0x03,3086 0x01, 0x83, 0x2b, 0x80, 0x19, 0x80, 0x2b, 0x03,
3051 0x80, 0x29, 0x80, 0x18, 0x80, 0x29, 0x80, 0x18,3087 0x80, 0x2b, 0x80, 0x19, 0x80, 0x2b, 0x80, 0x19,
3052 0x82, 0x29, 0x00, 0x80, 0x29, 0x00, 0x93, 0x29,3088 0x82, 0x2b, 0x00, 0x80, 0x2b, 0x00, 0x93, 0x2b,
3053 0x00, 0xbe, 0x29, 0x8d, 0x19, 0x8f, 0x29, 0xe0,3089 0x00, 0xbe, 0x2b, 0x8d, 0x1a, 0x8f, 0x2b, 0xe0,
3054 0x24, 0x1c, 0x81, 0x35, 0xe0, 0x48, 0x1c, 0x00,3090 0x24, 0x1d, 0x81, 0x37, 0xe0, 0x48, 0x1d, 0x00,
3055 0xa5, 0x05, 0x01, 0xaf, 0x05, 0x80, 0x18, 0x80,3091 0xa5, 0x05, 0x01, 0xb1, 0x05, 0x01, 0x82, 0x05,
3056 0x05, 0x01, 0x82, 0x05, 0x00, 0xb6, 0x32, 0x07,3092 0x00, 0xb6, 0x34, 0x07, 0x9a, 0x34, 0x03, 0x85,
3057 0x9a, 0x32, 0x03, 0x85, 0x32, 0x0a, 0x84, 0x04,3093 0x34, 0x0a, 0x84, 0x04, 0x80, 0x19, 0x85, 0x04,
3058 0x80, 0x18, 0x85, 0x04, 0x80, 0x18, 0x8d, 0x04,3094 0x80, 0x19, 0x8d, 0x04, 0x80, 0x19, 0x80, 0x04,
3059 0x80, 0x18, 0x80, 0x04, 0x00, 0x80, 0x04, 0x80,3095 0x00, 0x80, 0x04, 0x80, 0x19, 0x9f, 0x04, 0x80,
3060 0x18, 0x9f, 0x04, 0x80, 0x18, 0x89, 0x04, 0x8a,3096 0x19, 0x89, 0x04, 0x8a, 0x37, 0x99, 0x04, 0x80,
3061 0x35, 0x99, 0x04, 0x80, 0x35, 0xe0, 0x0b, 0x04,3097 0x37, 0xe0, 0x0b, 0x04, 0x80, 0x19, 0xa1, 0x04,
3062 0x80, 0x18, 0xa1, 0x04, 0x8d, 0x84, 0x00, 0xbb,3098 0x8d, 0x87, 0x00, 0xbb, 0x87, 0x01, 0x82, 0x87,
3063 0x84, 0x01, 0x82, 0x84, 0xaf, 0x04, 0xb1, 0x8e,3099 0xaf, 0x04, 0xb1, 0x91, 0x0d, 0xba, 0x63, 0x01,
3064 0x0d, 0xba, 0x60, 0x01, 0x82, 0x60, 0xad, 0x78,3100 0x82, 0x63, 0xad, 0x7b, 0x01, 0x8e, 0x7b, 0x00,
3065 0x01, 0x8e, 0x78, 0x00, 0x9b, 0x4d, 0x01, 0x80,3101 0x9b, 0x50, 0x01, 0x80, 0x50, 0x00, 0x8a, 0x87,
3066 0x4d, 0x00, 0x8a, 0x84, 0x34, 0x94, 0x04, 0x00,3102 0x34, 0x94, 0x04, 0x00, 0x91, 0x04, 0x0a, 0x8e,
3067 0x87, 0x04, 0x14, 0x8e, 0x04, 0x80, 0x18, 0x9c,3103 0x04, 0x80, 0x19, 0x9c, 0x04, 0xd0, 0x1f, 0x83,
3068 0x04, 0xd0, 0x1e, 0x83, 0x35, 0x8e, 0x1e, 0x81,3104 0x37, 0x8e, 0x1f, 0x81, 0x19, 0x99, 0x1f, 0x83,
3069 0x18, 0x99, 0x1e, 0x83, 0x0b, 0x00, 0x87, 0x0b,3105 0x0b, 0x00, 0x87, 0x0b, 0x01, 0x81, 0x0b, 0x01,
3070 0x01, 0x81, 0x0b, 0x01, 0x95, 0x0b, 0x00, 0x86,3106 0x95, 0x0b, 0x00, 0x86, 0x0b, 0x00, 0x80, 0x0b,
3071 0x0b, 0x00, 0x80, 0x0b, 0x02, 0x83, 0x0b, 0x01,3107 0x02, 0x83, 0x0b, 0x01, 0x88, 0x0b, 0x01, 0x81,
3072 0x88, 0x0b, 0x01, 0x81, 0x0b, 0x01, 0x83, 0x0b,3108 0x0b, 0x01, 0x83, 0x0b, 0x07, 0x80, 0x0b, 0x03,
3073 0x07, 0x80, 0x0b, 0x03, 0x81, 0x0b, 0x00, 0x84,3109 0x81, 0x0b, 0x00, 0x84, 0x0b, 0x01, 0x98, 0x0b,
3074 0x0b, 0x01, 0x98, 0x0b, 0x01, 0x82, 0x2c, 0x00,3110 0x01, 0x82, 0x2e, 0x00, 0x85, 0x2e, 0x03, 0x81,
3075 0x85, 0x2c, 0x03, 0x81, 0x2c, 0x01, 0x95, 0x2c,3111 0x2e, 0x01, 0x95, 0x2e, 0x00, 0x86, 0x2e, 0x00,
3076 0x00, 0x86, 0x2c, 0x00, 0x81, 0x2c, 0x00, 0x81,3112 0x81, 0x2e, 0x00, 0x81, 0x2e, 0x00, 0x81, 0x2e,
3077 0x2c, 0x00, 0x81, 0x2c, 0x01, 0x80, 0x2c, 0x00,3113 0x01, 0x80, 0x2e, 0x00, 0x84, 0x2e, 0x03, 0x81,
3078 0x84, 0x2c, 0x03, 0x81, 0x2c, 0x01, 0x82, 0x2c,3114 0x2e, 0x01, 0x82, 0x2e, 0x02, 0x80, 0x2e, 0x06,
3079 0x02, 0x80, 0x2c, 0x06, 0x83, 0x2c, 0x00, 0x80,3115 0x83, 0x2e, 0x00, 0x80, 0x2e, 0x06, 0x90, 0x2e,
3080 0x2c, 0x06, 0x90, 0x2c, 0x09, 0x82, 0x2a, 0x00,3116 0x09, 0x82, 0x2c, 0x00, 0x88, 0x2c, 0x00, 0x82,
3081 0x88, 0x2a, 0x00, 0x82, 0x2a, 0x00, 0x95, 0x2a,3117 0x2c, 0x00, 0x95, 0x2c, 0x00, 0x86, 0x2c, 0x00,
3082 0x00, 0x86, 0x2a, 0x00, 0x81, 0x2a, 0x00, 0x84,3118 0x81, 0x2c, 0x00, 0x84, 0x2c, 0x01, 0x89, 0x2c,
3083 0x2a, 0x01, 0x89, 0x2a, 0x00, 0x82, 0x2a, 0x00,3119 0x00, 0x82, 0x2c, 0x00, 0x82, 0x2c, 0x01, 0x80,
3084 0x82, 0x2a, 0x01, 0x80, 0x2a, 0x0e, 0x83, 0x2a,3120 0x2c, 0x0e, 0x83, 0x2c, 0x01, 0x8b, 0x2c, 0x06,
3085 0x01, 0x8b, 0x2a, 0x06, 0x86, 0x2a, 0x00, 0x82,3121 0x86, 0x2c, 0x00, 0x82, 0x70, 0x00, 0x87, 0x70,
3086 0x6d, 0x00, 0x87, 0x6d, 0x01, 0x81, 0x6d, 0x01,3122 0x01, 0x81, 0x70, 0x01, 0x95, 0x70, 0x00, 0x86,
3087 0x95, 0x6d, 0x00, 0x86, 0x6d, 0x00, 0x81, 0x6d,3123 0x70, 0x00, 0x81, 0x70, 0x00, 0x84, 0x70, 0x01,
3088 0x00, 0x84, 0x6d, 0x01, 0x88, 0x6d, 0x01, 0x81,3124 0x88, 0x70, 0x01, 0x81, 0x70, 0x01, 0x82, 0x70,
3089 0x6d, 0x01, 0x82, 0x6d, 0x07, 0x81, 0x6d, 0x03,3125 0x06, 0x82, 0x70, 0x03, 0x81, 0x70, 0x00, 0x84,
3090 0x81, 0x6d, 0x00, 0x84, 0x6d, 0x01, 0x91, 0x6d,3126 0x70, 0x01, 0x91, 0x70, 0x09, 0x81, 0x8e, 0x00,
3091 0x09, 0x81, 0x8b, 0x00, 0x85, 0x8b, 0x02, 0x82,3127 0x85, 0x8e, 0x02, 0x82, 0x8e, 0x00, 0x83, 0x8e,
3092 0x8b, 0x00, 0x83, 0x8b, 0x02, 0x81, 0x8b, 0x00,3128 0x02, 0x81, 0x8e, 0x00, 0x80, 0x8e, 0x00, 0x81,
3093 0x80, 0x8b, 0x00, 0x81, 0x8b, 0x02, 0x81, 0x8b,3129 0x8e, 0x02, 0x81, 0x8e, 0x02, 0x82, 0x8e, 0x02,
3094 0x02, 0x82, 0x8b, 0x02, 0x8b, 0x8b, 0x03, 0x84,3130 0x8b, 0x8e, 0x03, 0x84, 0x8e, 0x02, 0x82, 0x8e,
3095 0x8b, 0x02, 0x82, 0x8b, 0x00, 0x83, 0x8b, 0x01,3131 0x00, 0x83, 0x8e, 0x01, 0x80, 0x8e, 0x05, 0x80,
3096 0x80, 0x8b, 0x05, 0x80, 0x8b, 0x0d, 0x94, 0x8b,3132 0x8e, 0x0d, 0x94, 0x8e, 0x04, 0x8c, 0x90, 0x00,
3097 0x04, 0x8c, 0x8d, 0x00, 0x82, 0x8d, 0x00, 0x96,3133 0x82, 0x90, 0x00, 0x96, 0x90, 0x00, 0x8f, 0x90,
3098 0x8d, 0x00, 0x8f, 0x8d, 0x02, 0x87, 0x8d, 0x00,3134 0x02, 0x87, 0x90, 0x00, 0x82, 0x90, 0x00, 0x83,
3099 0x82, 0x8d, 0x00, 0x83, 0x8d, 0x06, 0x81, 0x8d,3135 0x90, 0x06, 0x81, 0x90, 0x00, 0x82, 0x90, 0x04,
3100 0x00, 0x82, 0x8d, 0x04, 0x83, 0x8d, 0x01, 0x89,3136 0x83, 0x90, 0x01, 0x89, 0x90, 0x06, 0x88, 0x90,
3101 0x8d, 0x06, 0x88, 0x8d, 0x8c, 0x3a, 0x00, 0x82,3137 0x8c, 0x3c, 0x00, 0x82, 0x3c, 0x00, 0x96, 0x3c,
3102 0x3a, 0x00, 0x96, 0x3a, 0x00, 0x89, 0x3a, 0x00,3138 0x00, 0x89, 0x3c, 0x00, 0x84, 0x3c, 0x01, 0x88,
3103 0x84, 0x3a, 0x01, 0x88, 0x3a, 0x00, 0x82, 0x3a,3139 0x3c, 0x00, 0x82, 0x3c, 0x00, 0x83, 0x3c, 0x06,
3104 0x00, 0x83, 0x3a, 0x06, 0x81, 0x3a, 0x06, 0x80,3140 0x81, 0x3c, 0x06, 0x80, 0x3c, 0x00, 0x83, 0x3c,
3105 0x3a, 0x00, 0x83, 0x3a, 0x01, 0x89, 0x3a, 0x00,3141 0x01, 0x89, 0x3c, 0x00, 0x81, 0x3c, 0x0c, 0x8c,
3106 0x81, 0x3a, 0x0c, 0x83, 0x4c, 0x00, 0x87, 0x4c,3142 0x4f, 0x00, 0x82, 0x4f, 0x00, 0xb2, 0x4f, 0x00,
3107 0x00, 0x82, 0x4c, 0x00, 0xb2, 0x4c, 0x00, 0x82,3143 0x82, 0x4f, 0x00, 0x85, 0x4f, 0x03, 0x8f, 0x4f,
3108 0x4c, 0x00, 0x85, 0x4c, 0x03, 0x8f, 0x4c, 0x01,3144 0x01, 0x99, 0x4f, 0x00, 0x82, 0x81, 0x00, 0x91,
3109 0x99, 0x4c, 0x01, 0x81, 0x7e, 0x00, 0x91, 0x7e,3145 0x81, 0x02, 0x97, 0x81, 0x00, 0x88, 0x81, 0x00,
3110 0x02, 0x97, 0x7e, 0x00, 0x88, 0x7e, 0x00, 0x80,3146 0x80, 0x81, 0x01, 0x86, 0x81, 0x02, 0x80, 0x81,
3111 0x7e, 0x01, 0x86, 0x7e, 0x02, 0x80, 0x7e, 0x03,3147 0x03, 0x85, 0x81, 0x00, 0x80, 0x81, 0x00, 0x87,
3112 0x85, 0x7e, 0x00, 0x80, 0x7e, 0x00, 0x87, 0x7e,3148 0x81, 0x05, 0x89, 0x81, 0x01, 0x82, 0x81, 0x0b,
3113 0x05, 0x89, 0x7e, 0x01, 0x82, 0x7e, 0x0b, 0xb9,3149 0xb9, 0x92, 0x03, 0x80, 0x19, 0x9b, 0x92, 0x24,
3114 0x8f, 0x03, 0x80, 0x18, 0x9b, 0x8f, 0x24, 0x81,3150 0x81, 0x44, 0x00, 0x80, 0x44, 0x00, 0x84, 0x44,
3115 0x41, 0x00, 0x80, 0x41, 0x00, 0x84, 0x41, 0x00,3151 0x00, 0x97, 0x44, 0x00, 0x80, 0x44, 0x00, 0x96,
3116 0x97, 0x41, 0x00, 0x80, 0x41, 0x00, 0x96, 0x41,3152 0x44, 0x01, 0x84, 0x44, 0x00, 0x80, 0x44, 0x00,
3117 0x01, 0x84, 0x41, 0x00, 0x80, 0x41, 0x00, 0x85,3153 0x85, 0x44, 0x01, 0x89, 0x44, 0x01, 0x83, 0x44,
3118 0x41, 0x01, 0x89, 0x41, 0x01, 0x83, 0x41, 0x1f,3154 0x1f, 0xc7, 0x93, 0x00, 0xa3, 0x93, 0x03, 0xa6,
3119 0xc7, 0x90, 0x00, 0xa3, 0x90, 0x03, 0xa6, 0x90,3155 0x93, 0x00, 0xa3, 0x93, 0x00, 0x8e, 0x93, 0x00,
3120 0x00, 0xa3, 0x90, 0x00, 0x8e, 0x90, 0x00, 0x86,3156 0x86, 0x93, 0x83, 0x19, 0x81, 0x93, 0x24, 0xe0,
3121 0x90, 0x83, 0x18, 0x81, 0x90, 0x24, 0xe0, 0x3f,3157 0x3f, 0x5e, 0xa5, 0x27, 0x00, 0x80, 0x27, 0x04,
3122 0x5b, 0xa5, 0x25, 0x00, 0x80, 0x25, 0x04, 0x80,3158 0x80, 0x27, 0x01, 0xaa, 0x27, 0x80, 0x19, 0x83,
3123 0x25, 0x01, 0xaa, 0x25, 0x80, 0x18, 0x83, 0x25,3159 0x27, 0xe0, 0x9f, 0x30, 0xc8, 0x26, 0x00, 0x83,
3124 0xe0, 0x9f, 0x2e, 0xc8, 0x24, 0x00, 0x83, 0x24,3160 0x26, 0x01, 0x86, 0x26, 0x00, 0x80, 0x26, 0x00,
3125 0x01, 0x86, 0x24, 0x00, 0x80, 0x24, 0x00, 0x83,3161 0x83, 0x26, 0x01, 0xa8, 0x26, 0x00, 0x83, 0x26,
3126 0x24, 0x01, 0xa8, 0x24, 0x00, 0x83, 0x24, 0x01,3162 0x01, 0xa0, 0x26, 0x00, 0x83, 0x26, 0x01, 0x86,
3127 0xa0, 0x24, 0x00, 0x83, 0x24, 0x01, 0x86, 0x24,3163 0x26, 0x00, 0x80, 0x26, 0x00, 0x83, 0x26, 0x01,
3128 0x00, 0x80, 0x24, 0x00, 0x83, 0x24, 0x01, 0x8e,3164 0x8e, 0x26, 0x00, 0xb8, 0x26, 0x00, 0x83, 0x26,
3129 0x24, 0x00, 0xb8, 0x24, 0x00, 0x83, 0x24, 0x01,3165 0x01, 0xc2, 0x26, 0x01, 0x9f, 0x26, 0x02, 0x99,
3130 0xc2, 0x24, 0x01, 0x9f, 0x24, 0x02, 0x99, 0x24,3166 0x26, 0x05, 0xd5, 0x17, 0x01, 0x85, 0x17, 0x01,
3131 0x05, 0xd5, 0x17, 0x01, 0x85, 0x17, 0x01, 0xe2,3167 0xe2, 0x1f, 0x12, 0x9c, 0x66, 0x02, 0xca, 0x7a,
3132 0x1f, 0x12, 0x9c, 0x63, 0x02, 0xca, 0x77, 0x82,3168 0x82, 0x19, 0x8a, 0x7a, 0x06, 0x8c, 0x88, 0x00,
3133 0x18, 0x8a, 0x77, 0x06, 0x8c, 0x85, 0x00, 0x86,3169 0x86, 0x88, 0x0a, 0x94, 0x32, 0x81, 0x19, 0x08,
3134 0x85, 0x0a, 0x94, 0x30, 0x81, 0x18, 0x08, 0x93,3170 0x93, 0x11, 0x0b, 0x8c, 0x89, 0x00, 0x82, 0x89,
3135 0x11, 0x0b, 0x8c, 0x86, 0x00, 0x82, 0x86, 0x00,3171 0x00, 0x81, 0x89, 0x0b, 0xdd, 0x40, 0x01, 0x89,
3136 0x81, 0x86, 0x0b, 0xdd, 0x3e, 0x01, 0x89, 0x3e,3172 0x40, 0x05, 0x89, 0x40, 0x05, 0x81, 0x5b, 0x81,
3137 0x05, 0x89, 0x3e, 0x05, 0x81, 0x58, 0x81, 0x18,3173 0x19, 0x80, 0x5b, 0x80, 0x19, 0x88, 0x5b, 0x00,
3138 0x80, 0x58, 0x80, 0x18, 0x88, 0x58, 0x00, 0x89,3174 0x89, 0x5b, 0x05, 0xd8, 0x5b, 0x06, 0xaa, 0x5b,
3139 0x58, 0x05, 0xd8, 0x58, 0x06, 0xaa, 0x58, 0x04,3175 0x04, 0xc5, 0x12, 0x09, 0x9e, 0x47, 0x00, 0x8b,
3140 0xc5, 0x12, 0x09, 0x9e, 0x44, 0x00, 0x8b, 0x44,3176 0x47, 0x03, 0x8b, 0x47, 0x03, 0x80, 0x47, 0x02,
3141 0x03, 0x8b, 0x44, 0x03, 0x80, 0x44, 0x02, 0x8b,3177 0x8b, 0x47, 0x9d, 0x8a, 0x01, 0x84, 0x8a, 0x0a,
3142 0x44, 0x9d, 0x87, 0x01, 0x84, 0x87, 0x0a, 0xab,3178 0xab, 0x61, 0x03, 0x99, 0x61, 0x05, 0x8a, 0x61,
3143 0x5e, 0x03, 0x99, 0x5e, 0x05, 0x8a, 0x5e, 0x02,3179 0x02, 0x81, 0x61, 0x9f, 0x40, 0x9b, 0x10, 0x01,
3144 0x81, 0x5e, 0x9f, 0x3e, 0x9b, 0x10, 0x01, 0x81,3180 0x81, 0x10, 0xbe, 0x8b, 0x00, 0x9c, 0x8b, 0x01,
3145 0x10, 0xbe, 0x88, 0x00, 0x9c, 0x88, 0x01, 0x8a,3181 0x8a, 0x8b, 0x05, 0x89, 0x8b, 0x05, 0x8d, 0x8b,
3146 0x88, 0x05, 0x89, 0x88, 0x05, 0x8d, 0x88, 0x01,3182 0x01, 0x90, 0x37, 0x3e, 0xcb, 0x07, 0x03, 0xac,
3147 0x8e, 0x35, 0x40, 0xcb, 0x07, 0x03, 0xac, 0x07,3183 0x07, 0x02, 0xbf, 0x85, 0xb3, 0x0a, 0x07, 0x83,
3148 0x02, 0xbf, 0x82, 0xb3, 0x0a, 0x07, 0x83, 0x0a,3184 0x0a, 0xb7, 0x46, 0x02, 0x8e, 0x46, 0x02, 0x82,
3149 0xb7, 0x43, 0x02, 0x8e, 0x43, 0x02, 0x82, 0x43,3185 0x46, 0xaf, 0x67, 0x88, 0x1d, 0x06, 0xaa, 0x27,
3150 0xaf, 0x64, 0x88, 0x1c, 0x06, 0xaa, 0x25, 0x01,3186 0x01, 0x82, 0x27, 0x87, 0x85, 0x07, 0x82, 0x37,
3151 0x82, 0x25, 0x87, 0x82, 0x07, 0x82, 0x35, 0x80,3187 0x80, 0x19, 0x8c, 0x37, 0x80, 0x19, 0x86, 0x37,
3152 0x18, 0x8c, 0x35, 0x80, 0x18, 0x86, 0x35, 0x83,3188 0x83, 0x19, 0x80, 0x37, 0x85, 0x19, 0x80, 0x37,
3153 0x18, 0x80, 0x35, 0x85, 0x18, 0x80, 0x35, 0x82,3189 0x82, 0x19, 0x81, 0x37, 0x80, 0x19, 0x04, 0xa5,
3154 0x18, 0x81, 0x35, 0x80, 0x18, 0x04, 0xa5, 0x42,3190 0x45, 0x84, 0x2b, 0x80, 0x1d, 0xb0, 0x45, 0x84,
3155 0x84, 0x29, 0x80, 0x1c, 0xb0, 0x42, 0x84, 0x29,3191 0x2b, 0x83, 0x45, 0x84, 0x2b, 0x8c, 0x45, 0x80,
3156 0x83, 0x42, 0x84, 0x29, 0x8c, 0x42, 0x80, 0x1c,3192 0x1d, 0xc5, 0x45, 0x80, 0x2b, 0xb9, 0x37, 0x00,
3157 0xc5, 0x42, 0x80, 0x29, 0xb9, 0x35, 0x00, 0x84,3193 0x84, 0x37, 0xe0, 0x9f, 0x45, 0x95, 0x2b, 0x01,
3158 0x35, 0xe0, 0x9f, 0x42, 0x95, 0x29, 0x01, 0x85,3194 0x85, 0x2b, 0x01, 0xa5, 0x2b, 0x01, 0x85, 0x2b,
3159 0x29, 0x01, 0xa5, 0x29, 0x01, 0x85, 0x29, 0x01,3195 0x01, 0x87, 0x2b, 0x00, 0x80, 0x2b, 0x00, 0x80,
3160 0x87, 0x29, 0x00, 0x80, 0x29, 0x00, 0x80, 0x29,3196 0x2b, 0x00, 0x80, 0x2b, 0x00, 0x9e, 0x2b, 0x01,
3161 0x00, 0x80, 0x29, 0x00, 0x9e, 0x29, 0x01, 0xb4,3197 0xb4, 0x2b, 0x00, 0x8e, 0x2b, 0x00, 0x8d, 0x2b,
3162 0x29, 0x00, 0x8e, 0x29, 0x00, 0x8d, 0x29, 0x01,3198 0x01, 0x85, 0x2b, 0x00, 0x92, 0x2b, 0x01, 0x82,
3163 0x85, 0x29, 0x00, 0x92, 0x29, 0x01, 0x82, 0x29,3199 0x2b, 0x00, 0x88, 0x2b, 0x00, 0x8b, 0x19, 0x81,
3164 0x00, 0x88, 0x29, 0x00, 0x8b, 0x18, 0x81, 0x35,3200 0x37, 0xd6, 0x19, 0x00, 0x8a, 0x19, 0x80, 0x45,
3165 0xd6, 0x18, 0x00, 0x8a, 0x18, 0x80, 0x42, 0x01,3201 0x01, 0x8a, 0x19, 0x80, 0x45, 0x8e, 0x19, 0x00,
3166 0x8a, 0x18, 0x80, 0x42, 0x8e, 0x18, 0x00, 0x8c,3202 0x8c, 0x45, 0x02, 0x9f, 0x19, 0x0f, 0xa0, 0x37,
3167 0x42, 0x02, 0x9f, 0x18, 0x0f, 0xa0, 0x35, 0x0e,3203 0x0e, 0xa5, 0x19, 0x80, 0x2b, 0x82, 0x19, 0x81,
3168 0xa5, 0x18, 0x80, 0x29, 0x82, 0x18, 0x81, 0x42,3204 0x45, 0x85, 0x19, 0x80, 0x45, 0x9a, 0x19, 0x80,
3169 0x85, 0x18, 0x80, 0x42, 0x9a, 0x18, 0x80, 0x42,3205 0x45, 0x90, 0x19, 0xa8, 0x45, 0x82, 0x19, 0x03,
3170 0x90, 0x18, 0xa8, 0x42, 0x82, 0x18, 0x03, 0xe2,3206 0xe2, 0x36, 0x19, 0x18, 0x8a, 0x19, 0x14, 0xe3,
3171 0x36, 0x18, 0x18, 0x8a, 0x18, 0x14, 0xe3, 0x3f,3207 0x3f, 0x19, 0xe0, 0x9f, 0x0f, 0xe2, 0x13, 0x19,
3172 0x18, 0xe0, 0x9f, 0x0f, 0xe2, 0x13, 0x18, 0x01,3208 0x01, 0x9f, 0x19, 0x00, 0xe0, 0x08, 0x19, 0xae,
3173 0x9f, 0x18, 0x01, 0xe0, 0x07, 0x18, 0xae, 0x26,3209 0x28, 0x00, 0xae, 0x28, 0x00, 0x9f, 0x45, 0xe0,
3174 0x00, 0xae, 0x26, 0x00, 0x9f, 0x42, 0xe0, 0x13,3210 0x13, 0x1a, 0x04, 0x86, 0x1a, 0xa5, 0x27, 0x00,
3175 0x19, 0x04, 0x86, 0x19, 0xa5, 0x25, 0x00, 0x80,3211 0x80, 0x27, 0x04, 0x80, 0x27, 0x01, 0xb7, 0x94,
3176 0x25, 0x04, 0x80, 0x25, 0x01, 0xb7, 0x91, 0x06,3212 0x06, 0x81, 0x94, 0x0d, 0x80, 0x94, 0x96, 0x26,
3177 0x81, 0x91, 0x0d, 0x80, 0x91, 0x96, 0x24, 0x08,3213 0x08, 0x86, 0x26, 0x00, 0x86, 0x26, 0x00, 0x86,
3178 0x86, 0x24, 0x00, 0x86, 0x24, 0x00, 0x86, 0x24,3214 0x26, 0x00, 0x86, 0x26, 0x00, 0x86, 0x26, 0x00,
3179 0x00, 0x86, 0x24, 0x00, 0x86, 0x24, 0x00, 0x86,3215 0x86, 0x26, 0x00, 0x86, 0x26, 0x00, 0x86, 0x26,
3180 0x24, 0x00, 0x86, 0x24, 0x00, 0x86, 0x24, 0x00,3216 0x00, 0x9f, 0x1d, 0xd2, 0x19, 0x2c, 0x99, 0x2f,
3181 0x9f, 0x1c, 0xcf, 0x18, 0x2f, 0x99, 0x2d, 0x00,3217 0x00, 0xd8, 0x2f, 0x0b, 0xe0, 0x75, 0x2f, 0x19,
3182 0xd8, 0x2d, 0x0b, 0xe0, 0x75, 0x2d, 0x19, 0x8b,3218 0x8b, 0x19, 0x03, 0x84, 0x19, 0x80, 0x2f, 0x80,
3183 0x18, 0x03, 0x84, 0x18, 0x80, 0x2d, 0x80, 0x18,3219 0x19, 0x80, 0x2f, 0x98, 0x19, 0x88, 0x2f, 0x83,
3184 0x80, 0x2d, 0x98, 0x18, 0x88, 0x2d, 0x83, 0x35,3220 0x37, 0x81, 0x30, 0x87, 0x19, 0x83, 0x2f, 0x83,
3185 0x81, 0x2e, 0x87, 0x18, 0x83, 0x2d, 0x83, 0x18,3221 0x19, 0x00, 0xd5, 0x35, 0x01, 0x81, 0x37, 0x81,
3186 0x00, 0xd5, 0x33, 0x01, 0x81, 0x35, 0x81, 0x18,3222 0x19, 0x82, 0x35, 0x80, 0x19, 0xd9, 0x3d, 0x81,
3187 0x82, 0x33, 0x80, 0x18, 0xd9, 0x3b, 0x81, 0x18,3223 0x19, 0x82, 0x3d, 0x04, 0xaa, 0x0d, 0x00, 0xdd,
3188 0x82, 0x3b, 0x04, 0xaa, 0x0d, 0x00, 0xdd, 0x2e,3224 0x30, 0x00, 0x8f, 0x19, 0x9f, 0x0d, 0xa3, 0x19,
3189 0x00, 0x8f, 0x18, 0x9a, 0x0d, 0x04, 0xa3, 0x18,3225 0x0b, 0x8f, 0x3d, 0x9e, 0x30, 0x00, 0xbf, 0x19,
3190 0x0b, 0x8f, 0x3b, 0x9e, 0x2e, 0x00, 0xbf, 0x18,3226 0x9e, 0x30, 0xd0, 0x19, 0xae, 0x3d, 0x80, 0x19,
3191 0x9e, 0x2e, 0xd0, 0x18, 0xae, 0x3b, 0x80, 0x18,3227 0xd7, 0x3d, 0xe0, 0x47, 0x19, 0xf0, 0x09, 0x5f,
3192 0xd7, 0x3b, 0xe0, 0x47, 0x18, 0xf0, 0x09, 0x55,3228 0x2f, 0xbf, 0x19, 0xf0, 0x41, 0x9c, 0x2f, 0x02,
3193 0x2d, 0x09, 0xbf, 0x18, 0xf0, 0x41, 0x8f, 0x2d,3229 0xe4, 0x2c, 0x9b, 0x02, 0xb6, 0x9b, 0x08, 0xaf,
3194 0x0f, 0xe4, 0x2c, 0x97, 0x02, 0xb6, 0x97, 0x08,3230 0x4a, 0xe0, 0xcb, 0x97, 0x13, 0xdf, 0x1d, 0xd7,
3195 0xaf, 0x47, 0xe0, 0xcb, 0x94, 0x13, 0xdf, 0x1c,3231 0x08, 0x07, 0xa1, 0x19, 0xe0, 0x05, 0x45, 0x82,
3196 0xd7, 0x08, 0x07, 0xa1, 0x18, 0xe0, 0x05, 0x42,3232 0x19, 0xb4, 0x45, 0x01, 0x88, 0x45, 0x29, 0x8a,
3197 0x82, 0x18, 0xb4, 0x42, 0x01, 0x84, 0x42, 0x2f,3233 0x45, 0xac, 0x86, 0x02, 0x89, 0x19, 0x05, 0xb7,
3198 0x88, 0x42, 0xab, 0x83, 0x03, 0x89, 0x18, 0x05,3234 0x76, 0x07, 0xc5, 0x7c, 0x07, 0x8b, 0x7c, 0x05,
3199 0xb7, 0x73, 0x07, 0xc5, 0x79, 0x07, 0x8b, 0x79,3235 0x9f, 0x1f, 0xad, 0x3e, 0x80, 0x19, 0x80, 0x3e,
3200 0x05, 0x9f, 0x1e, 0xad, 0x3c, 0x80, 0x18, 0x80,3236 0xa3, 0x79, 0x0a, 0x80, 0x79, 0x9c, 0x30, 0x02,
3201 0x3c, 0xa3, 0x76, 0x0a, 0x80, 0x76, 0x9c, 0x2e,3237 0xcd, 0x3a, 0x00, 0x80, 0x19, 0x89, 0x3a, 0x03,
3202 0x02, 0xcd, 0x38, 0x00, 0x80, 0x18, 0x89, 0x38,3238 0x81, 0x3a, 0x9e, 0x5e, 0x00, 0xb6, 0x16, 0x08,
3203 0x03, 0x81, 0x38, 0x9e, 0x5b, 0x00, 0xb6, 0x16,3239 0x8d, 0x16, 0x01, 0x89, 0x16, 0x01, 0x83, 0x16,
3204 0x08, 0x8d, 0x16, 0x01, 0x89, 0x16, 0x01, 0x83,3240 0x9f, 0x5e, 0xc2, 0x8c, 0x17, 0x84, 0x8c, 0x96,
3205 0x16, 0x9f, 0x5b, 0xc2, 0x89, 0x17, 0x84, 0x89,3241 0x55, 0x09, 0x85, 0x26, 0x01, 0x85, 0x26, 0x01,
3206 0x96, 0x52, 0x09, 0x85, 0x24, 0x01, 0x85, 0x24,3242 0x85, 0x26, 0x08, 0x86, 0x26, 0x00, 0x86, 0x26,
3207 0x01, 0x85, 0x24, 0x08, 0x86, 0x24, 0x00, 0x86,3243 0x00, 0xaa, 0x45, 0x80, 0x19, 0x88, 0x45, 0x80,
3208 0x24, 0x00, 0xaa, 0x42, 0x80, 0x18, 0x88, 0x42,3244 0x2b, 0x83, 0x45, 0x81, 0x19, 0x03, 0xcf, 0x17,
3209 0x80, 0x29, 0x81, 0x42, 0x07, 0xcf, 0x17, 0xad,3245 0xad, 0x55, 0x01, 0x89, 0x55, 0x05, 0xf0, 0x1b,
3210 0x52, 0x01, 0x89, 0x52, 0x05, 0xf0, 0x1b, 0x43,3246 0x43, 0x30, 0x0b, 0x96, 0x30, 0x03, 0xb0, 0x30,
3211 0x2e, 0x0b, 0x96, 0x2e, 0x03, 0xb0, 0x2e, 0x70,3247 0x70, 0x10, 0xa3, 0xe1, 0x0d, 0x2f, 0x01, 0xe0,
3212 0x10, 0xa3, 0xe1, 0x0d, 0x2d, 0x01, 0xe0, 0x09,3248 0x09, 0x2f, 0x25, 0x86, 0x45, 0x0b, 0x84, 0x05,
3213 0x2d, 0x25, 0x86, 0x42, 0x0b, 0x84, 0x05, 0x04,3249 0x04, 0x99, 0x34, 0x00, 0x84, 0x34, 0x00, 0x80,
3214 0x99, 0x32, 0x00, 0x84, 0x32, 0x00, 0x80, 0x32,3250 0x34, 0x00, 0x81, 0x34, 0x00, 0x81, 0x34, 0x00,
3215 0x00, 0x81, 0x32, 0x00, 0x81, 0x32, 0x00, 0x89,3251 0x89, 0x34, 0xe0, 0x11, 0x04, 0x10, 0xe1, 0x0a,
3216 0x32, 0xe0, 0x11, 0x04, 0x10, 0xe1, 0x0a, 0x04,3252 0x04, 0x81, 0x19, 0x0f, 0xbf, 0x04, 0x01, 0xb5,
3217 0x81, 0x18, 0x0f, 0xbf, 0x04, 0x01, 0xb5, 0x04,3253 0x04, 0x27, 0x8d, 0x04, 0x01, 0x8f, 0x37, 0x89,
3218 0x27, 0x8d, 0x04, 0x01, 0x8f, 0x35, 0x89, 0x18,3254 0x19, 0x05, 0x8d, 0x37, 0x81, 0x1d, 0xa2, 0x19,
3219 0x05, 0x8d, 0x35, 0x81, 0x1c, 0xa2, 0x18, 0x00,3255 0x00, 0x92, 0x19, 0x00, 0x83, 0x19, 0x03, 0x84,
3220 0x92, 0x18, 0x00, 0x83, 0x18, 0x03, 0x84, 0x04,3256 0x04, 0x00, 0xe0, 0x26, 0x04, 0x01, 0x80, 0x19,
3221 0x00, 0xe0, 0x26, 0x04, 0x01, 0x80, 0x18, 0x00,3257 0x00, 0x9f, 0x19, 0x99, 0x45, 0x85, 0x19, 0x99,
3222 0x9f, 0x18, 0x99, 0x42, 0x85, 0x18, 0x99, 0x42,3258 0x45, 0x8a, 0x19, 0x89, 0x3d, 0x80, 0x19, 0xac,
3223 0x8a, 0x18, 0x89, 0x3b, 0x80, 0x18, 0xac, 0x3b,3259 0x3d, 0x81, 0x19, 0x9e, 0x30, 0x02, 0x85, 0x30,
3224 0x81, 0x18, 0x9e, 0x2e, 0x02, 0x85, 0x2e, 0x01,3260 0x01, 0x85, 0x30, 0x01, 0x85, 0x30, 0x01, 0x82,
3225 0x85, 0x2e, 0x01, 0x85, 0x2e, 0x01, 0x82, 0x2e,3261 0x30, 0x02, 0x86, 0x19, 0x00, 0x86, 0x19, 0x09,
3226 0x02, 0x86, 0x18, 0x00, 0x86, 0x18, 0x09, 0x84,3262 0x84, 0x19, 0x01, 0x8b, 0x49, 0x00, 0x99, 0x49,
3227 0x18, 0x01, 0x8b, 0x46, 0x00, 0x99, 0x46, 0x00,3263 0x00, 0x92, 0x49, 0x00, 0x81, 0x49, 0x00, 0x8e,
3228 0x92, 0x46, 0x00, 0x81, 0x46, 0x00, 0x8e, 0x46,3264 0x49, 0x01, 0x8d, 0x49, 0x21, 0xe0, 0x1a, 0x49,
3229 0x01, 0x8d, 0x46, 0x21, 0xe0, 0x1a, 0x46, 0x04,3265 0x04, 0x82, 0x19, 0x03, 0xac, 0x19, 0x02, 0x88,
3230 0x82, 0x18, 0x03, 0xac, 0x18, 0x02, 0x88, 0x18,3266 0x19, 0xce, 0x2b, 0x00, 0x8c, 0x19, 0x02, 0x80,
3231 0xce, 0x29, 0x00, 0x8b, 0x18, 0x03, 0x80, 0x29,3267 0x2b, 0x2e, 0xac, 0x19, 0x80, 0x37, 0x60, 0x21,
3232 0x2e, 0xac, 0x18, 0x80, 0x35, 0x60, 0x21, 0x9c,3268 0x9c, 0x4b, 0x02, 0xb0, 0x13, 0x0e, 0x80, 0x37,
3233 0x48, 0x02, 0xb0, 0x13, 0x0e, 0x80, 0x35, 0x9a,3269 0x9a, 0x19, 0x03, 0xa3, 0x69, 0x08, 0x82, 0x69,
3234 0x18, 0x03, 0xa3, 0x66, 0x08, 0x82, 0x66, 0x9a,3270 0x9a, 0x29, 0x04, 0xaa, 0x6b, 0x04, 0x9d, 0x96,
3235 0x27, 0x04, 0xaa, 0x68, 0x04, 0x9d, 0x93, 0x00,3271 0x00, 0x80, 0x96, 0xa3, 0x6c, 0x03, 0x8d, 0x6c,
3236 0x80, 0x93, 0xa3, 0x69, 0x03, 0x8d, 0x69, 0x29,3272 0x29, 0xcf, 0x1e, 0xaf, 0x7e, 0x9d, 0x72, 0x01,
3237 0xcf, 0x1d, 0xaf, 0x7b, 0x9d, 0x6f, 0x01, 0x89,3273 0x89, 0x72, 0x05, 0xa3, 0x71, 0x03, 0xa3, 0x71,
3238 0x6f, 0x05, 0xa3, 0x6e, 0x03, 0xa3, 0x6e, 0x03,3274 0x03, 0xa7, 0x24, 0x07, 0xb3, 0x14, 0x0a, 0x80,
3239 0xa7, 0x22, 0x07, 0xb3, 0x14, 0x0a, 0x80, 0x14,3275 0x14, 0x60, 0x2f, 0xe0, 0xd6, 0x48, 0x08, 0x95,
3240 0x60, 0x2f, 0xe0, 0xd6, 0x45, 0x08, 0x95, 0x45,3276 0x48, 0x09, 0x87, 0x48, 0x60, 0x37, 0x85, 0x1c,
3241 0x09, 0x87, 0x45, 0x60, 0x37, 0x85, 0x1b, 0x01,3277 0x01, 0x80, 0x1c, 0x00, 0xab, 0x1c, 0x00, 0x81,
3242 0x80, 0x1b, 0x00, 0xab, 0x1b, 0x00, 0x81, 0x1b,3278 0x1c, 0x02, 0x80, 0x1c, 0x01, 0x80, 0x1c, 0x95,
3243 0x02, 0x80, 0x1b, 0x01, 0x80, 0x1b, 0x95, 0x34,3279 0x36, 0x00, 0x88, 0x36, 0x9f, 0x74, 0x9e, 0x5f,
3244 0x00, 0x88, 0x34, 0x9f, 0x71, 0x9e, 0x5c, 0x07,3280 0x07, 0x88, 0x5f, 0x2f, 0x92, 0x33, 0x00, 0x81,
3245 0x88, 0x5c, 0x2f, 0x92, 0x31, 0x00, 0x81, 0x31,3281 0x33, 0x04, 0x84, 0x33, 0x9b, 0x77, 0x02, 0x80,
3246 0x04, 0x84, 0x31, 0x9b, 0x74, 0x02, 0x80, 0x74,3282 0x77, 0x99, 0x4c, 0x04, 0x80, 0x4c, 0x3f, 0x9f,
3247 0x99, 0x49, 0x04, 0x80, 0x49, 0x3f, 0x9f, 0x55,3283 0x58, 0x97, 0x57, 0x03, 0x93, 0x57, 0x01, 0xad,
3248 0x97, 0x54, 0x03, 0x93, 0x54, 0x01, 0xad, 0x54,3284 0x57, 0x83, 0x3f, 0x00, 0x81, 0x3f, 0x04, 0x87,
3249 0x83, 0x3d, 0x00, 0x81, 0x3d, 0x04, 0x87, 0x3d,3285 0x3f, 0x00, 0x82, 0x3f, 0x00, 0x9c, 0x3f, 0x01,
3250 0x00, 0x82, 0x3d, 0x00, 0x9c, 0x3d, 0x01, 0x82,3286 0x82, 0x3f, 0x03, 0x89, 0x3f, 0x06, 0x88, 0x3f,
3251 0x3d, 0x03, 0x89, 0x3d, 0x06, 0x88, 0x3d, 0x06,3287 0x06, 0x9f, 0x6e, 0x9f, 0x6a, 0x1f, 0xa6, 0x51,
3252 0x9f, 0x6b, 0x9f, 0x67, 0x1f, 0xa6, 0x4e, 0x03,3288 0x03, 0x8b, 0x51, 0x08, 0xb5, 0x06, 0x02, 0x86,
3253 0x8b, 0x4e, 0x08, 0xb5, 0x06, 0x02, 0x86, 0x06,3289 0x06, 0x95, 0x39, 0x01, 0x87, 0x39, 0x92, 0x38,
3254 0x95, 0x37, 0x01, 0x87, 0x37, 0x92, 0x36, 0x04,3290 0x04, 0x87, 0x38, 0x91, 0x78, 0x06, 0x83, 0x78,
3255 0x87, 0x36, 0x91, 0x75, 0x06, 0x83, 0x75, 0x0b,3291 0x0b, 0x86, 0x78, 0x4f, 0xc8, 0x6f, 0x36, 0xb2,
3256 0x86, 0x75, 0x4f, 0xc8, 0x6c, 0x36, 0xb2, 0x65,3292 0x68, 0x0c, 0xb2, 0x68, 0x06, 0x85, 0x68, 0xa7,
3257 0x0c, 0xb2, 0x65, 0x06, 0x85, 0x65, 0xa7, 0x2f,3293 0x31, 0x07, 0x89, 0x31, 0x60, 0xc5, 0x9e, 0x04,
3258 0x07, 0x89, 0x2f, 0x60, 0xc5, 0x9e, 0x04, 0x60,3294 0x00, 0xa9, 0x9a, 0x00, 0x82, 0x9a, 0x01, 0x81,
3259 0x20, 0xa7, 0x6a, 0x07, 0xa9, 0x7f, 0x60, 0x25,3295 0x9a, 0x4d, 0xa7, 0x6d, 0x07, 0xa9, 0x82, 0x55,
3260 0x96, 0x23, 0x08, 0xcd, 0x0e, 0x03, 0x9d, 0x0e,3296 0x9b, 0x18, 0x13, 0x96, 0x25, 0x08, 0xcd, 0x0e,
3261 0x0e, 0x80, 0x0e, 0xc1, 0x39, 0x0a, 0x80, 0x39,3297 0x03, 0x9d, 0x0e, 0x0e, 0x80, 0x0e, 0xc1, 0x3b,
3262 0x01, 0x98, 0x80, 0x06, 0x89, 0x80, 0x05, 0xb4,3298 0x0a, 0x80, 0x3b, 0x01, 0x98, 0x83, 0x06, 0x89,
3263 0x15, 0x00, 0x90, 0x15, 0x08, 0xa6, 0x4b, 0x08,3299 0x83, 0x05, 0xb4, 0x15, 0x00, 0x91, 0x15, 0x07,
3264 0xcd, 0x7a, 0x01, 0x8f, 0x7a, 0x00, 0x93, 0x7e,3300 0xa6, 0x4e, 0x08, 0xdf, 0x7d, 0x00, 0x93, 0x81,
3265 0x0a, 0x91, 0x3f, 0x00, 0xab, 0x3f, 0x40, 0x86,3301 0x0a, 0x91, 0x41, 0x00, 0xab, 0x41, 0x40, 0x86,
3266 0x5a, 0x00, 0x80, 0x5a, 0x00, 0x83, 0x5a, 0x00,3302 0x5d, 0x00, 0x80, 0x5d, 0x00, 0x83, 0x5d, 0x00,
3267 0x8e, 0x5a, 0x00, 0x8a, 0x5a, 0x05, 0xba, 0x40,3303 0x8e, 0x5d, 0x00, 0x8a, 0x5d, 0x05, 0xba, 0x43,
3268 0x04, 0x89, 0x40, 0x05, 0x83, 0x28, 0x00, 0x87,3304 0x04, 0x89, 0x43, 0x05, 0x83, 0x2a, 0x00, 0x87,
3269 0x28, 0x01, 0x81, 0x28, 0x01, 0x95, 0x28, 0x00,3305 0x2a, 0x01, 0x81, 0x2a, 0x01, 0x95, 0x2a, 0x00,
3270 0x86, 0x28, 0x00, 0x81, 0x28, 0x00, 0x84, 0x28,3306 0x86, 0x2a, 0x00, 0x81, 0x2a, 0x00, 0x84, 0x2a,
3271 0x00, 0x80, 0x35, 0x88, 0x28, 0x01, 0x81, 0x28,3307 0x00, 0x80, 0x37, 0x88, 0x2a, 0x01, 0x81, 0x2a,
3272 0x01, 0x82, 0x28, 0x01, 0x80, 0x28, 0x05, 0x80,3308 0x01, 0x82, 0x2a, 0x01, 0x80, 0x2a, 0x05, 0x80,
3273 0x28, 0x04, 0x86, 0x28, 0x01, 0x86, 0x28, 0x02,3309 0x2a, 0x04, 0x86, 0x2a, 0x01, 0x86, 0x2a, 0x02,
3274 0x84, 0x28, 0x60, 0x2a, 0xd9, 0x5f, 0x00, 0x80,3310 0x84, 0x2a, 0x60, 0x2a, 0xdb, 0x62, 0x00, 0x84,
3275 0x5f, 0x00, 0x82, 0x5f, 0x1f, 0xc7, 0x92, 0x07,3311 0x62, 0x1d, 0xc7, 0x95, 0x07, 0x89, 0x95, 0x60,
3276 0x89, 0x92, 0x60, 0x45, 0xb5, 0x7c, 0x01, 0xa5,3312 0x45, 0xb5, 0x7f, 0x01, 0xa5, 0x7f, 0x21, 0xc4,
3277 0x7c, 0x21, 0xc4, 0x57, 0x0a, 0x89, 0x57, 0x05,3313 0x5a, 0x0a, 0x89, 0x5a, 0x05, 0x8c, 0x5b, 0x12,
3278 0x8c, 0x58, 0x12, 0xb8, 0x8a, 0x06, 0x89, 0x8a,3314 0xb8, 0x8d, 0x06, 0x89, 0x8d, 0x35, 0x9a, 0x02,
3279 0x35, 0x9a, 0x02, 0x01, 0x8e, 0x02, 0x03, 0x8f,3315 0x01, 0x8e, 0x02, 0x03, 0x8f, 0x02, 0x60, 0x5f,
3280 0x02, 0x60, 0x5f, 0xbb, 0x1f, 0x60, 0x03, 0xd2,3316 0xbb, 0x21, 0x60, 0x03, 0xd2, 0x99, 0x0b, 0x80,
3281 0x96, 0x0b, 0x80, 0x96, 0x60, 0x3f, 0x87, 0x5d,3317 0x99, 0x86, 0x20, 0x01, 0x80, 0x20, 0x01, 0x87,
3282 0x01, 0xad, 0x5d, 0x01, 0x8a, 0x5d, 0x1a, 0xc7,3318 0x20, 0x00, 0x81, 0x20, 0x00, 0x9d, 0x20, 0x00,
3283 0x98, 0x07, 0xd2, 0x81, 0x1c, 0xb8, 0x72, 0x60,3319 0x81, 0x20, 0x01, 0x8b, 0x20, 0x08, 0x89, 0x20,
3284 0xa6, 0x88, 0x0c, 0x00, 0xac, 0x0c, 0x00, 0x8d,3320 0x45, 0x87, 0x60, 0x01, 0xad, 0x60, 0x01, 0x8a,
3285 0x0c, 0x09, 0x9c, 0x0c, 0x02, 0x9f, 0x4f, 0x01,3321 0x60, 0x1a, 0xc7, 0x9c, 0x07, 0xd2, 0x84, 0x1c,
3286 0x95, 0x4f, 0x00, 0x8d, 0x4f, 0x48, 0x86, 0x50,3322 0xb8, 0x75, 0x60, 0xa6, 0x88, 0x0c, 0x00, 0xac,
3287 0x00, 0x81, 0x50, 0x00, 0xab, 0x50, 0x02, 0x80,3323 0x0c, 0x00, 0x8d, 0x0c, 0x09, 0x9c, 0x0c, 0x02,
3288 0x50, 0x00, 0x81, 0x50, 0x00, 0x88, 0x50, 0x07,3324 0x9f, 0x52, 0x01, 0x95, 0x52, 0x00, 0x8d, 0x52,
3289 0x89, 0x50, 0x05, 0x85, 0x2b, 0x00, 0x81, 0x2b,3325 0x48, 0x86, 0x53, 0x00, 0x81, 0x53, 0x00, 0xab,
3290 0x00, 0xa4, 0x2b, 0x00, 0x81, 0x2b, 0x00, 0x85,3326 0x53, 0x02, 0x80, 0x53, 0x00, 0x81, 0x53, 0x00,
3291 0x2b, 0x06, 0x89, 0x2b, 0x60, 0xd5, 0x98, 0x4a,3327 0x88, 0x53, 0x07, 0x89, 0x53, 0x05, 0x85, 0x2d,
3292 0x60, 0x66, 0xb1, 0x8b, 0x0c, 0x80, 0x8b, 0xe3,3328 0x00, 0x81, 0x2d, 0x00, 0xa4, 0x2d, 0x00, 0x81,
3293 0x39, 0x1a, 0x60, 0x05, 0xe0, 0x0e, 0x1a, 0x00,3329 0x2d, 0x00, 0x85, 0x2d, 0x06, 0x89, 0x2d, 0x60,
3294 0x84, 0x1a, 0x0a, 0xe0, 0x63, 0x1a, 0x6a, 0x5b,3330 0xd5, 0x98, 0x4d, 0x60, 0x56, 0x80, 0x4a, 0x0e,
3295 0xe3, 0xce, 0x21, 0x00, 0x88, 0x21, 0x6f, 0x66,3331 0xb1, 0x8e, 0x0c, 0x80, 0x8e, 0xe3, 0x39, 0x1b,
3296 0xe1, 0xe6, 0x03, 0x70, 0x11, 0x58, 0xe1, 0xd8,3332 0x60, 0x05, 0xe0, 0x0e, 0x1b, 0x00, 0x84, 0x1b,
3297 0x08, 0x06, 0x9e, 0x59, 0x00, 0x89, 0x59, 0x03,3333 0x0a, 0xe0, 0x63, 0x1b, 0x6a, 0x5b, 0xe3, 0xce,
3298 0x81, 0x59, 0x5f, 0x9d, 0x09, 0x01, 0x85, 0x09,3334 0x23, 0x00, 0x88, 0x23, 0x6f, 0x66, 0xe1, 0xe6,
3299 0x09, 0xc5, 0x70, 0x09, 0x89, 0x70, 0x00, 0x86,3335 0x03, 0x70, 0x11, 0x58, 0xe1, 0xd8, 0x08, 0x06,
3300 0x70, 0x00, 0x94, 0x70, 0x04, 0x92, 0x70, 0x62,3336 0x9e, 0x5c, 0x00, 0x89, 0x5c, 0x03, 0x81, 0x5c,
3301 0x4f, 0xda, 0x51, 0x60, 0x04, 0xca, 0x56, 0x03,3337 0x5f, 0x9d, 0x09, 0x01, 0x85, 0x09, 0x09, 0xc5,
3302 0xb8, 0x56, 0x06, 0x90, 0x56, 0x3f, 0x80, 0x8c,3338 0x73, 0x09, 0x89, 0x73, 0x00, 0x86, 0x73, 0x00,
3303 0x80, 0x61, 0x81, 0x18, 0x1b, 0xf0, 0x07, 0x97,3339 0x94, 0x73, 0x04, 0x92, 0x73, 0x62, 0x4f, 0xda,
3304 0x8c, 0x07, 0xe2, 0x92, 0x8c, 0x70, 0x14, 0xac,3340 0x54, 0x60, 0x04, 0xca, 0x59, 0x03, 0xb8, 0x59,
3305 0x80, 0x3b, 0xe0, 0xbd, 0x33, 0x30, 0x82, 0x33,3341 0x06, 0x90, 0x59, 0x3f, 0x80, 0x8f, 0x80, 0x64,
3306 0x10, 0x83, 0x3b, 0x07, 0xe1, 0x2b, 0x61, 0x68,3342 0x81, 0x19, 0x80, 0x42, 0x0a, 0x81, 0x2f, 0x0d,
3307 0xa3, 0xe0, 0x0a, 0x20, 0x04, 0x8c, 0x20, 0x02,3343 0xf0, 0x07, 0x97, 0x8f, 0x07, 0xe2, 0x9f, 0x8f,
3308 0x88, 0x20, 0x06, 0x89, 0x20, 0x01, 0x83, 0x20,3344 0xe1, 0x75, 0x42, 0x29, 0x88, 0x8f, 0x70, 0x12,
3309 0x83, 0x18, 0x70, 0x02, 0xfb, 0xe0, 0x95, 0x18,3345 0x96, 0x80, 0x3d, 0xe0, 0xbd, 0x35, 0x30, 0x82,
3310 0x09, 0xa6, 0x18, 0x01, 0xbd, 0x18, 0x82, 0x35,3346 0x35, 0x10, 0x83, 0x3d, 0x07, 0xe1, 0x2b, 0x64,
3311 0x90, 0x18, 0x87, 0x35, 0x81, 0x18, 0x86, 0x35,3347 0x68, 0xa3, 0xe0, 0x0a, 0x22, 0x04, 0x8c, 0x22,
3312 0x9d, 0x18, 0x83, 0x35, 0xba, 0x18, 0x16, 0xc5,3348 0x02, 0x88, 0x22, 0x06, 0x89, 0x22, 0x01, 0x83,
3313 0x29, 0x60, 0x39, 0x93, 0x18, 0x0b, 0xd6, 0x18,3349 0x22, 0x83, 0x19, 0x70, 0x02, 0xfb, 0xe0, 0x95,
3314 0x08, 0x98, 0x18, 0x60, 0x26, 0xd4, 0x18, 0x00,3350 0x19, 0x09, 0xa6, 0x19, 0x01, 0xbd, 0x19, 0x82,
3315 0xc6, 0x18, 0x00, 0x81, 0x18, 0x01, 0x80, 0x18,3351 0x37, 0x90, 0x19, 0x87, 0x37, 0x81, 0x19, 0x86,
3316 0x01, 0x81, 0x18, 0x01, 0x83, 0x18, 0x00, 0x8b,3352 0x37, 0x9d, 0x19, 0x83, 0x37, 0xba, 0x19, 0x16,
3317 0x18, 0x00, 0x80, 0x18, 0x00, 0x86, 0x18, 0x00,3353 0xc5, 0x2b, 0x60, 0x39, 0x93, 0x19, 0x0b, 0xd6,
3318 0xc0, 0x18, 0x00, 0x83, 0x18, 0x01, 0x87, 0x18,3354 0x19, 0x08, 0x98, 0x19, 0x60, 0x26, 0xd4, 0x19,
3319 0x00, 0x86, 0x18, 0x00, 0x9b, 0x18, 0x00, 0x83,3355 0x00, 0xc6, 0x19, 0x00, 0x81, 0x19, 0x01, 0x80,
3320 0x18, 0x00, 0x84, 0x18, 0x00, 0x80, 0x18, 0x02,3356 0x19, 0x01, 0x81, 0x19, 0x01, 0x83, 0x19, 0x00,
3321 0x86, 0x18, 0x00, 0xe0, 0xf3, 0x18, 0x01, 0xe0,3357 0x8b, 0x19, 0x00, 0x80, 0x19, 0x00, 0x86, 0x19,
3322 0xc3, 0x18, 0x01, 0xb1, 0x18, 0xe2, 0x2b, 0x7d,3358 0x00, 0xc0, 0x19, 0x00, 0x83, 0x19, 0x01, 0x87,
3323 0x0e, 0x84, 0x7d, 0x00, 0x8e, 0x7d, 0x64, 0xef,3359 0x19, 0x00, 0x86, 0x19, 0x00, 0x9b, 0x19, 0x00,
3324 0x86, 0x26, 0x00, 0x90, 0x26, 0x01, 0x86, 0x26,3360 0x83, 0x19, 0x00, 0x84, 0x19, 0x00, 0x80, 0x19,
3325 0x00, 0x81, 0x26, 0x00, 0x84, 0x26, 0x60, 0x74,3361 0x02, 0x86, 0x19, 0x00, 0xe0, 0xf3, 0x19, 0x01,
3326 0xac, 0x62, 0x02, 0x8d, 0x62, 0x01, 0x89, 0x62,3362 0xe0, 0xc3, 0x19, 0x01, 0xb1, 0x19, 0xe2, 0x2b,
3327 0x03, 0x81, 0x62, 0x61, 0x0f, 0xb9, 0x95, 0x04,3363 0x80, 0x0e, 0x84, 0x80, 0x00, 0x8e, 0x80, 0x64,
3328 0x80, 0x95, 0x64, 0x9f, 0xe0, 0x64, 0x53, 0x01,3364 0xef, 0x86, 0x28, 0x00, 0x90, 0x28, 0x01, 0x86,
3329 0x8f, 0x53, 0x28, 0xcb, 0x01, 0x03, 0x89, 0x01,3365 0x28, 0x00, 0x81, 0x28, 0x00, 0x84, 0x28, 0x60,
3330 0x03, 0x81, 0x01, 0x62, 0xb0, 0xc3, 0x18, 0x4b,3366 0x74, 0xac, 0x65, 0x02, 0x8d, 0x65, 0x01, 0x89,
3331 0xbc, 0x18, 0x60, 0x61, 0x83, 0x04, 0x00, 0x9a,3367 0x65, 0x03, 0x81, 0x65, 0x61, 0x0f, 0xb9, 0x98,
3332 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04, 0x01,3368 0x04, 0x80, 0x98, 0x64, 0x9f, 0xe0, 0x64, 0x56,
3333 0x80, 0x04, 0x00, 0x89, 0x04, 0x00, 0x83, 0x04,3369 0x01, 0x8f, 0x56, 0x28, 0xcb, 0x01, 0x03, 0x89,
3334 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x05, 0x80,3370 0x01, 0x03, 0x81, 0x01, 0x62, 0xb0, 0xc3, 0x19,
3335 0x04, 0x03, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00,3371 0x4b, 0xbc, 0x19, 0x60, 0x61, 0x83, 0x04, 0x00,
3336 0x80, 0x04, 0x00, 0x82, 0x04, 0x00, 0x81, 0x04,3372 0x9a, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04,
3337 0x00, 0x80, 0x04, 0x01, 0x80, 0x04, 0x00, 0x80,3373 0x01, 0x80, 0x04, 0x00, 0x89, 0x04, 0x00, 0x83,
3338 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00,3374 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x05,
3339 0x80, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04,3375 0x80, 0x04, 0x03, 0x80, 0x04, 0x00, 0x80, 0x04,
3340 0x01, 0x83, 0x04, 0x00, 0x86, 0x04, 0x00, 0x83,3376 0x00, 0x80, 0x04, 0x00, 0x82, 0x04, 0x00, 0x81,
3341 0x04, 0x00, 0x83, 0x04, 0x00, 0x80, 0x04, 0x00,3377 0x04, 0x00, 0x80, 0x04, 0x01, 0x80, 0x04, 0x00,
3342 0x89, 0x04, 0x00, 0x90, 0x04, 0x04, 0x82, 0x04,3378 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04,
3343 0x00, 0x84, 0x04, 0x00, 0x90, 0x04, 0x33, 0x81,3379 0x00, 0x80, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80,
3344 0x04, 0x60, 0xad, 0xab, 0x18, 0x03, 0xe0, 0x03,3380 0x04, 0x01, 0x83, 0x04, 0x00, 0x86, 0x04, 0x00,
3345 0x18, 0x0b, 0x8e, 0x18, 0x01, 0x8e, 0x18, 0x00,3381 0x83, 0x04, 0x00, 0x83, 0x04, 0x00, 0x80, 0x04,
3346 0x8e, 0x18, 0x00, 0xa4, 0x18, 0x09, 0x8c, 0x18,3382 0x00, 0x89, 0x04, 0x00, 0x90, 0x04, 0x04, 0x82,
3347 0x02, 0xdc, 0x18, 0x02, 0xbc, 0x18, 0x38, 0x99,3383 0x04, 0x00, 0x84, 0x04, 0x00, 0x90, 0x04, 0x33,
3348 0x18, 0x80, 0x33, 0x81, 0x18, 0x0c, 0xab, 0x18,3384 0x81, 0x04, 0x60, 0xad, 0xab, 0x19, 0x03, 0xe0,
3349 0x03, 0x88, 0x18, 0x06, 0x81, 0x18, 0x0d, 0x85,3385 0x03, 0x19, 0x0b, 0x8e, 0x19, 0x01, 0x8e, 0x19,
3350 0x18, 0x60, 0x39, 0xe3, 0x75, 0x18, 0x09, 0x8c,3386 0x00, 0x8e, 0x19, 0x00, 0xa4, 0x19, 0x09, 0xe0,
3351 0x18, 0x02, 0x8a, 0x18, 0x04, 0xe0, 0x13, 0x18,3387 0x4d, 0x19, 0x37, 0x99, 0x19, 0x80, 0x35, 0x81,
3352 0x0b, 0xd8, 0x18, 0x06, 0x8b, 0x18, 0x13, 0x8b,3388 0x19, 0x0c, 0xab, 0x19, 0x03, 0x88, 0x19, 0x06,
3353 0x18, 0x03, 0xb7, 0x18, 0x07, 0x89, 0x18, 0x05,3389 0x81, 0x19, 0x0d, 0x85, 0x19, 0x60, 0x39, 0xe3,
3354 0xa7, 0x18, 0x07, 0x9d, 0x18, 0x51, 0x8b, 0x18,3390 0x77, 0x19, 0x07, 0x8c, 0x19, 0x02, 0x8c, 0x19,
3355 0x00, 0xe0, 0x04, 0x18, 0x00, 0x83, 0x18, 0x02,3391 0x02, 0xe0, 0x13, 0x19, 0x0b, 0xd8, 0x19, 0x06,
3356 0xa8, 0x18, 0x01, 0x85, 0x18, 0x02, 0x9c, 0x18,3392 0x8b, 0x19, 0x13, 0x8b, 0x19, 0x03, 0xb7, 0x19,
3357 0x01, 0xe0, 0x26, 0x18, 0x0b, 0x8d, 0x18, 0x01,3393 0x07, 0x89, 0x19, 0x05, 0xa7, 0x19, 0x07, 0x9d,
3358 0x83, 0x18, 0x03, 0x82, 0x18, 0x04, 0x82, 0x18,3394 0x19, 0x01, 0x81, 0x19, 0x4d, 0xe0, 0x18, 0x19,
3359 0x0c, 0x85, 0x18, 0x65, 0x09, 0xf0, 0x96, 0x76,3395 0x00, 0xd1, 0x19, 0x00, 0xe0, 0x26, 0x19, 0x0b,
3360 0x2d, 0x28, 0xef, 0xd4, 0x2d, 0x0a, 0xe0, 0x7d,3396 0x8d, 0x19, 0x01, 0x84, 0x19, 0x02, 0x82, 0x19,
3361 0x2d, 0x01, 0xf0, 0x06, 0x21, 0x2d, 0x0d, 0xf0,3397 0x04, 0x86, 0x19, 0x08, 0x98, 0x19, 0x06, 0x86,
3362 0x0c, 0xd0, 0x2d, 0x6b, 0xbe, 0xe1, 0xbd, 0x2d,3398 0x19, 0x08, 0x82, 0x19, 0x0c, 0x86, 0x19, 0x28,
3363 0x7a, 0xf5, 0x82, 0x80, 0x18, 0x1d, 0xdf, 0x18,3399 0xe0, 0x32, 0x19, 0x00, 0xb6, 0x19, 0x24, 0x89,
3364 0x60, 0x1f, 0xe0, 0x8f, 0x35,3400 0x19, 0x63, 0xa5, 0xf0, 0x96, 0x7d, 0x2f, 0x21,
3401 0xef, 0xd4, 0x2f, 0x0a, 0xe0, 0x7d, 0x2f, 0x01,
3402 0xf0, 0x06, 0x21, 0x2f, 0x0d, 0xf0, 0x0c, 0xd0,
3403 0x2f, 0x6b, 0xbe, 0xe1, 0xbd, 0x2f, 0x65, 0x81,
3404 0xf0, 0x02, 0xea, 0x2f, 0x7a, 0xdc, 0x55, 0x80,
3405 0x19, 0x1d, 0xdf, 0x19, 0x60, 0x1f, 0xe0, 0x8f,
3406 0x37,
3365};3407};
3366 3408
3367static const uint8_t unicode_script_ext_table[789] = {3409static const uint8_t unicode_script_ext_table[799] = {
3368 0x82, 0xc1, 0x00, 0x00, 0x01, 0x29, 0x01, 0x00,3410 0x82, 0xc1, 0x00, 0x00, 0x01, 0x2b, 0x01, 0x00,
3369 0x00, 0x01, 0x29, 0x1c, 0x00, 0x0c, 0x01, 0x42,3411 0x00, 0x01, 0x2b, 0x1c, 0x00, 0x0c, 0x01, 0x45,
3370 0x80, 0x92, 0x00, 0x00, 0x02, 0x1c, 0x68, 0x00,3412 0x80, 0x92, 0x00, 0x00, 0x02, 0x1d, 0x6b, 0x00,
3371 0x02, 0x1c, 0x26, 0x01, 0x02, 0x1c, 0x42, 0x00,3413 0x02, 0x1d, 0x28, 0x01, 0x02, 0x1d, 0x45, 0x00,
3372 0x02, 0x1c, 0x26, 0x80, 0x80, 0x00, 0x00, 0x02,3414 0x02, 0x1d, 0x28, 0x81, 0x03, 0x00, 0x00, 0x05,
3373 0x05, 0x25, 0x80, 0x01, 0x00, 0x00, 0x04, 0x04,3415 0x04, 0x31, 0x87, 0x91, 0x9a, 0x0d, 0x00, 0x00,
3374 0x2f, 0x84, 0x8e, 0x0d, 0x00, 0x00, 0x04, 0x04,3416 0x05, 0x04, 0x31, 0x87, 0x91, 0x9a, 0x00, 0x03,
3375 0x2f, 0x84, 0x8e, 0x00, 0x03, 0x04, 0x84, 0x8e,3417 0x04, 0x87, 0x91, 0x01, 0x00, 0x00, 0x05, 0x04,
3376 0x01, 0x00, 0x00, 0x04, 0x04, 0x2f, 0x84, 0x8e,3418 0x31, 0x87, 0x91, 0x9a, 0x1f, 0x00, 0x00, 0x08,
3377 0x1f, 0x00, 0x00, 0x08, 0x01, 0x04, 0x4d, 0x4e,3419 0x01, 0x04, 0x50, 0x51, 0x78, 0x31, 0x82, 0x87,
3378 0x75, 0x2f, 0x7f, 0x84, 0x09, 0x00, 0x0a, 0x02,3420 0x09, 0x00, 0x0a, 0x02, 0x04, 0x87, 0x09, 0x00,
3379 0x04, 0x84, 0x09, 0x00, 0x09, 0x02, 0x04, 0x8e,3421 0x09, 0x03, 0x04, 0x91, 0x9a, 0x05, 0x00, 0x00,
3380 0x05, 0x00, 0x00, 0x02, 0x04, 0x84, 0x62, 0x00,3422 0x02, 0x04, 0x87, 0x62, 0x00, 0x00, 0x02, 0x04,
3381 0x00, 0x02, 0x04, 0x2f, 0x81, 0xfb, 0x00, 0x00,3423 0x31, 0x81, 0xfb, 0x00, 0x00, 0x0d, 0x0b, 0x1f,
3382 0x0d, 0x0b, 0x1e, 0x28, 0x2a, 0x2c, 0x3a, 0x42,3424 0x2a, 0x2c, 0x2e, 0x3c, 0x45, 0x4f, 0x70, 0x7d,
3383 0x4c, 0x6d, 0x7a, 0x8b, 0x8d, 0x92, 0x00, 0x0c,3425 0x8e, 0x90, 0x95, 0x00, 0x0c, 0x0b, 0x1f, 0x2a,
3384 0x0b, 0x1e, 0x28, 0x2a, 0x2c, 0x3a, 0x42, 0x4c,3426 0x2c, 0x2e, 0x3c, 0x45, 0x4f, 0x70, 0x8e, 0x90,
3385 0x6d, 0x8b, 0x8d, 0x92, 0x10, 0x00, 0x00, 0x14,3427 0x95, 0x10, 0x00, 0x00, 0x14, 0x0b, 0x1f, 0x21,
3386 0x0b, 0x1e, 0x1f, 0x2b, 0x50, 0x28, 0x2a, 0x2c,3428 0x2d, 0x53, 0x2a, 0x2c, 0x2e, 0x3c, 0x4e, 0x4f,
3387 0x3a, 0x4b, 0x4c, 0x5d, 0x6d, 0x40, 0x7e, 0x83,3429 0x60, 0x70, 0x43, 0x81, 0x86, 0x8d, 0x8e, 0x90,
3388 0x8a, 0x8b, 0x8d, 0x92, 0x00, 0x15, 0x0b, 0x1e,3430 0x95, 0x00, 0x15, 0x0b, 0x1f, 0x21, 0x2d, 0x53,
3389 0x1f, 0x2b, 0x50, 0x28, 0x2a, 0x2c, 0x3a, 0x44,3431 0x2a, 0x2c, 0x2e, 0x3c, 0x47, 0x4e, 0x4f, 0x60,
3390 0x4b, 0x4c, 0x5d, 0x6d, 0x40, 0x7e, 0x83, 0x8a,3432 0x70, 0x43, 0x81, 0x86, 0x8d, 0x8e, 0x90, 0x95,
3391 0x8b, 0x8d, 0x92, 0x09, 0x04, 0x1e, 0x1f, 0x39,3433 0x09, 0x04, 0x1f, 0x21, 0x3b, 0x4e, 0x75, 0x00,
3392 0x4b, 0x75, 0x00, 0x09, 0x03, 0x0b, 0x15, 0x83,3434 0x09, 0x03, 0x0b, 0x15, 0x86, 0x75, 0x00, 0x09,
3393 0x75, 0x00, 0x09, 0x02, 0x2c, 0x5a, 0x75, 0x00,3435 0x02, 0x2e, 0x5d, 0x75, 0x00, 0x09, 0x02, 0x2c,
3394 0x09, 0x02, 0x2a, 0x3f, 0x80, 0x75, 0x00, 0x0d,3436 0x41, 0x80, 0x75, 0x00, 0x0d, 0x02, 0x2a, 0x8e,
3395 0x02, 0x28, 0x8b, 0x80, 0x71, 0x00, 0x09, 0x02,3437 0x80, 0x71, 0x00, 0x09, 0x02, 0x3c, 0x60, 0x82,
3396 0x3a, 0x5d, 0x82, 0xcf, 0x00, 0x09, 0x03, 0x15,3438 0xcf, 0x00, 0x09, 0x03, 0x15, 0x5e, 0x8a, 0x80,
3397 0x5b, 0x87, 0x80, 0x30, 0x00, 0x00, 0x02, 0x25,3439 0x30, 0x00, 0x00, 0x02, 0x27, 0x45, 0x85, 0xb8,
3398 0x42, 0x85, 0xb8, 0x00, 0x01, 0x04, 0x11, 0x30,3440 0x00, 0x01, 0x04, 0x11, 0x32, 0x89, 0x88, 0x80,
3399 0x86, 0x85, 0x80, 0x4a, 0x00, 0x01, 0x02, 0x58,3441 0x4a, 0x00, 0x01, 0x02, 0x5b, 0x76, 0x00, 0x00,
3400 0x73, 0x00, 0x00, 0x00, 0x02, 0x58, 0x73, 0x84,3442 0x00, 0x02, 0x5b, 0x76, 0x84, 0x49, 0x00, 0x00,
3401 0x49, 0x00, 0x00, 0x04, 0x0b, 0x1e, 0x28, 0x3a,3443 0x04, 0x0b, 0x1f, 0x2a, 0x3c, 0x00, 0x01, 0x1f,
3402 0x00, 0x01, 0x1e, 0x00, 0x04, 0x0b, 0x1e, 0x28,3444 0x00, 0x04, 0x0b, 0x1f, 0x2a, 0x3c, 0x00, 0x02,
3403 0x3a, 0x00, 0x02, 0x1e, 0x28, 0x00, 0x01, 0x1e,3445 0x1f, 0x2a, 0x00, 0x01, 0x1f, 0x01, 0x02, 0x0b,
3404 0x01, 0x02, 0x0b, 0x1e, 0x00, 0x02, 0x1e, 0x7a,3446 0x1f, 0x00, 0x02, 0x1f, 0x7d, 0x00, 0x02, 0x0b,
3405 0x00, 0x02, 0x0b, 0x1e, 0x00, 0x02, 0x1e, 0x7a,3447 0x1f, 0x00, 0x02, 0x1f, 0x7d, 0x00, 0x06, 0x1f,
3406 0x00, 0x06, 0x1e, 0x3a, 0x4c, 0x6d, 0x8b, 0x8d,3448 0x3c, 0x4f, 0x70, 0x8e, 0x90, 0x00, 0x01, 0x1f,
3407 0x00, 0x01, 0x1e, 0x01, 0x02, 0x1e, 0x7a, 0x01,3449 0x01, 0x02, 0x1f, 0x7d, 0x01, 0x01, 0x1f, 0x00,
3408 0x01, 0x1e, 0x00, 0x02, 0x1e, 0x7a, 0x00, 0x02,3450 0x02, 0x1f, 0x7d, 0x00, 0x02, 0x0b, 0x1f, 0x06,
3409 0x0b, 0x1e, 0x06, 0x01, 0x1e, 0x00, 0x02, 0x1e,3451 0x01, 0x1f, 0x00, 0x02, 0x1f, 0x60, 0x00, 0x02,
3410 0x5d, 0x00, 0x02, 0x0b, 0x1e, 0x01, 0x01, 0x1e,3452 0x0b, 0x1f, 0x01, 0x01, 0x1f, 0x00, 0x02, 0x0b,
3411 0x00, 0x02, 0x0b, 0x1e, 0x03, 0x01, 0x1e, 0x00,3453 0x1f, 0x03, 0x01, 0x1f, 0x00, 0x08, 0x0b, 0x1f,
3412 0x08, 0x0b, 0x1e, 0x28, 0x3a, 0x5d, 0x6d, 0x8d,3454 0x2a, 0x3c, 0x60, 0x70, 0x90, 0x95, 0x00, 0x02,
3413 0x92, 0x00, 0x02, 0x1e, 0x28, 0x00, 0x03, 0x1e,3455 0x1f, 0x2a, 0x00, 0x03, 0x1f, 0x2a, 0x3c, 0x01,
3414 0x28, 0x3a, 0x01, 0x02, 0x0b, 0x1e, 0x00, 0x01,3456 0x02, 0x0b, 0x1f, 0x00, 0x01, 0x0b, 0x01, 0x02,
3415 0x0b, 0x01, 0x02, 0x1e, 0x28, 0x00, 0x01, 0x5d,3457 0x1f, 0x2a, 0x00, 0x01, 0x60, 0x80, 0x44, 0x00,
3416 0x80, 0x44, 0x00, 0x01, 0x01, 0x29, 0x81, 0xec,3458 0x01, 0x01, 0x2b, 0x35, 0x00, 0x00, 0x02, 0x1d,
3417 0x00, 0x00, 0x02, 0x42, 0x58, 0x80, 0x3f, 0x00,3459 0x87, 0x81, 0xb5, 0x00, 0x00, 0x02, 0x45, 0x5b,
3418 0x00, 0x03, 0x1e, 0x28, 0x42, 0x8c, 0xd1, 0x00,3460 0x80, 0x3f, 0x00, 0x00, 0x03, 0x1f, 0x2a, 0x45,
3419 0x00, 0x02, 0x1c, 0x26, 0x81, 0x3c, 0x00, 0x01,3461 0x8c, 0xd1, 0x00, 0x00, 0x02, 0x1d, 0x28, 0x81,
3420 0x06, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x00,3462 0x3c, 0x00, 0x01, 0x06, 0x0d, 0x30, 0x2f, 0x35,
3421 0x05, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x01, 0x00,3463 0x3d, 0x9b, 0x00, 0x05, 0x0d, 0x30, 0x2f, 0x35,
3422 0x00, 0x01, 0x2d, 0x00, 0x00, 0x09, 0x06, 0x0d,3464 0x3d, 0x01, 0x00, 0x00, 0x01, 0x2f, 0x00, 0x00,
3423 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x00, 0x00, 0x00,3465 0x09, 0x06, 0x0d, 0x30, 0x2f, 0x35, 0x3d, 0x9b,
3424 0x05, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x07, 0x06,3466 0x00, 0x00, 0x00, 0x05, 0x0d, 0x30, 0x2f, 0x35,
3425 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x03, 0x05,3467 0x3d, 0x07, 0x06, 0x0d, 0x30, 0x2f, 0x35, 0x3d,
3426 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x09, 0x00, 0x03,3468 0x9b, 0x03, 0x05, 0x0d, 0x30, 0x2f, 0x35, 0x3d,
3427 0x02, 0x0d, 0x2d, 0x01, 0x00, 0x00, 0x05, 0x0d,3469 0x09, 0x00, 0x03, 0x02, 0x0d, 0x2f, 0x01, 0x00,
3428 0x2e, 0x2d, 0x33, 0x3b, 0x04, 0x02, 0x33, 0x3b,3470 0x00, 0x05, 0x0d, 0x30, 0x2f, 0x35, 0x3d, 0x04,
3429 0x00, 0x00, 0x00, 0x05, 0x0d, 0x2e, 0x2d, 0x33,3471 0x02, 0x35, 0x3d, 0x00, 0x00, 0x00, 0x05, 0x0d,
3430 0x3b, 0x03, 0x00, 0x01, 0x03, 0x2d, 0x33, 0x3b,3472 0x30, 0x2f, 0x35, 0x3d, 0x03, 0x00, 0x01, 0x03,
3431 0x01, 0x01, 0x2d, 0x58, 0x00, 0x03, 0x02, 0x33,3473 0x2f, 0x35, 0x3d, 0x01, 0x01, 0x2f, 0x58, 0x00,
3432 0x3b, 0x02, 0x00, 0x00, 0x02, 0x33, 0x3b, 0x59,3474 0x03, 0x02, 0x35, 0x3d, 0x02, 0x00, 0x00, 0x02,
3433 0x00, 0x00, 0x06, 0x0d, 0x2e, 0x2d, 0x33, 0x3b,3475 0x35, 0x3d, 0x59, 0x00, 0x00, 0x06, 0x0d, 0x30,
3434 0x97, 0x00, 0x02, 0x33, 0x3b, 0x80, 0x12, 0x00,3476 0x2f, 0x35, 0x3d, 0x9b, 0x00, 0x02, 0x35, 0x3d,
3435 0x0f, 0x01, 0x2d, 0x1f, 0x00, 0x23, 0x01, 0x2d,3477 0x80, 0x12, 0x00, 0x0f, 0x01, 0x2f, 0x1f, 0x00,
3436 0x3b, 0x00, 0x27, 0x01, 0x2d, 0x37, 0x00, 0x30,3478 0x23, 0x01, 0x2f, 0x3b, 0x00, 0x27, 0x01, 0x2f,
3437 0x01, 0x2d, 0x0e, 0x00, 0x0b, 0x01, 0x2d, 0x32,3479 0x37, 0x00, 0x30, 0x01, 0x2f, 0x0e, 0x00, 0x0b,
3438 0x00, 0x00, 0x01, 0x2d, 0x57, 0x00, 0x18, 0x01,3480 0x01, 0x2f, 0x32, 0x00, 0x00, 0x01, 0x2f, 0x57,
3439 0x2d, 0x09, 0x00, 0x04, 0x01, 0x2d, 0x5f, 0x00,3481 0x00, 0x18, 0x01, 0x2f, 0x09, 0x00, 0x04, 0x01,
3440 0x1e, 0x01, 0x2d, 0xc0, 0x31, 0xef, 0x00, 0x00,3482 0x2f, 0x5f, 0x00, 0x1e, 0x01, 0x2f, 0xc0, 0x31,
3441 0x02, 0x1c, 0x26, 0x81, 0x3f, 0x00, 0x02, 0x0e,3483 0xef, 0x00, 0x00, 0x02, 0x1d, 0x28, 0x80, 0x0f,
3442 0x1e, 0x1f, 0x2a, 0x2c, 0x3f, 0x3a, 0x39, 0x4b,3484 0x00, 0x07, 0x02, 0x2f, 0x45, 0x80, 0xa7, 0x00,
3443 0x4c, 0x57, 0x5d, 0x40, 0x8a, 0x92, 0x02, 0x0d,3485 0x02, 0x0e, 0x1f, 0x21, 0x2c, 0x2e, 0x41, 0x3c,
3444 0x1e, 0x1f, 0x2a, 0x2c, 0x3f, 0x3a, 0x39, 0x4b,3486 0x3b, 0x4e, 0x4f, 0x5a, 0x60, 0x43, 0x8d, 0x95,
3445 0x57, 0x5d, 0x40, 0x8a, 0x92, 0x03, 0x0b, 0x1e,3487 0x02, 0x0d, 0x1f, 0x21, 0x2c, 0x2e, 0x41, 0x3c,
3446 0x1f, 0x2a, 0x2c, 0x3f, 0x39, 0x4b, 0x57, 0x40,3488 0x3b, 0x4e, 0x5a, 0x60, 0x43, 0x8d, 0x95, 0x03,
3447 0x8a, 0x92, 0x80, 0x36, 0x00, 0x00, 0x02, 0x0b,3489 0x0b, 0x1f, 0x21, 0x2c, 0x2e, 0x41, 0x3b, 0x4e,
3448 0x1e, 0x00, 0x00, 0x00, 0x02, 0x1e, 0x8b, 0x39,3490 0x5a, 0x43, 0x8d, 0x95, 0x80, 0x36, 0x00, 0x00,
3449 0x00, 0x00, 0x03, 0x3c, 0x42, 0x5b, 0x80, 0x1f,3491 0x02, 0x0b, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x1f,
3450 0x00, 0x00, 0x02, 0x10, 0x38, 0xc0, 0x13, 0xa1,3492 0x8e, 0x39, 0x00, 0x00, 0x03, 0x3e, 0x45, 0x5e,
3451 0x00, 0x00, 0x02, 0x04, 0x8e, 0x09, 0x00, 0x00,3493 0x80, 0x1f, 0x00, 0x00, 0x02, 0x10, 0x3a, 0xc0,
3452 0x02, 0x04, 0x8e, 0x46, 0x00, 0x01, 0x05, 0x0d,3494 0x13, 0xa1, 0x00, 0x00, 0x02, 0x04, 0x91, 0x09,
3453 0x2e, 0x2d, 0x33, 0x3b, 0x80, 0x99, 0x00, 0x04,3495 0x00, 0x00, 0x02, 0x04, 0x91, 0x46, 0x00, 0x01,
3454 0x06, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x09,3496 0x05, 0x0d, 0x30, 0x2f, 0x35, 0x3d, 0x80, 0x99,
3455 0x00, 0x00, 0x02, 0x33, 0x3b, 0x2c, 0x00, 0x01,3497 0x00, 0x04, 0x06, 0x0d, 0x30, 0x2f, 0x35, 0x3d,
3456 0x02, 0x33, 0x3b, 0x80, 0xdf, 0x00, 0x02, 0x02,3498 0x9b, 0x09, 0x00, 0x00, 0x02, 0x35, 0x3d, 0x2c,
3457 0x1b, 0x46, 0x03, 0x00, 0x2c, 0x03, 0x1b, 0x45,3499 0x00, 0x01, 0x02, 0x35, 0x3d, 0x80, 0xdf, 0x00,
3458 0x46, 0x02, 0x00, 0x08, 0x02, 0x1b, 0x46, 0x81,3500 0x02, 0x02, 0x1c, 0x49, 0x03, 0x00, 0x2c, 0x03,
3459 0x1f, 0x00, 0x1b, 0x02, 0x04, 0x19, 0x8f, 0x84,3501 0x1c, 0x48, 0x49, 0x02, 0x00, 0x08, 0x02, 0x1c,
3460 0x00, 0x00, 0x02, 0x28, 0x8b, 0x00, 0x00, 0x00,3502 0x49, 0x81, 0x1f, 0x00, 0x1b, 0x02, 0x04, 0x1a,
3461 0x02, 0x28, 0x8b, 0x36, 0x00, 0x01, 0x02, 0x28,3503 0x8f, 0x84, 0x00, 0x00, 0x02, 0x2a, 0x8e, 0x00,
3462 0x8b, 0x8c, 0x12, 0x00, 0x01, 0x02, 0x28, 0x8b,3504 0x00, 0x00, 0x02, 0x2a, 0x8e, 0x36, 0x00, 0x01,
3463 0x00, 0x00, 0x00, 0x02, 0x28, 0x8b, 0xc0, 0x5c,3505 0x02, 0x2a, 0x8e, 0x8c, 0x12, 0x00, 0x01, 0x02,
3464 0x4b, 0x00, 0x03, 0x01, 0x20, 0x96, 0x3b, 0x00,3506 0x2a, 0x8e, 0x00, 0x00, 0x00, 0x02, 0x2a, 0x8e,
3465 0x11, 0x01, 0x2d, 0x9e, 0x5d, 0x00, 0x01, 0x01,3507 0xc0, 0x5c, 0x4b, 0x00, 0x03, 0x01, 0x22, 0x96,
3466 0x2d, 0xce, 0xcd, 0x2d, 0x00,3508 0x3b, 0x00, 0x11, 0x01, 0x2f, 0x9e, 0x5d, 0x00,
3509 0x01, 0x01, 0x2f, 0xce, 0xcd, 0x2d, 0x00,
3467};3510};
3468 3511
3469static const uint8_t unicode_prop_Hyphen_table[28] = {3512static const uint8_t unicode_prop_Hyphen_table[28] = {
@@ -3501,7 +3544,7 @@ static const uint8_t unicode_prop_Other_Math_table[200] = { · 31 unmodified lines
3501 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, 0x80, 0x90,3544 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, 0x80, 0x90,
3502};3545};
3503 3546
3504static const uint8_t unicode_prop_Other_Alphabetic_table[396] = {3547static const uint8_t unicode_prop_Other_Alphabetic_table[411] = {
3505 0x43, 0x44, 0x80, 0x42, 0x69, 0x8d, 0x00, 0x01,3548 0x43, 0x44, 0x80, 0x42, 0x69, 0x8d, 0x00, 0x01,
3506 0x01, 0x00, 0xc7, 0x8a, 0xaf, 0x8c, 0x06, 0x8f,3549 0x01, 0x00, 0xc7, 0x8a, 0xaf, 0x8c, 0x06, 0x8f,
3507 0x80, 0xe4, 0x33, 0x19, 0x0b, 0x80, 0xa2, 0x80,3550 0x80, 0xe4, 0x33, 0x19, 0x0b, 0x80, 0xa2, 0x80,
@@ -3517,7 +3560,7 @@ static const uint8_t unicode_prop_Other_Alphabetic_table[396] = { · 9 unmodified lines
3517 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9c, 0x82,3560 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9c, 0x82,
3518 0xb9, 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9b,3561 0xb9, 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9b,
3519 0x83, 0xb9, 0x30, 0x10, 0x82, 0x89, 0x80, 0x89,3562 0x83, 0xb9, 0x30, 0x10, 0x82, 0x89, 0x80, 0x89,
3520 0x81, 0x9d, 0x81, 0xca, 0x28, 0x00, 0x87, 0x91,3563 0x81, 0x9c, 0x82, 0xca, 0x28, 0x00, 0x87, 0x91,
3521 0x81, 0xbc, 0x01, 0x86, 0x91, 0x80, 0xe2, 0x01,3564 0x81, 0xbc, 0x01, 0x86, 0x91, 0x80, 0xe2, 0x01,
3522 0x28, 0x81, 0x8f, 0x80, 0x40, 0xa2, 0x90, 0x8a,3565 0x28, 0x81, 0x8f, 0x80, 0x40, 0xa2, 0x90, 0x8a,
3523 0x8a, 0x80, 0xa3, 0xed, 0x8b, 0x00, 0x0b, 0x96,3566 0x8a, 0x80, 0xa3, 0xed, 0x8b, 0x00, 0x0b, 0x96,
@@ -3525,33 +3568,35 @@ static const uint8_t unicode_prop_Other_Alphabetic_table[396] = { · 1 unmodified line
3525 0x89, 0x83, 0x46, 0x73, 0x81, 0x9d, 0x81, 0x9d,3568 0x89, 0x83, 0x46, 0x73, 0x81, 0x9d, 0x81, 0x9d,
3526 0x81, 0x9d, 0x81, 0xc1, 0x92, 0x40, 0xbb, 0x81,3569 0x81, 0x9d, 0x81, 0xc1, 0x92, 0x40, 0xbb, 0x81,
3527 0xa1, 0x80, 0xf5, 0x8b, 0x83, 0x88, 0x40, 0xdd,3570 0xa1, 0x80, 0xf5, 0x8b, 0x83, 0x88, 0x40, 0xdd,
3528 0x84, 0xb8, 0x89, 0x81, 0x93, 0x40, 0x8a, 0x84,3571 0x84, 0xb8, 0x89, 0x81, 0x93, 0xc9, 0x81, 0xbe,
3529 0xaf, 0x8e, 0xbb, 0x82, 0x9d, 0x88, 0x09, 0xb8,3572 0x84, 0xaf, 0x8e, 0xbb, 0x82, 0x9d, 0x88, 0x09,
3530 0x8a, 0xb1, 0x92, 0x41, 0xaf, 0x8d, 0x46, 0xc0,3573 0xb8, 0x8a, 0xb1, 0x92, 0x41, 0xaf, 0x8d, 0x46,
3531 0xb3, 0x48, 0xf5, 0x9f, 0x60, 0x78, 0x73, 0x87,3574 0xc0, 0xb3, 0x48, 0xf5, 0x9f, 0x60, 0x78, 0x73,
3532 0xa1, 0x81, 0x41, 0x61, 0x07, 0x80, 0x96, 0x84,3575 0x87, 0xa1, 0x81, 0x41, 0x61, 0x07, 0x80, 0x96,
3533 0xd7, 0x81, 0xb1, 0x8f, 0x00, 0xb8, 0x80, 0xa5,3576 0x84, 0xd7, 0x81, 0xb1, 0x8f, 0x00, 0xb8, 0x80,
3534 0x84, 0x9b, 0x8b, 0xac, 0x83, 0xaf, 0x8b, 0xa4,3577 0xa5, 0x84, 0x9b, 0x8b, 0xac, 0x83, 0xaf, 0x8b,
3535 0x80, 0xc2, 0x8d, 0x8b, 0x07, 0x81, 0xac, 0x82,3578 0xa4, 0x80, 0xc2, 0x8d, 0x8b, 0x07, 0x81, 0xac,
3536 0xb1, 0x00, 0x11, 0x0c, 0x80, 0xab, 0x24, 0x80,3579 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x80, 0xab, 0x24,
3537 0x40, 0xec, 0x87, 0x60, 0x4f, 0x32, 0x80, 0x48,3580 0x80, 0x40, 0xec, 0x87, 0x60, 0x4f, 0x32, 0x80,
3538 0x56, 0x84, 0x46, 0x85, 0x10, 0x0c, 0x83, 0x43,3581 0x48, 0x56, 0x84, 0x46, 0x85, 0x10, 0x0c, 0x83,
3539 0x13, 0x83, 0x42, 0xd7, 0x82, 0xb4, 0x8d, 0xbb,3582 0x43, 0x13, 0x83, 0x41, 0x82, 0x81, 0x41, 0x52,
3540 0x80, 0xac, 0x88, 0xc6, 0x82, 0xa3, 0x8b, 0x91,3583 0x82, 0xb4, 0x8d, 0xbb, 0x80, 0xac, 0x88, 0xc6,
3541 0x81, 0xb8, 0x82, 0xaf, 0x8c, 0xeb, 0x88, 0x08,3584 0x82, 0xa3, 0x8b, 0x91, 0x81, 0xb8, 0x82, 0xaf,
3542 0x28, 0x40, 0x9f, 0x89, 0x96, 0x83, 0xb9, 0x31,3585 0x8c, 0x8d, 0x81, 0xdb, 0x88, 0x08, 0x28, 0x40,
3543 0x09, 0x81, 0x89, 0x80, 0x89, 0x81, 0x40, 0xd0,3586 0x9f, 0x89, 0x96, 0x83, 0xb9, 0x31, 0x09, 0x81,
3544 0x8c, 0x02, 0xe9, 0x91, 0x40, 0xec, 0x31, 0x86,3587 0x89, 0x80, 0x89, 0x81, 0x40, 0xd0, 0x8c, 0x02,
3545 0x9c, 0x81, 0xd1, 0x8e, 0x00, 0xe9, 0x8a, 0xe6,3588 0xe9, 0x91, 0x40, 0xec, 0x31, 0x86, 0x9c, 0x81,
3546 0x8d, 0x41, 0x00, 0x8c, 0x41, 0x97, 0x31, 0x2b,3589 0xd1, 0x8e, 0x00, 0xe9, 0x8a, 0xe6, 0x8d, 0x41,
3547 0x80, 0x9b, 0x89, 0xa9, 0x20, 0x83, 0x91, 0x8a,3590 0x00, 0x8c, 0x40, 0xf6, 0x28, 0x09, 0x0a, 0x00,
3548 0xad, 0x8d, 0x41, 0x96, 0x38, 0x86, 0xd2, 0x95,3591 0x80, 0x40, 0x8d, 0x31, 0x2b, 0x80, 0x9b, 0x89,
3549 0x80, 0x8d, 0xf9, 0x2a, 0x00, 0x08, 0x10, 0x02,3592 0xa9, 0x20, 0x83, 0x91, 0x8a, 0xad, 0x8d, 0x41,
3550 0x80, 0xc1, 0x20, 0x08, 0x83, 0x41, 0x5b, 0x83,3593 0x96, 0x38, 0x86, 0xd2, 0x95, 0x80, 0x8d, 0xf9,
3551 0x60, 0x50, 0x57, 0x00, 0xb6, 0x33, 0x60, 0x4d,3594 0x2a, 0x00, 0x08, 0x10, 0x02, 0x80, 0xc1, 0x20,
3552 0x0a, 0x80, 0x60, 0x23, 0x60, 0x30, 0x90, 0x0e,3595 0x08, 0x83, 0x41, 0x5b, 0x83, 0x60, 0x50, 0x57,
3553 0x01, 0x04, 0x49, 0x1b, 0x80, 0x47, 0xe7, 0x99,3596 0x00, 0xb6, 0x33, 0xdc, 0x81, 0x60, 0x4c, 0xab,
3554 0x85, 0x99, 0x85, 0x99,3597 0x80, 0x60, 0x23, 0x60, 0x30, 0x90, 0x0e, 0x01,
3598 0x04, 0x49, 0x1b, 0x80, 0x47, 0xe7, 0x99, 0x85,
3599 0x99, 0x85, 0x99,
3555};3600};
3556 3601
3557static const uint8_t unicode_prop_Other_Lowercase_table[51] = {3602static const uint8_t unicode_prop_Other_Lowercase_table[51] = {
@@ -3569,15 +3614,16 @@ static const uint8_t unicode_prop_Other_Uppercase_table[15] = { · 11 unmodified lines
3569 0xcc, 0x5f, 0x99, 0x85, 0x99, 0x85, 0x99,3614 0xcc, 0x5f, 0x99, 0x85, 0x99, 0x85, 0x99,
3570};3615};
3571 3616
3572static const uint8_t unicode_prop_Other_Grapheme_Extend_table[62] = {3617static const uint8_t unicode_prop_Other_Grapheme_Extend_table[65] = {
3573 0x49, 0xbd, 0x80, 0x97, 0x80, 0x41, 0x65, 0x80,3618 0x49, 0xbd, 0x80, 0x97, 0x80, 0x41, 0x65, 0x80,
3574 0x97, 0x80, 0xe5, 0x80, 0x97, 0x80, 0x40, 0xe9,3619 0x97, 0x80, 0xe5, 0x80, 0x97, 0x80, 0x40, 0xe9,
3575 0x80, 0x91, 0x81, 0xe6, 0x80, 0x97, 0x80, 0xf6,3620 0x80, 0x91, 0x81, 0xe6, 0x80, 0x97, 0x80, 0xf6,
3576 0x80, 0x8e, 0x80, 0x4d, 0x54, 0x80, 0x44, 0xd5,3621 0x80, 0x8e, 0x80, 0x4d, 0x54, 0x80, 0x44, 0xd5,
3577 0x80, 0x50, 0x20, 0x81, 0x60, 0xcf, 0x6d, 0x81,3622 0x80, 0x50, 0x20, 0x81, 0x60, 0xcf, 0x6d, 0x81,
3578 0x53, 0x9d, 0x80, 0x97, 0x80, 0x41, 0x57, 0x80,3623 0x53, 0x9d, 0x80, 0x97, 0x80, 0x41, 0x57, 0x80,
3579 0x8b, 0x80, 0x40, 0xf0, 0x80, 0x60, 0xbb, 0xb4,3624 0x8b, 0x80, 0x40, 0xf0, 0x80, 0x43, 0x7f, 0x80,
3580 0x07, 0x84, 0x6c, 0x2e, 0xac, 0xdf,3625 0x60, 0xb8, 0x33, 0x07, 0x84, 0x6c, 0x2e, 0xac,
3626 0xdf,
3581};3627};
3582 3628
3583static const uint8_t unicode_prop_Other_Default_Ignorable_Code_Point_table[32] = {3629static const uint8_t unicode_prop_Other_Default_Ignorable_Code_Point_table[32] = {
@@ -3630,7 +3676,7 @@ static const uint8_t unicode_prop_Changes_When_Casefolded1_table[33] = { · 46 unmodified lines
3630 0x84,3676 0x84,
3631};3677};
3632 3678
3633static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[436] = {3679static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[441] = {
3634 0x40, 0x9f, 0x06, 0x00, 0x01, 0x00, 0x01, 0x12,3680 0x40, 0x9f, 0x06, 0x00, 0x01, 0x00, 0x01, 0x12,
3635 0x10, 0x82, 0x9f, 0x80, 0xcf, 0x01, 0x80, 0x8b,3681 0x10, 0x82, 0x9f, 0x80, 0xcf, 0x01, 0x80, 0x8b,
3636 0x07, 0x80, 0xfb, 0x01, 0x01, 0x80, 0xa5, 0x80,3682 0x07, 0x80, 0xfb, 0x01, 0x01, 0x80, 0xa5, 0x80,
@@ -3663,29 +3709,30 @@ static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[436] = { · 26 unmodified lines
3663 0x80, 0xde, 0x80, 0xb0, 0xdd, 0x82, 0x8d, 0xdf,3709 0x80, 0xde, 0x80, 0xb0, 0xdd, 0x82, 0x8d, 0xdf,
3664 0x9e, 0x80, 0xa7, 0x87, 0xae, 0x80, 0x41, 0x7f,3710 0x9e, 0x80, 0xa7, 0x87, 0xae, 0x80, 0x41, 0x7f,
3665 0x60, 0x72, 0x9b, 0x81, 0x40, 0xd1, 0x80, 0x40,3711 0x60, 0x72, 0x9b, 0x81, 0x40, 0xd1, 0x80, 0x40,
3666 0x86, 0x81, 0x43, 0x61, 0x83, 0x60, 0x4d, 0x9f,3712 0x86, 0x81, 0x43, 0x61, 0x83, 0x88, 0x80, 0x60,
3667 0x41, 0x0d, 0x08, 0x00, 0x81, 0x89, 0x00, 0x00,3713 0x4d, 0x95, 0x41, 0x0d, 0x08, 0x00, 0x81, 0x89,
3668 0x09, 0x82, 0xc3, 0x81, 0xe9, 0xa5, 0x86, 0x8b,3714 0x00, 0x00, 0x09, 0x82, 0xc3, 0x81, 0xe9, 0xa5,
3669 0x24, 0x00, 0x97, 0x04, 0x00, 0x01, 0x01, 0x80,3715 0x86, 0x8b, 0x24, 0x00, 0x97, 0x04, 0x00, 0x01,
3670 0xeb, 0xa0, 0x41, 0x6a, 0x91, 0xbf, 0x81, 0xb5,3716 0x01, 0x80, 0xeb, 0xa0, 0x41, 0x6a, 0x91, 0xbf,
3671 0xa7, 0x8c, 0x82, 0x99, 0x95, 0x94, 0x81, 0x8b,3717 0x81, 0xb5, 0xa7, 0x8c, 0x82, 0x99, 0x95, 0x94,
3672 0x80, 0x92, 0x03, 0x1a, 0x00, 0x80, 0x40, 0x86,3718 0x81, 0x8b, 0x80, 0x92, 0x03, 0x1a, 0x00, 0x80,
3673 0x08, 0x80, 0x9f, 0x99, 0x40, 0x83, 0x15, 0x0d,3719 0x40, 0x86, 0x08, 0x80, 0x9f, 0x99, 0x40, 0x83,
3674 0x0d, 0x0a, 0x16, 0x06, 0x80, 0x88, 0x60, 0xbc,3720 0x15, 0x0d, 0x0d, 0x0a, 0x16, 0x06, 0x80, 0x88,
3675 0xa6, 0x83, 0x54, 0xb9, 0x86, 0x8d, 0x87, 0xbf,3721 0x60, 0xbc, 0xa6, 0x83, 0x54, 0xb9, 0x86, 0x8d,
3676 0x85, 0x42, 0x3e, 0xd4, 0x80, 0xc6, 0x01, 0x08,3722 0x87, 0xbf, 0x85, 0x42, 0x3e, 0xd4, 0x80, 0xc6,
3677 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06, 0x80, 0xc0,3723 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06,
3678 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03, 0x04, 0x00,3724 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03,
3679 0x16, 0x80, 0x41, 0x53, 0x81, 0x41, 0x23, 0x81,3725 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81, 0x41,
3680 0xb1, 0x55, 0xff, 0x18, 0x9a, 0x01, 0x00, 0x08,3726 0x23, 0x81, 0xb1, 0x55, 0xff, 0x18, 0x9a, 0x01,
3681 0x80, 0x89, 0x03, 0x00, 0x00, 0x28, 0x18, 0x00,3727 0x00, 0x08, 0x80, 0x89, 0x03, 0x00, 0x00, 0x28,
3682 0x00, 0x02, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00,3728 0x18, 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x00,
3683 0x00, 0x01, 0x00, 0x0b, 0x06, 0x03, 0x03, 0x00,3729 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x06, 0x03,
3684 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, 0x80, 0x90,3730 0x03, 0x00, 0x80, 0x89, 0x80, 0x90, 0x22, 0x04,
3685 0x42, 0x43, 0x8a, 0x84, 0x9e, 0x80, 0x9f, 0x99,3731 0x80, 0x90, 0x42, 0x43, 0x8a, 0x84, 0x9e, 0x80,
3686 0x82, 0xa2, 0x80, 0xee, 0x82, 0x8c, 0xab, 0x83,3732 0x9f, 0x99, 0x82, 0xa2, 0x80, 0xee, 0x82, 0x8c,
3687 0x88, 0x31, 0x61, 0x05, 0xad, 0x42, 0x1d, 0x6b,3733 0xab, 0x83, 0x88, 0x31, 0x49, 0x9d, 0x89, 0x60,
3688 0x05, 0xe1, 0x4f, 0xff,3734 0xfc, 0x05, 0x42, 0x1d, 0x6b, 0x05, 0xe1, 0x4f,
3735 0xff,
3689};3736};
3690 3737
3691static const uint8_t unicode_prop_ASCII_Hex_Digit_table[5] = {3738static const uint8_t unicode_prop_ASCII_Hex_Digit_table[5] = {
@@ -3697,14 +3744,14 @@ static const uint8_t unicode_prop_Bidi_Control_table[10] = { · 5 unmodified lines
3697 0xb6, 0x83,3744 0xb6, 0x83,
3698};3745};
3699 3746
3700static const uint8_t unicode_prop_Dash_table[50] = {3747static const uint8_t unicode_prop_Dash_table[53] = {
3701 0xac, 0x80, 0x45, 0x5b, 0x80, 0xb2, 0x80, 0x4e,3748 0xac, 0x80, 0x45, 0x5b, 0x80, 0xb2, 0x80, 0x4e,
3702 0x40, 0x80, 0x44, 0x04, 0x80, 0x48, 0x08, 0x85,3749 0x40, 0x80, 0x44, 0x04, 0x80, 0x48, 0x08, 0x85,
3703 0xbc, 0x80, 0xa6, 0x80, 0x8e, 0x80, 0x41, 0x85,3750 0xbc, 0x80, 0xa6, 0x80, 0x8e, 0x80, 0x41, 0x85,
3704 0x80, 0x4c, 0x03, 0x01, 0x80, 0x9e, 0x0b, 0x80,3751 0x80, 0x4c, 0x03, 0x01, 0x80, 0x9e, 0x0b, 0x80,
3705 0x41, 0xda, 0x80, 0x92, 0x80, 0xee, 0x80, 0x60,3752 0x41, 0xda, 0x80, 0x92, 0x80, 0xee, 0x80, 0x60,
3706 0xcd, 0x8f, 0x81, 0xa4, 0x80, 0x89, 0x80, 0x40,3753 0xcd, 0x8f, 0x81, 0xa4, 0x80, 0x89, 0x80, 0x40,
3707 0xa8, 0x80,3754 0xa8, 0x80, 0x4f, 0x9e, 0x80,
3708};3755};
3709 3756
3710static const uint8_t unicode_prop_Deprecated_table[23] = {3757static const uint8_t unicode_prop_Deprecated_table[23] = {
@@ -3713,7 +3760,7 @@ static const uint8_t unicode_prop_Deprecated_table[23] = { · 2 unmodified lines
3713 0x42, 0xb8, 0x81, 0x6d, 0xdc, 0xd5, 0x80,3760 0x42, 0xb8, 0x81, 0x6d, 0xdc, 0xd5, 0x80,
3714};3761};
3715 3762
3716static const uint8_t unicode_prop_Diacritic_table[350] = {3763static const uint8_t unicode_prop_Diacritic_table[358] = {
3717 0xdd, 0x00, 0x80, 0xc6, 0x05, 0x03, 0x01, 0x81,3764 0xdd, 0x00, 0x80, 0xc6, 0x05, 0x03, 0x01, 0x81,
3718 0x41, 0xf6, 0x40, 0x9e, 0x07, 0x25, 0x90, 0x0b,3765 0x41, 0xf6, 0x40, 0x9e, 0x07, 0x25, 0x90, 0x0b,
3719 0x80, 0x88, 0x81, 0x40, 0xfc, 0x84, 0x40, 0xd0,3766 0x80, 0x88, 0x81, 0x40, 0xfc, 0x84, 0x40, 0xd0,
@@ -3723,55 +3770,57 @@ static const uint8_t unicode_prop_Diacritic_table[350] = { · 3 unmodified lines
3723 0x81, 0x40, 0xc8, 0x9b, 0xbc, 0x80, 0x8f, 0x02,3770 0x81, 0x40, 0xc8, 0x9b, 0xbc, 0x80, 0x8f, 0x02,
3724 0x83, 0x9b, 0x80, 0xc9, 0x80, 0x8f, 0x80, 0xed,3771 0x83, 0x9b, 0x80, 0xc9, 0x80, 0x8f, 0x80, 0xed,
3725 0x80, 0x8f, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xae,3772 0x80, 0x8f, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xae,
3726 0x82, 0xbb, 0x80, 0x8f, 0x80, 0xfe, 0x80, 0xfe,3773 0x82, 0xbb, 0x80, 0x8f, 0x06, 0x80, 0xf6, 0x80,
3727 0x80, 0xed, 0x80, 0x8f, 0x80, 0xec, 0x81, 0x8f,3774 0xfe, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xec, 0x81,
3728 0x80, 0xfb, 0x80, 0xfb, 0x28, 0x80, 0xea, 0x80,3775 0x8f, 0x80, 0xfb, 0x80, 0xfb, 0x28, 0x80, 0xea,
3729 0x8c, 0x84, 0xca, 0x81, 0x9a, 0x00, 0x00, 0x03,3776 0x80, 0x8c, 0x84, 0xca, 0x81, 0x9a, 0x00, 0x00,
3730 0x81, 0xc1, 0x10, 0x81, 0xbd, 0x80, 0xef, 0x00,3777 0x03, 0x81, 0xc1, 0x10, 0x81, 0xbd, 0x80, 0xef,
3731 0x81, 0xa7, 0x0b, 0x84, 0x98, 0x30, 0x80, 0x89,3778 0x00, 0x81, 0xa7, 0x0b, 0x84, 0x98, 0x30, 0x80,
3732 0x81, 0x42, 0xc0, 0x82, 0x44, 0x68, 0x8a, 0x88,3779 0x89, 0x81, 0x42, 0xc0, 0x82, 0x44, 0x68, 0x8a,
3733 0x80, 0x41, 0x5a, 0x82, 0x41, 0x38, 0x39, 0x80,3780 0x88, 0x80, 0x41, 0x5a, 0x82, 0x41, 0x38, 0x39,
3734 0xaf, 0x8d, 0xf5, 0x80, 0x8e, 0x80, 0xa5, 0x88,3781 0x80, 0xaf, 0x8d, 0xf5, 0x80, 0x8e, 0x80, 0xa5,
3735 0xb5, 0x81, 0x40, 0x89, 0x81, 0xbf, 0x85, 0xd1,3782 0x88, 0xb5, 0x81, 0x40, 0x89, 0x81, 0xbf, 0x85,
3736 0x98, 0x18, 0x28, 0x0a, 0xb1, 0xbe, 0xd8, 0x8b,3783 0xd1, 0x98, 0x18, 0x28, 0x0a, 0xb1, 0xbe, 0xd8,
3737 0xa4, 0x22, 0x82, 0x41, 0xbc, 0x00, 0x82, 0x8a,3784 0x8b, 0xa4, 0x22, 0x82, 0x41, 0xbc, 0x00, 0x82,
3738 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, 0x81, 0x4c,3785 0x8a, 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, 0x81,
3739 0xef, 0x82, 0x41, 0x3c, 0x80, 0x41, 0xf9, 0x85,3786 0x4c, 0xef, 0x82, 0x41, 0x3c, 0x80, 0x41, 0xf9,
3740 0xe8, 0x83, 0xde, 0x80, 0x60, 0x75, 0x71, 0x80,3787 0x85, 0xe8, 0x83, 0xde, 0x80, 0x60, 0x75, 0x71,
3741 0x8b, 0x08, 0x80, 0x9b, 0x81, 0xd1, 0x81, 0x8d,3788 0x80, 0x8b, 0x08, 0x80, 0x9b, 0x81, 0xd1, 0x81,
3742 0xa1, 0xe5, 0x82, 0xec, 0x81, 0x40, 0xc9, 0x80,3789 0x8d, 0xa1, 0xe5, 0x82, 0xec, 0x81, 0x40, 0xc9,
3743 0x9a, 0x91, 0xb8, 0x83, 0xa3, 0x80, 0xde, 0x80,3790 0x80, 0x9a, 0x91, 0xb8, 0x83, 0xa3, 0x80, 0xde,
3744 0x8b, 0x80, 0xa3, 0x80, 0x40, 0x94, 0x82, 0xc0,3791 0x80, 0x8b, 0x80, 0xa3, 0x80, 0x40, 0x94, 0x82,
3745 0x83, 0xb2, 0x80, 0xe3, 0x84, 0x40, 0x8b, 0x81,3792 0xc0, 0x83, 0xb2, 0x80, 0xe3, 0x84, 0x88, 0x82,
3746 0x60, 0x4f, 0x2f, 0x80, 0x43, 0x00, 0x8f, 0x41,3793 0xff, 0x81, 0x60, 0x4f, 0x2f, 0x80, 0x43, 0x00,
3747 0x0d, 0x00, 0x80, 0xae, 0x80, 0xac, 0x81, 0xc2,3794 0x8f, 0x41, 0x0d, 0x00, 0x80, 0xae, 0x80, 0xac,
3748 0x80, 0x42, 0xfb, 0x80, 0x48, 0x03, 0x81, 0x42,3795 0x81, 0xc2, 0x80, 0x42, 0xfb, 0x80, 0x48, 0x03,
3749 0x3a, 0x85, 0x42, 0x1d, 0x8a, 0x41, 0x67, 0x81,3796 0x81, 0x42, 0x3a, 0x85, 0x42, 0x1d, 0x8a, 0x41,
3750 0xf7, 0x81, 0xbd, 0x80, 0xcb, 0x80, 0x88, 0x82,3797 0x67, 0x81, 0xf7, 0x81, 0xbd, 0x80, 0xcb, 0x80,
3751 0xe7, 0x81, 0x40, 0xb1, 0x81, 0xd0, 0x80, 0x8f,3798 0x88, 0x82, 0xe7, 0x81, 0x40, 0xb1, 0x81, 0xd0,
3752 0x80, 0x97, 0x32, 0x84, 0x40, 0xcc, 0x02, 0x80,3799 0x80, 0x8f, 0x80, 0x97, 0x32, 0x84, 0x40, 0xcc,
3753 0xfa, 0x81, 0x40, 0xfa, 0x81, 0xfd, 0x80, 0xf5,3800 0x02, 0x80, 0xfa, 0x81, 0x40, 0xfa, 0x81, 0xfd,
3754 0x81, 0xf2, 0x80, 0x41, 0x0c, 0x81, 0x41, 0xa4,3801 0x80, 0xf5, 0x81, 0xf2, 0x80, 0x41, 0x0c, 0x81,
3755 0x80, 0xd2, 0x80, 0x91, 0x80, 0xd0, 0x80, 0x41,3802 0x41, 0x01, 0x0b, 0x80, 0x40, 0x9b, 0x80, 0xd2,
3756 0xa4, 0x80, 0x41, 0x01, 0x00, 0x81, 0xd0, 0x80,3803 0x80, 0x91, 0x80, 0xd0, 0x80, 0x41, 0xa4, 0x80,
3757 0x60, 0x4d, 0x57, 0x84, 0xba, 0x86, 0x44, 0x57,3804 0x41, 0x01, 0x00, 0x81, 0xd0, 0x80, 0x60, 0x4d,
3758 0x90, 0x60, 0x61, 0xc6, 0x12, 0x2f, 0x39, 0x86,3805 0x57, 0x84, 0xba, 0x86, 0x44, 0x57, 0x90, 0xcf,
3806 0x81, 0x60, 0x61, 0x74, 0x12, 0x2f, 0x39, 0x86,
3759 0x9d, 0x83, 0x4f, 0x81, 0x86, 0x41, 0xb4, 0x83,3807 0x9d, 0x83, 0x4f, 0x81, 0x86, 0x41, 0xb4, 0x83,
3760 0x45, 0xdf, 0x86, 0xec, 0x10, 0x82,3808 0x45, 0xdf, 0x86, 0xec, 0x10, 0x82,
3761};3809};
3762 3810
3763static const uint8_t unicode_prop_Extender_table[86] = {3811static const uint8_t unicode_prop_Extender_table[89] = {
3764 0x40, 0xb6, 0x80, 0x42, 0x17, 0x81, 0x43, 0x6d,3812 0x40, 0xb6, 0x80, 0x42, 0x17, 0x81, 0x43, 0x6d,
3765 0x80, 0x41, 0xb8, 0x80, 0x46, 0x4a, 0x80, 0xfe,3813 0x80, 0x41, 0xb8, 0x80, 0x43, 0x59, 0x80, 0x42,
3766 0x80, 0x49, 0x42, 0x80, 0xb7, 0x80, 0x42, 0x62,3814 0xef, 0x80, 0xfe, 0x80, 0x49, 0x42, 0x80, 0xb7,
3767 0x80, 0x41, 0x8d, 0x80, 0xc3, 0x80, 0x53, 0x88,3815 0x80, 0x42, 0x62, 0x80, 0x41, 0x8d, 0x80, 0xc3,
3768 0x80, 0xaa, 0x84, 0xe6, 0x81, 0xdc, 0x82, 0x60,3816 0x80, 0x53, 0x88, 0x80, 0xaa, 0x84, 0xe6, 0x81,
3769 0x6f, 0x15, 0x80, 0x45, 0xf5, 0x80, 0x43, 0xc1,3817 0xdc, 0x82, 0x60, 0x6f, 0x15, 0x80, 0x45, 0xf5,
3770 0x80, 0x95, 0x80, 0x40, 0x88, 0x80, 0xeb, 0x80,3818 0x80, 0x43, 0xc1, 0x80, 0x95, 0x80, 0x40, 0x88,
3771 0x94, 0x81, 0x60, 0x54, 0x7a, 0x80, 0x53, 0xeb,3819 0x80, 0xeb, 0x80, 0x94, 0x81, 0x60, 0x54, 0x7a,
3772 0x80, 0x42, 0x67, 0x82, 0x44, 0xce, 0x80, 0x60,3820 0x80, 0x53, 0xeb, 0x80, 0x42, 0x67, 0x82, 0x44,
3773 0x50, 0xa8, 0x81, 0x44, 0x9b, 0x08, 0x80, 0x60,3821 0xce, 0x80, 0x60, 0x50, 0xa8, 0x81, 0x44, 0x9b,
3774 0x71, 0x57, 0x81, 0x48, 0x05, 0x82,3822 0x08, 0x80, 0x60, 0x71, 0x57, 0x81, 0x48, 0x05,
3823 0x82,
3775};3824};
3776 3825
3777static const uint8_t unicode_prop_Hex_Digit_table[12] = {3826static const uint8_t unicode_prop_Hex_Digit_table[12] = {
@@ -3787,15 +3836,16 @@ static const uint8_t unicode_prop_IDS_Trinary_Operator_table[4] = { · 9 unmodified lines
3787 0x60, 0x2f, 0xf1, 0x81,3836 0x60, 0x2f, 0xf1, 0x81,
3788};3837};
3789 3838
3790static const uint8_t unicode_prop_Ideographic_table[58] = {3839static const uint8_t unicode_prop_Ideographic_table[66] = {
3791 0x60, 0x30, 0x05, 0x81, 0x98, 0x88, 0x8d, 0x82,3840 0x60, 0x30, 0x05, 0x81, 0x98, 0x88, 0x8d, 0x82,
3792 0x43, 0xc4, 0x59, 0xb5, 0xc9, 0x60, 0x51, 0xef,3841 0x43, 0xc4, 0x59, 0xbf, 0xbf, 0x60, 0x51, 0xfc,
3793 0x60, 0x59, 0x0f, 0x41, 0x6d, 0x81, 0xe9, 0x60,3842 0x60, 0x59, 0x02, 0x41, 0x6d, 0x81, 0xe9, 0x60,
3794 0x75, 0x25, 0x57, 0xf7, 0x87, 0x42, 0xf2, 0x60,3843 0x75, 0x09, 0x80, 0x9a, 0x57, 0xf7, 0x87, 0x44,
3795 0x26, 0x7c, 0x41, 0x8b, 0x60, 0x4d, 0x03, 0x60,3844 0xd5, 0xa9, 0x88, 0x60, 0x24, 0x66, 0x41, 0x8b,
3796 0xa6, 0xd6, 0xa8, 0x50, 0x34, 0x8a, 0x40, 0xdd,3845 0x60, 0x4d, 0x03, 0x60, 0xa6, 0xdd, 0xa1, 0x50,
3797 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x4c, 0x1e,3846 0x34, 0x8a, 0x40, 0xdd, 0x81, 0x56, 0x81, 0x8d,
3798 0x42, 0x1d,3847 0x5d, 0x30, 0x4c, 0x1e, 0x42, 0x1d, 0x45, 0xe1,
3848 0x53, 0x4a,
3799};3849};
3800 3850
3801static const uint8_t unicode_prop_Join_Control_table[4] = {3851static const uint8_t unicode_prop_Join_Control_table[4] = {
@@ -3851,7 +3901,7 @@ static const uint8_t unicode_prop_Regional_Indicator_table[4] = { · 49 unmodified lines
3851 0x61, 0xf1, 0xe5, 0x99,3901 0x61, 0xf1, 0xe5, 0x99,
3852};3902};
3853 3903
3854static const uint8_t unicode_prop_Sentence_Terminal_table[184] = {3904static const uint8_t unicode_prop_Sentence_Terminal_table[188] = {
3855 0xa0, 0x80, 0x8b, 0x80, 0x8f, 0x80, 0x45, 0x48,3905 0xa0, 0x80, 0x8b, 0x80, 0x8f, 0x80, 0x45, 0x48,
3856 0x80, 0x40, 0x93, 0x81, 0x40, 0xb3, 0x80, 0xaa,3906 0x80, 0x40, 0x93, 0x81, 0x40, 0xb3, 0x80, 0xaa,
3857 0x82, 0x40, 0xf5, 0x80, 0xbc, 0x00, 0x02, 0x81,3907 0x82, 0x40, 0xf5, 0x80, 0xbc, 0x00, 0x02, 0x81,
@@ -3871,10 +3921,11 @@ static const uint8_t unicode_prop_Sentence_Terminal_table[184] = { · 13 unmodified lines
3871 0x82, 0x40, 0x80, 0x0d, 0x80, 0x8f, 0x81, 0xd7,3921 0x82, 0x40, 0x80, 0x0d, 0x80, 0x8f, 0x81, 0xd7,
3872 0x08, 0x81, 0xeb, 0x80, 0x41, 0xa0, 0x81, 0x41,3922 0x08, 0x81, 0xeb, 0x80, 0x41, 0xa0, 0x81, 0x41,
3873 0x74, 0x0c, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82,3923 0x74, 0x0c, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82,
3874 0x43, 0x02, 0x81, 0xd6, 0x81, 0x41, 0xa3, 0x81,3924 0x42, 0x04, 0x00, 0x80, 0x40, 0xfa, 0x81, 0xd6,
3875 0x42, 0xb3, 0x81, 0x60, 0x4b, 0x74, 0x81, 0x40,3925 0x81, 0x41, 0xa3, 0x81, 0x42, 0xb3, 0x81, 0x60,
3876 0x84, 0x80, 0xc0, 0x81, 0x8a, 0x80, 0x43, 0x52,3926 0x4b, 0x74, 0x81, 0x40, 0x84, 0x80, 0xc0, 0x81,
3877 0x80, 0x60, 0x4e, 0x05, 0x80, 0x5d, 0xe7, 0x80,3927 0x8a, 0x80, 0x43, 0x52, 0x80, 0x60, 0x4e, 0x05,
3928 0x80, 0x5d, 0xe7, 0x80,
3878};3929};
3879 3930
3880static const uint8_t unicode_prop_Soft_Dotted_table[71] = {3931static const uint8_t unicode_prop_Soft_Dotted_table[71] = {
@@ -3889,7 +3940,7 @@ static const uint8_t unicode_prop_Soft_Dotted_table[71] = { · 8 unmodified lines
3889 0x81, 0xb1, 0x81, 0xb1, 0x81, 0xb1, 0x81,3940 0x81, 0xb1, 0x81, 0xb1, 0x81, 0xb1, 0x81,
3890};3941};
3891 3942
3892static const uint8_t unicode_prop_Terminal_Punctuation_table[237] = {3943static const uint8_t unicode_prop_Terminal_Punctuation_table[241] = {
3893 0xa0, 0x80, 0x89, 0x00, 0x80, 0x8a, 0x0a, 0x80,3944 0xa0, 0x80, 0x89, 0x00, 0x80, 0x8a, 0x0a, 0x80,
3894 0x43, 0x3d, 0x07, 0x80, 0x42, 0x00, 0x80, 0xb8,3945 0x43, 0x3d, 0x07, 0x80, 0x42, 0x00, 0x80, 0xb8,
3895 0x80, 0xc7, 0x80, 0x8d, 0x01, 0x81, 0x40, 0xb3,3946 0x80, 0xc7, 0x80, 0x8d, 0x01, 0x81, 0x40, 0xb3,
@@ -3913,21 +3964,23 @@ static const uint8_t unicode_prop_Terminal_Punctuation_table[237] = { · 17 unmodified lines
3913 0x85, 0xc3, 0x85, 0xd8, 0x83, 0x43, 0xb7, 0x84,3964 0x85, 0xc3, 0x85, 0xd8, 0x83, 0x43, 0xb7, 0x84,
3914 0x40, 0xec, 0x86, 0xef, 0x83, 0xfe, 0x82, 0x40,3965 0x40, 0xec, 0x86, 0xef, 0x83, 0xfe, 0x82, 0x40,
3915 0x80, 0x0d, 0x80, 0x8f, 0x81, 0xd7, 0x84, 0xeb,3966 0x80, 0x0d, 0x80, 0x8f, 0x81, 0xd7, 0x84, 0xeb,
3916 0x80, 0x41, 0xa0, 0x82, 0x8c, 0x80, 0x41, 0x65,3967 0x80, 0x41, 0xa0, 0x82, 0x8b, 0x81, 0x41, 0x65,
3917 0x1a, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82, 0x43,3968 0x1a, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82, 0x42,
3918 0x02, 0x81, 0xd6, 0x0b, 0x81, 0x41, 0x9d, 0x82,3969 0x04, 0x00, 0x80, 0x40, 0xfa, 0x81, 0xd6, 0x0b,
3919 0xac, 0x80, 0x42, 0x84, 0x81, 0x45, 0x76, 0x84,3970 0x81, 0x41, 0x9d, 0x82, 0xac, 0x80, 0x42, 0x84,
3920 0x60, 0x45, 0xf8, 0x81, 0x40, 0x84, 0x80, 0xc0,3971 0x81, 0x45, 0x76, 0x84, 0x60, 0x45, 0xf8, 0x81,
3921 0x82, 0x89, 0x80, 0x43, 0x51, 0x81, 0x60, 0x4e,3972 0x40, 0x84, 0x80, 0xc0, 0x82, 0x89, 0x80, 0x43,
3922 0x05, 0x80, 0x5d, 0xe6, 0x83,3973 0x51, 0x81, 0x60, 0x4e, 0x05, 0x80, 0x5d, 0xe6,
3974 0x83,
3923};3975};
3924 3976
3925static const uint8_t unicode_prop_Unified_Ideograph_table[38] = {3977static const uint8_t unicode_prop_Unified_Ideograph_table[42] = {
3926 0x60, 0x33, 0xff, 0x59, 0xb5, 0xc9, 0x60, 0x51,3978 0x60, 0x33, 0xff, 0x59, 0xbf, 0xbf, 0x60, 0x51,
3927 0xef, 0x60, 0x5a, 0x1d, 0x08, 0x00, 0x81, 0x89,3979 0xfc, 0x60, 0x5a, 0x10, 0x08, 0x00, 0x81, 0x89,
3928 0x00, 0x00, 0x09, 0x82, 0x61, 0x05, 0xd5, 0x60,3980 0x00, 0x00, 0x09, 0x82, 0x61, 0x05, 0xd5, 0x60,
3929 0xa6, 0xd6, 0xa8, 0x50, 0x34, 0x8a, 0x40, 0xdd,3981 0xa6, 0xdd, 0xa1, 0x50, 0x34, 0x8a, 0x40, 0xdd,
3930 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30,3982 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x54, 0x1e,
3983 0x53, 0x4a,
3931};3984};
3932 3985
3933static const uint8_t unicode_prop_Variation_Selector_table[12] = {3986static const uint8_t unicode_prop_Variation_Selector_table[12] = {
@@ -3966,7 +4019,7 @@ static const uint8_t unicode_prop_Bidi_Mirrored_table[171] = { · 32 unmodified lines
3966 0x80, 0xb8, 0x80,4019 0x80, 0xb8, 0x80,
3967};4020};
3968 4021
3969static const uint8_t unicode_prop_Emoji_table[236] = {4022static const uint8_t unicode_prop_Emoji_table[238] = {
3970 0xa2, 0x05, 0x04, 0x89, 0xee, 0x03, 0x80, 0x5f,4023 0xa2, 0x05, 0x04, 0x89, 0xee, 0x03, 0x80, 0x5f,
3971 0x8c, 0x80, 0x8b, 0x80, 0x40, 0xd7, 0x80, 0x95,4024 0x8c, 0x80, 0x8b, 0x80, 0x40, 0xd7, 0x80, 0x95,
3972 0x80, 0xd9, 0x85, 0x8e, 0x81, 0x41, 0x6e, 0x81,4025 0x80, 0xd9, 0x85, 0x8e, 0x81, 0x41, 0x6e, 0x81,
@@ -3976,27 +4029,27 @@ static const uint8_t unicode_prop_Emoji_table[236] = { · 3 unmodified lines
3976 0x09, 0x03, 0x01, 0x00, 0x09, 0x02, 0x02, 0x0f,4029 0x09, 0x03, 0x01, 0x00, 0x09, 0x02, 0x02, 0x0f,
3977 0x14, 0x00, 0x04, 0x8b, 0x8a, 0x09, 0x00, 0x08,4030 0x14, 0x00, 0x04, 0x8b, 0x8a, 0x09, 0x00, 0x08,
3978 0x80, 0x91, 0x01, 0x81, 0x91, 0x28, 0x00, 0x0a,4031 0x80, 0x91, 0x01, 0x81, 0x91, 0x28, 0x00, 0x0a,
3979 0x0f, 0x0b, 0x81, 0x8a, 0x0c, 0x09, 0x04, 0x08,4032 0x0c, 0x01, 0x0b, 0x81, 0x8a, 0x0c, 0x09, 0x04,
3980 0x00, 0x81, 0x93, 0x0c, 0x28, 0x19, 0x03, 0x01,4033 0x08, 0x00, 0x81, 0x93, 0x0c, 0x28, 0x19, 0x03,
3981 0x01, 0x28, 0x01, 0x00, 0x00, 0x05, 0x02, 0x05,4034 0x01, 0x01, 0x28, 0x01, 0x00, 0x00, 0x05, 0x02,
3982 0x80, 0x89, 0x81, 0x8e, 0x01, 0x03, 0x00, 0x03,4035 0x05, 0x80, 0x89, 0x81, 0x8e, 0x01, 0x03, 0x00,
3983 0x10, 0x80, 0x8a, 0x81, 0xaf, 0x82, 0x88, 0x80,4036 0x03, 0x10, 0x80, 0x8a, 0x81, 0xaf, 0x82, 0x88,
3984 0x8d, 0x80, 0x8d, 0x80, 0x41, 0x73, 0x81, 0x41,4037 0x80, 0x8d, 0x80, 0x8d, 0x80, 0x41, 0x73, 0x81,
3985 0xce, 0x82, 0x92, 0x81, 0xb2, 0x03, 0x80, 0x44,4038 0x41, 0xce, 0x82, 0x92, 0x81, 0xb2, 0x03, 0x80,
3986 0xd9, 0x80, 0x8b, 0x80, 0x42, 0x58, 0x00, 0x80,4039 0x44, 0xd9, 0x80, 0x8b, 0x80, 0x42, 0x58, 0x00,
3987 0x61, 0xbd, 0x69, 0x80, 0x40, 0xc9, 0x80, 0x40,4040 0x80, 0x61, 0xbd, 0x69, 0x80, 0x40, 0xc9, 0x80,
3988 0x9f, 0x81, 0x8b, 0x81, 0x8d, 0x01, 0x89, 0xca,4041 0x40, 0x9f, 0x81, 0x8b, 0x81, 0x8d, 0x01, 0x89,
3989 0x99, 0x01, 0x96, 0x80, 0x93, 0x01, 0x88, 0x94,4042 0xca, 0x99, 0x01, 0x96, 0x80, 0x93, 0x01, 0x88,
3990 0x81, 0x40, 0xad, 0xa1, 0x81, 0xef, 0x09, 0x02,4043 0x94, 0x81, 0x40, 0xad, 0xa1, 0x81, 0xef, 0x09,
3991 0x81, 0xd2, 0x0a, 0x80, 0x41, 0x06, 0x80, 0xbe,4044 0x02, 0x81, 0xd2, 0x0a, 0x80, 0x41, 0x06, 0x80,
3992 0x8a, 0x28, 0x97, 0x31, 0x0f, 0x8b, 0x01, 0x19,4045 0xbe, 0x8a, 0x28, 0x97, 0x31, 0x0f, 0x8b, 0x01,
3993 0x03, 0x81, 0x8c, 0x09, 0x07, 0x81, 0x88, 0x04,4046 0x19, 0x03, 0x81, 0x8c, 0x09, 0x07, 0x81, 0x88,
3994 0x82, 0x8b, 0x17, 0x11, 0x00, 0x03, 0x05, 0x02,4047 0x04, 0x82, 0x8b, 0x17, 0x11, 0x00, 0x03, 0x05,
3995 0x05, 0xd5, 0xaf, 0xc5, 0x27, 0x08, 0x89, 0x2a,4048 0x02, 0x05, 0xd5, 0xaf, 0xc5, 0x27, 0x0a, 0x3d,
3996 0x00, 0x0a, 0x01, 0x87, 0x40, 0xe4, 0x8b, 0x41,4049 0x10, 0x01, 0x10, 0x81, 0x89, 0x40, 0xe2, 0x8b,
3997 0x20, 0xad, 0x80, 0x89, 0x80, 0xaa, 0x03, 0x82,4050 0x41, 0x1f, 0xae, 0x80, 0x89, 0x80, 0xb1, 0x80,
3998 0xa8, 0x0d, 0x82, 0x9c, 0x81, 0xb2, 0xef, 0x1b,4051 0xd1, 0x80, 0xb2, 0xef, 0x22, 0x14, 0x86, 0x88,
3999 0x14, 0x82, 0x8c, 0x85,4052 0x98, 0x36, 0x88, 0x82, 0x8c, 0x86,
4000};4053};
4001 4054
4002static const uint8_t unicode_prop_Emoji_Component_table[28] = {4055static const uint8_t unicode_prop_Emoji_Component_table[28] = {
@@ -4010,18 +4063,19 @@ static const uint8_t unicode_prop_Emoji_Modifier_table[4] = { · 7 unmodified lines
4010 0x61, 0xf3, 0xfa, 0x84,4063 0x61, 0xf3, 0xfa, 0x84,
4011};4064};
4012 4065
4013static const uint8_t unicode_prop_Emoji_Modifier_Base_table[63] = {4066static const uint8_t unicode_prop_Emoji_Modifier_Base_table[66] = {
4014 0x60, 0x26, 0x1c, 0x80, 0x40, 0xda, 0x80, 0x8f,4067 0x60, 0x26, 0x1c, 0x80, 0x40, 0xda, 0x80, 0x8f,
4015 0x83, 0x61, 0xcc, 0x76, 0x80, 0xbb, 0x11, 0x01,4068 0x83, 0x61, 0xcc, 0x76, 0x80, 0xbb, 0x11, 0x01,
4016 0x82, 0xf4, 0x09, 0x8a, 0x94, 0x92, 0x10, 0x1a,4069 0x82, 0xf4, 0x09, 0x8a, 0x94, 0x92, 0x10, 0x1a,
4017 0x02, 0x30, 0x00, 0x97, 0x80, 0x40, 0xc8, 0x0b,4070 0x02, 0x30, 0x00, 0x97, 0x80, 0x40, 0xc8, 0x0b,
4018 0x80, 0x94, 0x03, 0x81, 0x40, 0xad, 0x12, 0x84,4071 0x80, 0x94, 0x03, 0x81, 0x40, 0xad, 0x12, 0x84,
4019 0xd2, 0x80, 0x8f, 0x82, 0x88, 0x80, 0x8a, 0x80,4072 0xd2, 0x80, 0x8f, 0x82, 0x88, 0x80, 0x8a, 0x80,
4020 0x42, 0x41, 0x07, 0x3d, 0x80, 0x88, 0x89, 0x0a,4073 0x42, 0x3e, 0x01, 0x07, 0x3d, 0x80, 0x88, 0x89,
4021 0xf5, 0x08, 0x08, 0x80, 0x90, 0x10, 0x8c,4074 0x0a, 0xb7, 0x80, 0xbc, 0x08, 0x08, 0x80, 0x90,
4075 0x10, 0x8c,
4022};4076};
4023 4077
4024static const uint8_t unicode_prop_Emoji_Presentation_table[143] = {4078static const uint8_t unicode_prop_Emoji_Presentation_table[144] = {
4025 0x60, 0x23, 0x19, 0x81, 0x40, 0xcc, 0x1a, 0x01,4079 0x60, 0x23, 0x19, 0x81, 0x40, 0xcc, 0x1a, 0x01,
4026 0x80, 0x42, 0x08, 0x81, 0x94, 0x81, 0xb1, 0x8b,4080 0x80, 0x42, 0x08, 0x81, 0x94, 0x81, 0xb1, 0x8b,
4027 0xaa, 0x80, 0x92, 0x80, 0x8c, 0x07, 0x81, 0x90,4081 0xaa, 0x80, 0x92, 0x80, 0x8c, 0x07, 0x81, 0x90,
@@ -4036,13 +4090,13 @@ static const uint8_t unicode_prop_Emoji_Presentation_table[143] = { · 8 unmodified lines
4036 0x1c, 0x8b, 0x90, 0x10, 0x82, 0xc6, 0x00, 0x80,4090 0x1c, 0x8b, 0x90, 0x10, 0x82, 0xc6, 0x00, 0x80,
4037 0x40, 0xba, 0x81, 0xbe, 0x8c, 0x18, 0x97, 0x91,4091 0x40, 0xba, 0x81, 0xbe, 0x8c, 0x18, 0x97, 0x91,
4038 0x80, 0x99, 0x81, 0x8c, 0x80, 0xd5, 0xd4, 0xaf,4092 0x80, 0x99, 0x81, 0x8c, 0x80, 0xd5, 0xd4, 0xaf,
4039 0xc5, 0x28, 0x12, 0x08, 0x94, 0x0e, 0x86, 0x40,4093 0xc5, 0x28, 0x12, 0x0a, 0x92, 0x0e, 0x88, 0x40,
4040 0xe4, 0x8b, 0x41, 0x20, 0xad, 0x80, 0x89, 0x80,4094 0xe2, 0x8b, 0x41, 0x1f, 0xae, 0x80, 0x89, 0x80,
4041 0xaa, 0x03, 0x82, 0xa8, 0x0d, 0x82, 0x9c, 0x81,4095 0xb1, 0x80, 0xd1, 0x80, 0xb2, 0xef, 0x22, 0x14,
4042 0xb2, 0xef, 0x1b, 0x14, 0x82, 0x8c, 0x85,4096 0x86, 0x88, 0x98, 0x36, 0x88, 0x82, 0x8c, 0x86,
4043};4097};
4044 4098
4045static const uint8_t unicode_prop_Extended_Pictographic_table[152] = {4099static const uint8_t unicode_prop_Extended_Pictographic_table[156] = {
4046 0x40, 0xa8, 0x03, 0x80, 0x5f, 0x8c, 0x80, 0x8b,4100 0x40, 0xa8, 0x03, 0x80, 0x5f, 0x8c, 0x80, 0x8b,
4047 0x80, 0x40, 0xd7, 0x80, 0x95, 0x80, 0xd9, 0x85,4101 0x80, 0x40, 0xd7, 0x80, 0x95, 0x80, 0xd9, 0x85,
4048 0x8e, 0x81, 0x41, 0x6e, 0x81, 0x8b, 0x80, 0xde,4102 0x8e, 0x81, 0x41, 0x6e, 0x81, 0x8b, 0x80, 0xde,
@@ -4061,7 +4115,8 @@ static const uint8_t unicode_prop_Extended_Pictographic_table[152] = { · 12 unmodified lines
4061 0x88, 0x41, 0xb1, 0x84, 0x41, 0x3d, 0x87, 0x41,4115 0x88, 0x41, 0xb1, 0x84, 0x41, 0x3d, 0x87, 0x41,
4062 0x09, 0xaf, 0xff, 0xf3, 0x8b, 0xd4, 0xaa, 0x8b,4116 0x09, 0xaf, 0xff, 0xf3, 0x8b, 0xd4, 0xaa, 0x8b,
4063 0x83, 0xb7, 0x87, 0x89, 0x85, 0xa7, 0x87, 0x9d,4117 0x83, 0xb7, 0x87, 0x89, 0x85, 0xa7, 0x87, 0x9d,
4064 0xd1, 0x8b, 0xae, 0x80, 0x89, 0x80, 0x46, 0xb6,4118 0xd1, 0x8b, 0xae, 0x80, 0x89, 0x80, 0x41, 0xb8,
4119 0x40, 0xff, 0x43, 0xfd,
4065};4120};
4066 4121
4067static const uint8_t unicode_prop_Default_Ignorable_Code_Point_table[51] = {4122static const uint8_t unicode_prop_Default_Ignorable_Code_Point_table[51] = {
@@ -4175,11 +4230,11 @@ static const char unicode_prop_name_table[] = · 107 unmodified lines
4175 "White_Space,space" "\0"4230 "White_Space,space" "\0"
4176 "Bidi_Mirrored,Bidi_M" "\0"4231 "Bidi_Mirrored,Bidi_M" "\0"
4177 "Emoji" "\0"4232 "Emoji" "\0"
4178 "Emoji_Component" "\0"4233 "Emoji_Component,EComp" "\0"
4179 "Emoji_Modifier" "\0"4234 "Emoji_Modifier,EMod" "\0"
4180 "Emoji_Modifier_Base" "\0"4235 "Emoji_Modifier_Base,EBase" "\0"
4181 "Emoji_Presentation" "\0"4236 "Emoji_Presentation,EPres" "\0"
4182 "Extended_Pictographic" "\0"4237 "Extended_Pictographic,ExtPict" "\0"
4183 "Default_Ignorable_Code_Point,DI" "\0"4238 "Default_Ignorable_Code_Point,DI" "\0"
4184 "ID_Start,IDS" "\0"4239 "ID_Start,IDS" "\0"
4185 "Case_Ignorable,CI" "\0"4240 "Case_Ignorable,CI" "\0"
quickjs-libc.c+220−168
@@ -224,17 +224,15 @@ static JSValue js_printf_internal(JSContext *ctx, · 223 unmodified lines
224 case 'X':224 case 'X':
225 if (i >= argc)225 if (i >= argc)
226 goto missing;226 goto missing;
227 if (JS_ToInt64Ext(ctx, &int64_arg, argv[i++]))
228 goto fail;
227 if (modsize > 0) {229 if (modsize > 0) {
228 if (JS_ToInt64(ctx, &int64_arg, argv[i++]))
229 goto fail;
230 q[1] = q[-1];230 q[1] = q[-1];
231 q[-1] = q[0] = 'l';231 q[-1] = q[0] = 'l';
232 q[2] = '\0';232 q[2] = '\0';
233 dbuf_printf_fun(&dbuf, fmtbuf, (long long)int64_arg);233 dbuf_printf_fun(&dbuf, fmtbuf, (long long)int64_arg);
234 } else {234 } else {
235 if (JS_ToInt32(ctx, &int32_arg, argv[i++]))235 dbuf_printf_fun(&dbuf, fmtbuf, (int)int64_arg);
236 goto fail;
237 dbuf_printf_fun(&dbuf, fmtbuf, int32_arg);
238 }236 }
239 break;237 break;
240 238
@@ -369,6 +367,27 @@ static JSValue js_loadScript(JSContext *ctx, JSValueConst this_val, · 128 unmodified lines
369 return ret;367 return ret;
370}368}
371 369
370/* load a file as a UTF-8 encoded string */
371static JSValue js_std_loadFile(JSContext *ctx, JSValueConst this_val,
372 int argc, JSValueConst *argv)
373{
374 uint8_t *buf;
375 const char *filename;
376 JSValue ret;
377 size_t buf_len;
378
379 filename = JS_ToCString(ctx, argv[0]);
380 if (!filename)
381 return JS_EXCEPTION;
382 buf = js_load_file(ctx, &buf_len, filename);
383 JS_FreeCString(ctx, filename);
384 if (!buf)
385 return JS_NULL;
386 ret = JS_NewStringLen(ctx, (char *)buf, buf_len);
387 js_free(ctx, buf);
388 return ret;
389}
390
372typedef JSModuleDef *(JSInitModuleFunc)(JSContext *ctx,391typedef JSModuleDef *(JSInitModuleFunc)(JSContext *ctx,
373 const char *module_name);392 const char *module_name);
374 393
@@ -633,30 +652,14 @@ static void js_std_file_finalizer(JSRuntime *rt, JSValue val) · 258 unmodified lines
633 }652 }
634}653}
635 654
636static JSValue js_new_std_error(JSContext *ctx, int err)655static ssize_t js_get_errno(ssize_t ret)
637{656{
638 JSValue obj;657 if (ret == -1)
639 /* XXX: could add a specific Error prototype */658 ret = -errno;
640 obj = JS_NewError(ctx);659 return ret;
641 JS_DefinePropertyValueStr(ctx, obj, "message",
642 JS_NewString(ctx, strerror(err)),
643 JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
644 JS_DefinePropertyValueStr(ctx, obj, "errno",
645 JS_NewInt32(ctx, err),
646 JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
647 return obj;
648}
649
650static JSValue js_std_error_constructor(JSContext *ctx, JSValueConst new_target,
651 int argc, JSValueConst *argv)
652{
653 int err;
654 if (JS_ToInt32(ctx, &err, argv[0]))
655 return JS_EXCEPTION;
656 return js_new_std_error(ctx, err);
657}660}
658 661
659static JSValue js_std_error_strerror(JSContext *ctx, JSValueConst this_val,662static JSValue js_std_strerror(JSContext *ctx, JSValueConst this_val,
660 int argc, JSValueConst *argv)663 int argc, JSValueConst *argv)
661{664{
662 int err;665 int err;
@@ -665,15 +668,6 @@ static JSValue js_std_error_strerror(JSContext *ctx, JSValueConst this_val, · 2 unmodified lines
665 return JS_NewString(ctx, strerror(err));668 return JS_NewString(ctx, strerror(err));
666}669}
667 670
668static JSValue js_std_throw_errno(JSContext *ctx, int err)
669{
670 JSValue obj;
671 obj = js_new_std_error(ctx, err);
672 if (JS_IsException(obj))
673 obj = JS_NULL;
674 return JS_Throw(ctx, obj);
675}
676
677static JSValue js_new_std_file(JSContext *ctx, FILE *f,671static JSValue js_new_std_file(JSContext *ctx, FILE *f,
678 BOOL close_in_finalizer,672 BOOL close_in_finalizer,
679 BOOL is_popen)673 BOOL is_popen)
@@ -695,12 +689,20 @@ static JSValue js_new_std_file(JSContext *ctx, FILE *f, · 15 unmodified lines
695 return obj;689 return obj;
696}690}
697 691
692static void js_set_error_object(JSContext *ctx, JSValue obj, int err)
693{
694 if (!JS_IsUndefined(obj)) {
695 JS_SetPropertyStr(ctx, obj, "errno", JS_NewInt32(ctx, err));
696 }
697}
698
698static JSValue js_std_open(JSContext *ctx, JSValueConst this_val,699static JSValue js_std_open(JSContext *ctx, JSValueConst this_val,
699 int argc, JSValueConst *argv)700 int argc, JSValueConst *argv)
700{701{
701 const char *filename, *mode = NULL;702 const char *filename, *mode = NULL;
702 FILE *f;703 FILE *f;
703 704 int err;
705
704 filename = JS_ToCString(ctx, argv[0]);706 filename = JS_ToCString(ctx, argv[0]);
705 if (!filename)707 if (!filename)
706 goto fail;708 goto fail;
@@ -708,15 +710,21 @@ static JSValue js_std_open(JSContext *ctx, JSValueConst this_val, · 1 unmodified line
708 if (!mode)710 if (!mode)
709 goto fail;711 goto fail;
710 if (mode[strspn(mode, "rwa+b")] != '\0') {712 if (mode[strspn(mode, "rwa+b")] != '\0') {
711 js_std_throw_errno(ctx, EINVAL);713 JS_ThrowTypeError(ctx, "invalid file mode");
712 goto fail;714 goto fail;
713 }715 }
714 716
715 f = fopen(filename, mode);717 f = fopen(filename, mode);
718 if (!f)
719 err = errno;
720 else
721 err = 0;
722 if (argc >= 3)
723 js_set_error_object(ctx, argv[2], err);
716 JS_FreeCString(ctx, filename);724 JS_FreeCString(ctx, filename);
717 JS_FreeCString(ctx, mode);725 JS_FreeCString(ctx, mode);
718 if (!f)726 if (!f)
719 return js_std_throw_errno(ctx, errno);727 return JS_NULL;
720 return js_new_std_file(ctx, f, TRUE, FALSE);728 return js_new_std_file(ctx, f, TRUE, FALSE);
721 fail:729 fail:
722 JS_FreeCString(ctx, filename);730 JS_FreeCString(ctx, filename);
@@ -729,7 +737,8 @@ static JSValue js_std_popen(JSContext *ctx, JSValueConst this_val, · 6 unmodified lines
729{737{
730 const char *filename, *mode = NULL;738 const char *filename, *mode = NULL;
731 FILE *f;739 FILE *f;
732 740 int err;
741
733 filename = JS_ToCString(ctx, argv[0]);742 filename = JS_ToCString(ctx, argv[0]);
734 if (!filename)743 if (!filename)
735 goto fail;744 goto fail;
@@ -737,15 +746,21 @@ static JSValue js_std_popen(JSContext *ctx, JSValueConst this_val, · 1 unmodified line
737 if (!mode)746 if (!mode)
738 goto fail;747 goto fail;
739 if (mode[strspn(mode, "rw")] != '\0') {748 if (mode[strspn(mode, "rw")] != '\0') {
740 js_std_throw_errno(ctx, EINVAL);749 JS_ThrowTypeError(ctx, "invalid file mode");
741 goto fail;750 goto fail;
742 }751 }
743 752
744 f = popen(filename, mode);753 f = popen(filename, mode);
754 if (!f)
755 err = errno;
756 else
757 err = 0;
758 if (argc >= 3)
759 js_set_error_object(ctx, argv[2], err);
745 JS_FreeCString(ctx, filename);760 JS_FreeCString(ctx, filename);
746 JS_FreeCString(ctx, mode);761 JS_FreeCString(ctx, mode);
747 if (!f)762 if (!f)
748 return js_std_throw_errno(ctx, errno);763 return JS_NULL;
749 return js_new_std_file(ctx, f, TRUE, TRUE);764 return js_new_std_file(ctx, f, TRUE, TRUE);
750 fail:765 fail:
751 JS_FreeCString(ctx, filename);766 JS_FreeCString(ctx, filename);
@@ -758,7 +773,7 @@ static JSValue js_std_fdopen(JSContext *ctx, JSValueConst this_val, · 6 unmodified lines
758{773{
759 const char *mode;774 const char *mode;
760 FILE *f;775 FILE *f;
761 int fd;776 int fd, err;
762 777
763 if (JS_ToInt32(ctx, &fd, argv[0]))778 if (JS_ToInt32(ctx, &fd, argv[0]))
764 return JS_EXCEPTION;779 return JS_EXCEPTION;
@@ -766,14 +781,20 @@ static JSValue js_std_fdopen(JSContext *ctx, JSValueConst this_val, · 1 unmodified line
766 if (!mode)781 if (!mode)
767 goto fail;782 goto fail;
768 if (mode[strspn(mode, "rwa+")] != '\0') {783 if (mode[strspn(mode, "rwa+")] != '\0') {
769 js_std_throw_errno(ctx, EINVAL);784 JS_ThrowTypeError(ctx, "invalid file mode");
770 goto fail;785 goto fail;
771 }786 }
772 787
773 f = fdopen(fd, mode);788 f = fdopen(fd, mode);
789 if (!f)
790 err = errno;
791 else
792 err = 0;
793 if (argc >= 3)
794 js_set_error_object(ctx, argv[2], err);
774 JS_FreeCString(ctx, mode);795 JS_FreeCString(ctx, mode);
775 if (!f)796 if (!f)
776 return js_std_throw_errno(ctx, errno);797 return JS_NULL;
777 return js_new_std_file(ctx, f, TRUE, FALSE);798 return js_new_std_file(ctx, f, TRUE, FALSE);
778 fail:799 fail:
779 JS_FreeCString(ctx, mode);800 JS_FreeCString(ctx, mode);
@@ -785,8 +806,10 @@ static JSValue js_std_tmpfile(JSContext *ctx, JSValueConst this_val, · 5 unmodified lines
785{806{
786 FILE *f;807 FILE *f;
787 f = tmpfile();808 f = tmpfile();
809 if (argc >= 1)
810 js_set_error_object(ctx, argv[0], f ? 0 : errno);
788 if (!f)811 if (!f)
789 return js_std_throw_errno(ctx, errno);812 return JS_NULL;
790 return js_new_std_file(ctx, f, TRUE, FALSE);813 return js_new_std_file(ctx, f, TRUE, FALSE);
791}814}
792 815
@@ -808,7 +831,7 @@ static FILE *js_std_file_get(JSContext *ctx, JSValueConst obj) · 15 unmodified lines
808 if (!s)831 if (!s)
809 return NULL;832 return NULL;
810 if (!s->f) {833 if (!s->f) {
811 js_std_throw_errno(ctx, EBADF);834 JS_ThrowTypeError(ctx, "invalid file handle");
812 return NULL;835 return NULL;
813 }836 }
814 return s->f;837 return s->f;
@@ -843,17 +866,17 @@ static JSValue js_std_file_close(JSContext *ctx, JSValueConst this_val, · 28 unmodified lines
843 int argc, JSValueConst *argv)866 int argc, JSValueConst *argv)
844{867{
845 JSSTDFile *s = JS_GetOpaque2(ctx, this_val, js_std_file_class_id);868 JSSTDFile *s = JS_GetOpaque2(ctx, this_val, js_std_file_class_id);
869 int err;
846 if (!s)870 if (!s)
847 return JS_EXCEPTION;871 return JS_EXCEPTION;
848 if (!s->f)872 if (!s->f)
849 return js_std_throw_errno(ctx, EBADF);873 return JS_ThrowTypeError(ctx, "invalid file handle");
850 /* XXX: could return exit code */
851 if (s->is_popen)874 if (s->is_popen)
852 pclose(s->f);875 err = js_get_errno(pclose(s->f));
853 else876 else
854 fclose(s->f);877 err = js_get_errno(fclose(s->f));
855 s->f = NULL;878 s->f = NULL;
856 return JS_UNDEFINED;879 return JS_NewInt32(ctx, err);
857}880}
858 881
859static JSValue js_std_file_printf(JSContext *ctx, JSValueConst this_val,882static JSValue js_std_file_printf(JSContext *ctx, JSValueConst this_val,
@@ -876,7 +899,7 @@ static JSValue js_std_file_flush(JSContext *ctx, JSValueConst this_val, · 16 unmodified lines
876}899}
877 900
878static JSValue js_std_file_tell(JSContext *ctx, JSValueConst this_val,901static JSValue js_std_file_tell(JSContext *ctx, JSValueConst this_val,
879 int argc, JSValueConst *argv)902 int argc, JSValueConst *argv, int is_bigint)
880{903{
881 FILE *f = js_std_file_get(ctx, this_val);904 FILE *f = js_std_file_get(ctx, this_val);
882 int64_t pos;905 int64_t pos;
@@ -887,7 +910,10 @@ static JSValue js_std_file_tell(JSContext *ctx, JSValueConst this_val, · 4 unmodified lines
887#else910#else
888 pos = ftell(f);911 pos = ftell(f);
889#endif912#endif
890 return JS_NewInt64(ctx, pos);913 if (is_bigint)
914 return JS_NewBigInt64(ctx, pos);
915 else
916 return JS_NewInt64(ctx, pos);
891}917}
892 918
893static JSValue js_std_file_seek(JSContext *ctx, JSValueConst this_val,919static JSValue js_std_file_seek(JSContext *ctx, JSValueConst this_val,
@@ -898,7 +924,7 @@ static JSValue js_std_file_seek(JSContext *ctx, JSValueConst this_val, · 4 unmodified lines
898 int whence, ret;924 int whence, ret;
899 if (!f)925 if (!f)
900 return JS_EXCEPTION;926 return JS_EXCEPTION;
901 if (JS_ToInt64(ctx, &pos, argv[0]))927 if (JS_ToInt64Ext(ctx, &pos, argv[0]))
902 return JS_EXCEPTION;928 return JS_EXCEPTION;
903 if (JS_ToInt32(ctx, &whence, argv[1]))929 if (JS_ToInt32(ctx, &whence, argv[1]))
904 return JS_EXCEPTION;930 return JS_EXCEPTION;
@@ -908,8 +934,8 @@ static JSValue js_std_file_seek(JSContext *ctx, JSValueConst this_val, · 3 unmodified lines
908 ret = fseek(f, pos, whence);934 ret = fseek(f, pos, whence);
909#endif935#endif
910 if (ret < 0)936 if (ret < 0)
911 return js_std_throw_errno(ctx, EBADF);937 ret = -errno;
912 return JS_UNDEFINED;938 return JS_NewInt32(ctx, ret);
913}939}
914 940
915static JSValue js_std_file_eof(JSContext *ctx, JSValueConst this_val,941static JSValue js_std_file_eof(JSContext *ctx, JSValueConst this_val,
@@ -921,6 +947,25 @@ static JSValue js_std_file_eof(JSContext *ctx, JSValueConst this_val, · 5 unmodified lines
921 return JS_NewBool(ctx, feof(f));947 return JS_NewBool(ctx, feof(f));
922}948}
923 949
950static JSValue js_std_file_error(JSContext *ctx, JSValueConst this_val,
951 int argc, JSValueConst *argv)
952{
953 FILE *f = js_std_file_get(ctx, this_val);
954 if (!f)
955 return JS_EXCEPTION;
956 return JS_NewBool(ctx, ferror(f));
957}
958
959static JSValue js_std_file_clearerr(JSContext *ctx, JSValueConst this_val,
960 int argc, JSValueConst *argv)
961{
962 FILE *f = js_std_file_get(ctx, this_val);
963 if (!f)
964 return JS_EXCEPTION;
965 clearerr(f);
966 return JS_UNDEFINED;
967}
968
924static JSValue js_std_file_fileno(JSContext *ctx, JSValueConst this_val,969static JSValue js_std_file_fileno(JSContext *ctx, JSValueConst this_val,
925 int argc, JSValueConst *argv)970 int argc, JSValueConst *argv)
926{971{
@@ -1151,7 +1196,7 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 224 unmodified lines
1151 f = popen((char *)cmd_buf.buf, "r");1196 f = popen((char *)cmd_buf.buf, "r");
1152 dbuf_free(&cmd_buf);1197 dbuf_free(&cmd_buf);
1153 if (!f) {1198 if (!f) {
1154 return js_std_throw_errno(ctx, errno);1199 return JS_ThrowTypeError(ctx, "could not start curl");
1155 }1200 }
1156 1201
1157 js_std_dbuf_init(ctx, data_buf);1202 js_std_dbuf_init(ctx, data_buf);
@@ -1162,20 +1207,21 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 4 unmodified lines
1162 goto fail;1207 goto fail;
1163 1208
1164 /* get the HTTP status */1209 /* get the HTTP status */
1165 if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, NULL) < 0)1210 if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, NULL) < 0) {
1211 status = 0;
1166 goto bad_header;1212 goto bad_header;
1213 }
1167 status = http_get_status(buf);1214 status = http_get_status(buf);
1168 if (!full_flag && !(status >= 200 && status <= 299)) {1215 if (!full_flag && !(status >= 200 && status <= 299)) {
1169 js_std_throw_errno(ctx, ENOENT);1216 goto bad_header;
1170 goto fail;
1171 }1217 }
1172 1218
1173 /* wait until there is an empty line */1219 /* wait until there is an empty line */
1174 for(;;) {1220 for(;;) {
1175 if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, header_buf) < 0) {1221 if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, header_buf) < 0) {
1176 bad_header:1222 bad_header:
1177 js_std_throw_errno(ctx, EINVAL);1223 response = JS_NULL;
1178 goto fail;1224 goto done;
1179 }1225 }
1180 if (!strcmp(buf, "\r\n"))1226 if (!strcmp(buf, "\r\n"))
1181 break;1227 break;
@@ -1191,11 +1237,6 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 9 unmodified lines
1191 break;1237 break;
1192 dbuf_put(data_buf, (uint8_t *)buf, len);1238 dbuf_put(data_buf, (uint8_t *)buf, len);
1193 }1239 }
1194 js_free(ctx, buf);
1195 buf = NULL;
1196 pclose(f);
1197 f = NULL;
1198
1199 if (dbuf_error(data_buf))1240 if (dbuf_error(data_buf))
1200 goto fail;1241 goto fail;
1201 if (binary_flag) {1242 if (binary_flag) {
@@ -1204,10 +1245,15 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 2 unmodified lines
1204 } else {1245 } else {
1205 response = JS_NewStringLen(ctx, (char *)data_buf->buf, data_buf->size);1246 response = JS_NewStringLen(ctx, (char *)data_buf->buf, data_buf->size);
1206 }1247 }
1207 dbuf_free(data_buf);
1208 data_buf = NULL;
1209 if (JS_IsException(response))1248 if (JS_IsException(response))
1210 goto fail;1249 goto fail;
1250 done:
1251 js_free(ctx, buf);
1252 buf = NULL;
1253 pclose(f);
1254 f = NULL;
1255 dbuf_free(data_buf);
1256 data_buf = NULL;
1211 1257
1212 if (full_flag) {1258 if (full_flag) {
1213 ret_obj = JS_NewObject(ctx);1259 ret_obj = JS_NewObject(ctx);
@@ -1216,13 +1262,15 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 2 unmodified lines
1216 JS_DefinePropertyValueStr(ctx, ret_obj, "response",1262 JS_DefinePropertyValueStr(ctx, ret_obj, "response",
1217 response,1263 response,
1218 JS_PROP_C_W_E);1264 JS_PROP_C_W_E);
1219 JS_DefinePropertyValueStr(ctx, ret_obj, "responseHeaders",1265 if (!JS_IsNull(response)) {
1220 JS_NewStringLen(ctx, (char *)header_buf->buf,1266 JS_DefinePropertyValueStr(ctx, ret_obj, "responseHeaders",
1221 header_buf->size),1267 JS_NewStringLen(ctx, (char *)header_buf->buf,
1222 JS_PROP_C_W_E);1268 header_buf->size),
1223 JS_DefinePropertyValueStr(ctx, ret_obj, "status",1269 JS_PROP_C_W_E);
1224 JS_NewInt32(ctx, status),1270 JS_DefinePropertyValueStr(ctx, ret_obj, "status",
1225 JS_PROP_C_W_E);1271 JS_NewInt32(ctx, status),
1272 JS_PROP_C_W_E);
1273 }
1226 } else {1274 } else {
1227 ret_obj = response;1275 ret_obj = response;
1228 }1276 }
@@ -1245,6 +1293,23 @@ static JSClassDef js_std_file_class = { · 16 unmodified lines
1245 .finalizer = js_std_file_finalizer,1293 .finalizer = js_std_file_finalizer,
1246}; 1294};
1247 1295
1296static const JSCFunctionListEntry js_std_error_props[] = {
1297 /* various errno values */
1298#define DEF(x) JS_PROP_INT32_DEF(#x, x, JS_PROP_CONFIGURABLE )
1299 DEF(EINVAL),
1300 DEF(EIO),
1301 DEF(EACCES),
1302 DEF(EEXIST),
1303 DEF(ENOSPC),
1304 DEF(ENOSYS),
1305 DEF(EBUSY),
1306 DEF(ENOENT),
1307 DEF(EPERM),
1308 DEF(EPIPE),
1309 DEF(EBADF),
1310#undef DEF
1311};
1312
1248static const JSCFunctionListEntry js_std_funcs[] = {1313static const JSCFunctionListEntry js_std_funcs[] = {
1249 JS_CFUNC_DEF("exit", 1, js_std_exit ),1314 JS_CFUNC_DEF("exit", 1, js_std_exit ),
1250 JS_CFUNC_DEF("gc", 0, js_std_gc ),1315 JS_CFUNC_DEF("gc", 0, js_std_gc ),
@@ -1252,7 +1317,9 @@ static const JSCFunctionListEntry js_std_funcs[] = { · 1 unmodified line
1252 JS_CFUNC_DEF("loadScript", 1, js_loadScript ),1317 JS_CFUNC_DEF("loadScript", 1, js_loadScript ),
1253 JS_CFUNC_DEF("getenv", 1, js_std_getenv ),1318 JS_CFUNC_DEF("getenv", 1, js_std_getenv ),
1254 JS_CFUNC_DEF("urlGet", 1, js_std_urlGet ),1319 JS_CFUNC_DEF("urlGet", 1, js_std_urlGet ),
1255 1320 JS_CFUNC_DEF("loadFile", 1, js_std_loadFile ),
1321 JS_CFUNC_DEF("strerror", 1, js_std_strerror ),
1322
1256 /* FILE I/O */1323 /* FILE I/O */
1257 JS_CFUNC_DEF("open", 2, js_std_open ),1324 JS_CFUNC_DEF("open", 2, js_std_open ),
1258 JS_CFUNC_DEF("popen", 2, js_std_popen ),1325 JS_CFUNC_DEF("popen", 2, js_std_popen ),
@@ -1264,49 +1331,34 @@ static const JSCFunctionListEntry js_std_funcs[] = { · 5 unmodified lines
1264 JS_PROP_INT32_DEF("SEEK_SET", SEEK_SET, JS_PROP_CONFIGURABLE ),1331 JS_PROP_INT32_DEF("SEEK_SET", SEEK_SET, JS_PROP_CONFIGURABLE ),
1265 JS_PROP_INT32_DEF("SEEK_CUR", SEEK_CUR, JS_PROP_CONFIGURABLE ),1332 JS_PROP_INT32_DEF("SEEK_CUR", SEEK_CUR, JS_PROP_CONFIGURABLE ),
1266 JS_PROP_INT32_DEF("SEEK_END", SEEK_END, JS_PROP_CONFIGURABLE ),1333 JS_PROP_INT32_DEF("SEEK_END", SEEK_END, JS_PROP_CONFIGURABLE ),
1267 1334 JS_OBJECT_DEF("Error", js_std_error_props, countof(js_std_error_props), JS_PROP_CONFIGURABLE),
1268 /* setenv, ... */1335 /* setenv, ... */
1269};1336};
1270 1337
1271static const JSCFunctionListEntry js_std_error_funcs[] = {
1272 JS_CFUNC_DEF("strerror", 1, js_std_error_strerror ),
1273 /* various errno values */
1274#define DEF(x) JS_PROP_INT32_DEF(#x, x, JS_PROP_CONFIGURABLE )
1275 DEF(EINVAL),
1276 DEF(EIO),
1277 DEF(EACCES),
1278 DEF(EEXIST),
1279 DEF(ENOSPC),
1280 DEF(ENOSYS),
1281 DEF(EBUSY),
1282 DEF(ENOENT),
1283 DEF(EPERM),
1284 DEF(EPIPE),
1285 DEF(EBADF),
1286#undef DEF
1287};
1288
1289static const JSCFunctionListEntry js_std_file_proto_funcs[] = {1338static const JSCFunctionListEntry js_std_file_proto_funcs[] = {
1290 JS_CFUNC_DEF("close", 0, js_std_file_close ),1339 JS_CFUNC_DEF("close", 0, js_std_file_close ),
1291 JS_CFUNC_MAGIC_DEF("puts", 1, js_std_file_puts, 1 ),1340 JS_CFUNC_MAGIC_DEF("puts", 1, js_std_file_puts, 1 ),
1292 JS_CFUNC_DEF("printf", 1, js_std_file_printf ),1341 JS_CFUNC_DEF("printf", 1, js_std_file_printf ),
1293 JS_CFUNC_DEF("flush", 0, js_std_file_flush ),1342 JS_CFUNC_DEF("flush", 0, js_std_file_flush ),
1294 JS_CFUNC_DEF("tell", 0, js_std_file_tell ),1343 JS_CFUNC_MAGIC_DEF("tell", 0, js_std_file_tell, 0 ),
1344 JS_CFUNC_MAGIC_DEF("tello", 0, js_std_file_tell, 1 ),
1295 JS_CFUNC_DEF("seek", 2, js_std_file_seek ),1345 JS_CFUNC_DEF("seek", 2, js_std_file_seek ),
1296 JS_CFUNC_DEF("eof", 0, js_std_file_eof ),1346 JS_CFUNC_DEF("eof", 0, js_std_file_eof ),
1297 JS_CFUNC_DEF("fileno", 0, js_std_file_fileno ),1347 JS_CFUNC_DEF("fileno", 0, js_std_file_fileno ),
1348 JS_CFUNC_DEF("error", 0, js_std_file_error ),
1349 JS_CFUNC_DEF("clearerr", 0, js_std_file_clearerr ),
1298 JS_CFUNC_MAGIC_DEF("read", 3, js_std_file_read_write, 0 ),1350 JS_CFUNC_MAGIC_DEF("read", 3, js_std_file_read_write, 0 ),
1299 JS_CFUNC_MAGIC_DEF("write", 3, js_std_file_read_write, 1 ),1351 JS_CFUNC_MAGIC_DEF("write", 3, js_std_file_read_write, 1 ),
1300 JS_CFUNC_DEF("getline", 0, js_std_file_getline ),1352 JS_CFUNC_DEF("getline", 0, js_std_file_getline ),
1301 JS_CFUNC_DEF("readAsString", 0, js_std_file_readAsString ),1353 JS_CFUNC_DEF("readAsString", 0, js_std_file_readAsString ),
1302 JS_CFUNC_DEF("getByte", 0, js_std_file_getByte ),1354 JS_CFUNC_DEF("getByte", 0, js_std_file_getByte ),
1303 JS_CFUNC_DEF("putByte", 1, js_std_file_putByte ),1355 JS_CFUNC_DEF("putByte", 1, js_std_file_putByte ),
1304 /* setvbuf, ferror, clearerr, ... */1356 /* setvbuf, ... */
1305};1357};
1306 1358
1307static int js_std_init(JSContext *ctx, JSModuleDef *m)1359static int js_std_init(JSContext *ctx, JSModuleDef *m)
1308{1360{
1309 JSValue proto, obj;1361 JSValue proto;
1310 1362
1311 /* FILE class */1363 /* FILE class */
1312 /* the class ID is created once */1364 /* the class ID is created once */
@@ -1323,13 +1375,6 @@ static int js_std_init(JSContext *ctx, JSModuleDef *m) · 10 unmodified lines
1323 JS_SetModuleExport(ctx, m, "in", js_new_std_file(ctx, stdin, FALSE, FALSE));1375 JS_SetModuleExport(ctx, m, "in", js_new_std_file(ctx, stdin, FALSE, FALSE));
1324 JS_SetModuleExport(ctx, m, "out", js_new_std_file(ctx, stdout, FALSE, FALSE));1376 JS_SetModuleExport(ctx, m, "out", js_new_std_file(ctx, stdout, FALSE, FALSE));
1325 JS_SetModuleExport(ctx, m, "err", js_new_std_file(ctx, stderr, FALSE, FALSE));1377 JS_SetModuleExport(ctx, m, "err", js_new_std_file(ctx, stderr, FALSE, FALSE));
1326
1327 obj = JS_NewCFunction2(ctx, js_std_error_constructor,
1328 "Error", 1, JS_CFUNC_constructor, 0);
1329 JS_SetPropertyFunctionList(ctx, obj, js_std_error_funcs,
1330 countof(js_std_error_funcs));
1331 JS_SetModuleExport(ctx, m, "Error", obj);
1332
1333 return 0;1378 return 0;
1334}1379}
1335 1380
@@ -1343,20 +1388,12 @@ JSModuleDef *js_init_module_std(JSContext *ctx, const char *module_name) · 7 unmodified lines
1343 JS_AddModuleExport(ctx, m, "in");1388 JS_AddModuleExport(ctx, m, "in");
1344 JS_AddModuleExport(ctx, m, "out");1389 JS_AddModuleExport(ctx, m, "out");
1345 JS_AddModuleExport(ctx, m, "err");1390 JS_AddModuleExport(ctx, m, "err");
1346 JS_AddModuleExport(ctx, m, "Error");
1347 return m;1391 return m;
1348}1392}
1349 1393
1350/**********************************************************/1394/**********************************************************/
1351/* 'os' object */1395/* 'os' object */
1352 1396
1353static JSValue js_os_return(JSContext *ctx, ssize_t ret)
1354{
1355 if (ret < 0)
1356 ret = -errno;
1357 return JS_NewInt64(ctx, ret);
1358}
1359
1360static JSValue js_os_open(JSContext *ctx, JSValueConst this_val,1397static JSValue js_os_open(JSContext *ctx, JSValueConst this_val,
1361 int argc, JSValueConst *argv)1398 int argc, JSValueConst *argv)
1362{1399{
@@ -1382,9 +1419,9 @@ static JSValue js_os_open(JSContext *ctx, JSValueConst this_val, · 19 unmodified lines
1382 if (!(flags & O_TEXT))1419 if (!(flags & O_TEXT))
1383 flags |= O_BINARY;1420 flags |= O_BINARY;
1384#endif1421#endif
1385 ret = open(filename, flags, mode);1422 ret = js_get_errno(open(filename, flags, mode));
1386 JS_FreeCString(ctx, filename);1423 JS_FreeCString(ctx, filename);
1387 return js_os_return(ctx, ret);1424 return JS_NewInt32(ctx, ret);
1388}1425}
1389 1426
1390static JSValue js_os_close(JSContext *ctx, JSValueConst this_val,1427static JSValue js_os_close(JSContext *ctx, JSValueConst this_val,
@@ -1393,24 +1430,31 @@ static JSValue js_os_close(JSContext *ctx, JSValueConst this_val, · 2 unmodified lines
1393 int fd, ret;1430 int fd, ret;
1394 if (JS_ToInt32(ctx, &fd, argv[0]))1431 if (JS_ToInt32(ctx, &fd, argv[0]))
1395 return JS_EXCEPTION;1432 return JS_EXCEPTION;
1396 ret = close(fd);1433 ret = js_get_errno(close(fd));
1397 return js_os_return(ctx, ret);1434 return JS_NewInt32(ctx, ret);
1398}1435}
1399 1436
1400static JSValue js_os_seek(JSContext *ctx, JSValueConst this_val,1437static JSValue js_os_seek(JSContext *ctx, JSValueConst this_val,
1401 int argc, JSValueConst *argv)1438 int argc, JSValueConst *argv)
1402{1439{
1403 int fd, whence, ret;1440 int fd, whence;
1404 int64_t pos;1441 int64_t pos, ret;
1442 BOOL is_bigint;
1405 1443
1406 if (JS_ToInt32(ctx, &fd, argv[0]))1444 if (JS_ToInt32(ctx, &fd, argv[0]))
1407 return JS_EXCEPTION;1445 return JS_EXCEPTION;
1408 if (JS_ToInt64(ctx, &pos, argv[1]))1446 is_bigint = JS_IsBigInt(ctx, argv[1]);
1447 if (JS_ToInt64Ext(ctx, &pos, argv[1]))
1409 return JS_EXCEPTION;1448 return JS_EXCEPTION;
1410 if (JS_ToInt32(ctx, &whence, argv[2]))1449 if (JS_ToInt32(ctx, &whence, argv[2]))
1411 return JS_EXCEPTION;1450 return JS_EXCEPTION;
1412 ret = lseek(fd, pos, whence);1451 ret = lseek(fd, pos, whence);
1413 return js_os_return(ctx, ret);1452 if (ret == -1)
1453 ret = -errno;
1454 if (is_bigint)
1455 return JS_NewBigInt64(ctx, ret);
1456 else
1457 return JS_NewInt64(ctx, ret);
1414}1458}
1415 1459
1416static JSValue js_os_read_write(JSContext *ctx, JSValueConst this_val,1460static JSValue js_os_read_write(JSContext *ctx, JSValueConst this_val,
@@ -1434,10 +1478,10 @@ static JSValue js_os_read_write(JSContext *ctx, JSValueConst this_val, · 17 unmodified lines
1434 if (pos + len > size)1478 if (pos + len > size)
1435 return JS_ThrowRangeError(ctx, "read/write array buffer overflow");1479 return JS_ThrowRangeError(ctx, "read/write array buffer overflow");
1436 if (magic)1480 if (magic)
1437 ret = write(fd, buf + pos, len);1481 ret = js_get_errno(write(fd, buf + pos, len));
1438 else1482 else
1439 ret = read(fd, buf + pos, len);1483 ret = js_get_errno(read(fd, buf + pos, len));
1440 return js_os_return(ctx, ret);1484 return JS_NewInt64(ctx, ret);
1441}1485}
1442 1486
1443static JSValue js_os_isatty(JSContext *ctx, JSValueConst this_val,1487static JSValue js_os_isatty(JSContext *ctx, JSValueConst this_val,
@@ -1555,9 +1599,9 @@ static JSValue js_os_remove(JSContext *ctx, JSValueConst this_val, · 111 unmodified lines
1555 filename = JS_ToCString(ctx, argv[0]);1599 filename = JS_ToCString(ctx, argv[0]);
1556 if (!filename)1600 if (!filename)
1557 return JS_EXCEPTION;1601 return JS_EXCEPTION;
1558 ret = remove(filename);1602 ret = js_get_errno(remove(filename));
1559 JS_FreeCString(ctx, filename);1603 JS_FreeCString(ctx, filename);
1560 return js_os_return(ctx, ret);1604 return JS_NewInt32(ctx, ret);
1561}1605}
1562 1606
1563static JSValue js_os_rename(JSContext *ctx, JSValueConst this_val,1607static JSValue js_os_rename(JSContext *ctx, JSValueConst this_val,
@@ -1574,10 +1618,10 @@ static JSValue js_os_rename(JSContext *ctx, JSValueConst this_val, · 10 unmodified lines
1574 JS_FreeCString(ctx, oldpath);1618 JS_FreeCString(ctx, oldpath);
1575 return JS_EXCEPTION;1619 return JS_EXCEPTION;
1576 }1620 }
1577 ret = rename(oldpath, newpath);1621 ret = js_get_errno(rename(oldpath, newpath));
1578 JS_FreeCString(ctx, oldpath);1622 JS_FreeCString(ctx, oldpath);
1579 JS_FreeCString(ctx, newpath);1623 JS_FreeCString(ctx, newpath);
1580 return js_os_return(ctx, ret);1624 return JS_NewInt32(ctx, ret);
1581}1625}
1582 1626
1583static JSOSRWHandler *find_rh(int fd)1627static JSOSRWHandler *find_rh(int fd)
@@ -2018,7 +2062,7 @@ static JSValue js_os_getcwd(JSContext *ctx, JSValueConst this_val, · 434 unmodified lines
2018 2062
2019 if (!getcwd(buf, sizeof(buf))) {2063 if (!getcwd(buf, sizeof(buf))) {
2020 buf[0] = '\0';2064 buf[0] = '\0';
2021 err = -errno;2065 err = errno;
2022 } else {2066 } else {
2023 err = 0;2067 err = 0;
2024 }2068 }
@@ -2036,9 +2080,9 @@ static JSValue js_os_chdir(JSContext *ctx, JSValueConst this_val, · 11 unmodified lines
2036 target = JS_ToCString(ctx, argv[0]);2080 target = JS_ToCString(ctx, argv[0]);
2037 if (!target)2081 if (!target)
2038 return JS_EXCEPTION;2082 return JS_EXCEPTION;
2039 err = chdir(target);2083 err = js_get_errno(chdir(target));
2040 JS_FreeCString(ctx, target);2084 JS_FreeCString(ctx, target);
2041 return js_os_return(ctx, err);2085 return JS_NewInt32(ctx, err);
2042}2086}
2043 2087
2044/* return [path, errorcode] */2088/* return [path, errorcode] */
@@ -2056,7 +2100,7 @@ static JSValue js_os_realpath(JSContext *ctx, JSValueConst this_val, · 11 unmodified lines
2056 JS_FreeCString(ctx, path);2100 JS_FreeCString(ctx, path);
2057 if (!res) {2101 if (!res) {
2058 buf[0] = '\0';2102 buf[0] = '\0';
2059 err = -errno;2103 err = errno;
2060 } else {2104 } else {
2061 err = 0;2105 err = 0;
2062 }2106 }
@@ -2078,9 +2122,9 @@ static JSValue js_os_mkdir(JSContext *ctx, JSValueConst this_val, · 15 unmodified lines
2078 path = JS_ToCString(ctx, argv[0]);2122 path = JS_ToCString(ctx, argv[0]);
2079 if (!path)2123 if (!path)
2080 return JS_EXCEPTION;2124 return JS_EXCEPTION;
2081 ret = mkdir(path, mode);2125 ret = js_get_errno(mkdir(path, mode));
2082 JS_FreeCString(ctx, path);2126 JS_FreeCString(ctx, path);
2083 return js_os_return(ctx, ret);2127 return JS_NewInt32(ctx, ret);
2084}2128}
2085 2129
2086static int64_t timespec_to_ms(const struct timespec *tv)2130static int64_t timespec_to_ms(const struct timespec *tv)
@@ -2106,7 +2150,7 @@ static JSValue js_os_stat(JSContext *ctx, JSValueConst this_val, · 19 unmodified lines
2106 res = stat(path, &st);2150 res = stat(path, &st);
2107 JS_FreeCString(ctx, path);2151 JS_FreeCString(ctx, path);
2108 if (res < 0) {2152 if (res < 0) {
2109 err = -errno;2153 err = errno;
2110 obj = JS_NULL;2154 obj = JS_NULL;
2111 } else {2155 } else {
2112 err = 0;2156 err = 0;
@@ -2179,10 +2223,10 @@ static JSValue js_os_symlink(JSContext *ctx, JSValueConst this_val, · 66 unmodified lines
2179 JS_FreeCString(ctx, target);2223 JS_FreeCString(ctx, target);
2180 return JS_EXCEPTION;2224 return JS_EXCEPTION;
2181 }2225 }
2182 err = symlink(target, linkpath);2226 err = js_get_errno(symlink(target, linkpath));
2183 JS_FreeCString(ctx, target);2227 JS_FreeCString(ctx, target);
2184 JS_FreeCString(ctx, linkpath);2228 JS_FreeCString(ctx, linkpath);
2185 return js_os_return(ctx, err);2229 return JS_NewInt32(ctx, err);
2186}2230}
2187 2231
2188/* return [path, errorcode] */2232/* return [path, errorcode] */
@@ -2198,14 +2242,14 @@ static JSValue js_os_readlink(JSContext *ctx, JSValueConst this_val, · 9 unmodified lines
2198 if (!path)2242 if (!path)
2199 return JS_EXCEPTION;2243 return JS_EXCEPTION;
2200 res = readlink(path, buf, sizeof(buf) - 1);2244 res = readlink(path, buf, sizeof(buf) - 1);
2201 JS_FreeCString(ctx, path);
2202 if (res < 0) {2245 if (res < 0) {
2203 buf[0] = '\0';2246 buf[0] = '\0';
2204 err = -errno;2247 err = errno;
2205 } else {2248 } else {
2206 buf[res] = '\0';2249 buf[res] = '\0';
2207 err = 0;2250 err = 0;
2208 }2251 }
2252 JS_FreeCString(ctx, path);
2209 return make_string_error(ctx, buf, err);2253 return make_string_error(ctx, buf, err);
2210}2254}
2211 2255
@@ -2229,18 +2273,19 @@ static JSValue js_os_readdir(JSContext *ctx, JSValueConst this_val, · 17 unmodified lines
2229 return JS_EXCEPTION;2273 return JS_EXCEPTION;
2230 }2274 }
2231 f = opendir(path);2275 f = opendir(path);
2276 if (!f)
2277 err = errno;
2278 else
2279 err = 0;
2232 JS_FreeCString(ctx, path);2280 JS_FreeCString(ctx, path);
2233 err = 0;2281 if (!f)
2234 if (!f) {
2235 err = -errno;
2236 goto done;2282 goto done;
2237 }
2238 len = 0;2283 len = 0;
2239 for(;;) {2284 for(;;) {
2240 errno = 0;2285 errno = 0;
2241 d = readdir(f);2286 d = readdir(f);
2242 if (!d) {2287 if (!d) {
2243 err = -errno;2288 err = errno;
2244 break;2289 break;
2245 }2290 }
2246 JS_DefinePropertyValueUint32(ctx, obj, len++,2291 JS_DefinePropertyValueUint32(ctx, obj, len++,
@@ -2275,9 +2320,9 @@ static JSValue js_os_utimes(JSContext *ctx, JSValueConst this_val, · 28 unmodified lines
2275 return JS_EXCEPTION;2320 return JS_EXCEPTION;
2276 ms_to_timeval(&times[0], atime);2321 ms_to_timeval(&times[0], atime);
2277 ms_to_timeval(&times[1], mtime);2322 ms_to_timeval(&times[1], mtime);
2278 ret = utimes(path, times);2323 ret = js_get_errno(utimes(path, times));
2279 JS_FreeCString(ctx, path);2324 JS_FreeCString(ctx, path);
2280 return js_os_return(ctx, ret);2325 return JS_NewInt32(ctx, ret);
2281}2326}
2282 2327
2283/* exec(args[, options]) -> exitcode */2328/* exec(args[, options]) -> exitcode */
@@ -2486,8 +2531,8 @@ static JSValue js_os_kill(JSContext *ctx, JSValueConst this_val, · 202 unmodified lines
2486 return JS_EXCEPTION;2531 return JS_EXCEPTION;
2487 if (JS_ToInt32(ctx, &sig, argv[1]))2532 if (JS_ToInt32(ctx, &sig, argv[1]))
2488 return JS_EXCEPTION;2533 return JS_EXCEPTION;
2489 ret = kill(pid, sig);2534 ret = js_get_errno(kill(pid, sig));
2490 return js_os_return(ctx, ret);2535 return JS_NewInt32(ctx, ret);
2491}2536}
2492 2537
2493/* sleep(delay_ms) */2538/* sleep(delay_ms) */
@@ -2502,8 +2547,8 @@ static JSValue js_os_sleep(JSContext *ctx, JSValueConst this_val, · 8 unmodified lines
2502 return JS_EXCEPTION;2547 return JS_EXCEPTION;
2503 ts.tv_sec = delay / 1000;2548 ts.tv_sec = delay / 1000;
2504 ts.tv_nsec = (delay % 1000) * 1000000;2549 ts.tv_nsec = (delay % 1000) * 1000000;
2505 ret = nanosleep(&ts, NULL);2550 ret = js_get_errno(nanosleep(&ts, NULL));
2506 return js_os_return(ctx, ret);2551 return JS_NewInt32(ctx, ret);
2507}2552}
2508 2553
2509/* dup(fd) */2554/* dup(fd) */
@@ -2514,8 +2559,8 @@ static JSValue js_os_dup(JSContext *ctx, JSValueConst this_val, · 4 unmodified lines
2514 2559
2515 if (JS_ToInt32(ctx, &fd, argv[0]))2560 if (JS_ToInt32(ctx, &fd, argv[0]))
2516 return JS_EXCEPTION;2561 return JS_EXCEPTION;
2517 ret = dup(fd);2562 ret = js_get_errno(dup(fd));
2518 return js_os_return(ctx, ret);2563 return JS_NewInt32(ctx, ret);
2519}2564}
2520 2565
2521/* dup2(fd) */2566/* dup2(fd) */
@@ -2528,8 +2573,8 @@ static JSValue js_os_dup2(JSContext *ctx, JSValueConst this_val, · 6 unmodified lines
2528 return JS_EXCEPTION;2573 return JS_EXCEPTION;
2529 if (JS_ToInt32(ctx, &fd2, argv[1]))2574 if (JS_ToInt32(ctx, &fd2, argv[1]))
2530 return JS_EXCEPTION;2575 return JS_EXCEPTION;
2531 ret = dup2(fd, fd2);2576 ret = js_get_errno(dup2(fd, fd2));
2532 return js_os_return(ctx, ret);2577 return JS_NewInt32(ctx, ret);
2533}2578}
2534 2579
2535#endif /* !_WIN32 */2580#endif /* !_WIN32 */
@@ -2725,23 +2770,30 @@ void js_std_free_handlers(JSRuntime *rt) · 189 unmodified lines
2725 }2770 }
2726}2771}
2727 2772
2728static void js_std_dump_error1(JSContext *ctx, JSValueConst exception_val,2773static void js_dump_obj(JSContext *ctx, FILE *f, JSValueConst val)
2729 BOOL is_throw)2774{
2775 const char *str;
2776
2777 str = JS_ToCString(ctx, val);
2778 if (str) {
2779 fprintf(f, "%s\n", str);
2780 JS_FreeCString(ctx, str);
2781 } else {
2782 fprintf(f, "[exception]\n");
2783 }
2784}
2785
2786static void js_std_dump_error1(JSContext *ctx, JSValueConst exception_val)
2730{2787{
2731 JSValue val;2788 JSValue val;
2732 const char *stack;
2733 BOOL is_error;2789 BOOL is_error;
2734 2790
2735 is_error = JS_IsError(ctx, exception_val);2791 is_error = JS_IsError(ctx, exception_val);
2736 if (is_throw && !is_error)2792 js_dump_obj(ctx, stderr, exception_val);
2737 printf("Throw: ");
2738 js_print(ctx, JS_NULL, 1, (JSValueConst *)&exception_val);
2739 if (is_error) {2793 if (is_error) {
2740 val = JS_GetPropertyStr(ctx, exception_val, "stack");2794 val = JS_GetPropertyStr(ctx, exception_val, "stack");
2741 if (!JS_IsUndefined(val)) {2795 if (!JS_IsUndefined(val)) {
2742 stack = JS_ToCString(ctx, val);2796 js_dump_obj(ctx, stderr, val);
2743 printf("%s\n", stack);
2744 JS_FreeCString(ctx, stack);
2745 }2797 }
2746 JS_FreeValue(ctx, val);2798 JS_FreeValue(ctx, val);
2747 }2799 }
@@ -2752,7 +2804,7 @@ void js_std_dump_error(JSContext *ctx) · 4 unmodified lines
2752 JSValue exception_val;2804 JSValue exception_val;
2753 2805
2754 exception_val = JS_GetException(ctx);2806 exception_val = JS_GetException(ctx);
2755 js_std_dump_error1(ctx, exception_val, TRUE);2807 js_std_dump_error1(ctx, exception_val);
2756 JS_FreeValue(ctx, exception_val);2808 JS_FreeValue(ctx, exception_val);
2757}2809}
2758 2810
@@ -2761,8 +2813,8 @@ void js_std_promise_rejection_tracker(JSContext *ctx, JSValueConst promise, · 2 unmodified lines
2761 BOOL is_handled, void *opaque)2813 BOOL is_handled, void *opaque)
2762{2814{
2763 if (!is_handled) {2815 if (!is_handled) {
2764 printf("Possibly unhandled promise rejection: ");2816 fprintf(stderr, "Possibly unhandled promise rejection: ");
2765 js_std_dump_error1(ctx, reason, FALSE);2817 js_std_dump_error1(ctx, reason);
2766 }2818 }
2767}2819}
2768 2820
quickjs-opcode.h+0−1
@@ -119,7 +119,6 @@ DEF( eval, 5, 1, 1, npop_u16) /* func args... -> ret_val */ · 118 unmodified lines
119DEF( apply_eval, 3, 2, 1, u16) /* func array -> ret_eval */119DEF( apply_eval, 3, 2, 1, u16) /* func array -> ret_eval */
120DEF( regexp, 1, 2, 1, none) /* create a RegExp object from the pattern and a120DEF( regexp, 1, 2, 1, none) /* create a RegExp object from the pattern and a
121 bytecode string */121 bytecode string */
122DEF( get_super_ctor, 1, 1, 1, none)
123DEF( get_super, 1, 1, 1, none)122DEF( get_super, 1, 1, 1, none)
124DEF( import, 1, 1, 1, none) /* dynamic module import */123DEF( import, 1, 1, 1, none) /* dynamic module import */
125 124
quickjs.c+128−76
@@ -284,6 +284,7 @@ struct JSRuntime { · 283 unmodified lines
284 JSNumericOperations bigdecimal_ops;284 JSNumericOperations bigdecimal_ops;
285 uint32_t operator_count;285 uint32_t operator_count;
286#endif286#endif
287 void *user_opaque;
287};288};
288 289
289struct JSClass {290struct JSClass {
@@ -1537,6 +1538,16 @@ JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque) · 1247 unmodified lines
1537 return NULL;1538 return NULL;
1538}1539}
1539 1540
1541void *JS_GetRuntimeOpaque(JSRuntime *rt)
1542{
1543 return rt->user_opaque;
1544}
1545
1546void JS_SetRuntimeOpaque(JSRuntime *rt, void *opaque)
1547{
1548 rt->user_opaque = opaque;
1549}
1550
1540/* default memory allocation functions with memory limitation */1551/* default memory allocation functions with memory limitation */
1541static inline size_t js_def_malloc_usable_size(void *ptr)1552static inline size_t js_def_malloc_usable_size(void *ptr)
1542{1553{
@@ -2198,26 +2209,6 @@ static inline BOOL is_math_mode(JSContext *ctx) · 655 unmodified lines
2198}2209}
2199#endif2210#endif
2200 2211
2201JSValue JS_NewInt64(JSContext *ctx, int64_t v)
2202{
2203 if (v == (int32_t)v) {
2204 return JS_NewInt32(ctx, v);
2205 } else {
2206 return __JS_NewFloat64(ctx, (double)v);
2207 }
2208}
2209
2210static force_inline JSValue JS_NewUint32(JSContext *ctx, uint32_t val)
2211{
2212 JSValue v;
2213 if (val <= 0x7fffffff) {
2214 v = JS_MKVAL(JS_TAG_INT, val);
2215 } else {
2216 v = __JS_NewFloat64(ctx, val);
2217 }
2218 return v;
2219}
2220
2221/* JSAtom support */2212/* JSAtom support */
2222 2213
2223#define JS_ATOM_TAG_INT (1U << 31)2214#define JS_ATOM_TAG_INT (1U << 31)
@@ -9794,6 +9785,8 @@ static JSValue js_atof(JSContext *ctx, const char *str, const char **pp, · 7570 unmodified lines
9794 if (*p == '.' && (p > p_start || to_digit((uint8_t)p[1]) < radix)) {9785 if (*p == '.' && (p > p_start || to_digit((uint8_t)p[1]) < radix)) {
9795 is_float = TRUE;9786 is_float = TRUE;
9796 p++;9787 p++;
9788 if (*p == sep)
9789 goto fail;
9797 while (to_digit((uint8_t)*p) < radix ||9790 while (to_digit((uint8_t)*p) < radix ||
9798 (*p == sep && to_digit((uint8_t)p[1]) < radix))9791 (*p == sep && to_digit((uint8_t)p[1]) < radix))
9799 p++;9792 p++;
@@ -10129,7 +10122,6 @@ static __maybe_unused JSValue JS_ToIntegerFree(JSContext *ctx, JSValue val) · 329 unmodified lines
10129 ret = JS_NewInt32(ctx, 0);10122 ret = JS_NewInt32(ctx, 0);
10130 } else {10123 } else {
10131 /* convert -0 to +0 */10124 /* convert -0 to +0 */
10132 /* XXX: should not be done here ? */
10133 d = trunc(d) + 0.0;10125 d = trunc(d) + 0.0;
10134 ret = JS_NewFloat64(ctx, d);10126 ret = JS_NewFloat64(ctx, d);
10135 }10127 }
@@ -10385,6 +10377,14 @@ int JS_ToInt64(JSContext *ctx, int64_t *pres, JSValueConst val) · 249 unmodified lines
10385 return JS_ToInt64Free(ctx, pres, JS_DupValue(ctx, val));10377 return JS_ToInt64Free(ctx, pres, JS_DupValue(ctx, val));
10386}10378}
10387 10379
10380int JS_ToInt64Ext(JSContext *ctx, int64_t *pres, JSValueConst val)
10381{
10382 if (JS_IsBigInt(ctx, val))
10383 return JS_ToBigInt64(ctx, pres, val);
10384 else
10385 return JS_ToInt64(ctx, pres, val);
10386}
10387
10388/* return (<0, 0) in case of exception */10388/* return (<0, 0) in case of exception */
10389static int JS_ToInt32Free(JSContext *ctx, int32_t *pres, JSValue val)10389static int JS_ToInt32Free(JSContext *ctx, int32_t *pres, JSValue val)
10390{10390{
@@ -11840,7 +11840,8 @@ static JSValue JS_CompactBigInt(JSContext *ctx, JSValue val) · 1449 unmodified lines
11840}11840}
11841 11841
11842/* must be kept in sync with JSOverloadableOperatorEnum */11842/* must be kept in sync with JSOverloadableOperatorEnum */
11843static const char *js_overloadable_operator_names[JS_OVOP_COUNT] = {11843/* XXX: use atoms ? */
11844static const char js_overloadable_operator_names[JS_OVOP_COUNT][4] = {
11844 "+",11845 "+",
11845 "-",11846 "-",
11846 "*",11847 "*",
@@ -12894,7 +12895,7 @@ static no_inline __exception int js_binary_arith_slow(JSContext *ctx, JSValue *s · 1047 unmodified lines
12894 handle_bigint:12895 handle_bigint:
12895 if (ctx->rt->bigint_ops.binary_arith(ctx, op, sp - 2, op1, op2))12896 if (ctx->rt->bigint_ops.binary_arith(ctx, op, sp - 2, op1, op2))
12896 goto exception;12897 goto exception;
12897 } else if (tag1 == JS_TAG_FLOAT64 || tag2 == JS_TAG_FLOAT64) {12898 } else {
12898 double dr;12899 double dr;
12899 /* float64 result */12900 /* float64 result */
12900 if (JS_ToFloat64Free(ctx, &d1, op1)) {12901 if (JS_ToFloat64Free(ctx, &d1, op1)) {
@@ -13031,7 +13032,11 @@ static no_inline __exception int js_add_slow(JSContext *ctx, JSValue *sp) · 130 unmodified lines
13031 } else if (tag1 == JS_TAG_BIG_FLOAT || tag2 == JS_TAG_BIG_FLOAT) {13032 } else if (tag1 == JS_TAG_BIG_FLOAT || tag2 == JS_TAG_BIG_FLOAT) {
13032 if (ctx->rt->bigfloat_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2))13033 if (ctx->rt->bigfloat_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2))
13033 goto exception;13034 goto exception;
13034 } else if (tag1 == JS_TAG_FLOAT64 || tag2 == JS_TAG_FLOAT64) {13035 } else if (tag1 == JS_TAG_BIG_INT || tag2 == JS_TAG_BIG_INT) {
13036 handle_bigint:
13037 if (ctx->rt->bigint_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2))
13038 goto exception;
13039 } else {
13035 double d1, d2;13040 double d1, d2;
13036 /* float64 result */13041 /* float64 result */
13037 if (JS_ToFloat64Free(ctx, &d1, op1)) {13042 if (JS_ToFloat64Free(ctx, &d1, op1)) {
@@ -13040,10 +13045,9 @@ static no_inline __exception int js_add_slow(JSContext *ctx, JSValue *sp) · 2 unmodified lines
13040 }13045 }
13041 if (JS_ToFloat64Free(ctx, &d2, op2))13046 if (JS_ToFloat64Free(ctx, &d2, op2))
13042 goto exception;13047 goto exception;
13048 if (is_math_mode(ctx) && is_safe_integer(d1) && is_safe_integer(d2))
13049 goto handle_bigint;
13043 sp[-2] = __JS_NewFloat64(ctx, d1 + d2);13050 sp[-2] = __JS_NewFloat64(ctx, d1 + d2);
13044 } else {
13045 if (ctx->rt->bigint_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2))
13046 goto exception;
13047 }13051 }
13048 return 0;13052 return 0;
13049 exception:13053 exception:
@@ -13642,6 +13646,28 @@ static no_inline int js_mul_pow10(JSContext *ctx, JSValue *sp) · 592 unmodified lines
13642 13646
13643#else /* !CONFIG_BIGNUM */13647#else /* !CONFIG_BIGNUM */
13644 13648
13649static JSValue JS_ThrowUnsupportedBigint(JSContext *ctx)
13650{
13651 return JS_ThrowTypeError(ctx, "bigint is not supported");
13652}
13653
13654JSValue JS_NewBigInt64(JSContext *ctx, int64_t v)
13655{
13656 return JS_ThrowUnsupportedBigint(ctx);
13657}
13658
13659JSValue JS_NewBigUint64(JSContext *ctx, uint64_t v)
13660{
13661 return JS_ThrowUnsupportedBigint(ctx);
13662}
13663
13664int JS_ToBigInt64(JSContext *ctx, int64_t *pres, JSValueConst val)
13665{
13666 JS_ThrowUnsupportedBigint(ctx);
13667 *pres = 0;
13668 return -1;
13669}
13670
13645static no_inline __exception int js_unary_arith_slow(JSContext *ctx,13671static no_inline __exception int js_unary_arith_slow(JSContext *ctx,
13646 JSValue *sp,13672 JSValue *sp,
13647 OPCodeEnum op)13673 OPCodeEnum op)
@@ -16280,22 +16306,6 @@ static JSValue JS_CallInternal(JSContext *ctx, JSValueConst func_obj, · 2632 unmodified lines
16280 }16306 }
16281 BREAK;16307 BREAK;
16282 16308
16283 CASE(OP_get_super_ctor):
16284 {
16285 JSValue proto;
16286 proto = JS_DupValue(ctx, JS_GetPrototype(ctx, sp[-1]));
16287 if (JS_IsException(proto))
16288 goto exception;
16289 if (!JS_IsConstructor(ctx, proto)) {
16290 JS_FreeValue(ctx, proto);
16291 JS_ThrowTypeError(ctx, "not a constructor");
16292 goto exception;
16293 }
16294 JS_FreeValue(ctx, sp[-1]);
16295 sp[-1] = proto;
16296 }
16297 BREAK;
16298
16299 CASE(OP_get_super):16309 CASE(OP_get_super):
16300 {16310 {
16301 JSValue proto;16311 JSValue proto;
@@ -23821,7 +23831,7 @@ static __exception int js_parse_postfix_expr(JSParseState *s, BOOL accept_lparen · 7519 unmodified lines
23821 emit_atom(s, JS_ATOM_this_active_func);23831 emit_atom(s, JS_ATOM_this_active_func);
23822 emit_u16(s, 0);23832 emit_u16(s, 0);
23823 23833
23824 emit_op(s, OP_get_super_ctor);23834 emit_op(s, OP_get_super);
23825 23835
23826 emit_op(s, OP_scope_get_var);23836 emit_op(s, OP_scope_get_var);
23827 emit_atom(s, JS_ATOM_new_target);23837 emit_atom(s, JS_ATOM_new_target);
@@ -31993,10 +32003,10 @@ static __exception int js_parse_function_decl2(JSParseState *s, · 8165 unmodified lines
31993 js_parse_expect(s, ')');32003 js_parse_expect(s, ')');
31994 goto fail;32004 goto fail;
31995 }32005 }
31996 if (s->token.val == ',') {32006 if (s->token.val == ')')
31997 if (next_token(s))32007 break;
31998 goto fail;32008 if (js_parse_expect(s, ','))
31999 }32009 goto fail;
32000 }32010 }
32001 if ((func_type == JS_PARSE_FUNC_GETTER && fd->arg_count != 0) ||32011 if ((func_type == JS_PARSE_FUNC_GETTER && fd->arg_count != 0) ||
32002 (func_type == JS_PARSE_FUNC_SETTER && fd->arg_count != 1)) {32012 (func_type == JS_PARSE_FUNC_SETTER && fd->arg_count != 1)) {
@@ -34381,6 +34391,10 @@ int JS_SetModuleExportList(JSContext *ctx, JSModuleDef *m, · 2378 unmodified lines
34381 case JS_DEF_PROP_DOUBLE:34391 case JS_DEF_PROP_DOUBLE:
34382 val = __JS_NewFloat64(ctx, e->u.f64);34392 val = __JS_NewFloat64(ctx, e->u.f64);
34383 break;34393 break;
34394 case JS_DEF_OBJECT:
34395 val = JS_NewObject(ctx);
34396 JS_SetPropertyFunctionList(ctx, val, e->u.prop_list.tab, e->u.prop_list.len);
34397 break;
34384 default:34398 default:
34385 abort();34399 abort();
34386 }34400 }
@@ -37357,7 +37371,8 @@ static int64_t JS_FlattenIntoArray(JSContext *ctx, JSValueConst target, · 2970 unmodified lines
37357 JS_ThrowTypeError(ctx, "Array too long");37371 JS_ThrowTypeError(ctx, "Array too long");
37358 goto fail;37372 goto fail;
37359 }37373 }
37360 if (JS_SetPropertyInt64(ctx, target, targetIndex, element) < 0)37374 if (JS_DefinePropertyValueInt64(ctx, target, targetIndex, element,
37375 JS_PROP_C_W_E | JS_PROP_THROW) < 0)
37361 return -1;37376 return -1;
37362 targetIndex++;37377 targetIndex++;
37363 }37378 }
@@ -37754,7 +37769,6 @@ static const JSCFunctionListEntry js_array_proto_funcs[] = { · 390 unmodified lines
37754 JS_CFUNC_DEF("copyWithin", 2, js_array_copyWithin ),37769 JS_CFUNC_DEF("copyWithin", 2, js_array_copyWithin ),
37755 JS_CFUNC_MAGIC_DEF("flatMap", 1, js_array_flatten, 1 ),37770 JS_CFUNC_MAGIC_DEF("flatMap", 1, js_array_flatten, 1 ),
37756 JS_CFUNC_MAGIC_DEF("flat", 0, js_array_flatten, 0 ),37771 JS_CFUNC_MAGIC_DEF("flat", 0, js_array_flatten, 0 ),
37757 JS_CFUNC_MAGIC_DEF("flatten", 0, js_array_flatten, 0 ),
37758 JS_CFUNC_MAGIC_DEF("values", 0, js_create_array_iterator, JS_ITERATOR_KIND_VALUE ),37772 JS_CFUNC_MAGIC_DEF("values", 0, js_create_array_iterator, JS_ITERATOR_KIND_VALUE ),
37759 JS_ALIAS_DEF("[Symbol.iterator]", "values" ),37773 JS_ALIAS_DEF("[Symbol.iterator]", "values" ),
37760 JS_CFUNC_MAGIC_DEF("keys", 0, js_create_array_iterator, JS_ITERATOR_KIND_KEY ),37774 JS_CFUNC_MAGIC_DEF("keys", 0, js_create_array_iterator, JS_ITERATOR_KIND_KEY ),
@@ -39918,14 +39932,36 @@ static JSValue js_math_hypot(JSContext *ctx, JSValueConst this_val, · 2157 unmodified lines
39918 if (JS_ToFloat64(ctx, &b, argv[1]))39932 if (JS_ToFloat64(ctx, &b, argv[1]))
39919 return JS_EXCEPTION;39933 return JS_EXCEPTION;
39920 r = hypot(a, b);39934 r = hypot(a, b);
39921 } else {39935 } else if (argc == 0) {
39922 r = 0;39936 r = 0;
39937 } else {
39938 double *tab, a_max;
39939 tab = js_malloc(ctx, sizeof(tab[0]) * argc);
39940 if (!tab)
39941 return JS_EXCEPTION;
39942 /* avoid overflow by taking the maximum */
39943 a_max = 0;
39923 for(i = 0; i < argc; i++) {39944 for(i = 0; i < argc; i++) {
39924 if (JS_ToFloat64(ctx, &a, argv[i]))39945 if (JS_ToFloat64(ctx, &a, argv[i])) {
39946 js_free(ctx, tab);
39925 return JS_EXCEPTION;39947 return JS_EXCEPTION;
39926 r += a;39948 }
39949 a = fabs(a);
39950 tab[i] = a;
39951 if (a > a_max)
39952 a_max = a;
39953 }
39954 if (a_max == 0 || !isfinite(a_max)) {
39955 r = a_max;
39956 } else {
39957 r = 0;
39958 for(i = 0; i < argc; i++) {
39959 a = tab[i] / a_max;
39960 r += a * a;
39961 }
39962 r = a_max * sqrt(r);
39927 }39963 }
39928 r = sqrt(r);39964 js_free(ctx, tab);
39929 }39965 }
39930 return JS_NewFloat64(ctx, r);39966 return JS_NewFloat64(ctx, r);
39931}39967}
@@ -45234,10 +45270,10 @@ static JSValue js_promise_then_finally_func(JSContext *ctx, JSValueConst this_va · 5302 unmodified lines
45234 }45270 }
45235 JS_FreeValue(ctx, ret);45271 JS_FreeValue(ctx, ret);
45236 if (magic == 0) {45272 if (magic == 0) {
45237 then_func = JS_NewCFunctionData(ctx, js_promise_finally_value_thunk, 1,45273 then_func = JS_NewCFunctionData(ctx, js_promise_finally_value_thunk, 0,
45238 0, 1, argv);45274 0, 1, argv);
45239 } else {45275 } else {
45240 then_func = JS_NewCFunctionData(ctx, js_promise_finally_thrower, 1,45276 then_func = JS_NewCFunctionData(ctx, js_promise_finally_thrower, 0,
45241 0, 1, argv);45277 0, 1, argv);
45242 }45278 }
45243 if (JS_IsException(then_func)) {45279 if (JS_IsException(then_func)) {
@@ -50037,7 +50073,7 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 4793 unmodified lines
50037 int argc, JSValueConst *argv, int special)50073 int argc, JSValueConst *argv, int special)
50038{50074{
50039 JSObject *p;50075 JSObject *p;
50040 int len, tag, is_int, is_big, k, stop, inc, res = -1;50076 int len, tag, is_int, is_bigint, k, stop, inc, res = -1;
50041 int64_t v64;50077 int64_t v64;
50042 double d;50078 double d;
50043 float f;50079 float f;
@@ -50080,7 +50116,11 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 36 unmodified lines
50080 inc = 1;50116 inc = 1;
50081 }50117 }
50082 50118
50083 is_big = 0;50119 if (validate_typed_array(ctx, this_val))
50120 goto exception;
50121 p = JS_VALUE_GET_OBJ(this_val);
50122
50123 is_bigint = 0;
50084 is_int = 0; /* avoid warning */50124 is_int = 0; /* avoid warning */
50085 v64 = 0; /* avoid warning */50125 v64 = 0; /* avoid warning */
50086 tag = JS_VALUE_GET_NORM_TAG(argv[0]);50126 tag = JS_VALUE_GET_NORM_TAG(argv[0]);
@@ -50095,10 +50135,20 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 8 unmodified lines
50095 is_int = (v64 == d);50135 is_int = (v64 == d);
50096 } else50136 } else
50097#ifdef CONFIG_BIGNUM50137#ifdef CONFIG_BIGNUM
50098 if (tag == JS_TAG_BIG_INT || tag == JS_TAG_BIG_FLOAT) {50138 if (tag == JS_TAG_BIG_INT) {
50099 /* will a generic loop for bigint and bigfloat */50139 JSBigFloat *p1 = JS_VALUE_GET_PTR(argv[0]);
50100 /* XXX: should use the generic loop in math_mode? */50140
50101 is_big = 1;50141 if (p->class_id == JS_CLASS_BIG_INT64_ARRAY) {
50142 if (bf_get_int64(&v64, &p1->num, 0) != 0)
50143 goto done;
50144 } else if (p->class_id == JS_CLASS_BIG_UINT64_ARRAY) {
50145 if (bf_get_uint64((uint64_t *)&v64, &p1->num) != 0)
50146 goto done;
50147 } else {
50148 goto done;
50149 }
50150 d = 0;
50151 is_bigint = 1;
50102 } else50152 } else
50103#endif50153#endif
50104 {50154 {
@@ -50172,7 +50222,7 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 67 unmodified lines
50172 }50222 }
50173 break;50223 break;
50174 case JS_CLASS_FLOAT32_ARRAY:50224 case JS_CLASS_FLOAT32_ARRAY:
50175 if (is_big)50225 if (is_bigint)
50176 break;50226 break;
50177 if (isnan(d)) {50227 if (isnan(d)) {
50178 const float *pv = p->u.array.u.float_ptr;50228 const float *pv = p->u.array.u.float_ptr;
@@ -50196,7 +50246,7 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 17 unmodified lines
50196 }50246 }
50197 break;50247 break;
50198 case JS_CLASS_FLOAT64_ARRAY:50248 case JS_CLASS_FLOAT64_ARRAY:
50199 if (is_big)50249 if (is_bigint)
50200 break;50250 break;
50201 if (isnan(d)) {50251 if (isnan(d)) {
50202 const double *pv = p->u.array.u.double_ptr;50252 const double *pv = p->u.array.u.double_ptr;
@@ -50221,20 +50271,22 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 18 unmodified lines
50221 break;50271 break;
50222#ifdef CONFIG_BIGNUM50272#ifdef CONFIG_BIGNUM
50223 case JS_CLASS_BIG_INT64_ARRAY:50273 case JS_CLASS_BIG_INT64_ARRAY:
50274 if (is_bigint || (is_math_mode(ctx) && is_int &&
50275 v64 >= -MAX_SAFE_INTEGER &&
50276 v64 <= MAX_SAFE_INTEGER)) {
50277 goto scan64;
50278 }
50279 break;
50224 case JS_CLASS_BIG_UINT64_ARRAY:50280 case JS_CLASS_BIG_UINT64_ARRAY:
50225 if (is_big || is_strict_mode(ctx)) {50281 if (is_bigint || (is_math_mode(ctx) && is_int &&
50226 /* generic loop for bignums, argv[0] is a bignum != NaN */50282 v64 >= 0 && v64 <= MAX_SAFE_INTEGER)) {
50227 /* XXX: optimize with explicit values */50283 const uint64_t *pv;
50284 uint64_t v;
50285 scan64:
50286 pv = p->u.array.u.uint64_ptr;
50287 v = v64;
50228 for (; k != stop; k += inc) {50288 for (; k != stop; k += inc) {
50229 JSValue v = JS_GetPropertyUint32(ctx, this_val, k);50289 if (pv[k] == v) {
50230 int ret;
50231 if (JS_IsException(v))
50232 goto exception;
50233 ret = js_same_value_zero(ctx, v, argv[0]);
50234 JS_FreeValue(ctx, v);
50235 if (ret) {
50236 if (ret < 0)
50237 goto exception;
50238 res = k;50290 res = k;
50239 break;50291 break;
50240 }50292 }
quickjs.h+27−1
@@ -335,6 +335,8 @@ void JS_SetMemoryLimit(JSRuntime *rt, size_t limit); · 334 unmodified lines
335void JS_SetGCThreshold(JSRuntime *rt, size_t gc_threshold);335void JS_SetGCThreshold(JSRuntime *rt, size_t gc_threshold);
336JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque);336JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque);
337void JS_FreeRuntime(JSRuntime *rt);337void JS_FreeRuntime(JSRuntime *rt);
338void *JS_GetRuntimeOpaque(JSRuntime *rt);
339void JS_SetRuntimeOpaque(JSRuntime *rt, void *opaque);
338typedef void JS_MarkFunc(JSRuntime *rt, JSGCObjectHeader *gp);340typedef void JS_MarkFunc(JSRuntime *rt, JSGCObjectHeader *gp);
339void JS_MarkValue(JSRuntime *rt, JSValueConst val, JS_MarkFunc *mark_func);341void JS_MarkValue(JSRuntime *rt, JSValueConst val, JS_MarkFunc *mark_func);
340void JS_RunGC(JSRuntime *rt);342void JS_RunGC(JSRuntime *rt);
@@ -508,7 +510,28 @@ static js_force_inline JSValue JS_NewCatchOffset(JSContext *ctx, int32_t val) · 167 unmodified lines
508 return JS_MKVAL(JS_TAG_CATCH_OFFSET, val);510 return JS_MKVAL(JS_TAG_CATCH_OFFSET, val);
509}511}
510 512
511JSValue JS_NewInt64(JSContext *ctx, int64_t v);513static js_force_inline JSValue JS_NewInt64(JSContext *ctx, int64_t val)
514{
515 JSValue v;
516 if (val == (int32_t)val) {
517 v = JS_NewInt32(ctx, val);
518 } else {
519 v = __JS_NewFloat64(ctx, val);
520 }
521 return v;
522}
523
524static js_force_inline JSValue JS_NewUint32(JSContext *ctx, uint32_t val)
525{
526 JSValue v;
527 if (val <= 0x7fffffff) {
528 v = JS_NewInt32(ctx, val);
529 } else {
530 v = __JS_NewFloat64(ctx, val);
531 }
532 return v;
533}
534
512JSValue JS_NewBigInt64(JSContext *ctx, int64_t v);535JSValue JS_NewBigInt64(JSContext *ctx, int64_t v);
513JSValue JS_NewBigUint64(JSContext *ctx, uint64_t v);536JSValue JS_NewBigUint64(JSContext *ctx, uint64_t v);
514 537
@@ -657,7 +680,10 @@ static int inline JS_ToUint32(JSContext *ctx, uint32_t *pres, JSValueConst val) · 142 unmodified lines
657int JS_ToInt64(JSContext *ctx, int64_t *pres, JSValueConst val);680int JS_ToInt64(JSContext *ctx, int64_t *pres, JSValueConst val);
658int JS_ToIndex(JSContext *ctx, uint64_t *plen, JSValueConst val);681int JS_ToIndex(JSContext *ctx, uint64_t *plen, JSValueConst val);
659int JS_ToFloat64(JSContext *ctx, double *pres, JSValueConst val);682int JS_ToFloat64(JSContext *ctx, double *pres, JSValueConst val);
683/* return an exception if 'val' is a Number */
660int JS_ToBigInt64(JSContext *ctx, int64_t *pres, JSValueConst val);684int JS_ToBigInt64(JSContext *ctx, int64_t *pres, JSValueConst val);
685/* same as JS_ToInt64() but allow BigInt */
686int JS_ToInt64Ext(JSContext *ctx, int64_t *pres, JSValueConst val);
661 687
662JSValue JS_NewStringLen(JSContext *ctx, const char *str1, size_t len1);688JSValue JS_NewStringLen(JSContext *ctx, const char *str1, size_t len1);
663JSValue JS_NewString(JSContext *ctx, const char *str);689JSValue JS_NewString(JSContext *ctx, const char *str);
release.sh+15−6
@@ -50,21 +50,30 @@ fi · 49 unmodified lines
50 50
51if [ "$binary" = "yes" ] ; then51if [ "$binary" = "yes" ] ; then
52 52
53make -j4 qjs run-test262
54make -j4 CONFIG_M32=y qjs32 run-test262-32
55strip qjs run-test262 qjs32 run-test262-32
56
53d="quickjs-linux-x86_64-${version}"57d="quickjs-linux-x86_64-${version}"
54name="quickjs-linux-x86_64-${version}"
55outdir="/tmp/${d}"58outdir="/tmp/${d}"
56 59
57rm -rf $outdir60rm -rf $outdir
58mkdir -p $outdir61mkdir -p $outdir
59 62
60files="qjs run-test262"63cp qjs run-test262 $outdir
64
65( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . )
66
67d="quickjs-linux-i686-${version}"
68outdir="/tmp/${d}"
61 69
62make -j4 $files70rm -rf $outdir
71mkdir -p $outdir
63 72
64strip $files73cp qjs32 $outdir/qjs
65cp $files $outdir74cp run-test262-32 $outdir/run-test262
66 75
67( cd /tmp/$d && rm -f ../${name}.zip && zip -r ../${name}.zip . )76( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . )
68 77
69fi78fi
70 79
run-test262.c+4−1
@@ -385,8 +385,11 @@ static JSValue js_print(JSContext *ctx, JSValueConst this_val, · 384 unmodified lines
385 str = JS_ToCString(ctx, argv[i]);385 str = JS_ToCString(ctx, argv[i]);
386 if (!str)386 if (!str)
387 return JS_EXCEPTION;387 return JS_EXCEPTION;
388 if (!strcmp(str, "Test262:AsyncTestComplete"))388 if (!strcmp(str, "Test262:AsyncTestComplete")) {
389 async_done++;389 async_done++;
390 } else if (strstart(str, "Test262:AsyncTestFailure", NULL)) {
391 async_done = 2; /* force an error */
392 }
390 fputs(str, outfile);393 fputs(str, outfile);
391 JS_FreeCString(ctx, str);394 JS_FreeCString(ctx, str);
392 }395 }
test262.conf+1−0
@@ -87,6 +87,7 @@ destructuring-binding · 86 unmodified lines
87dynamic-import87dynamic-import
88export-star-as-namespace-from-module88export-star-as-namespace-from-module
89FinalizationGroup=skip89FinalizationGroup=skip
90FinalizationRegistry=skip
90Float32Array91Float32Array
91Float64Array92Float64Array
92for-in-order93for-in-order
test262_errors.txt+7−2
@@ -1,17 +1,22 @@
1test262/test/language/expressions/arrow-function/eval-var-scope-syntax-err.js:47: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all1test262/test/language/expressions/arrow-function/eval-var-scope-syntax-err.js:47: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
2test262/test/language/expressions/async-arrow-function/eval-var-scope-syntax-err.js:49: TypeError: $DONE() not called
3test262/test/language/expressions/async-function/named-eval-var-scope-syntax-err.js:33: TypeError: $DONE() not called
4test262/test/language/expressions/async-function/nameless-eval-var-scope-syntax-err.js:33: TypeError: $DONE() not called
2test262/test/language/expressions/async-generator/eval-var-scope-syntax-err.js:28: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all5test262/test/language/expressions/async-generator/eval-var-scope-syntax-err.js:28: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
3test262/test/language/expressions/async-generator/named-eval-var-scope-syntax-err.js:28: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all6test262/test/language/expressions/async-generator/named-eval-var-scope-syntax-err.js:28: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
4test262/test/language/expressions/class/super-evaluation-order.js:26: Test262Error: via ArgumentListEvaluation Expected SameValue(«0», «123») to be true
5test262/test/language/expressions/class/super-evaluation-order.js:26: strict mode: Test262Error: via ArgumentListEvaluation Expected SameValue(«0», «123») to be true
6test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: TypeError: $DONE() not called7test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: TypeError: $DONE() not called
7test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: strict mode: TypeError: $DONE() not called8test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: strict mode: TypeError: $DONE() not called
8test262/test/language/expressions/function/eval-var-scope-syntax-err.js:48: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all9test262/test/language/expressions/function/eval-var-scope-syntax-err.js:48: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
9test262/test/language/expressions/generators/eval-var-scope-syntax-err.js:49: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all10test262/test/language/expressions/generators/eval-var-scope-syntax-err.js:49: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
10test262/test/language/expressions/object/method-definition/async-gen-meth-eval-var-scope-syntax-err.js:32: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all11test262/test/language/expressions/object/method-definition/async-gen-meth-eval-var-scope-syntax-err.js:32: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
12test262/test/language/expressions/object/method-definition/async-meth-eval-var-scope-syntax-err.js:36: TypeError: $DONE() not called
11test262/test/language/expressions/object/method-definition/gen-meth-eval-var-scope-syntax-err.js:54: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all13test262/test/language/expressions/object/method-definition/gen-meth-eval-var-scope-syntax-err.js:54: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
12test262/test/language/expressions/object/method-definition/meth-eval-var-scope-syntax-err.js:50: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all14test262/test/language/expressions/object/method-definition/meth-eval-var-scope-syntax-err.js:50: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
13test262/test/language/expressions/optional-chaining/optional-call-preserves-this.js:21: TypeError: value has no property15test262/test/language/expressions/optional-chaining/optional-call-preserves-this.js:21: TypeError: value has no property
14test262/test/language/expressions/optional-chaining/optional-call-preserves-this.js:15: strict mode: TypeError: value has no property16test262/test/language/expressions/optional-chaining/optional-call-preserves-this.js:15: strict mode: TypeError: value has no property
17test262/test/language/statements/async-function/eval-var-scope-syntax-err.js:33: TypeError: $DONE() not called
15test262/test/language/statements/async-generator/eval-var-scope-syntax-err.js:28: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all18test262/test/language/statements/async-generator/eval-var-scope-syntax-err.js:28: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
19test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-rtrn-close-null.js:81: TypeError: $DONE() not called
20test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-rtrn-close-null.js:81: strict mode: TypeError: $DONE() not called
16test262/test/language/statements/function/eval-var-scope-syntax-err.js:49: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all21test262/test/language/statements/function/eval-var-scope-syntax-err.js:49: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
17test262/test/language/statements/generators/eval-var-scope-syntax-err.js:49: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all22test262/test/language/statements/generators/eval-var-scope-syntax-err.js:49: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
tests/microbench.js+2−4
@@ -917,11 +917,9 @@ function load_result(filename) · 916 unmodified lines
917 var f, str, res;917 var f, str, res;
918 if (typeof std === "undefined")918 if (typeof std === "undefined")
919 return null;919 return null;
920 try {920 f = std.open(filename, "r");
921 f = std.open(filename, "r");921 if (!f)
922 } catch(e) {
923 return null;922 return null;
924 }
925 str = f.readAsString();923 str = f.readAsString();
926 res = JSON.parse(str);924 res = JSON.parse(str);
927 f.close();925 f.close();
tests/test_builtin.js+4−0
@@ -501,6 +501,10 @@ function test_regexp() · 500 unmodified lines
501 a = eval("/\0a/");501 a = eval("/\0a/");
502 assert(a.toString(), "/\0a/");502 assert(a.toString(), "/\0a/");
503 assert(a.exec("\0a")[0], "\0a");503 assert(a.exec("\0a")[0], "\0a");
504
505 assert(/{1a}/.toString(), "/{1a}/");
506 a = /a{1+/.exec("a{11");
507 assert(a, ["a{11"] );
504}508}
505 509
506function test_symbol()510function test_symbol()
tests/test_std.js+10−1
@@ -106,6 +106,9 @@ function test_popen() · 105 unmodified lines
106 f.puts(content);106 f.puts(content);
107 f.close();107 f.close();
108 108
109 /* test loadFile */
110 assert(std.loadFile(fname), content);
111
109 /* execute the 'cat' shell command */112 /* execute the 'cat' shell command */
110 f = std.popen("cat " + fname, "r");113 f = std.popen("cat " + fname, "r");
111 str = f.readAsString();114 str = f.readAsString();
@@ -142,13 +145,19 @@ function test_os() · 30 unmodified lines
142 buf[i] = i;145 buf[i] = i;
143 assert(os.write(fd, buf.buffer, 0, buf.length) === buf.length);146 assert(os.write(fd, buf.buffer, 0, buf.length) === buf.length);
144 147
145 assert(os.seek(fd, 0, os.SEEK_SET) === 0);148 assert(os.seek(fd, 0, std.SEEK_SET) === 0);
146 buf2 = new Uint8Array(buf.length);149 buf2 = new Uint8Array(buf.length);
147 assert(os.read(fd, buf2.buffer, 0, buf2.length) === buf2.length);150 assert(os.read(fd, buf2.buffer, 0, buf2.length) === buf2.length);
148 151
149 for(i = 0; i < buf.length; i++)152 for(i = 0; i < buf.length; i++)
150 assert(buf[i] == buf2[i]);153 assert(buf[i] == buf2[i]);
151 154
155 if (typeof BigInt !== "undefined") {
156 assert(os.seek(fd, BigInt(6), std.SEEK_SET), BigInt(6));
157 assert(os.read(fd, buf2.buffer, 0, 1) === 1);
158 assert(buf[6] == buf2[0]);
159 }
160
152 assert(os.close(fd) === 0);161 assert(os.close(fd) === 0);
153 162
154 [files, err] = os.readdir(fdir);163 [files, err] = os.readdir(fdir);
unicode_download.sh+6−6
@@ -1,8 +1,8 @@
1#!/bin/sh1#!/bin/sh
2set -e2set -e
3 3
4url="ftp://ftp.unicode.org/Public/12.1.0/ucd"4url="ftp://ftp.unicode.org/Public/13.0.0/ucd"
5emoji_url="ftp://ftp.unicode.org/Public/emoji/12.0/emoji-data.txt"5emoji_url="${url}/emoji/emoji-data.txt"
6 6
7files="CaseFolding.txt DerivedNormalizationProps.txt PropList.txt \7files="CaseFolding.txt DerivedNormalizationProps.txt PropList.txt \
8SpecialCasing.txt CompositionExclusions.txt ScriptExtensions.txt \8SpecialCasing.txt CompositionExclusions.txt ScriptExtensions.txt \
@@ -11,9 +11,9 @@ PropertyValueAliases.txt" · 2 unmodified lines
11 11
12mkdir -p unicode12mkdir -p unicode
13 13
14for f in $files; do14#for f in $files; do
15 g="${url}/${f}"15# g="${url}/${f}"
16 wget $g -O unicode/$f16# wget $g -O unicode/$f
17done17#done
18 18
19wget $emoji_url -O unicode/emoji-data.txt19wget $emoji_url -O unicode/emoji-data.txt
unicode_gen_def.h+9−5
@@ -66,6 +66,7 @@ DEF(Caucasian_Albanian, "Aghb") · 65 unmodified lines
66DEF(Chakma, "Cakm")66DEF(Chakma, "Cakm")
67DEF(Cham, "Cham")67DEF(Cham, "Cham")
68DEF(Cherokee, "Cher")68DEF(Cherokee, "Cher")
69DEF(Chorasmian, "Chrs")
69DEF(Common, "Zyyy")70DEF(Common, "Zyyy")
70DEF(Coptic, "Copt,Qaac")71DEF(Coptic, "Copt,Qaac")
71DEF(Cuneiform, "Xsux")72DEF(Cuneiform, "Xsux")
@@ -73,6 +74,7 @@ DEF(Cypriot, "Cprt") · 1 unmodified line
73DEF(Cyrillic, "Cyrl")74DEF(Cyrillic, "Cyrl")
74DEF(Deseret, "Dsrt")75DEF(Deseret, "Dsrt")
75DEF(Devanagari, "Deva")76DEF(Devanagari, "Deva")
77DEF(Dives_Akuru, "Diak")
76DEF(Dogra, "Dogr")78DEF(Dogra, "Dogr")
77DEF(Duployan, "Dupl")79DEF(Duployan, "Dupl")
78DEF(Egyptian_Hieroglyphs, "Egyp")80DEF(Egyptian_Hieroglyphs, "Egyp")
@@ -106,6 +108,7 @@ DEF(Kayah_Li, "Kali") · 27 unmodified lines
106DEF(Kharoshthi, "Khar")108DEF(Kharoshthi, "Khar")
107DEF(Khmer, "Khmr")109DEF(Khmer, "Khmr")
108DEF(Khojki, "Khoj")110DEF(Khojki, "Khoj")
111DEF(Khitan_Small_Script, "Kits")
109DEF(Khudawadi, "Sind")112DEF(Khudawadi, "Sind")
110DEF(Lao, "Laoo")113DEF(Lao, "Laoo")
111DEF(Latin, "Latn")114DEF(Latin, "Latn")
@@ -193,6 +196,7 @@ DEF(Ugaritic, "Ugar") · 81 unmodified lines
193DEF(Vai, "Vaii")196DEF(Vai, "Vaii")
194DEF(Wancho, "Wcho")197DEF(Wancho, "Wcho")
195DEF(Warang_Citi, "Wara")198DEF(Warang_Citi, "Wara")
199DEF(Yezidi, "Yezi")
196DEF(Yi, "Yiii")200DEF(Yi, "Yiii")
197DEF(Zanabazar_Square, "Zanb")201DEF(Zanabazar_Square, "Zanb")
198#endif202#endif
@@ -244,11 +248,11 @@ DEF(Variation_Selector, "VS") · 45 unmodified lines
244DEF(White_Space, "space")248DEF(White_Space, "space")
245DEF(Bidi_Mirrored, "Bidi_M")249DEF(Bidi_Mirrored, "Bidi_M")
246DEF(Emoji, "")250DEF(Emoji, "")
247DEF(Emoji_Component, "")251DEF(Emoji_Component, "EComp")
248DEF(Emoji_Modifier, "")252DEF(Emoji_Modifier, "EMod")
249DEF(Emoji_Modifier_Base, "")253DEF(Emoji_Modifier_Base, "EBase")
250DEF(Emoji_Presentation, "")254DEF(Emoji_Presentation, "EPres")
251DEF(Extended_Pictographic, "")255DEF(Extended_Pictographic, "ExtPict")
252DEF(Default_Ignorable_Code_Point, "DI")256DEF(Default_Ignorable_Code_Point, "DI")
253DEF(ID_Start, "IDS")257DEF(ID_Start, "IDS")
254DEF(Case_Ignorable, "CI")258DEF(Case_Ignorable, "CI")

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t