diff options
author | Karl Berry <karl@freefriends.org> | 2020-08-02 21:06:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-08-02 21:06:17 +0000 |
commit | 7bed06e355778cdcfb932a75896b95e7f23e4b75 (patch) | |
tree | f45a1f7186cd1fa709c1b8e63e4133725e82af3b /Master | |
parent | 4cdd4a7d96cd11bcba0ef269aeb917290eebce38 (diff) |
luatexja (2aug20)
git-svn-id: svn://tug.org/texlive/trunk@56029 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
64 files changed, 4690 insertions, 26673 deletions
diff --git a/Master/texmf-dist/doc/luatex/luatexja/README b/Master/texmf-dist/doc/luatex/luatexja/README index 33105c10072..9998677f899 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/README +++ b/Master/texmf-dist/doc/luatex/luatexja/README @@ -1,4 +1,4 @@ -The LuaTeX-ja Package 20200518.0 +The LuaTeX-ja Package 20200802.0 -------------------------------- Copyright (c) 2011--2020 The LuaTeX-ja project License: modified BSD (see COPYING) @@ -45,9 +45,9 @@ Installation 2. If you must/want to install manually: a. Download the source archive from CTAN, - or tagged as 20200518.0 in the Git repository by + or tagged as 20200802.0 in the Git repository by <http://git.osdn.jp/view?p=luatex-ja/luatexja.git - ;a=snapshot;h=refs/tags/20200518.0;sf=tgz> + ;a=snapshot;h=refs/tags/20200802.0;sf=tgz> b. Extract the archive and process following three files by LuaLaTeX to generate classes for Japanese typesetting: @@ -95,4 +95,4 @@ Notes * src/*.{ins.dtx} and src/ltj-kinsoku_make.tex are not needed in regular use. -Last commit date: Mon May 18 05:28:24 2020 +0900 +Last commit date: Sun Aug 2 19:53:42 2020 +0900 diff --git a/Master/texmf-dist/doc/luatex/luatexja/ltjclasses.pdf b/Master/texmf-dist/doc/luatex/luatexja/ltjclasses.pdf Binary files differindex 82b5a12e8a0..46209980cc2 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/ltjclasses.pdf +++ b/Master/texmf-dist/doc/luatex/luatexja/ltjclasses.pdf diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf Binary files differindex 9bdf6dd8df4..dbe97a5116f 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf Binary files differindex 6a6defdd29c..72227e28e73 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx index 09df86b3611..18ca18cdae5 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx @@ -5177,27 +5177,27 @@ JFMで指定されているそれぞれの値をスケーリングしたもの \end{itemize} $i$,~$j\in \omega$に対して,\texttt{char\_type[$i$][$j$]} は 文字クラス$i$の文字と$j$の文字の間に挿入されるグルーやカーンを格納している. -\begin{itemize} - \item 間に入るものがカーンであれば,この値は\ -\texttt{[$j$]=\{[1]=<kern\_node>, ratio=<ratio>\}} であり, + +間に入るものがカーンであれば,この値は% +\texttt{[$j$]=\{[1]=<kern\_node>, ratio=<ratio>\}}であり, <kern\_node>はカーンを表すノードである\footnote{% バージョン20150420.0以降ではノードのアクセス手法にdirect access modelを用いているため,ノードそのものを表すユーザーデータではなく, 内部で参照のために使われる添字(整数)である. }. - \item グルーであれば,この値は以下のキーを持つテーブルである. - \begin{description} - \item[\texttt{width}, \texttt{stretch}, \texttt{shrink}] - グルーのそれぞれ自然長,伸び量,縮み量をsp単位で表したもの. - \item[\texttt{priority}] バ(ージョン2以降の)JFMでの指定 \texttt{\{<stretch>,<shrink>\}} を - \[ - (\text{<stretch>}+4)\cdot 8+\text{<shrink>}+4 - \] - として0--63の整数にパックしたもの. - \item[\texttt{ratio}, \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch}, \texttt{kanjiskip\_shrink}] - JFM中の同名のフィールドの値がそのまま使われている. - \end{description} -\end{itemize} + +グルーであれば,この値は以下のキーを持つテーブルである. +\begin{description} + \item[\texttt{width}, \texttt{stretch}, \texttt{shrink}] + グルーのそれぞれ自然長,伸び量,縮み量をsp単位で表したもの. + \item[\texttt{priority}] (バージョン2以降の)JFMでの指定 \texttt{\{<stretch>,<shrink>\}} を + \[ + (\text{<stretch>}+4)\cdot 8+\text{<shrink>}+4 + \] + として0--63の整数にパックしたもの. + \item[\texttt{ratio}, \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch}, \texttt{kanjiskip\_shrink}] + JFM中の同名のフィールドの値がそのまま使われている. +\end{description} \item[chars\_cbcache] 文字クラス決定の処理で.キャッシュとして使われる. \end{cslist} @@ -7171,7 +7171,7 @@ CID番号が<number>の文字を出力する. 特に縦組用グリフのCID番号を指定した場合は(LuaTeX-ja 20190504.0以降では若干改良されているが) 意図しない結果になる可能性が高い. なお,バージョン20190708.0以降では,CIDからグリフへの選択にグリフ名の情報を使用していない. - また,フォントにIVDコレクションAdobe-Japan1が含まれていれば,その情報を用いて + また,フォントにAdobe-Japan1のIVSが含まれていれば,その情報を用いて グリフを選択する. }を出力する. @@ -10553,7 +10553,8 @@ variation selectors are ``combined'' with the previous character. \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力されるため, 例えば以下の例(左側は入力,右側はその出力)のようになる. %</ja> -\begin{LTXexample} +%%%% [preset=...]: workaround for lstlisting inside LTXexample +\begin{LTXexample}[preset=\expandafter\def\csname @captype\endcsname{lstlisting}] \begin{lstlisting}[vsraw=true] 葛󠄀城市,葛󠄁飾区,葛西 \end{lstlisting} @@ -10569,7 +10570,7 @@ The default setting of the \texttt{vscmd} key produces the following. どのような形で出力されるかを規定するのが \texttt{vscmd} キーであり, \Pkg{lltjp-listings} の標準設定では以下の例の右側のように出力される. %</ja> -\begin{LTXexample} +\begin{LTXexample}[preset=\expandafter\def\csname @captype\endcsname{lstlisting}] \begin{lstlisting}[vsraw=false, vscmd=\ltjlistingsvsstdcmd] 葛󠄀城市,葛󠄁飾区,葛西 @@ -11017,9 +11018,9 @@ $|\textit{total}|$の分だけが,行中のグルーの伸び量,あるい キャッシュとして保存しているのと同様の方法で, \LuaTeX-jaもいくつかのキャッシュファイルを作成するようになった. \begin{itemize} - \item 通常,キャッシュは\texttt{\$TEXMFVAR/luatexja/}以下に保存され, + \item 通常,キャッシュは \texttt{\$TEXMFVAR/luatexja/} 以下に保存され, そこから読み込みが行われる. - \item 「通常の」テキスト形式のキャッシュ(拡張子は \texttt{.lua})以外にも, + \item 「通常の」テキスト形式のキャッシュ(拡張子は \texttt{.lua.gz},gzip圧縮されているため)以外にも, それをバイナリ形式(バイトコード)に変換したものもサポートしている. \begin{itemize} \item キャッシュを読み込む時,同名のバイナリキャッシュがあれば, @@ -11028,6 +11029,7 @@ $|\textit{total}|$の分だけが,行中のグルーの伸び量,あるい 同時に更新される. また,(バイナリ版が見つからず)テキスト形式のキャッシュ側が読み込まれたときは, \LuaTeX-jaはバイナリキャッシュを作成する. +未圧縮のテキスト形式のキャッシュ(\texttt{hoge.lua})は20200802.0以降では利用しない. \end{itemize} \end{itemize} %</ja> @@ -11038,12 +11040,13 @@ in a similar way to the \Pkg{luaotfload} package: \begin{itemize} \item Cache files are usually stored in (and loaded from) \texttt{\$TEXMFVAR/luatexja/}. - \item In addition to caches of the text form (the extension is ``\texttt{.lua}''), -caches of the \emph{binary}, precompiled form are supported. + \item In addition to caches of the text form (the extension is ``\texttt{.lua.gz}'', +because they are compressed by gzip), +caches of the \emph{binary}~(bytecode) form are supported. \begin{itemize} \item In loading a cache, the binary cache precedes the text form. - \item When \LuaTeX-ja updates a cache \texttt{hoge.lua}, + \item When \LuaTeX-ja updates a compressed text cache \texttt{hoge.lua.gz}, its binary version is also updated. \end{itemize} \end{itemize} @@ -11052,9 +11055,9 @@ its binary version is also updated. %<*ja> \subsection{キャッシュの使用箇所} -\LuaTeX-ja では以下の3種類のキャッシュを使用している: +\LuaTeX-ja では以下のキャッシュを使用している: \begin{cslist} -\item[ltj-cid-auto-adobe-japan1.lua] +\item[ltj-cid-auto-adobe-japan1.\{lua.gz,luc\}] Ryumin-Lightのような非埋め込みフォントの情報を格納しており, (それらが\LuaTeX-jaの標準和文フォントなので)\LuaTeX-jaの読み込み時に自動で読まれる. 生成には\texttt{UniJIS2004-UTF32-\{H,V\}}, \texttt{Adobe-Japan1-UCS2}という3つの @@ -11069,7 +11072,7 @@ CMapが必要である. \LuaTeX-ja uses the following cache: \begin{cslist} -\item[ltj-cid-auto-adobe-japan1.lua] +\item[ltj-cid-auto-adobe-japan1.\{lua.gz,luc\}] The font table of a CID-keyed non-embedded Japanese font. This is loaded in every run. It is created from three CMaps, \texttt{UniJIS2004-UTF32-\{H,V\}} and @@ -11092,11 +11095,11 @@ as in Page~\pageref{para-cid}. \bf \texttt{cid} key&\bf name of the cache & \multicolumn{2}{c}{\bf used CMaps}\\ \midrule -Adobe-Japan1-*<j-cid-auto-adobe-japan1.lua&UniJIS2004-UTF32-*&Adobe-Japan1-UCS2\\ -Adobe-Korea1-*<j-cid-auto-adobe-korea1.lua&UniKS-UTF32-*&Adobe-Korea1-UCS2\\ -Adobe-KR-*<j-cid-auto-adobe-kr.lua&UniAKR-UTF32-*&Adobe-KR-UCS2\\ -Adobe-GB1-*<j-cid-auto-adobe-gb1.lua&UniGB-UTF32-*&Adobe-GB1-UCS2\\ -Adobe-CNS1-*<j-cid-auto-adobe-cns1.lua&UniCNS-UTF32-*&Adobe-CNS1-UCS2\\ +Adobe-Japan1-*<j-cid-auto-adobe-japan1.\{lua.gz,luc\}&UniJIS2004-UTF32-*&Adobe-Japan1-UCS2\\ +Adobe-Korea1-*<j-cid-auto-adobe-korea1.\{lua.gz,luc\}&UniKS-UTF32-*&Adobe-Korea1-UCS2\\ +Adobe-KR-*<j-cid-auto-adobe-kr.\{lua.gz,luc\}&UniAKR-UTF32-*&Adobe-KR-UCS2\\ +Adobe-GB1-*<j-cid-auto-adobe-gb1.\{lua.gz,luc\}&UniGB-UTF32-*&Adobe-GB1-UCS2\\ +Adobe-CNS1-*<j-cid-auto-adobe-cns1.\{lua.gz,luc\}&UniCNS-UTF32-*&Adobe-CNS1-UCS2\\ \bottomrule \end{tabular} \end{table} @@ -11108,23 +11111,44 @@ Adobe-CNS1-*<j-cid-auto-adobe-cns1.lua&UniCNS-UTF32-*&Adobe-CNS1-UCS2\\ \pTeX との互換目的の文字コード変換命令で用いられる. %</ja> %<*en> -\item[ltj-jisx0208.\{luc|lub\}] +\item[ltj-jisx0208.luc] The bytecode version of \texttt{ltj-jisx0208.lua}. This is the conversion table between JIS~X~0208 and Unicode which is used in Kanji-code conversion commands for compatibility with \pTeX. %</en> + +%<*ja> +\item[ltj-ivd\_aj1.luc] +\LuaTeX-ja配布中の\texttt{ltj-ivd\_aj1.lua}をバイトコード化したものである. +これはUnicodeの漢字異体字データベースのAdobe-Japan1コレクションの内容を + 格納したテーブルであり,\Pkg{luatexja-otf}パッケージの\cs{CID}命令で使われることがある. +%</ja> +%<*en> +\item[ltj-ivd\_aj1.luc] +The bytecode version of \texttt{ltj-ivd\_aj1.lua}. +%</en> + +%<*ja> +\item[extra\_***.\{lua.gz,luc\}] +フォント``\texttt{***}''における,グリフ番号からUnicode値への変換テーブル,縦組時のグリフ回転の有無を格納したテーブル, +及び縦組時におけるグリフの原点位置・高さのテーブルを格納している. +%</ja> +%<*en> +\item[extra\_***.\{lua.gz,luc\}] +This file conains some information (especially for vertical typesetting) about the font `\texttt{***}''. +%</en> \end{cslist} %<*en> \subsection{Internal} Cache management system of \LuaTeX-ja is stored in \texttt{luatexja.base} (\texttt{ltj-base.lua}). -There are three public functions for cache management in \texttt{luatexja.base}, +There are four public functions for cache management in \texttt{luatexja.base}, where <filename> stands for the file name \emph{without suffix}: \begin{cslist} \item[save\_cache(<filename>, <data>)] Save a non-nil table <data> into a cache <filename>. -Both the text form <filename>\texttt{.lua} and its binary version +Both the compressed text form <filename>\texttt{.lua.gz} and its binary version are created or updated. \item[save\_cache\_luc(<filename>, <data>{[, <serialized\_data>]})] @@ -11139,25 +11163,28 @@ Load the cache <filename>. and its return value is whether the cache is outdated. \texttt{load\_cache} first tries to -read the binary cache <filename>\texttt{.\{luc|lub\}}. +read the binary cache <filename>\texttt{.luc}. If its contents is up-to-date, \texttt{load\_cache} returns the contents. If the binary cache is not found or its contents is outdated, \texttt{load\_cache} tries to -read the text form <filename>\texttt{.lua}. +read the compressed text form <filename>\texttt{.lua.gz}. Hence, the return value of \texttt{load\_cache} is non-nil, if and only if the updated cache is found. + +\item[remove\_cache(<filename>)] +Remove the cahce <filename>. \end{cslist} %</en> %<*ja> \subsection{内部命令} \LuaTeX-jaにおけるキャッシュ管理は,\texttt{luatexja.base}~(\texttt{ltj-base.lua})に -実装しており,以下の3関数が公開されている. +実装しており,以下の関数が公開されている. ここで,<filename>は保存するキャッシュのファイル名を\emph{拡張子なしで}指定する. \begin{cslist} \item[save\_cache(<filename>, <data>)] nilでない<data>をキャッシュ<filename>に保存する. -テキスト形式の<filename>\texttt{.lua}のみならず, -そのバイナリ版も作成/更新される. +テキスト形式の<filename>\texttt{.lua.gz}\footnote{拡張子からわかる通り,実際にはgzip圧縮される.}のみならず, +そのバイナリ形式も作成・更新される. \item[save\_cache\_luc(<filename>, <data>{[, <serialized\_data>]})] @@ -11171,14 +11198,18 @@ nilでない<data>をキャッシュ<filename>に保存する. <outdate>は1引数(キャッシュの中身)をとる関数であり, その戻り値は「キャッシュの更新が必要」かどうかを示すブール値でないといけない. -\texttt{load\_cache}は,まずバイナリキャッシュ<filename>\texttt{.\{luc|lub\}}を +\texttt{load\_cache}は,まずバイナリキャッシュ<filename>\texttt{.luc}を 読みこむ.もしその内容が「新しい」,つまり<outdate>の評価結果が \texttt{false} なら \texttt{load\_cache}はこのバイナリキャッシュの中身を返す. -もしバイナリキャッシュが見つからなかったか,「古すぎる」ならばテキスト版 - <filename>\texttt{.lua}を読み込み,その値を返す. +もしバイナリキャッシュが見つからなかったか,「古すぎる」ならば(gzip圧縮された)テキスト形式の + <filename>\texttt{.lua.gz}を読み込み,<outdate>で再度評価する. 以上より,\texttt{load\_cache}自体がnilでない値を返すのは,ちょうど「新しい」キャッシュが 見つかった場合である. + +\item[remove\_cache(<filename>)] +キャッシュ<filename>を削除する.テキスト形式(gzip圧縮されているか否かを問わず)も +バイナリ形式もまとめて削除する. \end{cslist} %</ja> diff --git a/Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx b/Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx index 9da4e2b748b..dd156b3393d 100644 --- a/Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx +++ b/Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx @@ -61,16 +61,16 @@ % (ありがとうございます、鈴木た@MILNさん)} % \changes{v1.6}{2006/06/27}{フォントコマンドを修正。ありがとう、ymtさん。} % \changes{v1.6-ltj}{2011/09/27}{jclasses.dtx v1.6 をベースにLua\LaTeX-ja用に修正。} -% \changes{v1.6-ltj-2}{2013/06/06}{luatexja.cfgに対応.} -% \changes{v1.6-ltj-3}{2014/06/08}{縦組クラスの時のgeometry.styに対応.} -% \changes{v1.6-ltj-4}{2014/06/30}{組方向の変更箇所を現行のLua\TeX-jaの仕様に合うように修正.} -% \changes{v1.6-ltj-5}{2014/07/02}{\cs{ifydir}, \cs{iftdir}を使わないように修正.} -% \changes{v1.6-ltj-6}{2014/07/28}{縦組クラスでlltjext.styを読み込むように修正.} -% \changes{v1.6-ltj-7}{2014/11/15}{縦組クラスとeveryshi.styとの相性が悪い問題を修正.} -% \changes{v1.6-ltj-8}{2014/11/22}{縦組時のgeometry.styへの対応を別ファイル(lltjp-geometry.sty)に分離.それに伴いv1.6-ltj-3での変更を削除.} -% \changes{v1.6-ltj-9}{2015/01/01}{縦組クラスの日付出力でエラーになることなどを修正.} -% \changes{v1.6-ltj-10}{2015/10/18}{Lua\TeX\ 0.81.0に伴うプリミティブ名の変更に対応.} -% \changes{v1.6-ltj-11}{2016/07/19}{トンボ使用時の用紙サイズの設定方法を変更(aminophenさん,ありがとうございます).} +% \changes{v1.6-ltj-2}{2013/06/06}{luatexja.cfgに対応。} +% \changes{v1.6-ltj-3}{2014/06/08}{縦組クラスの時のgeometry.styに対応。} +% \changes{v1.6-ltj-4}{2014/06/30}{組方向の変更箇所を現行のLua\TeX-jaの仕様に合うように修正。} +% \changes{v1.6-ltj-5}{2014/07/02}{\cs{ifydir}, \cs{iftdir}を使わないように修正。} +% \changes{v1.6-ltj-6}{2014/07/28}{縦組クラスでlltjext.styを読み込むように修正。} +% \changes{v1.6-ltj-7}{2014/11/15}{縦組クラスとeveryshi.styとの相性が悪い問題を修正。} +% \changes{v1.6-ltj-8}{2014/11/22}{縦組時のgeometry.styへの対応を別ファイル(lltjp-geometry.sty)に分離。それに伴いv1.6-ltj-3での変更を削除。} +% \changes{v1.6-ltj-9}{2015/01/01}{縦組クラスの日付出力でエラーになることなどを修正。} +% \changes{v1.6-ltj-10}{2015/10/18}{Lua\TeX\ 0.81.0に伴うプリミティブ名の変更に対応。} +% \changes{v1.6-ltj-11}{2016/07/19}{トンボ使用時の用紙サイズの設定方法を変更(aminophenさん、ありがとうございます)。} % \changes{v1.7}{2016/11/12}{ドキュメントに反して\cs{@maketitle}が % 空になっていなかったのを修正} % \changes{v1.7}{2016/11/12}{use \cs{@width} (sync with classes.dtx v1.3a)} @@ -92,7 +92,7 @@ % \changes{v1.7c}{2016/12/18}{Only add empty page after part if % twoside and openright (sync with classes.dtx v1.4b)} % \changes{v1.7c-ltj-12}{2017/01/17}{|\stockwidth|,~|\stockheight|をトンボオプション指定時にのみ定義 -% (aminophenさん,ありがとうございます).} +% (aminophenさん、ありがとうございます)。} % \changes{v1.7c}{2016/12/18}{奇妙なarticleガードとコードを削除して % ドキュメントを追加} % \changes{v1.7d}{2017/02/15}{\cs{if@openleft}スイッチ追加} @@ -104,14 +104,14 @@ % 偶数ならば0にリセットするように変更} % \changes{v1.7d}{2017/02/15}{縦組クラスの所属表示の番号を直立にした} % \changes{v1.7d-ltj-13}{2017/02/19}{縦組時クラスで|ftnright|パッケージを使うと -% 脚注番号が上書きされ横に寝てしまう問題を修正(aminophenさん,ありがとうございます).} +% 脚注番号が上書きされ横に寝てしまう問題を修正(aminophenさん、ありがとうございます)。} % \changes{v1.7d-ltj-14}{2017/02/20}{openleftオプションの処理で\cs{iftdir}, \cs{ifydir}を -% 誤って使っている問題を修正(aminophenさん,ありがとうございます).} +% 誤って使っている問題を修正(aminophenさん、ありがとうございます)。} % \changes{v1.7e}{2017/03/05}{トンボに表示するジョブ情報の書式を変更} % \changes{v1.7e}{2017/03/05}{\cs{frontmatter}と\cs{mainmatter}を % 奇数ページに送るように変更} -% \changes{v1.7e-ltj-15}{2017/08/31}{本ドキュメントのタイプセットで,小塚フォントが存在するときには -% それを用いるように変更(PDFサイズ削減のため).} +% \changes{v1.7e-ltj-15}{2017/08/31}{本ドキュメントのタイプセットで、小塚フォントが存在するときには +% それを用いるように変更(PDFサイズ削減のため)。} % \changes{v1.7f}{2017/08/31}{和文書体の基準を全角空白から「漢」に変更} % \changes{v1.7g}{2017/09/19}{内部処理で使ったボックス0を空にした} % \changes{v1.7h}{2018/02/04}{和文スケール値\cs{Cjascale}を定義} @@ -128,6 +128,11 @@ % (sync with classes.dtx 2019/10/25 v1.4k)} % \changes{v1.8e}{2020/01/03}{Normalize label fonts % (sync with classes.dtx 2019/12/20 v1.4l)} +% \changes{v1.8e-ltj-18}{2020/05/30}{原ノ味フォントが\TeX~Liveに導入されたことにより、 +% v1.8-ltj-16の変更を削除。「\pTeX と互換性を持たせる」メトリックの変更などは +% 新設の|ptexmin|オプション指定時にのみ行うようにした。 +% 句読点を「、」「。」に統一。} +% \changes{v1.8e-ltj-19}{2020/07/27}{|everyshi|パッケージへのパッチを別パッケージへ分離。} % \fi % % \iffalse @@ -157,26 +162,13 @@ %<11pt&bk>\ProvidesFile{ltjtbk11.clo} %<12pt&bk>\ProvidesFile{ltjtbk12.clo} %</tate> - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 %<article|report|book> Standard LuaLaTeX-ja class] %<10pt|11pt|12pt> Standard LuaLaTeX-ja file (size option)] %<*driver> ] \documentclass{ltjltxdoc} \GetFileInfo{ltjclasses.dtx} -\begingroup - \suppressfontnotfounderror=1 - \global\font\testfont=file:KozMinPr6N-Regular.otf - \global\font\testfonta=file:HaranoAjiMincho-Regular.otf -\endgroup -\ifx\testfonta\nullfont\ifx\testfont\nullfont - \usepackage[ipaex,nfssonly]{luatexja-preset} -\else - \usepackage[kozuka-pr6n,nfssonly]{luatexja-preset} -\fi\else - \usepackage[haranoaji,nfssonly]{luatexja-preset} -\fi -\let\testfont\undefined\let\testfonta\undefined \usepackage{unicode-math} \setmathfont{Latin Modern Math} \def\pLaTeX{p\kern-.05em\LaTeX} @@ -459,8 +451,7 @@ % \changes{v1.1d}{1997/02/05}{開始ページがおかしくなるのを修正} % \changes{v1.1f}{1997/07/08}{縦組時にベースラインがおかしくなるのを修正} % -% \changes{v1.6-ltj-4}{2014/06/30}{本文の組方向を \cs{AtBeginDocument} で -% 変更することができなくなったことに対応} +% [2014-06-30 LTJ] 本文の組方向を \cs{AtBeginDocument}で変更することができなくなったことに対応。 % \begin{macrocode} \DeclareOption{tate}{% \tate\AtBeginDocument{\message{《縦組モード》}\adjustbaseline}% @@ -469,19 +460,21 @@ % % 縦組クラスと|everyshi|パッケージの相性が悪い問題に対処します。 % この処理は、ZRさんの|pxeveryshi|パッケージと実質的に同じ内容です。 +% +% [2020-07-27 LTJ] |lltjp-everyshi.sty|に移しました。 % \begin{macrocode} %<*tate> -\AtEndOfPackageFile{everyshi}{% - \def\@EveryShipout@Output{% - \setbox8\vbox{% - \yoko - \@EveryShipout@Hook - \@EveryShipout@AtNextHook - \global\setbox\luatexoutputbox=\box\luatexoutputbox - }% - \gdef\@EveryShipout@AtNextHook{}% - \@EveryShipout@Org@Shipout\box\luatexoutputbox - }} +%\AtEndOfPackageFile{everyshi}{% +% \def\@EveryShipout@Output{% +% \setbox8\vbox{% +% \yoko +% \@EveryShipout@Hook +% \@EveryShipout@AtNextHook +% \global\setbox\luatexoutputbox=\box\luatexoutputbox +% }% +% \gdef\@EveryShipout@AtNextHook{}% +% \@EveryShipout@Org@Shipout\box\luatexoutputbox +% }} %</tate> % \end{macrocode} % @@ -562,8 +555,9 @@ % |mathrmmc|オプションは、 % |\mathrm|と|\mathbf|を和欧文両対応にするためのクラスオプションです。 % \changes{v1.1d}{1992/02/04}{disablejfamの判断を間違えてたのを修正} -% \changes{v1.8-ltj-16}{2018/10/08}{Lua\TeX-ja本体が,主にメモリ消費を抑える目的で -% |disablejfam|オプションをサポートしました。そのため以前出していた警告は削除します。} +% +% [2018-10-08 LTJ] Lua\TeX-ja本体が、主にメモリ消費を抑える目的で +% |disablejfam|オプションをサポートしました。そのため以前出していた警告は削除します。 % \begin{macrocode} \if@compatibility \@mathrmmctrue @@ -583,46 +577,41 @@ % \end{macrocode} % % \subsection{フォントメトリックの変更} -% % Lua\LaTeX-jaの標準では、OTFパッケージ由来のメトリックが使われるようになっています。 -% 本クラスでは、「p\TeX の組版と互換性をできるだけ持たせる」例を提示するため、 +% 本クラスでは、「p\TeX の組版と互換性をできるだけ持たせる」例を提示するため、|ptexmin|オプション指定時のみ % \begin{itemize} % \item メトリックを\texttt{min10.tfm}ベースの\texttt{jfm-min.lua}に変更。 % \item 明朝とゴシックは両方とも\texttt{jfm-min.lua}を用いるが、 % 和文処理用グルー挿入時には「違うメトリックを使用」として思わせる。 % \item p\TeX と同様に、「異なるメトリックの2つの和文文字」の間には、両者から定める % グルーを両方挿入する。 -% \item calllbackを利用し、標準で用いる\texttt{jfm-min.lua}を、段落始めの括弧が全角二分下がりになるように内部で変更している。 +% \item calllbackを利用し、標準で用いる\texttt{jfm-min.lua}を、段落始めの括弧が全角二分下がりになるように内部で変更。 % % \end{itemize} +% という変更を加えます。 % % |\ltj@stdmcfont|,~|\ltj@stdgtfont| による、デフォルトで使われ明朝・ゴシックのフォントの -% 設定に対応しました。この2つの命令の値はユーザが日々の利用でその都度指定するものではなく、 -% 何らかの理由で非埋め込みフォントが正しく利用できない場合にのみ |luatexja.cfg| によって -% セットされるものです。 +% 設定に対応しました。この2つの命令の値はユーザが日々の利用でその都度指定するものではありません。 % -% \changes{v1.6-ltj-9}{2015/01/01}{サイズクラスのロード前にメトリックの変更を行わないと, -% \cs{Cht}等の値が反映されないのでこの場所に移動させました.} +% [2015-01-01 LTJ] サイズクラスのロード前にメトリックの変更を行わないと、 +% \cs{Cht}等の値が反映されないのでこの場所に移動させました。 +% +% [2020-05-30 LTJ] 本節の内容は新設の|ptexmin|オプション指定時にのみ行うようにしました。 +% その関係で、実際の処理は|\ProcessOptions|のところに移動させました。 % % \begin{macrocode} %<*article|report|book> -\directlua{luatexbase.add_to_callback('luatexja.load_jfm', - function (ji, jn) ji.chars['parbdd'] = 0; return ji end, - 'ltj.jclasses_load_jfm', 1)} -{\jfont\g=\ltj@stdmcfont:jfm=min } % loading jfm-min.lua -\expandafter\let\csname JY3/mc/m/n/10\endcsname\relax -\DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.962216] \ltj@stdmcfont:jfm=min}{} -\DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.962216] \ltj@stdgtfont:jfm=min;jfmvar=goth}{} -\ltjglobalsetparameter{differentjfm=both} -\directlua{luatexbase.remove_from_callback('luatexja.load_jfm', 'ltj.jclasses_load_jfm')} +\newif\ifptexmin +\DeclareOption{ptexmin}{\ptexmintrue}% %</article|report|book> % \end{macrocode} % % \subsection{disablejfamオプション} -% \changes{v1.8b-ltj-17}{2019/08/12}{disablejfamの``Unused global option(s)''警告を出さないようにした} -% disablejfamオプションはLua\TeX-ja本体で処理しますが, -% もうLua\TeX-jaは読み込んでいるため,このままでは``Unused global option(s): [disablejfam]''警告が -% 出てしまいます.そのため,「何もしない」disablejfamオプションをクラス内で定義しておきます. +% disablejfamオプションはLua\TeX-ja本体で処理しますが、 +% もうLua\TeX-jaは読み込んでいるため、このままでは``Unused global option(s): [disablejfam]''警告が +% 出てしまいます。そのため、「何もしない」disablejfamオプションをクラス内で定義しておきます。 +% +% [2019-08-12 LTJ] |disablejfam|の``Unused global option(s)''警告を出さないようにした。 % % \begin{macrocode} %<*article|report|book> @@ -647,6 +636,25 @@ %<yoko>\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright} %</book> \ProcessOptions\relax +% \end{macrocode} +% +% [2020-05-30 LTJ] 「フォントメトリックの変更」の節の内容の処理をここで行います。 +% +% \begin{macrocode} +\ifptexmin +\directlua{luatexbase.add_to_callback('luatexja.load_jfm', + function (ji, jn) ji.chars['parbdd'] = 0; return ji end, + 'ltj.jclasses_load_jfm', 1)} +{\jfont\g=\ltj@stdmcfont:jfm=min } % loading jfm-min.lua +\expandafter\let\csname JY3/mc/m/n/10\endcsname\relax +\DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.962216] \ltj@stdmcfont:jfm=min}{} +\DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.962216] \ltj@stdgtfont:jfm=min;jfmvar=goth}{} +\ltjglobalsetparameter{differentjfm=both} +\directlua{luatexbase.remove_from_callback('luatexja.load_jfm', 'ltj.jclasses_load_jfm')} +\fi +% \end{macrocode} +% +% \begin{macrocode} %<book&tate>\input{ltjtbk1\@ptsize.clo} %<!book&tate>\input{ltjtsize1\@ptsize.clo} %<book&yoko>\input{ltjbk1\@ptsize.clo} @@ -654,8 +662,9 @@ % \end{macrocode} % 縦組用クラスファイルの場合は、ここで\file{plext.sty}も読み込みます。 % \changes{v1.0e}{1996/03/21}{\cs{usepackage} to \cs{RequirePackage}} -% \changes{v1.6-ltj-6}{2014/07/28}{Lua\TeX-jaでは,代わりに\file{lltjext.sty}を読み込みま -% す.これは\file{plext.sty}をLua\TeX-ja用に書きなおしたものです.} + +% [2014-07-28 LTJ] Lua\TeX-jaでは、代わりに\file{lltjext.sty}を読み込みま +% す。これは\file{plext.sty}をLua\TeX-ja用に書きなおしたものです。 % \begin{macrocode} %<tate>\RequirePackage{lltjext} %</article|report|book> @@ -952,13 +961,13 @@ % 出力のPDFの用紙サイズをここで設定しておきます。 % |tombow|が真のときは2インチ足しておきます。 % -% [2015-10-18 LTJ] Lua\TeX\ 0.81.0ではプリミティブの名称変更がされたので, -% それに合わせておきます. +% [2015-10-18 LTJ] Lua\TeX\ 0.81.0ではプリミティブの名称変更がされたので、 +% それに合わせておきます。 % % [2016-07-19 LTJ] luatex.defが新しくなったことに対応するaminophenさんのパッチを取り込みました。 % -% [2017-01-17 LTJ] [lt]jsclassesに合わせ,トンボオプションが指定されているとき「だけ」|\stockwidth|, -% |\stockheight|を定義するようにしました。aminophenさん,ありがとうございます. +% [2017-01-17 LTJ] [lt]jsclassesに合わせ、トンボオプションが指定されているとき「だけ」|\stockwidth|、 +% |\stockheight|を定義するようにしました。aminophenさん、ありがとうございます。 % % \begin{macrocode} \iftombow @@ -4549,8 +4558,8 @@ % \pLaTeX\ 2018-12-01以前では縦数式ディレクション時でも漢数字で出力していましたが、 % \pLaTeX\ 2019-04-06以降からはそうしなくなりました。 % -% \changes{v1.6-ltj-9}{2015/01/01}{縦組では,この漢数字による日付出力でエラーになりました. -% Lua\TeX-ja では,\cs{kansuji}の後に\cs{number}を続けることは出来ないので\cs{number}を削除しました.} +% [2015-01-01 LTJ] 縦組では、この漢数字による日付出力でエラーになりました。 +% Lua\TeX-ja では、\cs{kansuji}の後に\cs{number}を続けることは出来ないので\cs{number}を削除しました。 % \changes{v1.8b}{2019/04/02}{\cs{today}の計算・出力方法を変更。} % \begin{macrocode} \def\pltx@today@year@#1{% @@ -4655,8 +4664,8 @@ % \changes{v1.0d}{1996/02/29}{articleとreportのデフォルトを % \pstyle{plain}に修正} % \changes{v1.4}{2002/04/09}{縦組スタイルで\cs{flushbottom}しないようにした} -% \changes{v1.7d-ltj-13}{2017/02/19}{p\LaTeX とLua\TeX-jaの|\@makecol|が違うことを -% 考慮していなかった} +% [2017-02-19 LTJ] p\LaTeX とLua\TeX-jaの|\@makecol|が違うことを +% 考慮していなかった。 % \begin{macrocode} %<book>\pagestyle{headings} %<!book>\pagestyle{plain} diff --git a/Master/texmf-dist/source/luatex/luatexja/ltjsclasses.dtx b/Master/texmf-dist/source/luatex/luatexja/ltjsclasses.dtx index f00552dfd81..ff2104c0428 100644 --- a/Master/texmf-dist/source/luatex/luatexja/ltjsclasses.dtx +++ b/Master/texmf-dist/source/luatex/luatexja/ltjsclasses.dtx @@ -44,25 +44,12 @@ %<*driver> \ProvidesFile{ltjsclasses.dtx} %</driver> - [2019/11/23 ltjsclasses ] + [2020/05/30 ltjsclasses ] %<*driver> \IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{} \documentclass[disablejfam]{ltjsarticle} \usepackage{hypdoc} \hypersetup{unicode=true} -\begingroup - \suppressfontnotfounderror=1 - \global\font\testfont=file:KozMinPr6N-Regular.otf - \global\font\testfonta=file:HaranoAjiMincho-Regular.otf -\endgroup -\ifx\testfonta\nullfont\ifx\testfont\nullfont - \usepackage[ipaex,nfssonly]{luatexja-preset} -\else - \usepackage[kozuka-pr6n,nfssonly]{luatexja-preset} -\fi\else - \usepackage[haranoaji,nfssonly]{luatexja-preset} -\fi -\let\testfont\undefined\let\testfonta\undefined \usepackage{unicode-math} \setmathfont{Latin Modern Math} \ltjsetparameter{alxspmode={`\*,allow}} @@ -124,7 +111,7 @@ % \item \texttt{uplatex}オプション,\texttt{autodetect-engine}オプションを % 削除してあります(前者ではエラーを出すようにしています)。 % \item \texttt{disablejfam}オプションはクラス側では何もしません(ただLua\TeX-ja本体に -% 渡されるだけです).もし +% 渡されるだけです)。もし % \begin{quotation} % |! LaTeX Error: Too many math alphabets used in version ****.| % \end{quotation} @@ -174,7 +161,7 @@ % % [2016-07-21 LTJ] \LaTeX 等のロゴの再定義で,\texttt{jslogo}パッケージがあればそちらを読み込むことにしました。 % -% [2016-10-13 LTJ] \texttt{slide}オプションの使用時にエラーが出るのを修正. +% [2016-10-13 LTJ] \texttt{slide}オプションの使用時にエラーが出るのを修正。 % % \StopEventually{} % @@ -414,8 +401,8 @@ % % \texttt{noxreal},~\texttt{real}は旧来の互換性として今は残してありますが,2017年7月に削除する予定です。 % -% [2018-01-14] \texttt{noxreal},~\texttt{real} を削除しました.また,内部命令の名称を -% \texttt{jsclasses}に合わせました. +% [2018-01-14] \texttt{noxreal},~\texttt{real} を削除しました。また,内部命令の名称を +% \texttt{jsclasses}に合わせました。 % % \begin{macrocode} \newif\ifjsc@mag@xreal @@ -604,10 +591,10 @@ % 読み込む必要があることに注意が必要です。 % % [2018-10-08 LTJ] Lua\TeX-ja本体が\texttt{disablejfam}オプションをサポートしたので, -% クラスファイルからは削除します. +% クラスファイルからは削除します。 % % [2019-08-12 LTJ] ……と思いましたが,``Unused global option(s): [disablejfam]''警告が -% 出てしまいますので,「何もしない」クラスオプションとして形だけ定義します. +% 出てしまいますので,「何もしない」クラスオプションとして形だけ定義します。 % \begin{macrocode} %<*article|report|book> \DeclareOption{disablejfam}{} @@ -636,9 +623,9 @@ % % [2016-11-09] pLaTeX / upLaTeX を自動判別するオプション \texttt{autodetect-engine} を新設しました。 % -% [2016-11-24 LTJ] \texttt{autodetect-engine} はLua\TeX-jaでは意味がないので警告を表示させます. +% [2016-11-24 LTJ] \texttt{autodetect-engine} はLua\TeX-jaでは意味がないので警告を表示させます。 % -% [2018-07-30 LTJ] \texttt{uplatex} 指定時のエラーが正しく表示されなかったので修正しました. +% [2018-07-30 LTJ] \texttt{uplatex} 指定時のエラーが正しく表示されなかったので修正しました。 % % \begin{macrocode} \newif\ifmingoth @@ -803,14 +790,14 @@ % [2016-04-04 LTJ] NFSSへのパッチを修正。 % % [2017-01-23 LTJ] \LaTeXe\ 2017-01-01以降ではTUエンコーディングが標準なので, -% \texttt{type1cm}パッケージは読み込まないようにしました. +% \texttt{type1cm}パッケージは読み込まないようにしました。 % -% [2017-02-17 LTJ] |\directlua|中で出力される数字のカテゴリーコードが12になるようにしました. -% この保証をしないと例えば\texttt{listings}パッケージで無限ループになります. +% [2017-02-17 LTJ] |\directlua|中で出力される数字のカテゴリーコードが12になるようにしました。 +% この保証をしないと例えば\texttt{listings}パッケージで無限ループになります。 % % [2018-07-02 LTJ] 10ptオプションが指定されており, % 実際にはオプティカルサイズの補正が不要なときは「|xreal|オプションは指定されなかった」という -% 扱いにしておきます. +% 扱いにしておきます。 % \begin{macrocode} \ifjsc@mag@xreal \ifdim\jsc@mpt=\p@\jsc@mag@xrealfalse\else @@ -958,9 +945,7 @@ % すればいいことになります。 % % |\ltj@stdmcfont|,~|\ltj@stdgtfont| による,デフォルトで使われる明朝・ゴシックのフォントの -% 設定に対応しました。この2つの命令の値はユーザが日々の利用でその都度指定するものではなく, -% 何らかの理由で非埋め込みフォントが正しく利用できない場合にのみ\texttt{luatexja.cfg}によって -% セットされるものです。 +% 設定に対応しました。この2つの命令の値はユーザが日々の利用でその都度指定するものではありません。 % % [2014-07-26 LTJ] なお,現状のところ,縦組用JFMは\texttt{jfm-ujisv.lua}しか準備していません。 % @@ -969,6 +954,7 @@ % [2017-12-31] 和文スケール($1\,\mathrm{zw} \div \hbox{要求サイズ}$)を % 表す実数値マクロ |\Cjascale| を定義しました。 % +% [2020-05-30] |\ltj@stdmcfont|の説明に古い記述があったので修正。 % % これにより,公称10ポイントの和文フォントを0.924715倍したことにより, % 約9.25ポイント, @@ -979,15 +965,15 @@ % 和文フォントをPostScriptの9ポイントにするために, % $0.9*72.27/72 \simeq 0.903375$ 倍します。 % -% [2018-09-23 LTJ] 実際の|\Cjascale|の定義はLua\TeX-jaの読み込み前に移動しました. +% [2018-09-23 LTJ] 実際の|\Cjascale|の定義はLua\TeX-jaの読み込み前に移動しました。 % こうすることによって「0.962216倍された和文フォント」という実際には使われない和文フォントを -% 読み込む必要がなくなります. +% 読み込む必要がなくなります。 % % -% 実際にフォントの再定義を行う部分です. +% 実際にフォントの再定義を行う部分です。 % % [2018-09-23 LTJ] |\Cjascale|の設定を前倒ししたことに伴い,実際の再定義は -% \texttt{mingoth}, \texttt{ptexjis}のときしか必要なくなりました. +% \texttt{mingoth}, \texttt{ptexjis}のときしか必要なくなりました。 % % \begin{macrocode} \expandafter\let\csname JY3/mc/m/n/10\endcsname\relax @@ -1062,7 +1048,7 @@ % \texttt{jsclasses}で行われていた |\textmc|, |\textgt| の再定義は不要のように思われます。 % % \texttt{jsclasses.dtx}中で行われていた |\reDeclareMathAlphabet| の再定義は削除。 -% また,Yue ZHANGさん作の\texttt{fixjfm}パッケージ対応のコードもLua\TeX-jaでは削除しています. +% また,Yue ZHANGさん作の\texttt{fixjfm}パッケージ対応のコードもLua\TeX-jaでは削除しています。 % % \begin{macrocode} \AtBeginDocument{% @@ -5220,7 +5206,7 @@ % ため,うまく働きませんでした。形を変えて復活させます。 % % [2017-04-03 LTJ] 従来クラスファイルで定義していた |\@inhibitglue| は, -% Lua\TeX-jaのコアに |\ltjfakeparbegin| として正式に追加されたのでリネームします. +% Lua\TeX-jaのコアに |\ltjfakeparbegin| として正式に追加されたのでリネームします。 % % |\item| 命令の直後です。 % @@ -5299,9 +5285,9 @@ % % しかし単に戻すだけでも駄目みたいなので,ここでも最後にグルーを消しておきます。 % -% [2016-12-05 LTJ] 本家[2016-11-29],lltjcore.styでの変更に追従させます. +% [2016-12-05 LTJ] 本家[2016-11-29],lltjcore.styでの変更に追従させます。 % -% [2017-02-18 LTJ] lltjcore.sty側で戻したのを忘れていました. +% [2017-02-18 LTJ] lltjcore.sty側で戻したのを忘れていました。 % \begin{macrocode} \def\@gnewline #1{% \ifvmode @@ -5678,7 +5664,7 @@ % \paragraph{ページ設定} % % ページ設定の初期化です。 -% |stfloats|パッケージがシステムにインストールされている場合は、このパッケージを使って +% |stfloats|パッケージがシステムにインストールされている場合は,このパッケージを使って % \pLaTeX の標準時と同じようにボトムフロートの下に脚注が組まれるようにします。 % % [2017-02-19] \pLaTeX とLua\TeX-jaの|\@makecol|が違うことを diff --git a/Master/texmf-dist/source/luatex/luatexja/tool/function_uax50.lua b/Master/texmf-dist/source/luatex/luatexja/tool/function_uax50.lua index d345284535b..ea7871a6a8c 100644 --- a/Master/texmf-dist/source/luatex/luatexja/tool/function_uax50.lua +++ b/Master/texmf-dist/source/luatex/luatexja/tool/function_uax50.lua @@ -3,7 +3,7 @@ dofile(kpse.find_file('lualibs.lua')) local function toX(a) return string.format('0x%X',a) end -local uax_revision = '12.1.0' +local uax_revision = '13.0.0' print(' -- UAX#50 for Unicode ' .. uax_revision) local fh = io.open('VerticalOrientation-' .. uax_revision .. '.txt') local t = {} diff --git a/Master/texmf-dist/source/luatex/luatexja/tool/ltj-unicode-ccfix_make2.pl b/Master/texmf-dist/source/luatex/luatexja/tool/ltj-unicode-ccfix_make2.pl index f55962956d3..9372d2a9ab2 100755 --- a/Master/texmf-dist/source/luatex/luatexja/tool/ltj-unicode-ccfix_make2.pl +++ b/Master/texmf-dist/source/luatex/luatexja/tool/ltj-unicode-ccfix_make2.pl @@ -1,6 +1,6 @@ #!/usr/bin/env perl -# create ltj-unicode-ccfix.tex by processing Unicode data file +# create ltj-unicode-ccfix.lua by processing Unicode data file # LineBreak.txt # modified from unicode-char-prep.pl (part of the XeTeX typesetting system). @@ -38,7 +38,7 @@ # authorization from the copyright holders. # \****************************************************************************/ -die "usage: perl $0 LineBreak.txt > unicode-letters.tex\n" +die "usage: perl $0 LineBreak.txt > ltj-unicode-ccfix.lua\n" unless $#ARGV == 0; sub parse_unidata { diff --git a/Master/texmf-dist/source/luatex/luatexja/tool/table_ivd_aj1.lua b/Master/texmf-dist/source/luatex/luatexja/tool/table_ivd_aj1.lua index cf898a47b21..0d8c18e5568 100644 --- a/Master/texmf-dist/source/luatex/luatexja/tool/table_ivd_aj1.lua +++ b/Master/texmf-dist/source/luatex/luatexja/tool/table_ivd_aj1.lua @@ -1,6 +1,7 @@ print([[ +local f = false return { -version = 2, +version = 3, table_ivd_aj1 = {]]) local f = io.open('IVD_Sequences.txt') @@ -22,10 +23,12 @@ while s do end f:close() +local s={} for i=1,maxcid do - print(' ' .. tostring(t[i] or false) .. ',') + s[#s+1] = t[i] and string.format('0x%x', t[i]) or 'f' + if #s==10 then print(" " .. table.concat(s, ",") .. ','); s={} end end - +print(" " .. table.concat(s, ",")) -- ( echo 'luatexja.otf.ivd_aj1 = {' ; grep 'Adobe-Japan1' IVD_Sequences.txt|sed 's/\([0-9A-F][0-9A-F]*\) \([0-9A-F][0-9A-F]*\)\;.*CID.\([0-9][0-9]*\)$/[\3]=\{0x\1,0x\2\},/' ; echo '}' ) print([[}}]]) diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty index 58a585768a3..279ebb09b70 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty @@ -1,5 +1,5 @@ % luatexja-preset.sty -\ProvidesPackage{luatexja-preset}[2020-05-15 Japanese font presets] +\ProvidesPackage{luatexja-preset}[2020-06-14 Japanese font presets] \RequirePackage{expl3,l3keys2e} \RequirePackage{luatexja} @@ -76,6 +76,7 @@ \__ltjpreset_declare_bool_option:nn { bold }{ nobold } \__ltjpreset_declare_bool_option:nn { expert }{ noexpert } \__ltjpreset_declare_bool_option:nn { deluxe }{ nodeluxe } +\__ltjpreset_declare_bool_option:nn { nocheck }{ check } % JFM \tl_new:N \__ltjpreset_use_jfm_yoko_tl % 使用する JFM(横) @@ -464,14 +465,16 @@ \group_begin: \suppressfontnotfounderror=1 \cs_if_exist:cTF { __ltjpreset_font_#1_#2: } { - \__ltjpreset_wrap_fontname:e { \cs:w __ltjpreset_font_#1_#2: \cs_end: } - \font \g__ltjpreset_font_test: = \l__ltjpreset_font_name:\relax - \ifx \g__ltjpreset_font_test: \nullfont - \msg_warning:nnxxxx { luatexja-preset }{ no-font } - { \cs:w __ltjpreset_font_#1_#2: \cs_end: }{ #1/#2 } - { \cs:w __ltjpreset_font_#3_#4: \cs_end: }{ #3/#4 } - \cs_gset_eq:cc { __ltjpreset_font_#1_#2: } { __ltjpreset_font_#3_#4: } - \fi + \bool_if:NF \g__ltjpreset_nocheck_bool { + \__ltjpreset_wrap_fontname:e { \cs:w __ltjpreset_font_#1_#2: \cs_end: } + \font \g__ltjpreset_font_test: = \l__ltjpreset_font_name:\relax + \ifx \g__ltjpreset_font_test: \nullfont + \msg_warning:nnxxxx { luatexja-preset }{ no-font } + { \cs:w __ltjpreset_font_#1_#2: \cs_end: }{ #1/#2 } + { \cs:w __ltjpreset_font_#3_#4: \cs_end: }{ #3/#4 } + \cs_gset_eq:cc { __ltjpreset_font_#1_#2: } { __ltjpreset_font_#3_#4: } + \fi + } } { \cs_gset_eq:cc { __ltjpreset_font_#1_#2: } { __ltjpreset_font_#3_#4: } } \group_end: } diff --git a/Master/texmf-dist/tex/luatex/luatexja/jfm-kaiming.lua b/Master/texmf-dist/tex/luatex/luatexja/jfm-kaiming.lua index cb166ec436f..63ac222311d 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/jfm-kaiming.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/jfm-kaiming.lua @@ -6,8 +6,8 @@ luatexja.jfont.define_jfm { align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.88, depth = 0.12, italic=0.0, glue = { - --[1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.125, 0.0, 0.125 } + [1] = { 0, 0.5, 0 }, + [3] = { 0, 0.25, 0 } } }, diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua index d6025b1f1d8..c7d145d2f67 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua @@ -1,12 +1,12 @@ -- -- ltj-adjust.lua -- -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('jfont'); local ltjf = luatexja.jfont -luatexja.load_module('jfmglue'); local ltjj = luatexja.jfmglue -luatexja.load_module('stack'); local ltjs = luatexja.stack -luatexja.load_module('direction'); local ltjd = luatexja.direction -luatexja.load_module('lineskip'); local ltjl = luatexja.lineskip +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'jfont'; local ltjf = luatexja.jfont +luatexja.load_module 'jfmglue'; local ltjj = luatexja.jfmglue +luatexja.load_module 'stack'; local ltjs = luatexja.stack +luatexja.load_module 'direction'; local ltjd = luatexja.direction +luatexja.load_module 'lineskip'; local ltjl = luatexja.lineskip luatexja.adjust = luatexja.adjust or {} local to_node = node.direct.tonode @@ -30,12 +30,12 @@ local has_attr = node.direct.has_attribute local set_attr = node.direct.set_attribute local insert_after = node.direct.insert_after -local id_glyph = node.id('glyph') -local id_kern = node.id('kern') -local id_hlist = node.id('hlist') -local id_glue = node.id('glue') -local id_whatsit = node.id('whatsit') -local id_penalty = node.id('penalty') +local id_glyph = node.id 'glyph' +local id_kern = node.id 'kern' +local id_hlist = node.id 'hlist' +local id_glue = node.id 'glue' +local id_whatsit = node.id 'whatsit' +local id_penalty = node.id 'penalty' local attr_icflag = luatexbase.attributes['ltj@icflag'] local attr_jchar_class = luatexbase.attributes['ltj@charclass'] local lang_ja = luatexja.lang_ja @@ -70,9 +70,9 @@ do local function make_priority_table(glue_sign) for i,_ in pairs(tmp) do tmp[i]=nil end if glue_sign==2 then -- shrink - for i=0,63 do tmp[#tmp+1] = { (i%8)-4, FROM_JFM+i } end + for i=0,63 do tmp[#tmp+1] = { (i%8)-4, FROM_JFM+i } end else -- stretch - for i=0,63 do tmp[#tmp+1] = { math.floor(i/8)-4, FROM_JFM+i } end + for i=0,63 do tmp[#tmp+1] = { math.floor(i/8)-4, FROM_JFM+i } end end local pt = priority_table[glue_sign] tmp[#tmp+1] = { pt[2]/10, XKANJI_SKIP } @@ -83,8 +83,8 @@ do table.sort(tmp, cmp) local a, m, n = at2pr[glue_sign], 10000000, 0 for i=1,#tmp do - if tmp[i][1]<m then n,m = n+1,tmp[i][1] end - a[tmp[i][2]] = n + if tmp[i][1]<m then n,m = n+1,tmp[i][1] end + a[tmp[i][2]] = n end local o = a[-1] priority_num[glue_sign] = n @@ -111,14 +111,14 @@ function get_total_stretched(p) for q in node_traverse_id(id_glue, ph) do local a = getfield(q, 'stretch_order') if a==0 then - local b = at2pr_st[get_attr_icflag(q)]; - total_st[b] = total_st[b]+getfield(q, 'stretch') + local b = at2pr_st[get_attr_icflag(q)]; + total_st[b] = total_st[b]+getfield(q, 'stretch') end total_st[a*65536] = total_st[a]+getfield(q, 'stretch') local a = getfield(q, 'shrink_order') if a==0 then - local b = at2pr_sh[get_attr_icflag(q)]; - total_sh[b] = total_sh[b]+getfield(q, 'shrink') + local b = at2pr_sh[get_attr_icflag(q)]; + total_sh[b] = total_sh[b]+getfield(q, 'shrink') end total_sh[a*65536] = total_sh[a]+getfield(q, 'shrink') end @@ -171,16 +171,16 @@ local function aw_step1(p, total) for i, v in ipairs(eadt) do local t = total - v if t>0 then - eadt_ratio[i] = {i, t/total_st[65536*total_st.order], t, v} + eadt_ratio[i] = {i, t/total_st[65536*total_st.order], t, v} else - eadt_ratio[i] = {i, t/total_sh[65536*total_sh.order], t, v} + eadt_ratio[i] = {i, t/total_sh[65536*total_sh.order], t, v} end end table.sort(eadt_ratio, function (a,b) for i=2,4 do - local at, bt = abs(a[i]), abs(b[i]) - if at~=bt then return at<bt end + local at, bt = abs(a[i]), abs(b[i]) + if at~=bt then return at<bt end end return a[4]<b[4] end) @@ -219,14 +219,14 @@ local function aw_step1_last(p, total) if total_st.order ~= getfield(pf, 'stretch_order') then return total, false end if total_st[total_st.order*65536] ~= getfield(pf, 'stretch') then return total, false end for i=total_st.order-1, 1, -1 do - if total_st[i*65536] ~= 0 then return total, false end + if total_st[i*65536] ~= 0 then return total, false end end end if total<0 and total_sh.order>0 then if total_sh.order ~= getfield(pf, 'shrink_order') then return total, false end if total_sh[total_sh.order*65536] ~= getfield(pf, 'shrink') then return total, false end for i=total_sh.order-1, 1, -1 do - if total_sh[i*65536] ~= 0 then return total, false end + if total_sh[i*65536] ~= 0 then return total, false end end end local eadt = ltjf_font_metric_table[getfont(xc)] @@ -258,16 +258,16 @@ local function aw_step1_last(p, total) for i, v in ipairs(eadt) do local t = total - v if t>0 then - eadt_ratio[i] = {i, t/total_st[65536*total_st.order], t, v} + eadt_ratio[i] = {i, t/total_st[65536*total_st.order], t, v} else - eadt_ratio[i] = {i, t/total_sh[65536*total_sh.order], t, v} + eadt_ratio[i] = {i, t/total_sh[65536*total_sh.order], t, v} end end table.sort(eadt_ratio, function (a,b) for i=2,4 do - local at, bt = abs(a[i]), abs(b[i]) - if at~=bt then return at<bt end + local at, bt = abs(a[i]), abs(b[i]) + if at~=bt then return at<bt end end return a[4]<b[4] end) @@ -303,8 +303,7 @@ local function clear_stretch(p, ind, ap, name) for q in node_traverse_id(id_glue, getlist(p)) do local f = ap[get_attr_icflag(q)] if f == ind then - setfield(q, name..'_order', 0) - setfield(q, name, 0) + setfield(q, name..'_order', 0); setfield(q, name, 0) end end end @@ -313,7 +312,7 @@ local function set_stretch(p, after, before, ind, ap, name) if before > 0 then local ratio = after/before for q in node_traverse_id(id_glue, getlist(p)) do - local f = ap[get_attr_icflag(q)] + local f = ap[get_attr_icflag(q)] if (f==ind) and getfield(q, name..'_order')==0 then setfield(q, name, getfield(q, name)*ratio) end @@ -333,7 +332,7 @@ function aw_step2(p, total, added_flag) total = abs(total) for i = 1, pnum do if total <= res[i] then - local a = at2pr[id] + local a = at2pr[id] for j = i+1,pnum do clear_stretch(p, j, a, name) end @@ -353,32 +352,32 @@ do insert_lineend_kern = function (head, nq, np, Bp) if nq.met then local eadt = nq.met.char_type[nq.class].end_adjust - if not eadt then return end - if eadt[1]~=0 then - local x = node_new(id_kern, 1) - setfield(x, 'kern', eadt[1]); set_attr(x, attr_icflag, LINEEND) - insert_before(head, np.first, x) - end - local eadt_num = #eadt - for i=2,eadt_num do - local x = node_new(id_penalty) - setfield(x, 'penalty', 0); set_attr(x, attr_icflag, KINSOKU) - insert_before(head, np.first, x); Bp[#Bp+1] = x - local x = node_new(id_kern, 1) - setfield(x, 'kern', eadt[i]-eadt[i-1]); set_attr(x, attr_icflag, LINEEND) - insert_before(head, np.first, x) - end + if not eadt then return end + if eadt[1]~=0 then + local x = node_new(id_kern, 1) + setfield(x, 'kern', eadt[1]); set_attr(x, attr_icflag, LINEEND) + insert_before(head, np.first, x) + end + local eadt_num = #eadt + for i=2,eadt_num do + local x = node_new(id_penalty) + setfield(x, 'penalty', 0); set_attr(x, attr_icflag, KINSOKU) + insert_before(head, np.first, x); Bp[#Bp+1] = x + local x = node_new(id_kern, 1) + setfield(x, 'kern', eadt[i]-eadt[i-1]); set_attr(x, attr_icflag, LINEEND) + insert_before(head, np.first, x) + end if eadt_num>1 or eadt[1]~=0 then - local x = node_new(id_penalty) - setfield(x, 'penalty', 0); set_attr(x, attr_icflag, KINSOKU) - insert_before(head, np.first, x); Bp[#Bp+1] = x - local x = node_new(id_kern, 1) - setfield(x, 'kern', -eadt[eadt_num]); set_attr(x, attr_icflag, LINEEND) - insert_before(head, np.first, x) - local x = node_new(id_penalty) - setfield(x, 'penalty', 10000); set_attr(x, attr_icflag, KINSOKU) - insert_before(head, np.first, x); Bp[#Bp+1] = x - end + local x = node_new(id_penalty) + setfield(x, 'penalty', 0); set_attr(x, attr_icflag, KINSOKU) + insert_before(head, np.first, x); Bp[#Bp+1] = x + local x = node_new(id_kern, 1) + setfield(x, 'kern', -eadt[eadt_num]); set_attr(x, attr_icflag, LINEEND) + insert_before(head, np.first, x) + local x = node_new(id_penalty) + setfield(x, 'penalty', 10000); set_attr(x, attr_icflag, KINSOKU) + insert_before(head, np.first, x); Bp[#Bp+1] = x + end end end end @@ -392,9 +391,9 @@ do if not head then return head end local last_p for p in node_traverse_id(id_hlist, to_direct(head)) do - if last_p then - myaw_step2(last_p, myaw_step1(last_p, get_total_stretched(last_p))) - end + if last_p then + myaw_step2(last_p, myaw_step1(last_p, get_total_stretched(last_p))) + end last_p = p end if last_p then @@ -405,18 +404,18 @@ do local is_reg = false local function enable_cb(status_le, status_pr, status_lp, status_ls) if (status_le>0 or status_pr>0) and (not is_reg) then - ltjb.add_to_callback('post_linebreak_filter', + ltjb.add_to_callback('post_linebreak_filter', adjust_width, 'Adjust width', - luatexbase.priority_in_callback('post_linebreak_filter', 'ltj.lineskip')-1) - is_reg = true + luatexbase.priority_in_callback('post_linebreak_filter', 'ltj.lineskip')-1) + is_reg = true elseif is_reg and (status_le==0 and status_pr==0) then - luatexbase.remove_from_callback('post_linebreak_filter', 'Adjust width') - is_reg = false + luatexbase.remove_from_callback('post_linebreak_filter', 'Adjust width') + is_reg = false end if status_le==2 then - if not luatexbase.in_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') then - ltjb.add_to_callback('luatexja.adjust_jfmglue', insert_lineend_kern, 'luatexja.adjust') - end + if not luatexbase.in_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') then + ltjb.add_to_callback('luatexja.adjust_jfmglue', insert_lineend_kern, 'luatexja.adjust') + end myaw_step1, myaw_step1_last = dummy, aw_step1_last else if status_le==0 then @@ -425,13 +424,13 @@ do myaw_step1, myaw_step1_last = aw_step1, aw_step1_last end if luatexbase.in_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') then - luatexbase.remove_from_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') + luatexbase.remove_from_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') end end myaw_step2 = (status_pr>0) and aw_step2 or aw_step2_dummy luatexja.lineskip.setting( status_lp>0 and 'profile' or 'dummy', - status_ls>0 and 'step' or 'dummy' + status_ls>0 and 'step' or 'dummy' ) end local function disable_cb() -- only for compatibility @@ -455,7 +454,7 @@ do ins(package[1], {b,e,[ind]=d}) end local function flatten(package) - local bd={} for i,_ in pairs(package[2]) do ins(bd,{i}) end + local bd = {} for i,_ in pairs(package[2]) do ins(bd,{i}) end sort(bd, function (a,b) return a[1]<b[1] end) local bdc=#bd; local t = package[1] sort(t, function (a,b) return a[1]<b[1] end) @@ -469,7 +468,7 @@ do bd[j][k]=bd[j][k] and max(bd[j][k],w) or w end end - j=j+1 + j = j + 1 end end package[2]=nil; package[1]=nil; package.flatten, package.insert=nil, nil @@ -527,7 +526,7 @@ do if lmin==1/0 then lmin = bw end return lmin, bw - lmin - getfield(before, 'depth') - - getfield(after, mirrored and 'depth' or 'height') + - getfield(after, mirrored and 'depth' or 'height') end end end diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-base.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-base.lua index 3f4a0ba1f82..ad5bb816a57 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-base.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-base.lua @@ -30,25 +30,22 @@ do --! LaTeX 形式のエラーメッセージ(\PackageError 等)を --! Lua 関数の呼び出しで行う. - local LF = "\n" - local err_break = "" + local LF, BEL = "\n", "\a" local err_main = "" local err_help = "" local function message_cont(str, c) - return str:gsub(err_break, LF .. c) + return str:gsub(LF, LF .. c) end local function into_lines(str) - return str:gsub(err_break, LF):explode(LF) - end - - _error_set_break = function (str) - err_break = str + return str:explode(LF) end _error_set_message = function (msgcont, main, help) - err_main = message_cont(main, msgcont) - err_help = into_lines(help) + err_main = message_cont(main, msgcont):gsub(BEL, LF) + err_help = (help and help~="") and into_lines(help) + or {"Sorry, I don't know how to help in this situation.", + "Maybe you should try asking a human?" } end _error_show = function (escchar) @@ -67,7 +64,7 @@ do local message_a = "Type H <return> for immediate help" generic_error = function (msgcont, main, ref, help) - local mainref = main..".\n\n"..ref.."\n"..message_a + local mainref = main..".\a\a"..ref..BEL..message_a _error_set_message(msgcont, mainref, help) _error_show(true) end @@ -79,7 +76,7 @@ do local on_line = line and (" on input line "..tex.inputlineno) or "" local newlinechar = tex.newlinechar tex.newlinechar = -1 - texio.write_nl(out, br..main..on_line.."."..br) + texio.write_nl(out, br..mainc..on_line.."."..br) tex.newlinechar = newlinechar end @@ -97,25 +94,25 @@ do end package_error = function (pkgname, main, help) - generic_error("("..pkgname.." ", + generic_error("("..pkgname..") ", "Package "..pkgname.." Error: "..main, "See the "..pkgname.." package documentation for explanation.", help) end package_warning = function (pkgname, main) - generic_warning("("..pkgname.." ", + generic_warning("("..pkgname..") ", "Package "..pkgname.." Warning: "..main) end package_warning_no_line = function (pkgname, main) - generic_warning_no_line("("..pkgname.." ", + generic_warning_no_line("("..pkgname..") ", "Package "..pkgname.." Warning: "..main) end package_info = function (pkgname, main) - generic_info("("..pkgname.." ", + generic_info("("..pkgname..") ", "Package "..pkgname.." Info: "..main) end package_info_no_line = function (pkgname, main) - generic_info_no_line("("..pkgname.." ", + generic_info_no_line("("..pkgname..") ", "Package "..pkgname.." Info: "..main) end @@ -231,6 +228,7 @@ end require('lualibs-lpeg') -- string.split require('lualibs-os') -- os.type +require('lualibs-gzip') -- gzip.* do local kpse_var_value = kpse.var_value @@ -248,6 +246,7 @@ do local join, isreadable = file.join, file.isreadable local tofile, serialize = table.tofile, table.serialize local luc_suffix = jit and '.lub' or '.luc' + local dump = string.dump -- determine save path local savepath = '' @@ -256,43 +255,56 @@ do if not lfs.isdir(testpath) then dir.mkdirs(testpath) end if lfs.isdir(testpath) then savepath = testpath; break end end + local serial_spec = {functions=false, noquotes=true} + + local function remove_file_if_exist(name) + if os.rename(name,name) then os.remove(name) end + end + local function remove_cache (filename) + local fullpath_wo_ext = savepath .. '/' .. filename .. '.lu' + remove_file_if_exist(fullpath_wo_ext .. 'a') + remove_file_if_exist(fullpath_wo_ext .. 'a.gz') + remove_file_if_exist(fullpath_wo_ext .. 'b') + remove_file_if_exist(fullpath_wo_ext .. 'c') + end local function save_cache_luc(filename, t, serialized) local fullpath = savepath .. '/' .. filename .. luc_suffix - local s = serialized or serialize(t, 'return', false) + local s = serialized or serialize(t, 'return', false, serial_spec) if s then local sa = load(s) local f = io.open(fullpath, 'wb') if f and sa then - f:write(string.dump(sa, true)) - texio.write('(save cache: ' .. fullpath .. ')') + f:write(dump(sa, true)) + texio.write('log', '(save cache: ' .. fullpath .. ')') + f:close() end - f:close() end end local function save_cache(filename, t) - local fullpath = savepath .. '/' .. filename .. '.lua' - local s = serialize(t, 'return', false) + local fullpath = savepath .. '/' .. filename .. '.lua.gz' + local s = serialize(t, 'return', false, serial_spec) if s then - local f = io.open(fullpath, 'w') - if f then - f:write(s) - texio.write('(save cache: ' .. fullpath .. ')') - end - f:close() - save_cache_luc(filename, t, s) + gzip.save(fullpath, s, 1) + texio.write('log', '(save cache: ' .. fullpath .. ')') + save_cache_luc(filename, t, s) end end - local function load_cache_a(filename, outdate) + local function load_cache_a(filename, outdate, compressed) local result for _,v in pairs(path) do local fn = join(v, cache_dir, filename) - if isreadable(fn) then - texio.write('(load cache: ' .. fn .. ')') - result = loadfile(fn) - result = result and result(); break + if isreadable(fn) then + texio.write('log','(load cache: ' .. filename .. ')') + if compressed then + result = loadstring(gzip.load(fn)) + else + result = loadfile(fn) + end + result = result and result() + break end end if (not result) or outdate(result) then @@ -303,26 +315,17 @@ do end local function load_cache(filename, outdate) - local r = load_cache_a(filename .. luc_suffix, outdate) + remove_file_if_exist(savepath .. '/' .. filename .. '.lua') + local r = load_cache_a(filename .. luc_suffix, outdate, false) if r then return r else - local r = load_cache_a(filename .. '.lua', outdate) + local r = load_cache_a(filename .. '.lua.gz', outdate, true) if r then save_cache_luc(filename, r) end -- update the precompiled cache return r end end - local function remove_file_if_exist(name) - if os.rename(name,name) then os.remove(name) end - end - local function remove_cache (filename) - local fullpath_wo_ext = savepath .. '/' .. filename .. '.lu' - remove_file_if_exist(fullpath_wo_ext .. 'a') - remove_file_if_exist(fullpath_wo_ext .. 'b') - remove_file_if_exist(fullpath_wo_ext .. 'c') - end - ltjb.remove_cache = remove_cache ltjb.load_cache = load_cache ltjb.save_cache_luc = save_cache_luc @@ -340,7 +343,6 @@ do end ---- -ltjb._error_set_break = _error_set_break ltjb._error_set_message = _error_set_message ltjb._error_show = _error_show ltjb._generic_warn_info = _generic_warn_info diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-base.sty b/Master/texmf-dist/tex/luatex/luatexja/ltj-base.sty index 717105e3a50..605797f3a37 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-base.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-base.sty @@ -13,7 +13,7 @@ \ifltj@in@latex %<*LaTeX> \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{ltj-base}[2017/05/05] + \ProvidesPackage{ltj-base}[2020-07-27] \fi %</LaTeX> %%------------------ Tiny helpers @@ -256,151 +256,6 @@ %! つまり単なる \luatexescape. \let\ltj@luaxescape\luatexluaescapestring -%%------------------ Fully-expandable error messaging - -%! ixerrtrick パッケージから移植. -%! 展開限定文脈でも使える \PackageError 等. -%! Lua 関数版(luatexja/base.lua 参照)もある. - -%% \ltj@@error@message@a -\begingroup -\def~{ } -\xdef\ltj@@error@message@a{% - Type~~H <return>~~for immediate help% -}% -\endgroup - -%%<+> \ltj@MessageBreak -% An analogue of \MessageBreak that is used in \ltj@GenericError, etc. -% (\MessageBreak cannot be used there.) -% NB: It is realized as a macro that expands to two instances -% of the character of code 127. This marker is later detected -% by the Lua process. -\begingroup -\lccode42=127 -\lowercase{ - \gdef\ltj@MessageBreak{**} - \directlua{ - luatexja.base._error_set_break("**") - } -} -\endgroup - -%%<+> \ltj@GenericError{<cont>}{<msg-main>}{<msg-ref>}{<msg-help>} -% A variant of \GenericError that can be used in expansion-only -% situation. The meanings of arguments are the same as the original -% \GenericError. -%%<+> \ltj@PlainError{<msg-main>}{<msg-help>} -% A simpler error messenger available in expansion-only situations. -% It behaves similarly to: -% \errhelp{<msg-help}\errmessage{<msg-main>} -\begingroup -% with the same hack as in \GenericError... -\lccode`\@=`\ % -\lccode`\~=`\ % -\lccode`\}=`\ % -\lccode`\{=`\ % -\catcode`\ =11\relax% -\lowercase{% -\endgroup% -\def\ltj@GenericError#1#2#3#4{% not protected -\directlua{% -luatexja.base._error_set_message("\ltj@luaxescape{#1}",% -"\ltj@luaxescape{#2.^^J^^J#3^^J\ltj@@error@message@a}",% -"\ltj@luaxescape{#4}")% -}% -\ % use csname with four spaces as last expander -} -\def\ {% csname with four spaces -\directlua{% -luatexja.base._error_show(false)% and many spaces trail! - % - % -}% -}% -\def\ltj@PlainError#1#2{% -\directlua{% -luatexja.base._error_set_message(" ",% -"\ltj@luaxescape{#1}",% -"\ltj@luaxescape{#2}")% -}% -\error % again a weird name is used -} -\def\error {% csname with two trailing spaces -\directlua{% -luatexja.base._error_show(true)% and many spaces trail! - % - % -}% -}% -} - -%% \ltj@@error@on@line -\def\ltj@@error@on@line{ - on input line \the \inputlineno -} - -%% \ltj@generic@warn@info -\def\ltj@@generic@warn@info#1#2#3#4{ - \begingroup - \directlua{ - luatexja.base._generic_warn_info("\ltj@luaxescape{#3}", - "\ltj@luaxescape{#4}", (#1 > 0), (#2 > 0)) - } - \endgroup -} - -%% \ltj@GenericWarning{<cont>}{<msg-main>} -\def\ltj@GenericWarning{ - \ltj@@generic@warn@info{1}{1} -} -%% \ltj@GenericWarningNoLine{<cont>}{<msg-main>} -\def\ltj@GenericWarningNoLine{ - \ltj@@generic@warn@info{1}{0} -} -%% \ltj@GenericInfo{<cont>}{<msg-main>} -\def\ltj@GenericInfo{ - \ltj@@generic@warn@info{0}{1} -} -%% \ltj@GenericInfoNoLine{<cont>}{<msg-main>} -\def\ltj@GenericInfoNoLine{ - \ltj@@generic@warn@info{0}{0} -} - -%% \ltj@@space@seq@a -\begingroup -\def~{ } -\xdef\ltj@@space@seq@a{~~~~~~~~~~~~~~~~} -\xdef\ltj@@space@seq@b{~~~~~~~~~~~~~} -\endgroup - -%% \ltj@PackageError{<pkg-name>}{<msg-main>}{<msg-help>} -\def\ltj@PackageError#1#2#3{% - \ltj@GenericError{(#1)\ltj@@space@seq@a}% - {Package #1 Error: #2}% - {See the #1 package documentation for explanation.}% - {#3}% -} -%% \ltj@PackageWarning{<pkg-name>}{<msg-main>} -\def\ltj@PackageWarning#1#2{% - \ltj@GenericWarning{(#1)\ltj@@space@seq@a}% - {Package #1 Warning: #2}% -} -%% \ltj@PackageWarningNoLine{<pkg-name>}{<msg-main>} -\def\ltj@PackageWarningNoLine#1#2{% - \ltj@GenericWarningNoLine{(#1)\ltj@@space@seq@a}% - {Package #1 Warning: #2}% -} -%% \ltj@PackageInfo{<pkg-name>}{<msg-main>} -\def\ltj@PackageInfo#1#2{% - \ltj@GenericInfo{(#1)\ltj@@space@seq@b}% - {Package #1 Info: #2}% -} -%% \ltj@PackageInfoNoLine{<pkg-name>}{<msg-main>} -\def\ltj@PackageInfoNoLine#1#2{% - \ltj@GenericInfoNoLine{(#1)\ltj@@space@seq@b}% - {Package #1 Info: #2}% -} %%------------------ debug logging \ifdefined\LuaTeXjaDebugEnabled diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-charrange.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-charrange.lua index 47b4be3def3..46075b21664 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-charrange.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-charrange.lua @@ -3,11 +3,11 @@ -- luatexbase.provides_module({ name = 'luatexja.charrange', - date = '2019/09/26', + date = '2020-07-30', description = 'Handling the range of Japanese characters', }) luatexja.charrange = {} -luatexja.load_module('base'); local ltjb = luatexja.base +luatexja.load_module 'base'; local ltjb = luatexja.base local getchar = node.direct.getchar local has_attr = node.direct.has_attribute @@ -49,18 +49,16 @@ for i=0x100,ucs_out-1 do jcr_table_main[i]=0 end function luatexja.charrange.add_char_range(b,e,ind) -- ind: external range number if not ind or ind<0 or ind>31*ATTR_RANGE then -- 0 はエラーにしない(隠し) ltjb.package_error('luatexja', - "invalid character range number (" .. ind .. ")", - "A character range number should be in the range 1.." + "invalid character range number (" .. ind .. ")", + "A character range number should be in the range 1.." .. 31*ATTR_RANGE .. ",\n" .. - "ignored.") + "ignored.") return elseif b<0x80 or e>=ucs_out then ltjb.package_warning('luatexja', - 'bad character range ([' .. b .. ',' .. e .. ']). ' .. - 'I take the intersection with [0x80, 0x10ffff].') - elseif b>e then - local j=b; e=b; b=j - end + 'bad character range ([' .. b .. ',' .. e .. ']). ' .. + 'I take the intersection with [0x80, 0x10ffff].') + elseif b>e then b, e = e, b end if ind == 31*ATTR_RANGE then ind=0 end for i=math.max(0x80,b),math.min(ucs_out-1,e) do jcr_table_main[i]=ind @@ -92,9 +90,9 @@ end -- EXT function luatexja.charrange.toggle_char_range(g, i) -- i: external range number if type(i)~='number' then - ltjb.package_error('luatexja', - "invalid character range number (" .. tostring(i).. ")", - "A character range number must be a number, ignored.") + ltjb.package_error('luatexja', + "invalid character range number (" .. tostring(i).. ")", + "A character range number must be a number, ignored.") elseif i==0 then return else local kc @@ -103,7 +101,7 @@ function luatexja.charrange.toggle_char_range(g, i) -- i: external range number local attr = kcat_attr_table[i] local a = tex_getattr(attr) tex.setattribute(g, attr, - (floor(a/pow_table[i+1])*2+kc)*pow_table[i]+a%pow_table[i]) + (floor(a/pow_table[i+1])*2+kc)*pow_table[i]+a%pow_table[i]) end end diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-compat.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-compat.lua index c8e046c63da..d660915a31a 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-compat.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-compat.lua @@ -2,8 +2,8 @@ -- ltj-compat.lua -- -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('stack'); local ltjs = luatexja.stack +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'stack'; local ltjs = luatexja.stack local stack_table_index = luatexja.stack_table_index -- load jisx0208 table @@ -12,7 +12,7 @@ local cache_ver = 3 local cache_outdate_fn = function (t) return t.version~=cache_ver end local jisx0208 = ltjb.load_cache('ltj-jisx0208',cache_outdate_fn) if not jisx0208 then -- make cache - jisx0208 = require('ltj-jisx0208.lua') + jisx0208 = require 'ltj-jisx0208.lua' ltjb.save_cache_luc('ltj-jisx0208', jisx0208) end @@ -22,39 +22,35 @@ local utfchar=utf.char local function to_kansuji(num) if not num then num=0; return elseif num<0 then - num = -num; tex.write('-') + num = -num; tex.write '-' end local s = "" while num~=0 do s = utfchar( - ltjs.get_stack_table(luatexja.stack_table_index.KSJ + num%10, - '', tex.getcount('ltj@@stack'))) .. s + ltjs.get_stack_table(luatexja.stack_table_index.KSJ + num%10, + '', tex.getcount 'ltj@@stack')) .. s num=math.floor(num/10) end tex.write(s) end +local function error_invalid_charcode(i) + ltjb.package_error('luatexja', + "invalid character code (".. tostring(i) .. ")", + "I'm going to use 0 instead of that illegal character code.") +end + -- \ucs: 単なる identity local function from_ucs(i) - if type(i)~='number' then - ltjb.package_error('luatexja', - "invalid character code (".. tostring(i) .. ")", - "I'm going to use 0 instead of that illegal character code.") - i=0 - end + if type(i)~='number' then error_invalid_charcode(i); i=0 end tex.write(i) end -- \kuten: 面区点 (それぞれで16進2桁を使用)=> Unicode 符号位置 local function from_kuten(i) - if type(i)~='number' then - ltjb.package_error('luatexja', - "invalid character code (".. tostring(i) .. ")", - "I'm going to use 0 instead of that illegal character code.") - i=0 - end + if type(i)~='number' then error_invalid_charcode(i); i=0 end if (i%256==0)or(i%256>94) then - tex.write('0') + tex.write '0' else tex.write(tostring(jisx0208.table_jisx0208_uptex[math.floor(i/256)*94+(i%256)-94] or 0)) end @@ -62,11 +58,8 @@ end -- \euc: EUC-JP による符号位置 => Unicode 符号位置 local function from_euc(i) - if type(i)~='number' then - ltjb.package_error('luatexja', - "invalid character code (".. tostring(i) .. ")", - "I'm going to use 0 instead of that illegal character code.") - i=0 + if type(i)~='number' then + error_invalid_charcode(i); i=0 elseif i>=0x10000 or i<0xa0a0 then i=0 end @@ -75,22 +68,14 @@ end -- \jis: ISO-2022-JP による符号位置 => Unicode 符号位置 local function from_jis(i) - if (type(i)~='number') or i>=0x10000 or i<0 then - ltjb.package_error('luatexja', - "invalid character code (".. tostring(i) .. ")", - "I'm going to use 0 instead of that illegal character code.") - i=0 - end + if type(i)~='number' then error_invalid_charcode(i); i=0 end from_kuten(i-0x2020) end -- \sjis: Shift_JIS による符号位置 => Unicode 符号位置 local function from_sjis(i) if (type(i)~='number') or i>=0x10000 or i<0 then - ltjb.package_error('luatexja', - "invalid character code (".. tostring(i) .. ")", - "I'm going to use 0 instead of that illegal character code.") - tex.write('0'); return + error_invalid_charcode(i); tex.write '0'; return end local c2 = math.floor(i/256) local c1 = i%256 @@ -102,20 +87,19 @@ local function from_sjis(i) { [false]=15 } } if c2 >= 0x81 then if c2 >= 0xF0 then -- this if block won't be true - if (c2 <= 0xF3 or (c2 == 0xF4 and c1 < 0x9F)) then - c2 = 0x100 + shift_jisx0213_s1a3_table[c2 - 0xF0 + 1][(0x9E < c1)]; - else -- 78<=k<=94 - c2 = c2 * 2 - 413 + 0x100; if 0x9E < c1 then c2=c2+1 end - end + if (c2 <= 0xF3 or (c2 == 0xF4 and c1 < 0x9F)) then + c2 = 0x100 + shift_jisx0213_s1a3_table[c2 - 0xF0 + 1][(0x9E < c1)]; + else -- 78<=k<=94 + c2 = c2 * 2 - 413 + 0x100; if 0x9E < c1 then c2=c2+1 end + end else - if c2<=0x9f then i=0x101 else i=0x181 end - c2 = c2 + c2 - i; if 0x9E < c1 then c2=c2+1 end + if c2<=0x9f then i=0x101 else i=0x181 end + c2 = c2 + c2 - i; if 0x9E < c1 then c2=c2+1 end end if c1 < 0x9F then - if c1>0x7f then i=0x40 else i=0x3f end - c1 = c1 - i + if c1>0x7f then i=0x40 else i=0x3f end; c1 = c1 - i else - c1 = c1 - 0x9e + c1 = c1 - 0x9e end from_kuten(c2*256+c1) end @@ -124,9 +108,9 @@ end luatexja.binary_pars.kansujichar = function(c, t) if type(c)~='number' or c<0 or c>9 then ltjb.package_error('luatexja', - 'Invalid KANSUJI number (' .. tostring(c) .. ')', - 'A KANSUJI number should be in the range 0..9.\n'.. - 'So I changed this one to zero.') + 'Invalid KANSUJI number (' .. tostring(c) .. ')', + 'A KANSUJI number should be in the range 0..9.\n'.. + 'So I changed this one to zero.') c=0 end return ltjs.get_stack_table(stack_table_index.KSJ + c, 0, t) @@ -134,11 +118,8 @@ end local t = { - from_euc = from_euc, - from_kuten = from_kuten, - from_jis = from_jis, - from_sjis = from_sjis, - from_ucs = from_ucs, - to_kansuji = to_kansuji, + from_euc = from_euc, from_kuten = from_kuten, + from_jis = from_jis, from_sjis = from_sjis, + from_ucs = from_ucs, to_kansuji = to_kansuji, } luatexja.compat = t diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua index 7dd0dee9061..523397d804c 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua @@ -2,8 +2,8 @@ -- src/ltj-direction.lua -- -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('stack'); local ltjs = luatexja.stack +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'stack'; local ltjs = luatexja.stack luatexja.direction = {} local attr_dir = luatexbase.attributes['ltj@dir'] @@ -29,17 +29,17 @@ local node_next = node.direct.getnext local traverse = node.direct.traverse local traverse_id = node.direct.traverse_id local start_time_measure, stop_time_measure - = ltjb.start_time_measure, ltjb.stop_time_measure + = ltjb.start_time_measure, ltjb.stop_time_measure local abs = math.abs -local id_kern = node.id('kern') -local id_hlist = node.id('hlist') -local id_vlist = node.id('vlist') -local id_whatsit = node.id('whatsit') -local sid_save = node.subtype('pdf_save') -local sid_restore = node.subtype('pdf_restore') -local sid_matrix = node.subtype('pdf_setmatrix') -local sid_user = node.subtype('user_defined') +local id_kern = node.id 'kern' +local id_hlist = node.id 'hlist' +local id_vlist = node.id 'vlist' +local id_whatsit = node.id 'whatsit' +local sid_save = node.subtype 'pdf_save' +local sid_restore= node.subtype 'pdf_restore' +local sid_matrix = node.subtype 'pdf_setmatrix' +local sid_user = node.subtype 'user_defined' local tex_nest = tex.nest local tex_getcount = tex.getcount @@ -94,35 +94,34 @@ local get_dir_count, get_adjust_dir_count do local function get_dir_count_inner(h) if h then - if h.id==id_whatsit and h.subtype==sid_user and h.user_id==DIR then - local ic = node.has_attribute(h, attr_icflag) or 0 - return (ic<PROCESSED_BEGIN_FLAG) - and (node.has_attribute(h,attr_dir)%dir_node_auto) or 0 - else - return 0 - end + if h.id==id_whatsit and h.subtype==sid_user and h.user_id==DIR then + return ((node.has_attribute(h, attr_icflag) or 0)<PROCESSED_BEGIN_FLAG) + and (node.has_attribute(h,attr_dir)%dir_node_auto) or 0 + else + return 0 + end else - return 0 + return 0 end end function get_dir_count() for i=tex_nest.ptr, 1, -1 do - local h = tex_nest[i].head.next - if h then - local t = get_dir_count_inner(h) - if t~=0 then return t end - end + local h = tex_nest[i].head.next + if h then + local t = get_dir_count_inner(h) + if t~=0 then return t end + end end return page_direction end function get_adjust_dir_count() for i=tex_nest.ptr, 1, -1 do local v = tex_nest[i] - local h, m = v.head.next, v.mode - if abs(m)== ltjs.vmode and h then - local t = get_dir_count_inner(h) - if t~=0 then return t end - end + local h, m = v.head.next, v.mode + if abs(m)== ltjs.vmode and h then + local t = get_dir_count_inner(h) + if t~=0 then return t end + end end return page_direction end @@ -138,35 +137,34 @@ do local node_traverse = node.traverse local STCK = luatexja.userid_table.STCK local IHB = luatexja.userid_table.IHB - local id_local = node.id('local_par') - local id_dir = node.id('dir') + local id_local = node.id 'local_par' + local id_dir = node.id 'dir' local function test_list(h, lv) if not h then - return 2 -- need to create dir_whatsit + return 2 -- need to create dir_whatsit else - local flag = 2 -- need to create dir_whatsit - local w - for p in node_traverse(h) do - if p.id==id_whatsit then - local ps = p.subtype - if ps==sid_user then - local uid= p.user_id - if uid==DIR then - flag = 1; w = w or p -- found - elseif not(uid==IHB or uid==STCK) then - flag = 0; break -- error - end - end - elseif p.id~=id_local and p.id~=id_dir then - flag = 0; break - end - end - if flag==1 then -- dir_whatsit already exists - return 1,w - else - return flag - end + local flag = 2 -- need to create dir_whatsit + local w + for p in node_traverse(h) do + if p.id==id_whatsit then + if p.subtype==sid_user then + local uid= p.user_id + if uid==DIR then + flag = 1; w = w or p -- found + elseif not(uid==IHB or uid==STCK) then + return 0 -- error + end + end + elseif p.id~=id_local and p.id~=id_dir then + return 0 -- error + end + end + if flag==1 then -- dir_whatsit already exists + return 1, w + else + return flag + end end end local node_next_node, node_tail_node = node.next, node.tail @@ -175,9 +173,9 @@ do local lv = tex_nest.ptr -- must be >= 1 if not v then v = get_dir_count() - if abs(tex_nest[lv-1].mode) == ltjs.mmode and v == dir_tate then - v = dir_utod - end + if abs(tex_nest[lv-1].mode) == ltjs.mmode and v == dir_tate then + v = dir_utod + end elseif v=='adj' then v = get_adjust_dir_count() end @@ -195,32 +193,32 @@ do local lv = tex_nest.ptr if not v then v,name = get_dir_count(), nil - if lv>=1 and abs(tex_nest[lv-1].mode) == ltjs.mmode and v == dir_tate then - v = dir_utod - end + if lv>=1 and abs(tex_nest[lv-1].mode) == ltjs.mmode and v == dir_tate then + v = dir_utod + end elseif v=='adj' then v,name = get_adjust_dir_count(), nil end local current_nest = tex_nest[lv] if tex.currentgrouptype==6 then - ltjb.package_error( + ltjb.package_error( 'luatexja', "You can't use `\\" .. name .. "' in an align", - "To change the direction in an align, \n" - .. "you shold use \\hbox or \\vbox.") + "To change the direction in an align, \n" + .. "you shold use \\hbox or \\vbox.") elseif current_nest.mode == ltjs.hmode or abs(current_nest.mode) == ltjs.mmode then - ltjb.package_error( + ltjb.package_error( 'luatexja', - "Improper `\\" .. name .. "'", - 'You cannot change the direction in unrestricted horizontal mode \n' - .. 'nor math modes.') + "Improper `\\" .. name .. "'", + 'You cannot change the direction in unrestricted horizontal mode \n' + .. 'nor math modes.') else - local h = (lv==0) and tex.lists.page_head or current_nest.head.next - local flag,w = test_list(h,lv) - if flag==0 then - if lv==0 and not page_direction then - page_direction = v -- for first call of \yoko (in luatexja-core.sty) - else + local h = (lv==0) and tex.lists.page_head or current_nest.head.next + local flag,w = test_list(h,lv) + if flag==0 then + if lv==0 and not page_direction then + page_direction = v -- for first call of \yoko (in luatexja-core.sty) + else if luatexja.debug then luatexja.ext_show_node_list(node.direct.tonode(h),'>> ', texio.write_nl) end @@ -228,21 +226,21 @@ do 'luatexja', "Use `\\" .. tostring(name) .. "' at top of list", 'Direction change command by LuaTeX-ja is available\n' - .. 'only when the current list is null.') - end - elseif flag==1 then - node_set_attr(w, attr_dir, v) - if lv==0 then page_direction = v end - elseif lv==0 then - page_direction = v - else -- flag == 2: need to create dir whatsit. - local h = current_nest.head - local hn = node.next(h) - hn = (hn and hn.id==id_local) and hn or h - local w = to_node(dir_pool[v]()) - insert_after_node(h,hn,w) - current_nest.tail = node_tail_node(w) - end + .. 'only when the current list is null.') + end + elseif flag==1 then + node_set_attr(w, attr_dir, v) + if lv==0 then page_direction = v end + elseif lv==0 then + page_direction = v + else -- flag == 2: need to create dir whatsit. + local h = current_nest.head + local hn = node.next(h) + hn = (hn and hn.id==id_local) and hn or h + local w = to_node(dir_pool[v]()) + insert_after_node(h,hn,w) + current_nest.tail = node_tail_node(w) + end ensure_tex_attr(attr_icflag, 0) end ensure_tex_attr(attr_dir, 0) @@ -253,13 +251,13 @@ end -- ボックスに dir whatsit を追加 local function create_dir_whatsit(hd, gc, new_dir) if getid(hd)==id_whatsit and - getsubtype(hd)==sid_user and getfield(hd, 'user_id')==DIR then + getsubtype(hd)==sid_user and getfield(hd, 'user_id')==DIR then set_attr(hd, attr_icflag, - get_attr_icflag(hd) + PROCESSED_BEGIN_FLAG) + get_attr_icflag(hd) + PROCESSED_BEGIN_FLAG) local n =node_next(hd) if n then - set_attr(n, attr_icflag, - get_attr_icflag(n) + PROCESSED_BEGIN_FLAG) + set_attr(n, attr_icflag, + get_attr_icflag(n) + PROCESSED_BEGIN_FLAG) end ensure_tex_attr(attr_icflag, 0) return hd @@ -268,7 +266,7 @@ local function create_dir_whatsit(hd, gc, new_dir) setfield(w, 'next', hd) set_attr(w, attr_icflag, PROCESSED_BEGIN_FLAG) set_attr(hd, attr_icflag, - get_attr_icflag(hd) + PROCESSED_BEGIN_FLAG) + get_attr_icflag(hd) + PROCESSED_BEGIN_FLAG) ensure_tex_attr(attr_icflag, 0) ensure_tex_attr(attr_dir, 0) return w @@ -282,81 +280,81 @@ do local function create_dir_whatsit_hpack(h, gc) local hd = to_direct(h) if gc=='fin_row' then - if hd then - for p in traverse_id(15, hd) do -- unset - if get_box_dir(p, 0)==0 then + if hd then + for p in traverse_id(15, hd) do -- unset + if get_box_dir(p, 0)==0 then setfield(p, 'head', create_dir_whatsit(getlist(p), 'fin_row', ltjs.list_dir)) end - end - set_attr(hd, attr_icflag, PROCESSED_BEGIN_FLAG) - ensure_tex_attr(attr_icflag, 0) - end - return h + end + set_attr(hd, attr_icflag, PROCESSED_BEGIN_FLAG) + ensure_tex_attr(attr_icflag, 0) + end + return h elseif gc == 'preamble' then else - adjust_badness(hd) - return to_node(create_dir_whatsit(hd, gc, ltjs.list_dir)) + adjust_badness(hd) + return to_node(create_dir_whatsit(hd, gc, ltjs.list_dir)) end end ltjb.add_to_callback('hpack_filter', - create_dir_whatsit_hpack, 'ltj.create_dir_whatsit', 10000) + create_dir_whatsit_hpack, 'ltj.create_dir_whatsit', 10000) end do local function create_dir_whatsit_parbox(h, gc) - stop_time_measure('tex_linebreak'); + stop_time_measure 'tex_linebreak'; -- start 側は ltj-debug.lua に local new_dir = ltjs.list_dir for line in traverse_id(id_hlist, to_direct(h)) do - setfield(line, 'head', create_dir_whatsit(getlist(line), gc, new_dir) ) + setfield(line, 'head', create_dir_whatsit(getlist(line), gc, new_dir) ) end ensure_tex_attr(attr_dir, 0) return h end ltjb.add_to_callback('post_linebreak_filter', - create_dir_whatsit_parbox, 'ltj.create_dir_whatsit', 10000) + create_dir_whatsit_parbox, 'ltj.create_dir_whatsit', 10000) end local create_dir_whatsit_vbox do local wh = {} - local id_glue, sid_parskip = node.id('glue'), 3 + local id_glue, sid_parskip = node.id 'glue', 3 create_dir_whatsit_vbox = function (hd, gc) ltjs.list_dir = get_dir_count() -- remove dir whatsit for x in traverse_id(id_whatsit, hd) do - if getsubtype(x)==sid_user and getfield(x, 'user_id')==DIR then - wh[#wh+1]=x - end + if getsubtype(x)==sid_user and getfield(x, 'user_id')==DIR then + wh[#wh+1]=x + end end if hd==wh[1] then - ltjs.list_dir =has_attr(hd,attr_dir) - local x = node_next(hd) - if getid(x)==id_glue and getsubtype(x)==sid_parskip then - node_remove(hd,x); node_free(x) - end + ltjs.list_dir =has_attr(hd,attr_dir) + local x = node_next(hd) + if getid(x)==id_glue and getsubtype(x)==sid_parskip then + node_remove(hd,x); node_free(x) + end end for i=1,#wh do - hd = node_remove(hd, wh[i]); node_free(wh[i]); wh[i] = nil + hd = node_remove(hd, wh[i]); node_free(wh[i]); wh[i] = nil end if gc=='fin_row' then -- gc == 'preamble' case is treated in dir_adjust_vpack - if hd then - set_attr(hd, attr_icflag, PROCESSED_BEGIN_FLAG) - ensure_tex_attr(attr_icflag, 0) - end - return hd + if hd then + set_attr(hd, attr_icflag, PROCESSED_BEGIN_FLAG) + ensure_tex_attr(attr_icflag, 0) + end + return hd else - local n =node_next(hd) - if gc=='vtop' then - local w = create_dir_whatsit(hd, gc, ltjs.list_dir) - -- move dir whatsit after hd - setfield(hd, 'next', w); setfield(w, 'next', n) - return hd - else - hd = create_dir_whatsit(hd, gc, ltjs.list_dir) - return hd - end + local n =node_next(hd) + if gc=='vtop' then + local w = create_dir_whatsit(hd, gc, ltjs.list_dir) + -- move dir whatsit after hd + setfield(hd, 'next', w); setfield(w, 'next', n) + return hd + else + hd = create_dir_whatsit(hd, gc, ltjs.list_dir) + return hd + end end end end @@ -377,131 +375,131 @@ do local zero = function() return 0 end dir_node_aux = { [dir_yoko] = { -- yoko を - [dir_tate] = { -- tate 中で組む - width = get_h_d, - height = get_w_half, - depth = get_w_half_rem, - [id_hlist] = { - { 'whatsit', sid_save }, - { 'rotate', '0 1 -1 0' }, - { 'kern', function(w,h,d,nw,nh,nd) return -nd end }, - { 'box' , get_h}, - { 'kern', function(w,h,d,nw,nh,nd) return nd-w end }, - { 'whatsit', sid_restore }, - }, - [id_vlist] = { - { 'whatsit', sid_save }, - { 'rotate', '0 1 -1 0' }, - { 'kern' , zero }, - { 'box' , function(w,h,d,nw,nh,nd) return -nh-nd end }, - { 'kern', get_h_d_neg}, - { 'whatsit', sid_restore }, - }, - }, - [dir_dtou] = { -- dtou 中で組む - width = get_h_d, - height = get_w, - depth = zero, - [id_hlist] = { - { 'whatsit', sid_save }, - { 'rotate', '0 -1 1 0' }, - { 'kern', function(w,h,d,nw,nh,nd) return -nh end }, - { 'box', get_d_neg }, - { 'kern', function(w,h,d,nw,nh,nd) return nh-w end }, - { 'whatsit', sid_restore }, - }, - [id_vlist] = { - { 'whatsit', sid_save }, - { 'rotate', '0 -1 1 0' }, - { 'kern', get_h_d_neg }, - { 'box', zero }, - { 'whatsit', sid_restore }, - }, - }, + [dir_tate] = { -- tate 中で組む + width = get_h_d, + height = get_w_half, + depth = get_w_half_rem, + [id_hlist] = { + { 'whatsit', sid_save }, + { 'rotate', '0 1 -1 0' }, + { 'kern', function(w,h,d,nw,nh,nd) return -nd end }, + { 'box' , get_h}, + { 'kern', function(w,h,d,nw,nh,nd) return nd-w end }, + { 'whatsit', sid_restore }, + }, + [id_vlist] = { + { 'whatsit', sid_save }, + { 'rotate', '0 1 -1 0' }, + { 'kern' , zero }, + { 'box' , function(w,h,d,nw,nh,nd) return -nh-nd end }, + { 'kern', get_h_d_neg}, + { 'whatsit', sid_restore }, + }, + }, + [dir_dtou] = { -- dtou 中で組む + width = get_h_d, + height = get_w, + depth = zero, + [id_hlist] = { + { 'whatsit', sid_save }, + { 'rotate', '0 -1 1 0' }, + { 'kern', function(w,h,d,nw,nh,nd) return -nh end }, + { 'box', get_d_neg }, + { 'kern', function(w,h,d,nw,nh,nd) return nh-w end }, + { 'whatsit', sid_restore }, + }, + [id_vlist] = { + { 'whatsit', sid_save }, + { 'rotate', '0 -1 1 0' }, + { 'kern', get_h_d_neg }, + { 'box', zero }, + { 'whatsit', sid_restore }, + }, + }, }, [dir_tate] = { -- tate を - [dir_yoko] = { -- yoko 中で組む - width = get_h_d, - height = get_w, - depth = zero, - [id_hlist] = { - { 'whatsit', sid_save }, - { 'rotate', '0 -1 1 0' }, - { 'kern', function (w,h,d,nw,nh,nd) return -nh end }, - { 'box' , get_d_neg }, - { 'kern', function (w,h,d,nw,nh,nd) return nh-w end }, - { 'whatsit', sid_restore }, - }, - [id_vlist] = { - { 'whatsit', sid_save }, - { 'rotate', '0 -1 1 0' }, - { 'kern', get_h_d_neg }, - { 'box', zero }, - { 'whatsit', sid_restore }, - }, - }, - [dir_dtou] = { -- dtou 中で組む - width = get_w, - height = get_d, - depth = get_h, - [id_hlist] = { - { 'whatsit', sid_save }, - { 'rotate', '-1 0 0 -1' }, - { 'kern', get_w_neg }, - { 'box', function (w,h,d,nw,nh,nd) return h-nd end }, - { 'whatsit', sid_restore }, - }, - [id_vlist] = { - { 'whatsit', sid_save }, - { 'rotate', '-1 0 0 -1' }, - { 'kern', get_h_d_neg }, - { 'box', get_w_neg }, - { 'whatsit', sid_restore }, - }, + [dir_yoko] = { -- yoko 中で組む + width = get_h_d, + height = get_w, + depth = zero, + [id_hlist] = { + { 'whatsit', sid_save }, + { 'rotate', '0 -1 1 0' }, + { 'kern', function (w,h,d,nw,nh,nd) return -nh end }, + { 'box' , get_d_neg }, + { 'kern', function (w,h,d,nw,nh,nd) return nh-w end }, + { 'whatsit', sid_restore }, + }, + [id_vlist] = { + { 'whatsit', sid_save }, + { 'rotate', '0 -1 1 0' }, + { 'kern', get_h_d_neg }, + { 'box', zero }, + { 'whatsit', sid_restore }, + }, + }, + [dir_dtou] = { -- dtou 中で組む + width = get_w, + height = get_d, + depth = get_h, + [id_hlist] = { + { 'whatsit', sid_save }, + { 'rotate', '-1 0 0 -1' }, + { 'kern', get_w_neg }, + { 'box', function (w,h,d,nw,nh,nd) return h-nd end }, + { 'whatsit', sid_restore }, + }, + [id_vlist] = { + { 'whatsit', sid_save }, + { 'rotate', '-1 0 0 -1' }, + { 'kern', get_h_d_neg }, + { 'box', get_w_neg }, + { 'whatsit', sid_restore }, + }, }, }, [dir_dtou] = { -- dtou を - [dir_yoko] = { -- yoko 中で組む - width = get_h_d, - height = get_w, - depth = zero, - [id_hlist] = { - { 'whatsit', sid_save }, - { 'rotate', '0 1 -1 0' }, - { 'kern', function (w,h,d,nw,nh,nd) return -nd end }, - { 'box', get_h }, - { 'kern', function (w,h,d,nw,nh,nd) return nd-w end }, - { 'whatsit', sid_restore }, - }, - [id_vlist] = { + [dir_yoko] = { -- yoko 中で組む + width = get_h_d, + height = get_w, + depth = zero, + [id_hlist] = { + { 'whatsit', sid_save }, + { 'rotate', '0 1 -1 0' }, + { 'kern', function (w,h,d,nw,nh,nd) return -nd end }, + { 'box', get_h }, + { 'kern', function (w,h,d,nw,nh,nd) return nd-w end }, + { 'whatsit', sid_restore }, + }, + [id_vlist] = { { 'kern', zero }, - { 'whatsit', sid_save }, - { 'rotate', '0 1 -1 0' }, - { 'box', function (w,h,d,nw,nh,nd) return -nd-nh end }, - { 'kern', get_h_d_neg }, - { 'whatsit', sid_restore }, - }, - }, - [dir_tate] = { -- tate 中で組む - width = get_w, - height = get_d, - depth = get_h, - [id_hlist] = { - { 'whatsit', sid_save }, - { 'rotate', '-1 0 0 -1' }, - { 'kern', get_w_neg }, - { 'box', function (w,h,d,nw,nh,nd) return h-nd end }, - { 'whatsit', sid_restore }, - }, - [id_vlist] = { - { 'whatsit', sid_save }, - { 'rotate', ' -1 0 0 -1' }, - { 'kern', function (w,h,d,nw,nh,nd) return -nh-nd end }, - { 'box', get_w_neg }, - { 'kern', function (w,h,d,nw,nh,nd) return nh+nd-h-d end }, - { 'whatsit', sid_restore }, - }, - }, + { 'whatsit', sid_save }, + { 'rotate', '0 1 -1 0' }, + { 'box', function (w,h,d,nw,nh,nd) return -nd-nh end }, + { 'kern', get_h_d_neg }, + { 'whatsit', sid_restore }, + }, + }, + [dir_tate] = { -- tate 中で組む + width = get_w, + height = get_d, + depth = get_h, + [id_hlist] = { + { 'whatsit', sid_save }, + { 'rotate', '-1 0 0 -1' }, + { 'kern', get_w_neg }, + { 'box', function (w,h,d,nw,nh,nd) return h-nd end }, + { 'whatsit', sid_restore }, + }, + [id_vlist] = { + { 'whatsit', sid_save }, + { 'rotate', ' -1 0 0 -1' }, + { 'kern', function (w,h,d,nw,nh,nd) return -nh-nd end }, + { 'box', get_w_neg }, + { 'kern', function (w,h,d,nw,nh,nd) return nh+nd-h-d end }, + { 'whatsit', sid_restore }, + }, + }, }, } end @@ -509,7 +507,7 @@ end -- 1st ret val: b の組方向 -- 2nd ret val はその DIR whatsit function get_box_dir(b, default) - start_time_measure('get_box_dir') + start_time_measure 'get_box_dir' local dir = has_attr(b, attr_dir) or 0 local bh = getfield(b,'head') -- b は insert node となりうるので getlist() は使えない @@ -517,20 +515,11 @@ function get_box_dir(b, default) if bh~=0 then -- bh != nil for bh in traverse_id(id_whatsit, bh) do if getsubtype(bh)==sid_user and getfield(bh, 'user_id')==DIR then - c = bh - dir = (dir==0) and has_attr(bh, attr_dir) or dir + c = bh; dir = (dir==0) and has_attr(bh, attr_dir) or dir end end end - -- for i=1,2 do - -- if bh and getid(bh)==id_whatsit - -- and getsubtype(bh)==sid_user and getfield(bh, 'user_id')==DIR then - -- c = bh - -- dir = (dir==0) and has_attr(bh, attr_dir) or dir - -- end - -- bh = node_next(bh) - -- end - stop_time_measure('get_box_dir') + stop_time_measure 'get_box_dir' return (dir==0 and default or dir), c end @@ -538,54 +527,53 @@ do local getbox = tex.getbox local dir_backup function luatexja.direction.unbox_check_dir(is_copy) - start_time_measure('box_primitive_hook') + start_time_measure 'box_primitive_hook' local list_dir = get_dir_count()%dir_math_mod - local b = getbox(tex_getcount('ltj@tempcnta')) + local b = getbox(tex_getcount 'ltj@tempcnta') if b and getlist(to_direct(b)) then - local box_dir = get_box_dir(to_direct(b), dir_yoko) - if box_dir%dir_math_mod ~= list_dir then - ltjb.package_error( - 'luatexja', - "Incompatible direction list can't be unboxed", - 'I refuse to unbox a box in differrent direction.') + local box_dir = get_box_dir(to_direct(b), dir_yoko) + if box_dir%dir_math_mod ~= list_dir then + ltjb.package_error( + 'luatexja', + "Incompatible direction list can't be unboxed", + 'I refuse to unbox a box in differrent direction.') tex.sprint(cat_lp, '\\@gobbletwo') - else - dir_backup = nil - local bd = to_direct(b) - local hd = getlist(bd) - local nh = hd - while hd do - if getid(hd)==id_whatsit and getsubtype(hd)==sid_user - and getfield(hd, 'user_id')==DIR then - local d = hd - nh, hd = node_remove(nh, hd) - if is_copy and (not dir_backup) then - dir_backup = d - setfield(dir_backup, 'next', nil) - else - node_free(d) - end - else - hd = node_next(hd) - end - end - setfield(bd, 'head', nh) - end + else + dir_backup = nil + local bd = to_direct(b) + local hd = getlist(bd) + local nh = hd + while hd do + if getid(hd)==id_whatsit and getsubtype(hd)==sid_user + and getfield(hd, 'user_id')==DIR then + local d = hd + nh, hd = node_remove(nh, hd) + if is_copy and (not dir_backup) then + dir_backup = d; setfield(dir_backup, 'next', nil) + else + node_free(d) + end + else + hd = node_next(hd) + end + end + setfield(bd, 'head', nh) + end end if luatexja.global_temp and tex.globaldefs~=luatexja.global_temp then - tex.globaldefs = luatexja.global_temp + tex.globaldefs = luatexja.global_temp end - stop_time_measure('box_primitive_hook') + stop_time_measure 'box_primitive_hook' end function luatexja.direction.uncopy_restore_whatsit() - local b = getbox(tex_getcount('ltj@tempcnta')) + local b = getbox(tex_getcount 'ltj@tempcnta') if b then - local bd = to_direct(b) - if dir_backup then - setfield(dir_backup, 'next', getlist(bd)) - setfield(bd, 'head', dir_backup) - dir_backup = nil - end + local bd = to_direct(b) + if dir_backup then + setfield(dir_backup, 'next', getlist(bd)) + setfield(bd, 'head', dir_backup) + dir_backup = nil + end end end end @@ -619,7 +607,7 @@ local function create_dir_node(b, b_dir, new_dir, is_manual) local d = getfield(b, 'depth') local db = node_new(getid(b)) -- dir_node set_attr(db, attr_dir, - new_dir + (is_manual and dir_node_manual or dir_node_auto)) + new_dir + (is_manual and dir_node_manual or dir_node_auto)) set_attr(db, attr_icflag, PROCESSED) set_attr(b, attr_icflag, PROCESSED) ensure_tex_attr(attr_dir, 0) @@ -645,108 +633,108 @@ do local box_dir, dn = get_box_dir(b, ltjs.list_dir) -- 既に b の中身にあるwhatsit if (box_dir<dir_node_auto) and (not dn) then - bh = create_dir_whatsit(bh, 'make_dir_whatsit', dir_yoko) - dn = bh; setfield(b, 'head', bh) + bh = create_dir_whatsit(bh, 'make_dir_whatsit', dir_yoko) + dn = bh; setfield(b, 'head', bh) end if box_dir%dir_math_mod==new_dir then - if box_dir>=dir_node_auto then - -- dir_node としてカプセル化されている - local _, dnc = get_box_dir(b, 0) - if dnc then -- free all other dir_node - node.direct.flush_list(getfield(dnc, 'value')) - setfield(dnc, 'value', nil) - end - set_attr(b, attr_dir, box_dir%dir_math_mod + dir_node_auto) - return head, node_next(b), b, true - else - -- 組方向が一緒 (up to math dir) のボックスなので,何もしなくて良い - return head, node_next(b), b, false - end + if box_dir>=dir_node_auto then + -- dir_node としてカプセル化されている + local _, dnc = get_box_dir(b, 0) + if dnc then -- free all other dir_node + node.direct.flush_list(getfield(dnc, 'value')) + setfield(dnc, 'value', nil) + end + set_attr(b, attr_dir, box_dir%dir_math_mod + dir_node_auto) + return head, node_next(b), b, true + else + -- 組方向が一緒 (up to math dir) のボックスなので,何もしなくて良い + return head, node_next(b), b, false + end else - -- 組方向を合わせる必要あり + -- 組方向を合わせる必要あり local nh, nb, ret, flag - if box_dir>= dir_node_auto then -- unwrap - local b_dir + if box_dir>= dir_node_auto then -- unwrap + local b_dir head, nb, b, b_dir = unwrap_dir_node(b, head, box_dir) - bh = getlist(b) - if b_dir%dir_math_mod==new_dir then - -- dir_node の中身が周囲の組方向とあっている - return head, nb, b, false - else box_dir = b_dir end - end - box_dir = box_dir%dir_math_mod - local db - local dnh = getfield(dn, 'value') - for x in traverse(dnh) do - if has_attr(x, attr_dir)%dir_math_mod == new_dir then - setfield(dn, 'value', to_node(node_remove(dnh, x))) - db=x; break - end - end - node.direct.flush_list(getfield(dn, 'value')) - setfield(dn, 'value', nil) - db = db or create_dir_node(b, box_dir, new_dir, false) - local w = getfield(b, 'width') - local h = getfield(b, 'height') - local d = getfield(b, 'depth') - local dn_w = getfield(db, 'width') - local dn_h = getfield(db, 'height') - local dn_d = getfield(db, 'depth') - nh, nb = insert_before(head, b, db), nil - nh, nb = node_remove(nh, b) + bh = getlist(b) + if b_dir%dir_math_mod==new_dir then + -- dir_node の中身が周囲の組方向とあっている + return head, nb, b, false + else box_dir = b_dir end + end + box_dir = box_dir%dir_math_mod + local db + local dnh = getfield(dn, 'value') + for x in traverse(dnh) do + if has_attr(x, attr_dir)%dir_math_mod == new_dir then + setfield(dn, 'value', to_node(node_remove(dnh, x))) + db=x; break + end + end + node.direct.flush_list(getfield(dn, 'value')) + setfield(dn, 'value', nil) + db = db or create_dir_node(b, box_dir, new_dir, false) + local w = getfield(b, 'width') + local h = getfield(b, 'height') + local d = getfield(b, 'depth') + local dn_w = getfield(db, 'width') + local dn_h = getfield(db, 'height') + local dn_d = getfield(db, 'depth') + nh, nb = insert_before(head, b, db), nil + nh, nb = node_remove(nh, b) setfield(b, 'next', nil); setfield(db, 'head', b) ret, flag = db, true - return nh, nb, ret, flag + return nh, nb, ret, flag end end process_dir_node = function (hd, gc) local x, new_dir = hd, ltjs.list_dir or dir_yoko while x do - local xid = getid(x) - if (xid==id_hlist and get_attr_icflag(x)~=PACKED) - or xid==id_vlist then - hd, x = make_dir_whatsit(hd, x, new_dir, 'process_dir_node:' .. gc) - else - x = node_next(x) - end + local xid = getid(x) + if (xid==id_hlist and get_attr_icflag(x)~=PACKED) + or xid==id_vlist then + hd, x = make_dir_whatsit(hd, x, new_dir, 'process_dir_node:' .. gc) + else + x = node_next(x) + end end return hd end -- lastbox local node_prev = (node.direct~=node) and node.direct.getprev or node.prev - local id_glue = node.id('glue') + local id_glue = node.id 'glue' local function lastbox_hook() - start_time_measure('box_primitive_hook') + start_time_measure 'box_primitive_hook' local bn = tex_nest[tex_nest.ptr].tail if bn then - local b, head = to_direct(bn), to_direct(tex_nest[tex_nest.ptr].head) - local bid = getid(b) - if bid==id_hlist or bid==id_vlist then + local b, head = to_direct(bn), to_direct(tex_nest[tex_nest.ptr].head) + local bid = getid(b) + if bid==id_hlist or bid==id_vlist then local p = getlist(b) - -- alignment の各行の中身が入ったボックス + -- alignment の各行の中身が入ったボックス if p and getid(p)==id_glue and getsubtype(p)==12 then -- tabskip - local np = node_next(p); local npid = getid(np) - if npid==id_hlist or npid==id_vlist then - setfield(b, 'head', create_dir_whatsit(p, 'align', get_box_dir(np, 0))) - end + local np = node_next(p); local npid = getid(np) + if npid==id_hlist or npid==id_vlist then + setfield(b, 'head', create_dir_whatsit(p, 'align', get_box_dir(np, 0))) + end + end + local box_dir = get_box_dir(b, 0) + if box_dir>= dir_node_auto then -- unwrap dir_node + local p = node_prev(b) + local dummy1, dummy2, nb = unwrap_dir_node(b, nil, box_dir) + setfield(p, 'next', nb); tex_nest[tex_nest.ptr].tail = to_node(nb) + setfield(b, 'next', nil); setfield(b, 'head', nil) + node_free(b); b = nb end - local box_dir = get_box_dir(b, 0) - if box_dir>= dir_node_auto then -- unwrap dir_node - local p = node_prev(b) - local dummy1, dummy2, nb = unwrap_dir_node(b, nil, box_dir) - setfield(p, 'next', nb); tex_nest[tex_nest.ptr].tail = to_node(nb) - setfield(b, 'next', nil); setfield(b, 'head', nil) - node_free(b); b = nb - end - local _, wh = get_box_dir(b, 0) -- clean dir_node attached to the box - if wh then - node.direct.flush_list(getfield('value', wh)) - setfield(wh, 'value', nil) - end - end + local _, wh = get_box_dir(b, 0) -- clean dir_node attached to the box + if wh then + node.direct.flush_list(getfield('value', wh)) + setfield(wh, 'value', nil) + end + end end - stop_time_measure('box_primitive_hook') + stop_time_measure 'box_primitive_hook' end luatexja.direction.make_dir_whatsit = make_dir_whatsit @@ -825,55 +813,55 @@ do setfield(wh, 'value',to_node(db)) end setfield(db, key, scan_dimen()) - return false + return false else setfield(s, key, scan_dimen()) - if wh then - -- change dimension of dir_nodes which are created "automatically" - local bw, bh, bd - = getfield(s,'width'), getfield(s, 'height'), getfield(s, 'depth') - for x in traverse(getfield(wh, 'value')) do - local x_dir = has_attr(x, attr_dir) - if x_dir<dir_node_manual then - local info = dir_node_aux[s_dir][x_dir%dir_node_auto] - setfield(x, 'width', info.width(bw,bh,bd)) - setfield(x, 'height', info.height(bw,bh,bd)) - setfield(x, 'depth', info.depth(bw,bh,bd)) - end - end - end - return true + if wh then + -- change dimension of dir_nodes which are created "automatically" + local bw, bh, bd + = getfield(s,'width'), getfield(s, 'height'), getfield(s, 'depth') + for x in traverse(getfield(wh, 'value')) do + local x_dir = has_attr(x, attr_dir) + if x_dir<dir_node_manual then + local info = dir_node_aux[s_dir][x_dir%dir_node_auto] + setfield(x, 'width', info.width(bw,bh,bd)) + setfield(x, 'height', info.height(bw,bh,bd)) + setfield(x, 'depth', info.depth(bw,bh,bd)) + end + end + end + return true end end local function set_box_dim(key) local s = getbox(scan_int()); scan_keyword('=') if s then - local l_dir = (get_dir_count())%dir_math_mod - s = to_direct(s) + local l_dir = (get_dir_count())%dir_math_mod + s = to_direct(s) local b_dir = get_box_dir(s,dir_yoko) if b_dir<dir_node_auto then set_box_dim_common(key, s, l_dir) - elseif b_dir%dir_math_mod == l_dir then - -- s is dir_node - setfield(s, key, scan_dimen()) - if b_dir<dir_node_manual then - set_attr(s, attr_dir, b_dir%dir_node_auto + dir_node_manual) - end + elseif b_dir%dir_math_mod == l_dir then + -- s is dir_node + setfield(s, key, scan_dimen()) + if b_dir<dir_node_manual then + set_attr(s, attr_dir, b_dir%dir_node_auto + dir_node_manual) + end else - local sid, b = getid(s), getlist(s) - local info = dir_node_aux[get_box_dir(b,dir_yoko)%dir_math_mod][b_dir%dir_node_auto] - local bw, bh, bd - = getfield(b,'width'), getfield(b, 'height'), getfield(b, 'depth') - local sw, sh, sd - = getfield(s,'width'), getfield(s, 'height'), getfield(s, 'depth') - if set_box_dim_common(key, b, l_dir) and b_dir<dir_node_manual then - -- re-calculate dimension of s, if s is created "automatically" - if b_dir<dir_node_manual then - setfield(s, 'width', info.width(bw,bh,bd)) - setfield(s, 'height', info.height(bw,bh,bd)) - setfield(s, 'depth', info.depth(bw,bh,bd)) - end - end + local sid, b = getid(s), getlist(s) + local info = dir_node_aux[get_box_dir(b,dir_yoko)%dir_math_mod][b_dir%dir_node_auto] + local bw, bh, bd + = getfield(b,'width'), getfield(b, 'height'), getfield(b, 'depth') + local sw, sh, sd + = getfield(s,'width'), getfield(s, 'height'), getfield(s, 'depth') + if set_box_dim_common(key, b, l_dir) and b_dir<dir_node_manual then + -- re-calculate dimension of s, if s is created "automatically" + if b_dir<dir_node_manual then + setfield(s, 'width', info.width(bw,bh,bd)) + setfield(s, 'height', info.height(bw,bh,bd)) + setfield(s, 'depth', info.depth(bw,bh,bd)) + end + end end end end @@ -888,11 +876,11 @@ do s = to_direct(s) local b_dir = get_box_dir(s, dir_yoko) if b_dir<dir_node_auto then - return b_dir + return b_dir else - local b_dir = get_box_dir( - node_next(node_next(node_next(getlist(s)))), dir_yoko) - return b_dir + local b_dir = get_box_dir( + node_next(node_next(node_next(getlist(s)))), dir_yoko) + return b_dir end else return 0 @@ -905,21 +893,21 @@ do local getbox, setbox, copy_list = tex.getbox, tex.setbox, node.direct.copy_list -- raise, lower function luatexja.direction.raise_box() - start_time_measure('box_primitive_hook') + start_time_measure 'box_primitive_hook' local list_dir = get_dir_count() - local s = getbox('ltj@afbox') + local s = getbox 'ltj@afbox' if s then - local sd = to_direct(s) - local box_dir = get_box_dir(sd, dir_yoko) - if box_dir%dir_math_mod ~= list_dir then - setbox( - 'ltj@afbox', - to_node(copy_list(make_dir_whatsit(sd, sd, list_dir, 'box_move'))) - -- copy_list しないとリストの整合性が崩れる……? - ) - end + local sd = to_direct(s) + local box_dir = get_box_dir(sd, dir_yoko) + if box_dir%dir_math_mod ~= list_dir then + setbox( + 'ltj@afbox', + to_node(copy_list(make_dir_whatsit(sd, sd, list_dir, 'box_move'))) + -- copy_list しないとリストの整合性が崩れる……? + ) + end end - stop_time_measure('box_primitive_hook') + stop_time_measure 'box_primitive_hook' end end @@ -929,61 +917,61 @@ do local function glyph_from_packed(h) local b = getlist(h) return (getid(b)==id_kern or (getid(b)==id_whatsit and getsubtype(b)==sid_save) ) - and node_next(node_next(node_next(b))) or b + and node_next(node_next(node_next(b))) or b end luatexja.direction.glyph_from_packed = glyph_from_packed end -- adjust do - local id_adjust = node.id('adjust') + local id_adjust = node.id 'adjust' function luatexja.direction.check_adjust_direction() - start_time_measure('box_primitive_hook') + start_time_measure 'box_primitive_hook' local list_dir = get_adjust_dir_count() local a = tex_nest[tex_nest.ptr].tail local ad = to_direct(a) if a and getid(ad)==id_adjust then - local adj_dir = get_box_dir(ad) - if list_dir~=adj_dir then - ltjb.package_error( - 'luatexja', - 'Direction Incompatible', - "\\vadjust's argument and outer vlist must have same direction.") - node.direct.last_node() - end + local adj_dir = get_box_dir(ad) + if list_dir~=adj_dir then + ltjb.package_error( + 'luatexja', + 'Direction Incompatible', + "\\vadjust's argument and outer vlist must have same direction.") + node.direct.last_node() + end end - stop_time_measure('box_primitive_hook') + stop_time_measure 'box_primitive_hook' end end -- insert do - local id_ins = node.id('ins') - local id_rule = node.id('rule') + local id_ins = node.id 'ins' + local id_rule = node.id 'rule' function luatexja.direction.populate_insertion_dir_whatsit() - start_time_measure('box_primitive_hook') + start_time_measure 'box_primitive_hook' local list_dir = get_dir_count() local a = tex_nest[tex_nest.ptr].tail local ad = to_direct(a) if (not a) or getid(ad)~=id_ins then - a = node.tail(tex.lists.page_head); ad = to_direct(a) + a = node.tail(tex.lists.page_head); ad = to_direct(a) end if a and getid(ad)==id_ins then - local h = getfield(ad, 'head') - if getid(h)==id_whatsit and - getsubtype(h)==sid_user and getfield(h, 'user_id')==DIR then - local n = h; h = node_remove(h,h) - node_free(n) - end - for box_rule in traverse(h) do - if getid(box_rule)<id_rule then - h = insert_before(h, box_rule, dir_pool[list_dir]()) - end - end - ensure_tex_attr(attr_dir, 0) - setfield(ad, 'head', h) + local h = getfield(ad, 'head') + if getid(h)==id_whatsit and + getsubtype(h)==sid_user and getfield(h, 'user_id')==DIR then + local n = h; h = node_remove(h,h) + node_free(n) + end + for box_rule in traverse(h) do + if getid(box_rule)<id_rule then + h = insert_before(h, box_rule, dir_pool[list_dir]()) + end + end + ensure_tex_attr(attr_dir, 0) + setfield(ad, 'head', h) end - stop_time_measure('box_primitive_hook') + stop_time_measure 'box_primitive_hook' end end @@ -997,50 +985,50 @@ do local p = to_direct(tex_getbox(n)) split_dir_head = nil if p then - local bh = getlist(p) - if getid(bh)==id_whatsit and getsubtype(bh)==sid_user and getfield(bh, 'user_id')==DIR - and node_next(bh) then - ltjs.list_dir = has_attr(bh, attr_dir) - local q = node_next(p) - setfield(p, 'head', node_remove(bh,bh,bh)) - split_dir_head = bh - end + local bh = getlist(p) + if getid(bh)==id_whatsit and getsubtype(bh)==sid_user and getfield(bh, 'user_id')==DIR + and node_next(bh) then + ltjs.list_dir = has_attr(bh, attr_dir) + local q = node_next(p) + setfield(p, 'head', node_remove(bh,bh,bh)) + split_dir_head = bh + end end sprint(cat_lp, '\\ltj@@orig@vsplit' .. tostring(n)) - end + end local function dir_adjust_vpack(h, gc) - start_time_measure('direction_vpack') + start_time_measure 'direction_vpack' local hd = to_direct(h) if gc=='split_keep' then - -- supply dir_whatsit - hd = create_dir_whatsit_vbox(hd, gc) - split_dir_whatsit = hd + -- supply dir_whatsit + hd = create_dir_whatsit_vbox(hd, gc) + split_dir_whatsit = hd elseif gc=='split_off' then - if split_dir_head then - ltjs.list_dir = has_attr(split_dir_head, attr_dir) - hd = insert_before(hd, hd, split_dir_head) - split_dir_head=nil - end - if split_dir_whatsit then - -- adjust direction of 'split_keep' - set_attr(split_dir_whatsit, attr_dir, ltjs.list_dir) - end - split_dir_whatsit=nil + if split_dir_head then + ltjs.list_dir = has_attr(split_dir_head, attr_dir) + hd = insert_before(hd, hd, split_dir_head) + split_dir_head=nil + end + if split_dir_whatsit then + -- adjust direction of 'split_keep' + set_attr(split_dir_whatsit, attr_dir, ltjs.list_dir) + end + split_dir_whatsit=nil elseif gc=='preamble' then - split_dir_whatsit=nil + split_dir_whatsit=nil else - adjust_badness(hd) - -- hd = process_dir_node(create_dir_whatsit_vbox(hd, gc), gc) - -- done in append_to_vpack callback - hd = create_dir_whatsit_vbox(hd, gc) - split_dir_whatsit=nil + adjust_badness(hd) + -- hd = process_dir_node(create_dir_whatsit_vbox(hd, gc), gc) + -- done in append_to_vpack callback + hd = create_dir_whatsit_vbox(hd, gc) + split_dir_whatsit=nil end - stop_time_measure('direction_vpack') + stop_time_measure 'direction_vpack' return to_node(hd) end ltjb.add_to_callback('vpack_filter', - dir_adjust_vpack, - 'ltj.direction', 10000) + dir_adjust_vpack, + 'ltj.direction', 10000) end do @@ -1049,16 +1037,16 @@ do return to_node(create_dir_whatsit_vbox(to_direct(h), gc)) end ltjb.add_to_callback('pre_output_filter', - dir_adjust_pre_output, - 'ltj.direction', 10000) + dir_adjust_pre_output, + 'ltj.direction', 10000) function luatexja.direction.remove_end_whatsit() local h=tex.lists.page_head if h and (not h.next) and - h.id==id_whatsit and h.subtype==sid_user and + h.id==id_whatsit and h.subtype==sid_user and h.user_id == DIR then - tex.lists.page_head = nil - node.free(h) + tex.lists.page_head = nil + node.free(h) end end end @@ -1074,7 +1062,7 @@ do if getid(b)==id_whatsit and getsubtype(b)==sid_user and getfield(b, 'user_id')==DIR then local ob = b; b = node_remove(b,b); setfield(db, 'head', b); - node_free(ob) + node_free(ob) end finalize_inner(b) local w = getfield(b, 'width') @@ -1105,7 +1093,7 @@ do db_tail = nn else setfield(db, 'head', nn) - db_head, db_tail = nn, nn + db_head, db_tail = nn, nn end end end @@ -1124,7 +1112,7 @@ do else finalize_inner(n) end - end + end end end local getbox = tex.getbox @@ -1141,11 +1129,5 @@ do finalize_inner(shipout_temp) setbox('global', "AtBeginShipoutBox", copy(getlist(shipout_temp))) setfield(shipout_temp, 'head',nil) - -- garbage collect - --local m = collectgarbage('count') - --if m>lua_mem_kb+20480 then - -- collectgarbage(); lua_mem_kb = collectgarbage('count') - --end - --print('Lua Memory Usage', lua_mem_kb) end end diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-inputbuf.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-inputbuf.lua index 0616f4e50c4..6423f8817a5 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-inputbuf.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-inputbuf.lua @@ -2,16 +2,16 @@ -- ltj-inputbuf.lua -- -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('charrange'); local ltjc = luatexja.charrange +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'charrange'; local ltjc = luatexja.charrange -require("unicode") +require "unicode" local utflen = utf.len local utfbyte = utf.byte local utfchar = utf.char local node_new = node.new local node_free = node.free -local id_glyph = node.id('glyph') +local id_glyph = node.id 'glyph' local getcatcode, getcount = tex.getcatcode, tex.getcount local ltjc_is_japanese_char_curlist = ltjc.is_japanese_char_curlist @@ -22,31 +22,30 @@ local time_line = 0 local start_time_measure, stop_time_measure = ltjb.start_time_measure, ltjb.stop_time_measure local function add_comment(buffer) - start_time_measure('inputbuf') + start_time_measure 'inputbuf' local i = utflen(buffer) while (i>0) and (getcatcode(utfbyte(buffer, i))==1 - or getcatcode(utfbyte(buffer, i))==2) do + or getcatcode(utfbyte(buffer, i))==2) do i=i-1 end if i>0 then local c = utfbyte(buffer, i) if c>=0x80 then - local te = tex.endlinechar - -- Is the catcode of endline character is 5 (end-of-line)? - if (te ~= -1) and (getcatcode(te)==5) then - local ct = getcatcode(c) - if (ct==11) or (ct==12) then - local lec = getcount('ltjlineendcomment') + local te = tex.endlinechar + -- Is the catcode of endline character is 5 (end-of-line)? + if (te ~= -1) and (getcatcode(te)==5) then + local ct = getcatcode(c) + if (ct==11) or (ct==12) then + local lec = getcount 'ltjlineendcomment' -- Is the catcode of \ltjlineendcomment (new comment char) is 14 (comment)? - if ltjc_is_japanese_char_curlist(c) and (getcatcode(lec)==14) then - stop_time_measure('inputbuf') - return buffer .. utfchar(lec) + if ltjc_is_japanese_char_curlist(c) and (getcatcode(lec)==14) then + stop_time_measure 'inputbuf'; return buffer .. utfchar(lec) end - end + end end end end - stop_time_measure('inputbuf') + stop_time_measure 'inputbuf' return buffer end diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua index 424b1ef472d..4ed4e5a512d 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua @@ -1,5 +1,6 @@ +local f = false return { -version = 2, +version = 3, table_ivd_aj1 = { -- # IVD_Sequences -- # @@ -36,23061 +37,2310 @@ table_ivd_aj1 = { -- # For terms of use, see: http://www.unicode.org/terms_of_use.html -- # -- # EOF - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 2117341, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 2117276, - 2118934, - 2120195, - 2135615, - 2118848, - 2122011, - 2122536, - 2120182, - 2134050, - 2131061, - 2130716, - 2128464, - 2121898, - 2122721, - 2125349, - 2123245, - 2131046, - 2130598, - 2137077, - 2123923, - 2119463, - 2123169, - 2122353, - 2120603, - 2120144, - 2131579, - 2136308, - 2129250, - 2129342, - 2136974, - 2122262, - 2129055, - 2132151, - 2120585, - 2121397, - 2122505, - 2123415, - 2123848, - 2135495, - 2135949, - 2123599, - 2117349, - 2117386, - 2117453, - 2117533, - 2117705, - 2119410, - 2119991, - 2120148, - 2120193, - 2120713, - 2121951, - 2121999, - 2122096, - 2123283, - 2124037, - 2126010, - 2127183, - 2127216, - 2128379, - 2129325, - 2129391, - 2130115, - 2130958, - 2132067, - 2132738, - 2134101, - 2134138, - 2118459, - 2117269, - 2117285, - 2119647, - 2130098, - 2134209, - 2128111, - 2117120, - 2119921, - 2125474, - 2134072, - 2128434, - 2130728, - 2130571, - 2137135, - 2117953, - 2118512, - 2118845, - 2118881, - 2119392, - 2120187, - 2121493, - 2136306, - 2125291, - 2130148, - 2131245, - 2135650, - 2135664, - 2135712, - 2136059, - 2118667, - 2118643, - 2120583, - 2126031, - 4227005, - 2133954, - 2135784, - 2118511, - 2137436, - 2128570, - 2117137, - 2128019, - 2130428, - 2125350, - 2119192, - 2118916, - 2124573, - 2131226, - 2137147, - 2120165, - 2118569, - 2125158, - 2127068, - 2135439, - 2119234, - 2117265, - 2134091, - 2135794, - 2130767, - 2136332, - 2118625, - 2119094, - 2120496, - 2121585, - 2123296, - 2123507, - 2123780, - 2124856, - 2125043, - 2125097, - 2126939, - 2127560, - 2128462, - 2136116, - 2130673, - 2132059, - 2132576, - 2134765, - 2125234, - 2127275, - 2127562, - 2136517, - 2121894, - 4229889, - 2133386, - 2135474, - 2124174, - 2118573, - 2118022, - 2119442, - 2119728, - 2120004, - 2120628, - 2121462, - 2121768, - 2122665, - 2122740, - 4222143, - 2125588, - 2125966, - 2126100, - 2126169, - 2126293, - 2126655, - 2129409, - 2130550, - 2130641, - 2131351, - 2134112, - 2134619, - 2137371, - 2119785, - 2123196, - 2124890, - 2127141, - 2118137, - 2119982, - 2120037, - 2121600, - 2121692, - 2122428, - 2123258, - 2124330, - 2124583, - 2124724, - 2126731, - 2129857, - 2132310, - 2137388, - 2137358, - 2137796, - 2120865, - 2124950, - 2130811, - 2117892, - 2120779, - 2122166, - 2130374, - 2123894, - 2126433, - 2117209, - 2117626, - 2118520, - 2121833, - 2125353, - 2128463, - 2136051, - 2117131, - 2118422, - 2117358, - 2117461, - 2117437, - 2117537, - 2117491, - 2118304, - 2118639, - 2119177, - 2119951, - 2120385, - 2120630, - 2120673, - 2128337, - 2123399, - 2123676, - 2123702, - 2124620, - 2124979, - 2125931, - 2126786, - 4225421, - 2128318, - 2128444, - 2128775, - 2130609, - 2130651, - 2130692, - 2130807, - 2130927, - 2130899, - 2131814, - 2132658, - 2119209, - 2133160, - 2133990, - 2134094, - 2135838, - 2131594, - 2117572, - 2120936, - 2122257, - 2126425, - 2127163, - 2130405, - 4227773, - 2131710, - 2133184, - 2135749, - 2136339, - 2136533, - 2117323, - 2117402, - 2132451, - 2119390, - 2119754, - 2119882, - 2121467, - 2121707, - 2121770, - 4219028, - 2121826, - 2122192, - 2122258, - 2122448, - 2123065, - 2136897, - 2123366, - 2123952, - 4222327, - 2125936, - 2127180, - 2127494, - 2129269, - 2130597, - 2131961, - 2135435, - 2135694, - 2133149, - 2118129, - 2118334, - 2119958, - 2118835, - 2120627, - 2120982, - 2122088, - 2124162, - 2125231, - 2128013, - 2131147, - 2132055, - 2132594, - 2134951, - 2136760, - 2125164, - 2136488, - 2131673, - 2119587, - 2123775, - 2131662, - 2134542, - 2118275, - 2119303, - 2118660, - 2121427, - 2122465, - 2122937, - 2123836, - 2123832, - 2124731, - 2126706, - 2128058, - 2128491, - 2132378, - 4229586, - 2133355, - 2133763, - 2134253, - 2135459, - 2135700, - 2135913, - 2120550, - 2120883, - 2124157, - 2136141, - 2136142, - 2122651, - 2128672, - 2124331, - 2124415, - 2123958, - 2137101, - 2125663, - 4215410, - 2119069, - 2121840, - 2122476, - 2125115, - 2125319, - 2125521, - 2131035, - 2132240, - 2133828, - 2117140, - 2137145, - 2118646, - 2124059, - 2124346, - 2135940, - 2123818, - 2117980, - 2128579, - 2131122, - 2134492, - 2134924, - 2119259, - 2137384, - 2123810, - 2130693, - 2130993, - 2129061, - 2118152, - 2130629, - 2127078, - 2117246, - 2117507, - 2118048, - 2120658, - 2118154, - 2118360, - 2118375, - 2121211, - 2119066, - 2119722, - 2120166, - 2120588, - 2120600, - 2120667, - 2121330, - 2121337, - 2121891, - 2122015, - 2122083, - 2122174, - 2122715, - 2123106, - 2123729, - 2123859, - 2124026, - 2124606, - 2124627, - 2124887, - 2125602, - 2125719, - 2125637, - 2127024, - 2127128, - 2127587, - 2127627, - 2128639, - 2128801, - 2128929, - 2129385, - 2129718, - 2129904, - 2130077, - 2130534, - 2130846, - 2132403, - 2132684, - 2133163, - 2134148, - 2135121, - 2135443, - 2135441, - 2135458, - 2135653, - 2136019, - 2136360, - 2130456, - 2117176, - 2118699, - 2120888, - 2121164, - 2126761, - 2127436, - 2127676, - 2120873, - 2129899, - 2133259, - 2135745, - 2136081, - 2136148, - 2136152, - 2117377, - 2117390, - 2118513, - 2119068, - 2119272, - 2119674, - 2120007, - 2120457, - 2120644, - 2120848, - 2121228, - 2121342, - 2121676, - 2122734, - 2123578, - 2123223, - 4220386, - 2123551, - 2123979, - 2123972, - 2124383, - 2121264, - 2124741, - 2124823, - 2124925, - 2127231, - 4225352, - 2120547, - 2128384, - 2129152, - 2121661, - 2132367, - 2132504, - 2133172, - 2133367, - 2133708, - 2133789, - 2136290, - 2136590, - 2136892, - 2117248, - 2117757, - 2117888, - 2120083, - 2120604, - 2122287, - 2122368, - 2122988, - 2124602, - 2126496, - 2127249, - 2128199, - 2129833, - 2131963, - 2132668, - 2132848, - 2122668, - 2130890, - 2135968, - 2118665, - 2118659, - 2119083, - 2123860, - 2124376, - 2132592, - 2127911, - 2123637, - 2137805, - 2118516, - 2120610, - 2130202, - 2131536, - 2134022, - 2117144, - 2117189, - 2117319, - 2117393, - 2118602, - 2118712, - 2120622, - 2121491, - 2121765, - 2123089, - 2123581, - 2124866, - 2124914, - 2125027, - 2125944, - 2126851, - 2128502, - 2128558, - 2128648, - 2129178, - 2129150, - 2129254, - 2123239, - 2126427, - 2118587, - 2120773, - 2121192, - 2122450, - 2122464, - 2122521, - 2125344, - 2131546, - 2132529, - 2133469, - 2134776, - 2125569, - 2128294, - 2136922, - 2117288, - 2117291, - 2117292, - 2117531, - 2117536, - 2117841, - 2117959, - 2128630, - 2118001, - 2118134, - 2118484, - 2118433, - 4215679, - 2118635, - 2119084, - 2119811, - 2120929, - 2121527, - 2121546, - 2121775, - 2121808, - 2121837, - 2122527, - 2123097, - 2124363, - 2124993, - 2126530, - 2126573, - 2127855, - 2130168, - 2130181, - 2130440, - 2131278, - 2134263, - 2135009, - 2136063, - 2136407, - 2136666, - 2117360, - 2118109, - 2120749, - 2123393, - 2124141, - 2120768, - 2123506, - 2124149, - 2126729, - 2123856, - 2129025, - 2117829, - 2118372, - 2119495, - 2121214, - 2134822, - 2123172, - 2124579, - 2124605, - 2126900, - 2128257, - 2128317, - 2128715, - 2129354, - 2130617, - 2130892, - 2132095, - 2132319, - 4229945, - 2133969, - 2134481, - 2118687, - 2134656, - 2117213, - 2117686, - 2118629, - 2118458, - 2126551, - 2126742, - 2127849, - 2130662, - 2133679, - 2136518, - 2136520, - 2136530, - 2118007, - 2122010, - 2131550, - 2119088, - 2128506, - 2117750, - 2120659, - 2134087, - 2135685, - 2117170, - 4221659, - 2134503, - 2120785, - 2120776, - 2122648, - 2128543, - 2124947, - 2135924, - 2133857, - 2128554, - 2126218, - 2135688, - 2129026, - 2123799, - 2129520, - 2123857, - 2134892, - 2118386, - 2118683, - 2131371, - 2132499, - 2129828, - 2133709, - 2134241, - 2118502, - 2132104, - 2128193, - 2117570, - 2117822, - 2118161, - 2117956, - 2118995, - 2119469, - 2126826, - 2119563, - 2120017, - 2121570, - 2121604, - 2121845, - 2122102, - 2122087, - 2122153, - 2122674, - 2122810, - 2123116, - 2123375, - 2123842, - 2125331, - 2127206, - 2128445, - 2129147, - 2129228, - 2129305, - 2129483, - 2129771, - 2130702, - 2130762, - 2131661, - 2132488, - 2132579, - 2132838, - 2133757, - 2136090, - 2137487, - 2130616, - 2133966, - 2137064, - 2118279, - 2122271, - 2122883, - 2125760, - 2135705, - 2123841, - 2117777, - 2124576, - 2124922, - 2125652, - 2128500, - 2129232, - 2132032, - 2132515, - 2123528, - 2117366, - 2117689, - 2117670, - 2117733, - 2118012, - 2118200, - 2118243, - 2119079, - 2119439, - 2119685, - 2120396, - 2121466, - 2122162, - 2122232, - 2122483, - 2122610, - 2124060, - 2124329, - 2126461, - 2126508, - 2126638, - 2127892, - 2127983, - 2129273, - 2127628, - 2130089, - 2132363, - 2132761, - 2133218, - 2133714, - 2134115, - 2134901, - 2135674, - 2136149, - 2136595, - 2137720, - 2117955, - 2118559, - 2118579, - 2121339, - 2121510, - 2125339, - 2125456, - 2126724, - 2126846, - 2129219, - 2130487, - 2132480, - 2132730, - 2135632, - 2117198, - 2117643, - 2118628, - 2118780, - 2119418, - 2120145, - 2120548, - 2121201, - 2121387, - 2121511, - 2122296, - 2123077, - 2123695, - 2125398, - 2126544, - 2129098, - 2132148, - 2130081, - 2130145, - 2130928, - 2131534, - 2132615, - 2133480, - 2134583, - 2135751, - 2136167, - 2137875, - 2117268, - 2117266, - 2117389, - 2118472, - 2118729, - 2118718, - 2120239, - 2121612, - 2121633, - 2121887, - 2123943, - 2124430, - 2126938, - 2128001, - 2132638, - 2132644, - 2132855, - 2134416, - 2117214, - 2137033, - 2117284, - 2117500, - 2117551, - 2117657, - 2117654, - 2117961, - 2117996, - 2118303, - 2118329, - 2118398, - 2118554, - 2118627, - 2118673, - 2118670, - 2119049, - 2119505, - 2119586, - 2120061, - 2120532, - 2120541, - 2120591, - 2121189, - 2121191, - 2121207, - 2121336, - 2121347, - 2121370, - 2121399, - 2121496, - 2121810, - 2122060, - 2122391, - 2122456, - 2122663, - 2123067, - 2123266, - 2123331, - 2123508, - 2123629, - 2123809, - 2123927, - 2124235, - 2124895, - 2125098, - 2125161, - 2125359, - 2125469, - 2127154, - 2127495, - 2127980, - 2128447, - 2129120, - 2129157, - 2129176, - 2129246, - 2129329, - 2129941, - 2129923, - 2130095, - 2130097, - 2130260, - 2130319, - 2130474, - 2130770, - 2132044, - 2132065, - 2132763, - 2133154, - 2133244, - 2134218, - 2134389, - 2134641, - 2127935, - 2134780, - 2135460, - 2135629, - 2136069, - 2136473, - 2136792, - 2137403, - 2118235, - 2118315, - 2118647, - 2118664, - 2119893, - 2122487, - 2125792, - 2133098, - 2133855, - 2137785, - 2117963, - 2118203, - 2118730, - 2119421, - 4225600, - 2134391, - 2137440, - 2137810, - 2126660, - 2125577, - 2130288, - 2127121, - 2121725, - 2121946, - 2136744, - 2126555, - 2133948, - 2124644, - 2136067, - 2117322, - 2119408, - 2119524, - 2119870, - 2120282, - 2121832, - 2122183, - 2123279, - 2123270, - 2123833, - 2123953, - 2125303, - 2127317, - 2129210, - 2130542, - 2136898, - 2117275, - 2117456, - 2118601, - 2118918, - 2121071, - 2121190, - 2121198, - 2123771, - 2124953, - 2126963, - 2127874, - 2132560, - 2134934, - 2132191, - 2119504, - 2121383, - 2122539, - 2117813, - 2117804, - 4215181, - 2123520, - 2118857, - 2119774, - 2120123, - 2120624, - 2121577, - 2122317, - 2122657, - 2123837, - 2124659, - 2125320, - 2125949, - 2134471, - 2126464, - 2127893, - 2127910, - 2128237, - 2123150, - 2129200, - 2130908, - 2132161, - 2133769, - 2135707, - 2118244, - 2119464, - 2123600, - 2129770, - 2133153, - 2118068, - 2119490, - 2135594, - 2119738, - 2124170, - 2130100, - 2118834, - 2120974, - 2119676, - 2128021, - 2137594, - 2117468, - 2118218, - 2118795, - 2122814, - 2123304, - 2123540, - 2123765, - 2128516, - 2128726, - 2129186, - 2134831, - 2123868, - 2137005, - 2128697, - 2118425, - 2118026, - 2118199, - 2120671, - 2122486, - 2122926, - 2122982, - 2123565, - 4221882, - 2131369, - 2135761, - 2127504, - 2137046, - 2122572, - 2134790, - 2137003, - 2127551, - 2123346, - 2117129, - 2117784, - 2118594, - 2120817, - 2121960, - 2122898, - 2123107, - 2123871, - 2126310, - 2126794, - 2127139, - 2128791, - 2129538, - 2131605, - 2132867, - 2133211, - 2134392, - 2136336, - 2123180, - 2123435, - 2124683, - 2117333, - 2117332, - 2117434, - 2117503, - 2118202, - 2118648, - 2118642, - 2119139, - 2119387, - 2119915, - 2120139, - 2120137, - 2120191, - 2120528, - 2120781, - 2121218, - 2121259, - 2121687, - 2121757, - 2122503, - 2123055, - 2120540, - 2123183, - 2123197, - 2123240, - 2123677, - 2124642, - 2124667, - 2124815, - 2126661, - 2128201, - 2128321, - 2129144, - 2129177, - 2129195, - 2130082, - 2130178, - 2130419, - 2132374, - 2132574, - 2132585, - 2132582, - 2132620, - 2132718, - 2133191, - 2133212, - 2135756, - 2136316, - 2124655, - 2117259, - 2117436, - 2117517, - 2117968, - 2120535, - 2120698, - 2122056, - 2122497, - 2123330, - 2124577, - 2125515, - 2124987, - 2126398, - 2127037, - 2127316, - 2128065, - 4225338, - 2129932, - 2129971, - 2130410, - 2131092, - 2133918, - 2124880, - 2137727, - 2121487, - 2132824, - 2137387, - 2128634, - 2133752, - 2120589, - 2135787, - 2117123, - 2118641, - 2119671, - 2119985, - 2120393, - 2120612, - 2121865, - 2125439, - 2125574, - 2127294, - 2133226, - 2120607, - 2131200, - 2128864, - 2117746, - 2123764, - 2130589, - 2120801, - 2131274, - 2129438, - 2130446, - 2118041, - 2120708, - 2122600, - 2133350, - 2123164, - 4223342, - 2128190, - 2129175, - 2129925, - 2132765, - 2133706, - 2134126, - 2131655, - 2134186, - 2117663, - 4215546, - 2120762, - 2123603, - 2125948, - 4223541, - 2134348, - 2134472, - 2134827, - 2130661, - 2120642, - 2121521, - 2121977, - 2117179, - 2118614, - 2120584, - 2122315, - 2123569, - 2124682, - 2126569, - 2126816, - 2128430, - 2130283, - 2133411, - 2134354, - 2136470, - 2117906, - 2118615, - 2118762, - 2120703, - 2122632, - 2124345, - 2129324, - 2135808, - 2119386, - 2118606, - 4215912, - 2120599, - 2120753, - 2121182, - 2117614, - 2121985, - 2122494, - 2125106, - 2128320, - 2128331, - 2129218, - 2129485, - 2129874, - 2130413, - 2130463, - 2131088, - 2132038, - 2132338, - 2132880, - 2133620, - 2133807, - 2134065, - 2134347, - 2134380, - 2135750, - 2134428, - 2117312, - 2117455, - 2117957, - 2118465, - 2121619, - 2122254, - 2123732, - 2124865, - 2125323, - 2126691, - 2129446, - 2134477, - 2134659, - 2118612, - 2119961, - 2120639, - 2125265, - 4225373, - 2129454, - 2129051, - 2119806, - 2126239, - 2118138, - 2132051, - 2134000, - 2117578, - 2120955, - 2123301, - 2127788, - 2128611, - 2130460, - 2136575, - 2118086, - 2121642, - 2123244, - 2124143, - 2124681, - 2125299, - 2125462, - 2125668, - 2127614, - 2129172, - 2121185, - 2134133, - 2134407, - 2136070, - 2118118, - 2118173, - 2122304, - 2123409, - 2123481, - 4222490, - 2121398, - 2129362, - 4226930, - 2123512, - 2131375, - 2131447, - 4229880, - 2118313, - 2118617, - 2120051, - 2121359, - 2121616, - 2121813, - 2134756, - 2135652, - 2117815, - 2117919, - 2118365, - 2118432, - 2118471, - 2118636, - 2118888, - 2118982, - 2118961, - 2119191, - 2120040, - 2120126, - 2120252, - 2120629, - 4217862, - 2120719, - 2120721, - 2120730, - 2121348, - 2121354, - 2121440, - 2121584, - 2122367, - 2122372, - 2122459, - 2122636, - 2122615, - 2123271, - 2123276, - 2123309, - 2123382, - 2123646, - 2123938, - 2124319, - 2124341, - 2124988, - 2125192, - 2125321, - 2125400, - 2126140, - 2126118, - 2126183, - 2127303, - 2127617, - 2127965, - 2128129, - 4225381, - 2128368, - 2128608, - 2128657, - 2129063, - 2129209, - 2130070, - 2130902, - 2131083, - 2131273, - 2132061, - 2132211, - 2132511, - 2132540, - 2132564, - 2132595, - 2133089, - 2133214, - 2134436, - 2134630, - 2134910, - 2135064, - 2135708, - 2135960, - 2117130, - 2117128, - 2117150, - 2117207, - 2118039, - 2118256, - 4216782, - 2119732, - 2119884, - 2120482, - 2121272, - 2121925, - 2123006, - 2123617, - 2123606, - 2125124, - 2126518, - 2127219, - 2128483, - 2131128, - 2132850, - 2134456, - 2134816, - 2119217, - 2119668, - 2136318, - 2122477, - 2124045, - 2124694, - 2126317, - 2129492, - 2130039, - 2130546, - 2132454, - 2136287, - 2131797, - 2133937, - 2120763, - 2117432, - 2117601, - 2117557, - 2118919, - 2120224, - 2120669, - 2120681, - 2121667, - 2122062, - 2122543, - 2123184, - 2123339, - 2124014, - 2124187, - 2125176, - 2125297, - 2127155, - 2127289, - 2127647, - 4225374, - 2128358, - 2129203, - 2130403, - 2130607, - 2131370, - 2132394, - 2132538, - 2133675, - 2133915, - 2134066, - 2134493, - 2135815, - 2117306, - 2117313, - 2118147, - 2119797, - 2119916, - 2120715, - 2127130, - 2120765, - 2130254, - 2132490, - 2133957, - 2135651, - 2135917, - 2128677, - 2132687, - 2136072, - 2134370, - 2119411, - 2118568, - 2134039, - 2118713, - 2119554, - 2121253, - 2122664, - 2124852, - 2125962, - 2127713, - 2129035, - 2129888, - 2132080, - 2134082, - 2134356, - 2134800, - 2134808, - 2135695, - 2126942, - 2136772, - 2120967, - 2121065, - 2123120, - 2123682, - 2133416, - 2135771, - 2122606, - 2123593, - 2124057, - 2130885, - 2136087, - 2135744, - 2132222, - 2125700, - 2122874, - 2120696, - 2117142, - 2125868, - 2127197, - 2123311, - 2118084, - 2118198, - 2118370, - 2120147, - 2121601, - 2121767, - 2122256, - 2123071, - 2123124, - 2123295, - 4220532, - 2124018, - 2123798, - 2124643, - 2125317, - 2126450, - 2127135, - 2127579, - 4226238, - 2130006, - 2119920, - 2132221, - 2132351, - 2132640, - 2132627, - 2132683, - 2134045, - 2134418, - 2135890, - 2135897, - 2123145, - 2128398, - 2130182, - 2135739, - 2121261, - 2121948, - 2122266, - 2123173, - 2123284, - 2123664, - 2127859, - 2128461, - 2128973, - 2129470, - 2130186, - 2133164, - 2133348, - 2133473, - 2133599, - 2128041, - 2118151, - 2122457, - 2122661, - 2122818, - 2122392, - 2132525, - 2128515, - 2128832, - 2132652, - 2135786, - 2129270, - 2130444, - 2131785, - 2117337, - 2117960, - 2118467, - 2118496, - 2120611, - 2120706, - 2120726, - 2121181, - 2122278, - 2122311, - 2122928, - 2123795, - 2123828, - 2125001, - 2125125, - 2125079, - 2123731, - 2125660, - 2126158, - 2126205, - 2123211, - 2128511, - 2128813, - 2129370, - 2129482, - 2129832, - 2130298, - 2130459, - 2130489, - 2131366, - 2132590, - 2133198, - 2133493, - 2134136, - 2134135, - 2134701, - 2134673, - 2135427, - 2137006, - 2118221, - 2119044, - 2125624, - 2126134, - 2117992, - 2128261, - 2129493, - 2130355, - 2129102, - 2119244, - 2119761, - 2120872, - 2122666, - 2123518, - 2123517, - 2124122, - 2126553, - 2127247, - 2127246, - 2128142, - 2128214, - 2128351, - 2129047, - 2129184, - 2129220, - 2131463, - 2132532, - 2135611, - 2134113, - 2137888, - 2117863, - 2118261, - 2118604, - 2118626, - 2117641, - 2119082, - 2119918, - 2120015, - 2126397, - 2120587, - 2120804, - 2118429, - 2121955, - 2121971, - 2122588, - 2122627, - 2122559, - 2122683, - 2122957, - 2123241, - 2123513, - 2121187, - 2124237, - 2124285, - 2125589, - 2126309, - 2117257, - 2127337, - 2127608, - 2128531, - 2129119, - 2129359, - 2129308, - 2130017, - 2130761, - 2130776, - 2131052, - 2131132, - 2131451, - 2132165, - 2133360, - 2134017, - 2134125, - 2134935, - 2135836, - 2136594, - 2117839, - 2119831, - 4219278, - 2130387, - 2131253, - 2133256, - 2134048, - 2117571, - 2117748, - 2118215, - 2118515, - 2121839, - 2122569, - 2123615, - 2125356, - 2133427, - 2134047, - 2117591, - 2120798, - 2133194, - 2123215, - 2129306, - 2118482, - 2132118, - 2118006, - 2122691, - 2120536, - 2120555, - 2120714, - 2122765, - 2123601, - 2134108, - 2117334, - 2119962, - 2119978, - 2124912, - 2132561, - 2118974, - 2119701, - 2120101, - 2121968, - 2122323, - 2123713, - 2130485, - 2124117, - 2135616, - 2136516, - 2136616, - 2117459, - 2119686, - 2120702, - 2129936, - 2120881, - 2121263, - 2121605, - 2121760, - 2122059, - 2122292, - 2123519, - 2125040, - 2125534, - 2130126, - 2130303, - 2130644, - 2132107, - 2133176, - 2134016, - 2134062, - 2135690, - 2137819, - 2137051, - 2117347, - 2118640, - 2119975, - 2128684, - 2134413, - 2136140, - 2137593, - 2125533, - 2125863, - 2118483, - 2118980, - 2120581, - 2122328, - 2122398, - 2122451, - 2124962, - 2125807, - 4224034, - 2132503, - 2135096, - 2125761, - 2132734, - 2130744, - 2118119, - 2131704, - 2118634, - 2118633, - 2117446, - 2134100, - 2133936, - 2120042, - 2130225, - 4218365, - 2128618, - 2133951, - 2123994, - 2133047, - 2126584, - 2137160, - 2124349, - 2132656, - 2117177, - 2118488, - 4216326, - 2119526, - 2122437, - 2122658, - 2123238, - 2124622, - 2125281, - 2125403, - 2125997, - 2127853, - 2128623, - 2128810, - 2129339, - 2129981, - 2130118, - 2131659, - 2132629, - 2134875, - 2119395, - 2119879, - 2121534, - 2123181, - 2123414, - 2124416, - 2124725, - 2127159, - 2132679, - 2117668, - 2127845, - 2119472, - 2121499, - 2121829, - 2123386, - 2124896, - 2127348, - 2128410, - 2129774, - 2130420, - 2131736, - 2134085, - 2136499, - 2128841, - 2127196, - 2128633, - 2128721, - 2131140, - 2134032, - 2128361, - 2128530, - 2130742, - 2120417, - 2127680, - 2117165, - 2117362, - 2120601, - 2121696, - 2122429, - 2123324, - 2123761, - 2125032, - 2131563, - 2132087, - 2132539, - 2134350, - 2134771, - 2136528, - 2124311, - 2125862, - 4223786, - 2130663, - 2131031, - 2133167, - 2117121, - 2117958, - 2118091, - 2119051, - 2120693, - 2121238, - 2121267, - 2121345, - 2121492, - 2121525, - 2121579, - 2121652, - 2122226, - 2122513, - 2123426, - 2123549, - 4222830, - 2126418, - 2127162, - 2127674, - 2130036, - 2130233, - 2130296, - 2131830, - 2132671, - 2132700, - 2133381, - 2133491, - 2134682, - 2135415, - 2136066, - 2137317, - 2118341, - 2122583, - 2127604, - 2123541, - 2124936, - 2126797, - 2133187, - 2134958, - 2135667, - 2125093, - 2119836, - 2124046, - 2124236, - 2134013, - 2134938, - 2127323, - 2134042, - 2119770, - 2123778, - 2122676, - 2124283, - 2117443, - 2125612, - 2123736, - 2133947, - 2131238, - 2129332, - 2134868, - 2124095, - 2125680, - 2119530, - 2119927, - 2120492, - 2129196, - 2126378, - 2118666, - 2134499, - 4234676, - 2117293, - 2117454, - 2117724, - 2117749, - 2118211, - 2133150, - 2118728, - 2119716, - 2120602, - 2121245, - 2121365, - 2121389, - 2121463, - 2121503, - 2121868, - 2122421, - 2122554, - 2122704, - 2123951, - 2124864, - 2128007, - 2128270, - 2128395, - 2129376, - 2130503, - 2132482, - 2132710, - 2133572, - 2134035, - 2134200, - 2134317, - 2134488, - 2137870, - 2125029, - 2122840, - 2122978, - 2123125, - 2125556, - 2127492, - 2128667, - 2134121, - 2134993, - 2125498, - 2118898, - 2121657, - 2122916, - 2133837, - 2133997, - 2134596, - 2118008, - 2119787, - 2119977, - 2120789, - 2121367, - 2125307, - 2129551, - 2127132, - 2133180, - 2133730, - 2136155, - 2126009, - 2117405, - 2124735, - 2125745, - 2127152, - 2135803, - 2117966, - 2118672, - 2119733, - 2119767, - 2120108, - 2120800, - 2121618, - 2123159, - 2123612, - 2125345, - 2127483, - 2130911, - 2133229, - 2134036, - 4231421, - 2134861, - 2127909, - 2127930, - 2118314, - 2121382, - 2119455, - 2120052, - 2121746, - 2117650, - 2117978, - 4215212, - 2118093, - 2118144, - 2118928, - 2119764, - 2119768, - 2120023, - 2120597, - 2120950, - 2121099, - 2121916, - 2122389, - 2122797, - 2123633, - 2123843, - 2123964, - 2123999, - 2127575, - 2125272, - 2125423, - 2125211, - 2125935, - 2126280, - 2121555, - 2127320, - 2128247, - 2128713, - 2128724, - 2128722, - 4226262, - 2129265, - 2118192, - 2131043, - 2131305, - 2131428, - 2132494, - 2132740, - 2133062, - 2133519, - 2134019, - 2134031, - 2135065, - 2135670, - 2136109, - 2136624, - 2135512, - 2117837, - 2118357, - 2118668, - 2119682, - 2120718, - 2122151, - 2122910, - 2125086, - 2127795, - 2128613, - 2130164, - 2130948, - 2134099, - 2134661, - 2120928, - 2137351, - 2118463, - 2121623, - 2121651, - 2125212, - 2126457, - 2127715, - 2128319, - 2128868, - 2124754, - 2126572, - 2132653, - 2123779, - 2124385, - 2118136, - 2128513, - 2124084, - 2120778, - 2137334, - 2130667, - 2120645, - 2134345, - 2125854, - 2119288, - 2120815, - 2121927, - 2123110, - 2124940, - 2133082, - 2134081, - 2136083, - 2118737, - 2123463, - 2134541, - 2120008, - 2134179, - 2118021, - 2117197, - 2118122, - 2131353, - 2132750, - 2125912, - 2122618, - 2134859, - 2124130, - 2136500, - 2129412, - 2127223, - 2118487, - 2124128, - 2133727, - 4232931, - 2124893, - 2117260, - 2120764, - 2121488, - 2133993, - 2118402, - 2133201, - 2130057, - 2131577, - 2121471, - 2123237, - 2117235, - 2117989, - 2120066, - 2120767, - 2136046, - 2117371, - 2120074, - 2121677, - 2132621, - 2125793, - 2128304, - 2128226, - 4217831, - 2131057, - 2126635, - 2126257, - 2121332, - 2121717, - 2122619, - 2122906, - 2126275, - 2129048, - 2117187, - 2121468, - 2117195, - 2119644, - 2119330, - 2121897, - 2125763, - 2129165, - 2130173, - 2130227, - 2130367, - 2133938, - 2132375, - 2131620, - 2121204, - 2122378, - 2122925, - 2132359, - 2123639, - 2125026, - 2125118, - 2126902, - 2127924, - 2120262, - 2129781, - 2130605, - 2136492, - 2117619, - 2121411, - 2122461, - 2122642, - 2123095, - 2123631, - 2127555, - 2126412, - 2130124, - 2130106, - 2133801, - 2134349, - 2117645, - 2119673, - 2120338, - 4221061, - 2124147, - 2126180, - 2126589, - 2133175, - 2119922, - 2133216, - 2135658, - 2134041, - 2131839, - 2128356, - 2127847, - 2130985, - 2117423, - 2118245, - 2118490, - 2122445, - 2123727, - 2125002, - 2127485, - 2128788, - 2129045, - 2130486, - 2131332, - 2133995, - 2123485, - 2125600, - 2126342, - 2129435, - 2130859, - 2136513, - 2137766, - 2118141, - 2128817, - 2127986, - 2128824, - 2130055, - 2128712, - 2124520, - 2121313, - 2130060, - 2127185, - 2127200, - 2117995, - 2134626, - 2125452, - 2127482, - 2134423, - 2136810, - 2117392, - 2129776, - 2122396, - 2128719, - 2135461, - 2137321, - 2119290, - 2119769, - 2131684, - 2135740, - 2117428, - 2118180, - 2118474, - 2118605, - 2118619, - 2121222, - 2122796, - 2123153, - 2123647, - 2124862, - 2124878, - 2126408, - 2126511, - 2126829, - 2127188, - 2129473, - 2130476, - 2131433, - 2133161, - 2128836, - 2134470, - 2126185, - 2136082, - 4233455, - 2122557, - 2123369, - 2127210, - 2127588, - 2128080, - 2131267, - 2131694, - 2118442, - 4215633, - 2118694, - 2120067, - 2121351, - 2121596, - 2121906, - 2122313, - 2122361, - 2122411, - 2123152, - 2124756, - 2125004, - 2127282, - 2127534, - 4225169, - 2128344, - 2129355, - 2129783, - 2130085, - 2132139, - 2132665, - 2133179, - 2134143, - 2135902, - 2136283, - 2124299, - 2128952, - 2117785, - 2120766, - 2121646, - 2123655, - 2124760, - 2126901, - 2127625, - 2129806, - 2137915, - 2123722, - 2128407, - 2118457, - 2127243, - 2136813, - 2121574, - 2130333, - 2130929, - 2130072, - 2121532, - 2121669, - 2127202, - 2128710, - 2134076, - 2123879, - 2120171, - 2120347, - 2129168, - 2127486, - 2132780, - 2117621, - 2121578, - 2124313, - 2124855, - 2125570, - 2127074, - 2128232, - 2132072, - 2132565, - 2133113, - 2121439, - 2122703, - 2127301, - 2128338, - 2130647, - 2134824, - 2134770, - 2131100, - 2131693, - 2137133, - 2118849, - 2121580, - 2123148, - 2125148, - 2125845, - 2133159, - 4230355, - 4233275, - 4220239, - 2127094, - 2117133, - 2117336, - 2119648, - 2119979, - 2120294, - 2120652, - 2118056, - 2121219, - 2121372, - 2121750, - 2122358, - 2123127, - 2123175, - 2123374, - 2125166, - 2126390, - 2128678, - 2130256, - 2130330, - 2130585, - 2132828, - 2133152, - 2133222, - 2133364, - 2135580, - 2135620, - 2117550, - 2122923, - 2124646, - 2130462, - 2131041, - 2131306, - 2134248, - 2120705, - 2124115, - 2136232, - 2131066, - 2131287, - 2117391, - 2118255, - 2121641, - 2121285, - 2123533, - 2128271, - 2130297, - 2132231, - 2132358, - 2125301, - 2121495, - 2122325, - 2124984, - 2117327, - 2126441, - 2136978, - 2118150, - 2118715, - 2119284, - 2119859, - 2122148, - 2122350, - 2126106, - 2120046, - 2129033, - 2129118, - 2129179, - 2135792, - 2123143, - 2130014, - 2117145, - 2117493, - 2118005, - 2119744, - 2121315, - 2121331, - 2121482, - 2123716, - 2117158, - 2131261, - 2135433, - 2135643, - 2129011, - 2136065, - 2117883, - 2119873, - 2127446, - 2128039, - 2118181, - 2127781, - 2131217, - 2128774, - 2117711, - 2119945, - 2126407, - 2128839, - 2129384, - 2133946, - 2133972, - 2134093, - 2117567, - 4215497, - 2120233, - 2121473, - 2135981, - 2117597, - 2130455, - 2134762, - 2119427, - 2122581, - 2124649, - 2127147, - 2132188, - 2133780, - 2128450, - 2118367, - 2119827, - 2122069, - 2122250, - 2123438, - 2124749, - 2128959, - 2130921, - 2117667, - 2117624, - 2118405, - 2118726, - 2119729, - 2120009, - 2120605, - 2120944, - 2120943, - 2121001, - 2121366, - 2122417, - 2122599, - 2123070, - 2123193, - 2123531, - 2125013, - 2125025, - 2126073, - 2127922, - 2129451, - 2130142, - 2130611, - 2130956, - 2131180, - 2131714, - 2132242, - 2132522, - 2133066, - 2134182, - 2134738, - 2136317, - 2137331, - 2137452, - 2117199, - 2117281, - 2117773, - 2118230, - 2119498, - 2120104, - 2121277, - 2121688, - 2121689, - 2122303, - 2123444, - 2123547, - 2123728, - 2123986, - 2118034, - 2129185, - 2130090, - 2130344, - 2132736, - 2133132, - 2133183, - 2134654, - 2135602, - 2118688, - 2136108, - 2118423, - 2117845, - 2118492, - 4217000, - 2122930, - 2123572, - 2126439, - 2127718, - 2128454, - 2134502, - 2118339, - 2124961, - 2124678, - 2119680, - 2121292, - 2120020, - 2123564, - 2129915, - 2118113, - 2127558, - 2122857, - 2128104, - 2136916, - 2137787, - 2119627, - 2120121, - 2123303, - 2123674, - 2124750, - 2118889, - 2124249, - 2121301, - 2130332, - 2123669, - 2137002, - 2123774, - 2137170, - 2123869, - 2117286, - 2117603, - 2118600, - 2122425, - 2123563, - 2124971, - 2133956, - 2117549, - 2129517, - 2137791, - 2117127, - 2122082, - 2125440, - 2125611, - 2131219, - 2118771, - 2123562, - 2136901, - 2121203, - 2128789, - 2120876, - 2120646, - 2131740, - 2125386, - 2131153, - 2128404, - 2130184, - 2120089, - 2129037, - 2124817, - 2127648, - 2118361, - 2119970, - 2126113, - 2126431, - 2127835, - 2135847, - 2137441, - 2124043, - 2120319, - 2120216, - 2118053, - 2118669, - 2118781, - 2123278, - 2127583, - 2134007, - 2134680, - 2137332, - 2120170, - 2126429, - 2125509, - 2117965, - 2123977, - 2129343, - 2129388, - 2135906, - 2137786, - 2122872, - 2124321, - 2130690, - 2120068, - 2120543, - 2124763, - 2126619, - 2127602, - 2129330, - 2129943, - 2131097, - 2117938, - 2123560, - 2137817, - 2127598, - 2123618, - 2118399, - 2136325, - 2120740, - 2122299, - 2129022, - 2133168, - 2118991, - 2121910, - 2129163, - 2135424, - 2118401, - 2117215, - 2118070, - 2119964, - 2126394, - 2129974, - 2134478, - 2121509, - 2127842, - 2118532, - 2121593, - 2129156, - 2131372, - 2132531, - 2133645, - 2135894, - 2123763, - 2131374, - 2135123, - 2121993, - 2121992, - 2124985, - 2127442, - 4229869, - 2133816, - 2118959, - 2117457, - 2117930, - 2118343, - 2118603, - 2120613, - 2121341, - 2121888, - 2122114, - 2122710, - 2123529, - 2123738, - 2125415, - 2125196, - 2126646, - 2126647, - 2127153, - 4225360, - 2132181, - 2132632, - 2134090, - 2134161, - 2134261, - 2135748, - 2131853, - 2119957, - 2117256, - 2117465, - 2117134, - 2132617, - 2133823, - 2136080, - 2117805, - 2121340, - 2120086, - 2120633, - 2121400, - 2122714, - 2122746, - 2122945, - 2123484, - 2124106, - 2124248, - 2125067, - 2125494, - 2126228, - 2127144, - 2128559, - 4226954, - 2129920, - 2131017, - 2131145, - 2132353, - 2132769, - 2133514, - 2134117, - 2135677, - 2136330, - 2122110, - 2122385, - 2124594, - 2124931, - 2125172, - 2129868, - 2129916, - 2125248, - 2129797, - 2131898, - 2132216, - 2123621, - 2130865, - 2136124, - 2135799, - 2125083, - 2129249, - 2131005, - 2134378, - 2117233, - 2118517, - 2121040, - 4221700, - 2125803, - 2131405, - 2131501, - 2132391, - 2118185, - 2118671, - 2120805, - 2123598, - 2123944, - 2126854, - 2126979, - 2127330, - 2132175, - 2132193, - 2134476, - 2135778, - 2135672, - 2121611, - 2126727, - 2128587, - 2131022, - 2122656, - 2127205, - 2118281, - 2125121, - 2125468, - 2126857, - 2127193, - 2127979, - 2129042, - 2135686, - 2128604, - 2137997, - 2117558, - 2122094, - 2123205, - 4228700, - 2117254, - 2117294, - 2117850, - 2117153, - 2118092, - 2120686, - 2123161, - 2123905, - 2125244, - 2126623, - 2127426, - 2127789, - 2128412, - 2129127, - 2130543, - 2132690, - 2134140, - 2134479, - 2135669, - 2136088, - 2118299, - 2129361, - 2117675, - 2118552, - 2123671, - 2125259, - 2126288, - 2126899, - 2130408, - 2133802, - 2135715, - 2137175, - 2137759, - 2126944, - 2119745, - 2125209, - 2129199, - 4233310, - 2117348, - 2117430, - 2117515, - 2118071, - 2118321, - 2121146, - 2121756, - 2126770, - 2128188, - 2130643, - 2134580, - 2135735, - 2135798, - 2135818, - 2137751, - 2137954, - 2123430, - 2124660, - 2118167, - 2118307, - 2126024, - 2132162, - 4218569, - 2121803, - 2122128, - 4222755, - 4223305, - 2128958, - 4226548, - 2130031, - 4228334, - 4231203, - 2134828, - 2118722, - 2136943, - 2124499, - 2125961, - 2133186, - 2133487, - 2135858, - 2118324, - 2120257, - 2121418, - 2121476, - 4220695, - 2124156, - 2124180, - 2125162, - 2125583, - 2126434, - 2126588, - 2128877, - 2129921, - 2130046, - 2131787, - 2134222, - 2117997, - 2137747, - 2128260, - 2130059, - 2134834, - 2132694, - 2117677, - 2118796, - 2132593, - 2124650, - 2133188, - 2130183, - 2121937, - 2123680, - 2137586, - 2117273, - 2117272, - 2137104, - 2132587, - 2131393, - 2131304, - 2124032, - 2125438, - 2128023, - 2130261, - 2121484, - 2117136, - 2117141, - 2117162, - 2117169, - 2117174, - 2117180, - 2117183, - 2117186, - 2117206, - 2117208, - 2117250, - 2117253, - 2133099, - 2117258, - 2130450, - 2121485, - 2117262, - 2117278, - 2117279, - 2117280, - 2117282, - 2117296, - 2117299, - 2117302, - 2117326, - 2117325, - 2117316, - 2117318, - 2117314, - 2117335, - 2117342, - 2117357, - 2117343, - 2117367, - 2117385, - 2117466, - 2117424, - 2117467, - 2117469, - 2117463, - 2117447, - 2117494, - 2117512, - 2117519, - 2117528, - 2117499, - 2117481, - 2117488, - 2117521, - 2117487, - 2117510, - 2117526, - 2117912, - 2117588, - 2117599, - 2117582, - 2117592, - 2117595, - 2117585, - 2117594, - 2117584, - 2117604, - 2117605, - 2117658, - 2117672, - 2117652, - 2117674, - 2117669, - 2117637, - 2117404, - 2117622, - 2117665, - 2117673, - 2117676, - 2117630, - 2117615, - 2117649, - 2117638, - 2117699, - 2117703, - 2123523, - 2117717, - 2117712, - 2117704, - 2117722, - 2117718, - 2117740, - 2117752, - 2117760, - 2117786, - 2117765, - 2117812, - 2117810, - 2117833, - 2117834, - 2117811, - 2117826, - 2117846, - 2117854, - 2117861, - 2117869, - 2117859, - 2117870, - 2117881, - 2117877, - 2117897, - 2117889, - 2117890, - 2117910, - 2117909, - 2117908, - 2117914, - 2117921, - 2117946, - 2117943, - 2117948, - 2117947, - 2117951, - 2117952, - 2117970, - 2117964, - 4215124, - 2117986, - 2128632, - 2117993, - 2117994, - 2117998, - 2118016, - 2118018, - 2119384, - 2118028, - 2118025, - 2118031, - 2118033, - 2118035, - 4215189, - 2118038, - 2118052, - 2118054, - 2118050, - 2118057, - 2118058, - 2118059, - 2118067, - 2118065, - 2118066, - 2118064, - 2118069, - 2118077, - 2118085, - 2118089, - 2118107, - 2118112, - 2131541, - 2118121, - 2118125, - 2118128, - 2118133, - 2118142, - 2118148, - 2118155, - 2118164, - 2118158, - 2118183, - 2118186, - 2118190, - 2118195, - 2118201, - 2118223, - 2118212, - 2118219, - 2118220, - 2118238, - 2118228, - 2118250, - 2118260, - 2118249, - 2118259, - 2118271, - 2118269, - 2118285, - 2118292, - 2118290, - 2118257, - 2118280, - 2118289, - 2133928, - 2133927, - 2118316, - 2118317, - 2118332, - 2118325, - 2118337, - 2118349, - 2118359, - 2118366, - 2118371, - 2118374, - 2136301, - 2118368, - 2118387, - 2118389, - 2118392, - 2118393, - 2118406, - 2118408, - 2127160, - 2118413, - 2118416, - 2118415, - 2118421, - 2118426, - 2118435, - 2118447, - 2118449, - 2118451, - 2118456, - 2118464, - 2118470, - 2118469, - 2117143, - 2118473, - 2118477, - 2118102, - 2118494, - 2118505, - 2118510, - 2119960, - 2118523, - 2118519, - 2118530, - 2118550, - 2118560, - 2118566, - 2118565, - 2118574, - 2118576, - 2118582, - 2118595, - 2128914, - 2135769, - 2118623, - 2123516, - 2126318, - 2118638, - 2118632, - 2118637, - 2118650, - 2118657, - 2118717, - 2118720, - 2118700, - 2118701, - 2118716, - 2118702, - 2118710, - 2118697, - 2118685, - 2118734, - 2118799, - 2118773, - 2118798, - 2118751, - 2118769, - 2118775, - 2118768, - 2118802, - 2118779, - 2118784, - 2118774, - 2118788, - 2118800, - 2118790, - 2118855, - 2118818, - 2118840, - 2118821, - 2118828, - 2118852, - 2118856, - 2118824, - 2118827, - 2118850, - 2118820, - 2118846, - 2118844, - 2118872, - 2118885, - 2118886, - 2118927, - 2118932, - 2118909, - 2118894, - 2118893, - 2118906, - 2118882, - 2118969, - 2118976, - 2119011, - 2118988, - 2118958, - 2119004, - 2118981, - 2118998, - 2118999, - 2118968, - 2118963, - 2119005, - 2119065, - 2119040, - 2118831, - 2119050, - 2119071, - 2119035, - 2119038, - 2119064, - 2119070, - 2119086, - 2119036, - 2119043, - 2119081, - 2119047, - 2119080, - 2119130, - 2119109, - 2119135, - 2119108, - 2119132, - 2119140, - 2119124, - 2119188, - 2119159, - 2119190, - 2119166, - 2119165, - 2119195, - 2119161, - 2119246, - 2119248, - 2126303, - 2119220, - 2119222, - 2119218, - 2119224, - 2119275, - 2119268, - 2119215, - 2119276, - 2119274, - 2119302, - 2119296, - 2119306, - 2119328, - 2119316, - 2119311, - 2119333, - 2119342, - 2119350, - 2119348, - 2119362, - 2119356, - 2119361, - 2119363, - 2119360, - 2119368, - 2119374, - 2119377, - 2119379, - 2119383, - 2119406, - 2119417, - 2119424, - 2119423, - 2119428, - 2119433, - 2119432, - 2119435, - 2119437, - 2119443, - 2119448, - 2119446, - 2119111, - 2119452, - 2119462, - 2119479, - 2119480, - 2119502, - 2119483, - 2119488, - 2119503, - 2119529, - 2119616, - 2119560, - 2119521, - 2119551, - 2119561, - 2119571, - 2119584, - 2119603, - 2119588, - 2119594, - 2119600, - 2119619, - 2119622, - 2119636, - 2119634, - 2119635, - 2119690, - 2119638, - 2119651, - 2119691, - 2119705, - 2119709, - 2119794, - 2119713, - 2119778, - 2119755, - 2119792, - 2124736, - 2119762, - 2119741, - 2119801, - 2119813, - 2119865, - 2119839, - 2119851, - 2119866, - 2119902, - 2119867, - 2119864, - 2119854, - 2119877, - 2119891, - 2119889, - 2119895, - 2119897, - 2119896, - 2119909, - 2119900, - 2119908, - 2119903, - 2119919, - 2119930, - 2119929, - 2119931, - 2119932, - 2119933, - 2119938, - 2119946, - 2119952, - 2119963, - 2123942, - 2119973, - 2119980, - 2119981, - 2119986, - 2119992, - 2119998, - 2128594, - 2120021, - 2120016, - 2120014, - 2120026, - 2120024, - 2120034, - 2120032, - 2120039, - 2120044, - 2120041, - 2120056, - 2120065, - 2120093, - 2117470, - 2117547, - 2120099, - 2120114, - 2120134, - 2120168, - 2120156, - 2120077, - 2120153, - 2120154, - 2120229, - 2120223, - 2120209, - 2120220, - 2120201, - 2120218, - 2120256, - 2120300, - 2120265, - 2120245, - 2120246, - 2120290, - 2120298, - 2120346, - 2120380, - 2120382, - 2120395, - 2120386, - 2120381, - 2120419, - 2120407, - 2120422, - 2120425, - 2120406, - 2120442, - 2120443, - 2120460, - 2120459, - 2120470, - 2120498, - 2120400, - 2120490, - 2120502, - 2120510, - 2120515, - 2120517, - 2120512, - 2120529, - 2120533, - 2120538, - 2120539, - 2120549, - 2120553, - 2120560, - 2120563, - 2120565, - 2120568, - 2123144, - 2120570, - 2120576, - 2120579, - 2120614, - 2120632, - 2120643, - 2120647, - 2120649, - 2120660, - 2120656, - 2120676, - 2120678, - 2120674, - 2120670, - 2120677, - 2120683, - 2120688, - 2120694, - 2120691, - 2120709, - 2120711, - 2120712, - 2120717, - 2120723, - 2120736, - 2120738, - 2120744, - 2120760, - 2120761, - 2120769, - 2120774, - 2120782, - 2120787, - 2120784, - 2120783, - 2120561, - 2120812, - 4217966, - 2117218, - 2120822, - 2120825, - 2120844, - 2120849, - 2120852, - 2120091, - 2120875, - 2120891, - 2120886, - 2120892, - 2120887, - 2120901, - 2120894, - 2120903, - 2120921, - 2120937, - 2120957, - 2120954, - 2120941, - 2121100, - 2120938, - 2120971, - 2120981, - 2120983, - 2121052, - 2120991, - 2120987, - 2120977, - 2120980, - 2120994, - 2120986, - 2120985, - 2120984, - 2121036, - 2121042, - 2121038, - 2121035, - 2121068, - 2121075, - 2121078, - 2121095, - 2121092, - 2121090, - 2121122, - 2121117, - 2121132, - 2121134, - 2121149, - 2121104, - 2121143, - 2121148, - 2121161, - 2121165, - 2121171, - 2121170, - 2121174, - 2121179, - 2121195, - 2121202, - 2121205, - 2121227, - 2121242, - 2121241, - 2121233, - 2121243, - 2121270, - 2121271, - 2121284, - 2121283, - 2121280, - 2121294, - 2121303, - 2121300, - 2121311, - 2121314, - 2121316, - 2121287, - 2121333, - 2121334, - 2121338, - 2137788, - 2121343, - 2121376, - 2121409, - 2121410, - 2121416, - 2121424, - 2121423, - 2121430, - 2121443, - 2121437, - 2121434, - 2121435, - 2121442, - 2121441, - 2121448, - 2121449, - 2121452, - 2121457, - 2121459, - 2121456, - 2121460, - 2121464, - 2121470, - 2121475, - 2121481, - 2121565, - 2121564, - 2121483, - 2121489, - 2121494, - 2121513, - 2121517, - 2121528, - 2121537, - 2121544, - 2121548, - 2121550, - 2121519, - 2121553, - 2121558, - 2121559, - 2121561, - 2121569, - 2121581, - 2121587, - 2121591, - 2121603, - 2121602, - 2121599, - 2121610, - 2121608, - 2121617, - 2121607, - 2121630, - 2121625, - 2121624, - 2121632, - 2121640, - 2121645, - 2121660, - 2121686, - 2121723, - 2121700, - 2121720, - 2121713, - 2121693, - 2121907, - 2121727, - 2121761, - 2121824, - 2121753, - 2121744, - 2121769, - 2121742, - 2121777, - 2121755, - 2121749, - 2121771, - 2121766, - 2121743, - 2121786, - 2121818, - 2121793, - 2121834, - 2121847, - 2121823, - 2121802, - 2121798, - 2121805, - 2121827, - 2121795, - 2121828, - 2121794, - 2121836, - 2121835, - 2121817, - 2121857, - 2121869, - 2121959, - 2121859, - 2121882, - 2121860, - 2121883, - 2121878, - 2121879, - 2121874, - 2121895, - 2121867, - 2121953, - 2121912, - 2121952, - 2121939, - 2121908, - 2121712, - 2121917, - 2121926, - 2121909, - 2121944, - 2122061, - 2122005, - 2121990, - 2121974, - 2121975, - 2121984, - 2121972, - 2121978, - 2121987, - 2122017, - 2121979, - 2121969, - 2121997, - 2121998, - 2122055, - 2122046, - 2122024, - 2122023, - 2122058, - 2122047, - 2122044, - 2122028, - 2122036, - 2122045, - 2122050, - 2122052, - 2122099, - 2122103, - 2122072, - 2122073, - 2122074, - 2122091, - 2122100, - 2122095, - 2122085, - 2122097, - 2122079, - 2122077, - 2122067, - 2122101, - 2122137, - 2122134, - 2122119, - 2122156, - 2122132, - 2122138, - 2122122, - 2122129, - 2122155, - 2122158, - 2122188, - 2122186, - 2122185, - 2122231, - 2122184, - 2122179, - 2122182, - 2122170, - 2122187, - 2129785, - 2122189, - 2122214, - 2122211, - 2122230, - 2122234, - 2122228, - 2122239, - 2122237, - 2122236, - 2122238, - 2122240, - 2122248, - 2122249, - 2122253, - 2122252, - 2122260, - 2122267, - 2122270, - 2122273, - 2122282, - 2122286, - 2122288, - 2122290, - 2122291, - 2122305, - 2122318, - 2122334, - 2122339, - 2122331, - 2122336, - 2122344, - 2122364, - 2122370, - 2122377, - 2122366, - 2122386, - 2122387, - 2122390, - 4219604, - 2122371, - 2122388, - 2122455, - 2122449, - 2122427, - 2122447, - 2122495, - 2122438, - 2122964, - 2122440, - 2122460, - 2122444, - 2122442, - 2122434, - 2122439, - 2122395, - 2122441, - 2122508, - 2122478, - 2122481, - 2122535, - 2122498, - 2122504, - 2122479, - 2122485, - 2122576, - 2122558, - 2122573, - 2122780, - 2122575, - 2122646, - 2122638, - 2122624, - 2122667, - 2122614, - 2122659, - 2122639, - 2122633, - 2122655, - 2122677, - 2122603, - 2122601, - 2122686, - 2122729, - 2122688, - 2122694, - 2122723, - 2122697, - 2122706, - 2122742, - 2122692, - 2122774, - 2122804, - 2122758, - 2122771, - 2122790, - 2122806, - 2123037, - 2122775, - 2122792, - 2122767, - 2122855, - 2122863, - 2122870, - 2122830, - 2123050, - 2122901, - 2122899, - 2122917, - 2122921, - 2122888, - 2122940, - 2122970, - 2122962, - 2122949, - 2122951, - 2122939, - 2122968, - 2122946, - 2122993, - 2122983, - 2130441, - 2122976, - 2122977, - 2122412, - 2122979, - 2122991, - 2123052, - 2122998, - 2122996, - 2122994, - 2123002, - 2123008, - 2123005, - 2123032, - 2123036, - 2123013, - 2123044, - 2123043, - 2123051, - 2123060, - 2123061, - 2123063, - 2123062, - 2123064, - 2127179, - 2123080, - 2123094, - 2123093, - 2123085, - 2123096, - 2123102, - 2123101, - 2123122, - 2123128, - 2123138, - 2123139, - 2132874, - 2123163, - 2123167, - 2123179, - 2123191, - 2123203, - 2123206, - 2123201, - 2123204, - 2123212, - 2123218, - 2123227, - 2123225, - 2123232, - 2123233, - 2123249, - 2123634, - 2123274, - 2123267, - 2123259, - 2123635, - 2123317, - 2123318, - 2123316, - 2123292, - 2123343, - 2123332, - 2123337, - 2123329, - 2123358, - 2123357, - 2123364, - 2123367, - 2123368, - 2123359, - 2123362, - 2123376, - 2123395, - 2123400, - 2123406, - 2123401, - 2123396, - 2123416, - 2123421, - 2123457, - 2123449, - 2123465, - 2123454, - 2123452, - 2123460, - 2123448, - 2123478, - 2123482, - 2123488, - 2123327, - 2123494, - 2123497, - 2123504, - 2123509, - 2123511, - 2123535, - 2123542, - 2123550, - 2123558, - 2123559, - 2135864, - 2123566, - 2123583, - 2123574, - 2123585, - 2123576, - 2123575, - 2123590, - 2123614, - 2123616, - 2123609, - 2123619, - 2123620, - 2123657, - 2123632, - 2123689, - 2123644, - 2123626, - 2123660, - 2123659, - 2123686, - 2123681, - 2123653, - 2123703, - 2123759, - 2123700, - 2123756, - 2123699, - 2123753, - 2123704, - 2123748, - 2123742, - 2123741, - 2123746, - 2123758, - 2123705, - 2123726, - 2123718, - 2123751, - 2124444, - 2123806, - 2123846, - 2123817, - 2123840, - 2123853, - 2123826, - 2123854, - 2123955, - 2123819, - 2123865, - 2123875, - 2123895, - 2123903, - 2123935, - 2123919, - 2123949, - 2123924, - 2123933, - 2123931, - 2123907, - 2124462, - 2123961, - 2123892, - 2123957, - 2123936, - 2123962, - 2124047, - 2123917, - 2123902, - 2124033, - 2123978, - 2124040, - 2123992, - 2124066, - 2124070, - 2124001, - 2124044, - 2123981, - 2123988, - 2124007, - 2123989, - 2124086, - 2124050, - 2124036, - 2123991, - 2124003, - 2124069, - 2124025, - 2124000, - 2124015, - 2124072, - 2124074, - 2124058, - 2124067, - 2124065, - 2123974, - 2124153, - 2124151, - 2124124, - 2124152, - 2124139, - 2124116, - 2124158, - 2124142, - 2124089, - 2124148, - 2124093, - 2124121, - 2124080, - 2124129, - 2124126, - 2124125, - 2124161, - 2124138, - 2124210, - 2124206, - 2124240, - 2124223, - 2124225, - 2124243, - 2124222, - 2124238, - 2120680, - 2124234, - 2124253, - 2124219, - 2124227, - 2124199, - 2124334, - 2124177, - 2124192, - 2124188, - 2124181, - 2124212, - 2124254, - 2124264, - 2124290, - 2124315, - 2124287, - 2124554, - 2124281, - 2124274, - 2124263, - 2124293, - 2124209, - 2124318, - 2124269, - 2124308, - 2124267, - 2124298, - 2124306, - 2124481, - 2124323, - 2124307, - 2124356, - 2124300, - 2124402, - 2124342, - 2124408, - 2124359, - 2124386, - 2124377, - 2124390, - 2124360, - 2124344, - 2124322, - 2124432, - 2124429, - 2124448, - 2124420, - 2124450, - 2124451, - 2124439, - 2131479, - 2124475, - 2124483, - 2124482, - 2124472, - 2124467, - 2124460, - 2124510, - 2124497, - 2124511, - 2124458, - 2124506, - 2124522, - 2124539, - 2124549, - 2131478, - 2124538, - 2124562, - 2124566, - 2136881, - 2124575, - 2124600, - 2124599, - 2127580, - 2124601, - 2136302, - 2124615, - 2124611, - 2124617, - 2124624, - 2124633, - 2124628, - 2124635, - 2124639, - 2124641, - 2124664, - 2124665, - 2124671, - 2124672, - 2124676, - 2124675, - 2124685, - 2124696, - 2124693, - 2124702, - 2124708, - 2124714, - 2124715, - 2124719, - 2124722, - 2124721, - 2124723, - 2124727, - 2124732, - 2124742, - 2124747, - 2124755, - 2124767, - 2124780, - 2124779, - 2124787, - 2124783, - 2137790, - 2124808, - 2124819, - 2124820, - 2124827, - 2124836, - 2124835, - 2124894, - 2124885, - 2124898, - 2124906, - 2124930, - 2124941, - 2124954, - 2124929, - 2124955, - 2124926, - 2124904, - 2124915, - 2124946, - 2124944, - 2124996, - 2125041, - 2125011, - 2124989, - 2125015, - 2124997, - 2125021, - 2124974, - 2124977, - 2124990, - 2124986, - 2125019, - 2125039, - 2125017, - 2125034, - 2125087, - 2132045, - 2125110, - 2125099, - 2125117, - 2125112, - 2125081, - 2125109, - 2125107, - 2125074, - 2125068, - 2125155, - 2125203, - 2125156, - 2125146, - 2125177, - 2125145, - 2125198, - 2125205, - 2125796, - 2125189, - 2125305, - 2125333, - 2125322, - 2125237, - 2125255, - 2125286, - 2125240, - 2125254, - 2125292, - 2125278, - 2125260, - 2125288, - 2125266, - 2125253, - 2125306, - 2125273, - 2125284, - 2125269, - 2125290, - 2125294, - 2125357, - 2125422, - 2125358, - 2125337, - 2125426, - 2125407, - 2125374, - 2125347, - 2125419, - 2125355, - 2125430, - 2125389, - 2125343, - 2125379, - 2125370, - 2125390, - 2125348, - 2125567, - 2125341, - 2125368, - 2125442, - 2125482, - 2125464, - 2125513, - 2125495, - 2125523, - 2125501, - 2125487, - 2125508, - 2125490, - 2125524, - 2125525, - 2125455, - 2125477, - 2125506, - 2125471, - 2125633, - 2125585, - 2125900, - 2125548, - 2125560, - 2125566, - 2125631, - 2125554, - 2125617, - 2125551, - 2125618, - 2125516, - 2125630, - 2125587, - 2125559, - 2125702, - 2125690, - 2125688, - 2125697, - 2125696, - 2125679, - 2125659, - 2125811, - 2125677, - 2125698, - 2125692, - 2125656, - 2125710, - 2125713, - 2125762, - 2125670, - 2125747, - 2125731, - 2125729, - 2125732, - 2125753, - 2125766, - 2125738, - 2125791, - 2125781, - 2125804, - 2125780, - 2125784, - 2125809, - 2125806, - 2125787, - 2125833, - 2125835, - 2125818, - 2125841, - 2125825, - 2125839, - 2125822, - 2125851, - 2125850, - 2125684, - 2125853, - 2125848, - 2125855, - 2125872, - 2125886, - 2125874, - 2125905, - 2125923, - 2125977, - 2125970, - 2125999, - 2126065, - 2125996, - 2126008, - 2126003, - 2125998, - 2126047, - 2126027, - 2126045, - 2126041, - 2126089, - 2126077, - 2126108, - 2126105, - 2126181, - 2126165, - 2126216, - 2126182, - 2126178, - 2126156, - 2126166, - 2126188, - 2126223, - 2126331, - 2126212, - 2126229, - 2126248, - 2126252, - 2126295, - 2126265, - 2126270, - 2126290, - 2126281, - 2126292, - 2126286, - 2126304, - 2126316, - 2126311, - 2126325, - 2126332, - 2126329, - 2126335, - 2126349, - 2126352, - 2126363, - 4223528, - 2126381, - 2126380, - 2126384, - 2126386, - 2126395, - 2126396, - 2126399, - 2126400, - 2126406, - 2126411, - 2126424, - 2126452, - 2126462, - 2126466, - 2126465, - 2126471, - 2126482, - 2126486, - 2126498, - 2126503, - 2126521, - 2126514, - 2126531, - 2126534, - 2126532, - 2126542, - 2126546, - 2126562, - 2126560, - 2126561, - 2126585, - 2126583, - 2117647, - 2126615, - 2126602, - 2126620, - 2126614, - 2126621, - 2126644, - 2126639, - 2126633, - 2126629, - 2126654, - 2126670, - 2126671, - 2137816, - 2126679, - 2126698, - 2126696, - 2126704, - 2126712, - 2126709, - 2126715, - 2126714, - 2126792, - 2126771, - 2126798, - 2126779, - 2126784, - 2126821, - 2126830, - 2126814, - 2127010, - 2126853, - 2126959, - 2126885, - 2126840, - 2126898, - 2126906, - 2126933, - 2126911, - 2126943, - 2126937, - 2126913, - 2126940, - 2126953, - 2126960, - 2126947, - 2126954, - 2126966, - 2126974, - 2126987, - 2127006, - 2127015, - 2127050, - 2127055, - 2127060, - 2126833, - 2127072, - 2127075, - 2127079, - 2127081, - 2127086, - 2127090, - 2127088, - 2127089, - 2127096, - 2127095, - 2127108, - 2127107, - 2127109, - 2127116, - 2127118, - 2127117, - 2127125, - 2127123, - 2127134, - 2127142, - 2127148, - 2127164, - 2127172, - 2127181, - 2127178, - 2127177, - 2127195, - 2127174, - 2127194, - 2127209, - 2127204, - 2127207, - 2127211, - 2127213, - 2127224, - 2127222, - 2127238, - 2127239, - 2127220, - 2127242, - 2127241, - 2127234, - 2127252, - 2127258, - 2127261, - 2127269, - 2127267, - 2127298, - 2127283, - 2127299, - 2127285, - 2127293, - 2127288, - 2127292, - 2127281, - 2127309, - 2127306, - 2127314, - 2127321, - 2127331, - 2127326, - 2127358, - 2127359, - 2127356, - 2127361, - 2127344, - 2127354, - 2127346, - 2127347, - 2127371, - 2127373, - 2127369, - 2127391, - 2127399, - 2127392, - 2127393, - 2127394, - 2127396, - 2127412, - 2127408, - 2127419, - 2127431, - 2127432, - 2127430, - 2127452, - 2127448, - 2127457, - 2127458, - 2127464, - 2127465, - 2127466, - 2127463, - 2127468, - 2127472, - 2127474, - 2127478, - 2127480, - 2127484, - 2127488, - 2127491, - 2127496, - 2127499, - 2127502, - 2127510, - 2127507, - 2127513, - 2127514, - 2127536, - 2127540, - 2127544, - 2127545, - 2127546, - 2127554, - 2127565, - 2127574, - 2127570, - 2127582, - 2127585, - 2127589, - 2127591, - 2127594, - 2131503, - 2127611, - 2127624, - 2127623, - 2127620, - 2127657, - 2127652, - 4224798, - 2127653, - 2127654, - 2127643, - 2127671, - 2127672, - 2127687, - 2127706, - 2127720, - 2127723, - 2127707, - 2127717, - 2127743, - 2127742, - 2127737, - 2127758, - 2127755, - 2127761, - 2127776, - 2127774, - 2127792, - 2127798, - 2127801, - 2127807, - 2127804, - 2127805, - 2127803, - 2127815, - 2127821, - 2127831, - 2127834, - 2127836, - 2127843, - 2127854, - 2127868, - 2127884, - 2127890, - 2128166, - 2127904, - 2128170, - 2127941, - 2128014, - 2127988, - 2128006, - 2127996, - 2128026, - 2128012, - 2128035, - 2128053, - 2128042, - 2128047, - 2128081, - 2128070, - 2128075, - 2128084, - 2128062, - 2128060, - 2128069, - 2128074, - 2128108, - 2128103, - 2128090, - 2128125, - 2128116, - 2128135, - 2128146, - 2128145, - 2128153, - 2128172, - 2128171, - 2128192, - 2128224, - 2128215, - 2128223, - 2128218, - 2128213, - 2128211, - 2128250, - 2128255, - 2128266, - 2128285, - 2128295, - 2137931, - 2128298, - 2128302, - 2128307, - 2128313, - 2128314, - 2128329, - 2128341, - 2128359, - 2128364, - 2128353, - 2128355, - 2128392, - 2128397, - 2128408, - 2128409, - 2128416, - 2128415, - 2128256, - 2128433, - 2128443, - 2128446, - 2128439, - 2128451, - 2128471, - 2128457, - 2128481, - 2128482, - 2128489, - 2138013, - 2128496, - 2128505, - 2128509, - 2128520, - 2128535, - 2128533, - 2128536, - 2128534, - 2128553, - 2128584, - 2128560, - 2128566, - 2128581, - 2128580, - 2128575, - 2134147, - 2128583, - 2128586, - 2128589, - 2128591, - 2128597, - 2128595, - 2128601, - 2128602, - 2128605, - 2128609, - 2128610, - 2128614, - 2128621, - 2128624, - 2128642, - 2128655, - 2128650, - 2128646, - 2128691, - 2128664, - 2128665, - 2128670, - 2128693, - 2128680, - 2128694, - 2128720, - 2128762, - 2128644, - 2128717, - 2128651, - 2128716, - 2128709, - 2128757, - 2128741, - 2128756, - 2128743, - 2128752, - 2128753, - 2128748, - 2128750, - 2128797, - 2128792, - 2128799, - 2128781, - 2128796, - 2128794, - 2128779, - 2128786, - 2128783, - 2128733, - 2128793, - 2128843, - 2128833, - 2128844, - 2128847, - 2128820, - 2128838, - 2128861, - 2128873, - 2128913, - 2128916, - 2128870, - 2128869, - 2128992, - 2128896, - 2128903, - 2128915, - 2128883, - 2128887, - 2128919, - 2128909, - 2128886, - 2128931, - 2128935, - 2128938, - 2128927, - 2128951, - 2128939, - 2128957, - 2128972, - 2128963, - 2128980, - 2128975, - 2128960, - 2128976, - 2128984, - 2128991, - 2128996, - 2128982, - 2128997, - 2129004, - 2129013, - 2129027, - 2129040, - 2129060, - 2129069, - 2129058, - 2129067, - 2129057, - 2129064, - 2129075, - 2129074, - 2129073, - 2129070, - 2129081, - 2129085, - 2129088, - 2129093, - 2129090, - 2129112, - 2129106, - 2129116, - 2129122, - 2136891, - 2129135, - 2129138, - 2129140, - 2129142, - 2129146, - 2129158, - 2129154, - 2129180, - 2129173, - 2129162, - 2129221, - 2129227, - 2129198, - 2129202, - 2129215, - 2129205, - 2129222, - 2129267, - 2129238, - 2129230, - 2129266, - 2129256, - 2129262, - 2129231, - 2129251, - 2129299, - 2129289, - 2129243, - 2129295, - 2129277, - 2129307, - 2129338, - 2129326, - 2129315, - 2129333, - 2129351, - 2129341, - 2129323, - 2129469, - 2129314, - 2129327, - 2129372, - 2129336, - 2129311, - 2129328, - 2129368, - 2129373, - 2129380, - 2129374, - 2129403, - 2129394, - 2129377, - 2129413, - 2129418, - 2129443, - 2129441, - 2129426, - 2129457, - 2129439, - 2129417, - 2129419, - 2129442, - 2129478, - 2129510, - 2129467, - 2129461, - 2129465, - 2129475, - 2129463, - 2129458, - 2129466, - 2129511, - 2129501, - 2129494, - 2129502, - 2129497, - 2129498, - 2129529, - 2129514, - 2129513, - 2129532, - 2129531, - 2129539, - 2129365, - 2129533, - 2133934, - 2129535, - 2129544, - 2129545, - 2129548, - 2129554, - 2129552, - 2129555, - 2129556, - 2129558, - 2129550, - 2129563, - 2129564, - 2129720, - 2129722, - 2129733, - 2129740, - 2129741, - 2129742, - 2129744, - 2129745, - 2129749, - 2129748, - 2129752, - 2129759, - 2129760, - 2129768, - 2129769, - 2129767, - 2129784, - 2129794, - 2129798, - 2129795, - 2129800, - 2129799, - 2129804, - 2129812, - 2129822, - 2129821, - 2129818, - 2129827, - 2129839, - 2129842, - 2129849, - 2129838, - 2129846, - 2129848, - 2132849, - 2129861, - 2129862, - 2129866, - 2129877, - 2129876, - 2129889, - 2129894, - 2129897, - 2129907, - 2129913, - 2136284, - 2129926, - 2129924, - 2129931, - 2129938, - 2129944, - 2129945, - 2129948, - 2129953, - 2129960, - 2129983, - 2129979, - 2129994, - 2129990, - 2130002, - 2130008, - 2130010, - 2130015, - 2130018, - 2130024, - 2130035, - 2130034, - 2130032, - 2130038, - 2130041, - 2130045, - 2130047, - 2130052, - 2130054, - 2130053, - 2130075, - 2130067, - 2130074, - 2130093, - 2118032, - 2130092, - 2130139, - 2130149, - 2130137, - 2130141, - 2130116, - 2130138, - 2130134, - 2130185, - 2130159, - 2130161, - 2130203, - 2130217, - 2130211, - 2130223, - 2130251, - 2135691, - 2130246, - 2130238, - 2130259, - 2130257, - 2130172, - 2130289, - 2130286, - 2130277, - 2130278, - 2130292, - 2130307, - 2130312, - 2130314, - 2130304, - 2130306, - 2130336, - 2130325, - 2130340, - 2130339, - 2130271, - 2130323, - 2130345, - 2130352, - 2130357, - 2130366, - 2130360, - 2130365, - 2130368, - 2130370, - 2130362, - 2130377, - 2130381, - 2130385, - 2130393, - 2130392, - 2130376, - 2130394, - 2130399, - 2130400, - 2130407, - 2130426, - 2130427, - 2130430, - 2130433, - 2130434, - 2130437, - 2130439, - 2130442, - 2130445, - 2130448, - 2130454, - 2130473, - 2130475, - 2130488, - 2130483, - 2130496, - 2130521, - 2130520, - 2130525, - 2130522, - 2130527, - 2130532, - 2130530, - 2130536, - 2130538, - 2130539, - 2130478, - 2130545, - 2130551, - 2130552, - 2130558, - 2130573, - 2130578, - 2130603, - 2130591, - 2130619, - 2130604, - 2130657, - 2130659, - 2130655, - 2130642, - 2130676, - 2130675, - 2130682, - 2130835, - 2130691, - 2130683, - 2130681, - 2130654, - 2130694, - 2130652, - 2130697, - 2130649, - 2130741, - 2130740, - 2130710, - 2130738, - 2130737, - 2130752, - 2130745, - 2130768, - 2130757, - 2130735, - 2130731, - 2130711, - 2130712, - 2130821, - 2130842, - 2130858, - 2130847, - 2130850, - 2130838, - 2130723, - 2130830, - 2130823, - 2130826, - 2130812, - 2130869, - 2130803, - 2130805, - 2130848, - 2130825, - 2130856, - 2130932, - 2130963, - 2130923, - 2130894, - 2130941, - 2130947, - 2130904, - 2130955, - 2130881, - 2130935, - 2130951, - 2130912, - 2130930, - 2130957, - 2130978, - 2130976, - 2130877, - 2131000, - 2131206, - 2130939, - 2131053, - 2130986, - 2131004, - 2131290, - 2131076, - 2131063, - 2131051, - 2131117, - 2131054, - 2131074, - 2131049, - 2131014, - 2130988, - 2131055, - 2131065, - 2130997, - 2131146, - 2131042, - 2131129, - 2131135, - 2131103, - 2131161, - 2131149, - 2131131, - 2131162, - 2131152, - 2131137, - 2131142, - 2131158, - 2131105, - 2131233, - 2131199, - 2131188, - 2131223, - 2131224, - 2131244, - 2131231, - 2131221, - 2131220, - 2131196, - 2131264, - 2131299, - 2131288, - 2131272, - 2131265, - 2131458, - 2131275, - 2131285, - 2131328, - 2131364, - 2131336, - 2131345, - 2131338, - 2131368, - 2131309, - 2131348, - 2131355, - 2131434, - 2131335, - 2131356, - 2131319, - 2131326, - 2131344, - 2131401, - 2131386, - 2131407, - 2131385, - 2131408, - 2131413, - 2131421, - 2131429, - 2131420, - 2131449, - 2131466, - 2131475, - 2131467, - 2131454, - 2131450, - 2131462, - 2131490, - 2131482, - 2131504, - 2131519, - 2131533, - 2117205, - 2131540, - 2131551, - 2131559, - 2131569, - 2131603, - 2131619, - 2131625, - 2131626, - 2131595, - 2131596, - 2131638, - 2131631, - 2131652, - 2131654, - 2131632, - 2131657, - 2132003, - 2131627, - 2131668, - 2131678, - 2131689, - 2131692, - 2131679, - 2131675, - 2131695, - 2131730, - 2131718, - 2131720, - 2131712, - 2131715, - 2131707, - 2131729, - 2131721, - 2131725, - 2131705, - 2131722, - 2131764, - 2131775, - 2131767, - 2131771, - 2131749, - 2131753, - 2131738, - 2131808, - 2131807, - 2131832, - 2131788, - 2131790, - 2131828, - 2131799, - 2131816, - 2131822, - 2131801, - 2131795, - 2131811, - 2131818, - 2131973, - 2131874, - 2131871, - 2131842, - 2131887, - 2131915, - 2131901, - 2131904, - 2131920, - 2135766, - 2131883, - 2131908, - 2131891, - 2131911, - 2131910, - 2131899, - 2131951, - 2131954, - 2131936, - 2131983, - 2131981, - 2131966, - 2131958, - 2131959, - 2131982, - 2131922, - 2131985, - 2131990, - 2131989, - 2132002, - 2132001, - 2132017, - 2132022, - 2132025, - 2132007, - 2132027, - 2132036, - 2132034, - 2132050, - 2132057, - 2132062, - 2132066, - 2132075, - 2132097, - 2132094, - 2132126, - 2132085, - 2132093, - 2132149, - 2132082, - 2132098, - 2132119, - 2132114, - 2132142, - 2132121, - 2132130, - 2132109, - 2132132, - 2132144, - 2132159, - 2132145, - 2132163, - 2132164, - 2132180, - 2132184, - 2132185, - 2132189, - 2132217, - 2132226, - 2132220, - 2132212, - 2132200, - 2132210, - 2132228, - 2132236, - 2132234, - 2132243, - 2132291, - 2132254, - 2132261, - 2132266, - 2132267, - 2132289, - 2132292, - 2132283, - 2132278, - 2132280, - 2132300, - 2132253, - 2132320, - 2132318, - 2132326, - 2132324, - 2132333, - 2132330, - 2132335, - 2132340, - 2132343, - 2132350, - 2132355, - 2132360, - 2132362, - 2132371, - 2132376, - 2132385, - 2132393, - 2132390, - 2132396, - 2132399, - 2132402, - 2132410, - 2132413, - 2132415, - 2132416, - 2132442, - 2132444, - 2132445, - 2132455, - 2132468, - 2132472, - 2132483, - 2132502, - 2132496, - 2132492, - 2132507, - 2132509, - 2132517, - 2132534, - 2132545, - 2132571, - 2132562, - 2132550, - 2132552, - 2132604, - 2132589, - 2132588, - 2132578, - 2132613, - 2132610, - 2132612, - 2132648, - 2132641, - 2132625, - 2132645, - 2132646, - 2132634, - 2132643, - 2132676, - 2132685, - 2132674, - 2132698, - 2132715, - 2132723, - 2132711, - 2132708, - 2132721, - 2132756, - 2132704, - 2132706, - 2132727, - 2132702, - 2132699, - 2132748, - 2132743, - 2132762, - 2132705, - 2132758, - 2132752, - 2132759, - 2132768, - 2132787, - 2135979, - 2132774, - 2132779, - 2132798, - 2132776, - 2132801, - 2132812, - 2132815, - 2132814, - 2132809, - 2132822, - 2132827, - 2132826, - 2132843, - 2132831, - 2132844, - 2132847, - 2132852, - 2132861, - 2132864, - 2132876, - 2132878, - 2132882, - 2132883, - 2132886, - 2132889, - 2132890, - 2133050, - 2133057, - 2133055, - 2133064, - 2133068, - 2133070, - 2133072, - 2133077, - 2133090, - 2133100, - 2133112, - 2133114, - 2133122, - 2133129, - 2133125, - 2133130, - 2133133, - 2133134, - 2133140, - 2133116, - 2133144, - 2122269, - 2133165, - 2133162, - 2133181, - 2133170, - 2133171, - 2133166, - 2133174, - 2133192, - 2133185, - 2133220, - 2133219, - 2133210, - 2133245, - 2133242, - 2133243, - 2133252, - 2133253, - 2133258, - 2133255, - 2133263, - 2133261, - 2133264, - 2137934, - 2133267, - 2133197, - 2133268, - 2133270, - 2133351, - 2133357, - 2133361, - 2133363, - 2133377, - 2133401, - 2133442, - 2133438, - 2133434, - 2133455, - 2133466, - 2133462, - 2133452, - 2133467, - 2133451, - 2133482, - 2133483, - 2133471, - 2133475, - 2133500, - 2133512, - 2133513, - 2133503, - 2133533, - 2133534, - 2133520, - 2133535, - 2133570, - 2133557, - 2133552, - 2133556, - 2133578, - 2133575, - 2133577, - 2133580, - 2133584, - 2133576, - 2133593, - 2133604, - 2133600, - 2133546, - 2133603, - 2133589, - 2133622, - 2133618, - 2133628, - 2133633, - 2133639, - 2133637, - 2133636, - 2133643, - 2133642, - 2133651, - 2133649, - 2133652, - 2133657, - 2133674, - 2133665, - 2133676, - 2133680, - 2133702, - 2133681, - 2133694, - 2133701, - 2133704, - 2133707, - 2133723, - 2133731, - 2133756, - 2133755, - 2133739, - 2133758, - 2133770, - 2133765, - 2133781, - 2133778, - 2133785, - 2133779, - 2133788, - 2133791, - 2133787, - 2133772, - 2133798, - 2133811, - 2133819, - 2133817, - 2133829, - 2133826, - 2133822, - 2133836, - 2133833, - 2133830, - 2133838, - 2133847, - 2133852, - 2133858, - 2133859, - 2133860, - 2133916, - 2133919, - 2133923, - 2133933, - 2133935, - 2133943, - 2133978, - 2133989, - 2133986, - 2133994, - 2133999, - 2134151, - 2134004, - 2134021, - 2134009, - 2134010, - 2134033, - 2134037, - 2134049, - 2134029, - 2134046, - 2134038, - 2134027, - 2134055, - 2134070, - 2134069, - 2134073, - 2134008, - 2134095, - 2134096, - 2134097, - 2134098, - 2134030, - 2134089, - 2134078, - 2134102, - 2134104, - 2134110, - 2134120, - 2134127, - 2134134, - 2135720, - 2134130, - 2134146, - 2134141, - 2134145, - 2134144, - 2134154, - 2134153, - 2134159, - 2134184, - 2134191, - 2134193, - 2134197, - 2134242, - 2134244, - 2122312, - 2134235, - 2134274, - 2134290, - 2134297, - 2134322, - 2134320, - 2134346, - 2134358, - 2134360, - 2134371, - 2134373, - 2134377, - 2134387, - 2134386, - 2134411, - 2134409, - 2134402, - 2134434, - 2134443, - 2134447, - 2134442, - 2134453, - 2134452, - 2134458, - 2134464, - 2134465, - 2134473, - 2134475, - 2134480, - 2134486, - 2134495, - 2134497, - 2134491, - 2134524, - 2134517, - 2134518, - 2134558, - 2134527, - 2134548, - 2134572, - 2134549, - 2134545, - 2134622, - 2134615, - 2134597, - 2134601, - 2134628, - 2134600, - 2134677, - 2134591, - 2134603, - 2134608, - 2134684, - 2134678, - 2134675, - 2134683, - 2134618, - 2134735, - 2134713, - 2134711, - 2134761, - 2134799, - 2134778, - 2134852, - 2134830, - 2134809, - 2134818, - 2134810, - 2134819, - 2134842, - 2134837, - 2134843, - 2134876, - 2134880, - 2134908, - 2134894, - 2134870, - 2134960, - 2134956, - 2134957, - 2134932, - 2134969, - 2134998, - 2134999, - 2135016, - 2135013, - 2135000, - 2134979, - 2135005, - 2134992, - 2134984, - 2135012, - 2135066, - 2135060, - 2135059, - 2135043, - 2135047, - 2135056, - 2135094, - 2135083, - 2135093, - 2135073, - 2135098, - 2135105, - 2135122, - 2135108, - 2135131, - 2135136, - 2135138, - 2135134, - 2135146, - 2134569, - 2135152, - 2135157, - 2135159, - 2135165, - 2135130, - 2135164, - 2135166, - 2135169, - 2135167, - 2135426, - 2135431, - 2135434, - 2135444, - 2135446, - 2135448, - 2135449, - 2135456, - 2135464, - 2135463, - 2135469, - 2135484, - 2135483, - 2135481, - 2135486, - 2135498, - 2125814, - 2135491, - 2135501, - 2135500, - 2135509, - 2135508, - 2135510, - 2135516, - 2135521, - 2135525, - 2135522, - 2135585, - 2135592, - 2135598, - 2135599, - 2135618, - 2135628, - 2135631, - 2135627, - 2135671, - 2135644, - 2135646, - 2135645, - 2135647, - 2135654, - 2135666, - 2135660, - 2135693, - 2135704, - 2135701, - 2135703, - 2135722, - 2135719, - 2135729, - 2135730, - 2135728, - 2135732, - 2135734, - 2135736, - 2135737, - 2135758, - 2135755, - 2135753, - 2135757, - 2132301, - 2135772, - 2135821, - 2135765, - 2135801, - 2135812, - 2135814, - 2135816, - 2135827, - 2135822, - 2135825, - 2135823, - 2135830, - 2135833, - 2135844, - 2135850, - 2135856, - 2135865, - 2135869, - 2135870, - 2135876, - 2135878, - 2135880, - 2135874, - 2135881, - 2135900, - 2135904, - 2135908, - 2135910, - 2135912, - 2118354, - 2135915, - 2135921, - 2135929, - 2135941, - 2135932, - 2135937, - 2135930, - 2135942, - 2135947, - 2135951, - 2135952, - 2135964, - 2135976, - 2135974, - 2135971, - 2135987, - 2135988, - 2136003, - 2136006, - 2136008, - 2136011, - 2136028, - 2136045, - 2137935, - 2136050, - 2128607, - 2136054, - 2136053, - 2136079, - 2136076, - 2136120, - 2136100, - 2136097, - 2136119, - 2136125, - 2136134, - 2136143, - 2136139, - 2136171, - 2136175, - 2136176, - 2136177, - 2136180, - 2136179, - 2136234, - 2136239, - 2136241, - 2136246, - 2136260, - 2136259, - 2136262, - 2136297, - 2136299, - 2136323, - 2136329, - 2136338, - 2136340, - 2136344, - 2136353, - 2136349, - 2136350, - 2136356, - 2136352, - 2136364, - 2136366, - 2136381, - 2136382, - 2136386, - 2136393, - 2136389, - 2136400, - 2136395, - 2136401, - 2136402, - 2136396, - 2136405, - 2136471, - 2136472, - 2136485, - 2136493, - 2136494, - 2136508, - 2136543, - 2136539, - 2136541, - 2136536, - 2136529, - 2136557, - 2136558, - 2136561, - 2136562, - 2136571, - 2136568, - 2136577, - 2136591, - 2136581, - 2136546, - 2136601, - 2136619, - 2136631, - 2136645, - 2136642, - 2136640, - 2136643, - 2136638, - 2136661, - 2136653, - 2136667, - 2136663, - 2136671, - 2136674, - 2136677, - 2136676, - 2136681, - 2136683, - 2136682, - 2136749, - 2136752, - 2136764, - 2136768, - 2136783, - 2136785, - 2136787, - 2136788, - 2136798, - 2136799, - 2136802, - 2136803, - 2136806, - 2136815, - 2136811, - 2136814, - 2136820, - 2136817, - 2136823, - 2136827, - 2136838, - 2136856, - 2136858, - 2136863, - 2136866, - 2136867, - 2136869, - 2136871, - 2136872, - 2136873, - 2136874, - 2136878, - 2136879, - 2136882, - 2136900, - 2136899, - 2136911, - 2136909, - 2136910, - 2136913, - 2136920, - 2136948, - 2136979, - 2136963, - 2136977, - 2136982, - 2136983, - 2136991, - 2136992, - 2137000, - 2137012, - 2137024, - 2137034, - 2137017, - 2137030, - 2137039, - 2137041, - 2137042, - 2137059, - 2137058, - 2137060, - 2137044, - 2137057, - 2137146, - 2137074, - 2137073, - 2137072, - 2137109, - 2137108, - 2137097, - 2137107, - 2137100, - 2137094, - 2137096, - 2137106, - 2137098, - 2137092, - 2137134, - 2137115, - 2137125, - 2137124, - 2137121, - 2137136, - 2137159, - 2137138, - 2137158, - 2137150, - 2137178, - 2137184, - 2137191, - 2137206, - 2137208, - 2137319, - 2137324, - 2137328, - 2137353, - 2137352, - 2137323, - 2137347, - 2137350, - 2137386, - 2137382, - 2137519, - 2137379, - 2137375, - 2137412, - 2137365, - 2137362, - 2137409, - 2137407, - 2137406, - 2137414, - 2137416, - 2137437, - 2137438, - 2137444, - 2137425, - 2137424, - 2137433, - 2137458, - 2137481, - 2137479, - 2137515, - 2137455, - 2137466, - 2137498, - 2137508, - 2137513, - 2137522, - 2137540, - 2137537, - 2137531, - 2137528, - 2137530, - 2137542, - 2137551, - 2137538, - 2137561, - 2137555, - 2137592, - 2137574, - 2137581, - 2137583, - 2137597, - 2137626, - 2137627, - 2137630, - 2137717, - 2137721, - 2137725, - 2137729, - 2137736, - 2137739, - 2137740, - 2137746, - 2137749, - 2137745, - 2137757, - 2137765, - 2137769, - 2137784, - 2137770, - 2137773, - 2135905, - 2137804, - 2137806, - 2137807, - 2137808, - 2137812, - 2137820, - 2137822, - 2137821, - 2137824, - 2137829, - 2137832, - 2137839, - 2137844, - 2137846, - 2137847, - 2137849, - 2137851, - 2137852, - 2137853, - 2137863, - 2137864, - 2127543, - 2137877, - 2137889, - 2137900, - 2137918, - 2137930, - 2137938, - 2137940, - 2137955, - 2137951, - 2137952, - 2137953, - 2137958, - 2137959, - 2137964, - 2137962, - 2137975, - 2137970, - 2137974, - 2138005, - 2138012, - 2138016, - 2119727, - 2124231, - 2134105, - 2126948, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 2119006, - 4233460, - 4222626, - 4234287, - 4222443, - 4231106, - 4221725, - 4215721, - 2264285, - 4216386, - 4233484, - 2126128, - 4229462, - 2137559, - 4231142, - 4218978, - 4219600, - 4220518, - 4216221, - 4228187, - 4233092, - 2119321, - 2112846, - 4227056, - 4227051, - 4218813, - 4225351, - 2117600, - 6312831, - 4214981, - 2133696, - 4216240, - 2124507, - 4217937, - 4233076, - 4225345, - 4219239, - 2250868, - 2129515, - 2130758, - 2264822, - 4214822, - 4217548, - 4219762, - 2137724, - 4229882, - 4218359, - 2123323, - 4222621, - 2137780, - 4234592, - 4224273, - 4231623, - 4221322, - 2123781, - 4228521, - 4234198, - 4231942, - 4223946, - 4215793, - 2120802, - 4231278, - 4220755, - 4223100, - 2129505, - 4231499, - 4220633, - 2125338, - 4228527, - 4228599, - 4216040, - 4218592, - 4221090, - 2131235, - 2134444, - 4233112, - 4228949, - 4233073, - 4231191, - 4227040, - 4220026, - 4231197, - 2131948, - 4220080, - 4220947, - 4223310, - 4223357, - 4229742, - 4216396, - 4231265, - 4215413, - 2122772, - 4224550, - 4231260, - 2136658, - 4227455, - 4234971, - 4216132, - 4222959, - 2126882, - 4228856, - 2121213, - 4231103, - 4221146, - 4234312, - 4221501, - 2128926, - 4229691, - 4223014, - 4215243, - 4219735, - 4221388, - 4232090, - 4216922, - 2122833, - 4231469, - 4220130, - 4222650, - 2119777, - 2136154, - 4216885, - 4217952, - 4228063, - 4230381, - 4216920, - 2128305, - 4234503, - 2125830, - 4223006, - 4216440, - 4231233, - 4233235, - 4231331, - 4229902, - 4223064, - 4221282, - 4225456, - 2119370, - 4223564, - 4231193, - 4225508, - 2118237, - 4225976, - 2125649, - 2134449, - 4219709, - 4219465, - 4221451, - 4220874, - 4225559, - 4231228, - 4217499, - 4229932, - 4218591, - 4222997, - 2136123, - 4228413, - 4224933, - 4217385, - 4218518, - 4222177, - 4228332, - 2136112, - 4234322, - 2137781, - 4215090, - 4233477, - 4226174, - 4232275, - 4219144, - 4224594, - 4223799, - 4223380, - 4227072, - 2130954, - 4231292, - 2125603, - 2126153, - 2131182, - 4221332, - 2131999, - 2117972, - 4215177, - 2118037, - 4215204, - 4216121, - 4216115, - 4216292, - 4216370, - 4216485, - 4216843, - 4217534, - 2234906, - 2120795, - 4218468, - 4219031, - 4219753, - 4219910, - 2123042, - 4220291, - 4220838, - 2123770, - 4221083, - 2123918, - 4222574, - 2245584, - 2126376, - 4223950, - 4224260, - 4224269, - 4224277, - 4224659, - 4225148, - 4225585, - 4235165, - 4225945, - 4226192, - 4226222, - 4226459, - 4226478, - 4226463, - 4227028, - 4227630, - 4227725, - 4227794, - 4227875, - 4227957, - 4228375, - 2131262, - 4228994, - 4229074, - 4229386, - 4229551, - 4229854, - 4229953, - 4230618, - 4230665, - 4230931, - 4231146, - 4231145, - 4231256, - 4219464, - 4231617, - 4232635, - 2127714, - 4232996, - 4233056, - 4233069, - 4233252, - 4234030, - 4234135, - 4234226, - 4234922, - 4235164, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 4227750, - 4227880, - 2119251, - 6312873, - 4223577, - 4222066, - 4225800, - 4233559, - 4219635, - 4233488, - 6330221, - 6320509, - 4225663, - 4225965, - 4219843, - 6325215, - 4225378, - 4215771, - 4225991, - 4231108, - 4226110, - 4214986, - 4215573, - 4216233, - 4216494, - 4216857, - 4217115, - 4217896, - 4218576, - 4218575, - 4219457, - 4220609, - 4221960, - 4222499, - 4222700, - 4225687, - 4226013, - 4227049, - 4228130, - 4228953, - 4229134, - 6326226, - 4233753, - 4234925, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 4231202, - 4231099, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 2118108, - 2126233, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 2129546, - 2132252, - 2134856, - 2134664, - 2131164, - 2117577, - 2126011, - 2123313, - 2123976, - 2134777, - 2123515, - 2121541, - 2117160, - 2117345, - 2117372, - 2117376, - 2117379, - 2117433, - 2117462, - 2117522, - 2117514, - 2117530, - 2117524, - 2117581, - 2117696, - 2117666, - 2117631, - 2117662, - 2117702, - 2117744, - 2117698, - 2117780, - 2117876, - 2117848, - 2117962, - 2117988, - 2118045, - 2118078, - 2118124, - 2118165, - 2118300, - 2118310, - 2118336, - 2118363, - 2118400, - 4215559, - 2118436, - 2118514, - 2118547, - 2118578, - 2118621, - 2161166, - 2118812, - 2118794, - 2118825, - 2118911, - 2119046, - 2119513, - 2119525, - 2119596, - 2119624, - 2119623, - 2161167, - 6314074, - 2119838, - 2119858, - 2119947, - 2120019, - 2120027, - 2120029, - 2120035, - 2120100, - 2120122, - 2120534, - 2120640, - 2127151, - 2120664, - 4217819, - 2120734, - 2120870, - 2120890, - 2120949, - 2120999, - 2121043, - 4258321, - 2121026, - 2121069, - 2121144, - 2121145, - 2121168, - 2121505, - 2121524, - 2121575, - 2121655, - 2121694, - 2121821, - 2121861, - 2121866, - 2121950, - 2121941, - 2122016, - 2121970, - 2122001, - 2122039, - 2122032, - 2122136, - 2122259, - 2122406, - 2122741, - 2122848, - 2122909, - 2122958, - 2123086, - 2123264, - 2123285, - 2123273, - 2123310, - 4220446, - 2123300, - 2123365, - 2123351, - 2123353, - 2123380, - 2123379, - 2123417, - 2123424, - 2123442, - 2123455, - 2123514, - 2123534, - 6317847, - 2123622, - 2123707, - 4221010, - 2123712, - 4220929, - 2123844, - 2123983, - 2161171, - 2124136, - 2161172, - 2124184, - 2124258, - 2124336, - 2124395, - 2124358, - 2124403, - 2124414, - 2124514, - 2124516, - 2124758, - 2124863, - 2124892, - 2124934, - 2124911, - 2125018, - 2125060, - 2125191, - 2125167, - 2125206, - 2125228, - 2125263, - 2125304, - 2125298, - 2125308, - 2125369, - 2125404, - 2125351, - 2125372, - 2125503, - 2125704, - 2125749, - 2125813, - 2125829, - 2125831, - 2125864, - 2125957, - 2125995, - 2126095, - 2126084, - 2126172, - 2126150, - 2126151, - 10506718, - 2126273, - 2126334, - 2126513, - 2126526, - 2126628, - 2126634, - 2126711, - 2126781, - 2126793, - 2126806, - 2126819, - 2126802, - 2126855, - 2126837, - 2126886, - 2126890, - 2126889, - 2126894, - 4224098, - 2126985, - 2127007, - 2127105, - 2127215, - 2127490, - 2127516, - 2127518, - 2127515, - 2127526, - 4224714, - 2127686, - 2118319, - 2127905, - 2127950, - 2127972, - 2127994, - 2128176, - 4225340, - 2128222, - 2128229, - 2128276, - 4225423, - 2128283, - 2128593, - 2128615, - 4233046, - 2128619, - 2128798, - 2129086, - 2129224, - 4226396, - 2129335, - 2129312, - 2129366, - 2129490, - 2129735, - 2129825, - 2129853, - 2130689, - 2130786, - 2130815, - 2130887, - 2130934, - 2131016, - 2131124, - 2131283, - 2131289, - 2131307, - 2161183, - 2131376, - 4228626, - 2161185, - 2131975, - 2132213, - 2132498, - 2132535, - 2132601, - 2132647, - 2132670, - 2132703, - 2132728, - 2132726, - 2132819, - 2132863, - 2133232, - 2133236, - 2133266, - 2133366, - 2161187, - 2133711, - 4258340, - 6328376, - 2134119, - 2134238, - 2134269, - 2134293, - 2134311, - 2134490, - 2134487, - 2134494, - 2134509, - 2134510, - 2134500, - 2134501, - 2134534, - 2134544, - 2134538, - 2134586, - 2134592, - 2134588, - 2134606, - 2134617, - 2134609, - 2134585, - 2134631, - 2134695, - 2134647, - 2134648, - 2134759, - 2134743, - 2134745, - 2134736, - 2161191, - 2134741, - 2134752, - 2134739, - 2134821, - 2134817, - 2134779, - 2161192, - 2134814, - 2134783, - 2134813, - 2134786, - 2134896, - 2134871, - 2134948, - 2134982, - 2135006, - 2135032, - 2135089, - 2135109, - 2135112, - 2135442, - 6329990, - 2161193, - 2135709, - 2135727, - 2135859, - 2135867, - 2135875, - 2135885, - 2135887, - 2135889, - 4233045, - 2136151, - 2136165, - 2136303, - 4233468, - 2136359, - 4233512, - 2136478, - 2136654, - 2136793, - 2136796, - 2136949, - 2136946, - 2136975, - 2137009, - 2137019, - 2137088, - 2137456, - 2137451, - 2137524, - 2137625, - 2137809, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 6319336, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 4231224, - 2132737, - 2129379, - 2137795, - 2125483, - 2128269, - 2121876, - 2125175, - 4219240, - 2124266, - 2125364, - 4229392, - 4222754, - 4216424, - 2123234, - 2128200, - 2131547, - 4233215, - 4215524, - 2132793, - 2122733, - 2122954, - 2127951, - 2128448, - 2124730, - 4225353, - 4229526, - 2126190, - 4225342, - 4227077, - 4227565, - 2128221, - 4220561, - 2129778, - 2125193, - 2126528, - 4219214, - 2127646, - 4225984, - 4225366, - 4215015, - 4217956, - 2121186, - 2122126, - 4230408, - 2118525, - 2119174, - 4228183, - 2121653, - 4219378, - 4232110, - 4225422, - 4234029, - 4225665, - 2135779, - 2123909, - 4226625, - 2123354, - 2118481, - 2128017, - 2133203, - 2123087, - 4214702, - 4214645, - 4216896, - 2118345, - 2124645, - 2119848, - 2124751, - 4215117, - 2122302, - 2128208, - 2124548, - 4232838, - 2131548, - 2125274, - 2136158, - 2123462, - 2124663, - 2129396, - 2134858, - 6315722, - 2134788, - 4221314, - 4215220, - 4219724, - 4228827, - 4231305, - 6328354, - 4214857, - 4226543, - 4231253, - 8410025, - 6330636, - 4229211, - 4218614, - 6319295, - 4231771, - 4227009, - 6324925, - 4232901, - 4217779, - 6316392, - 6318466, - 4221883, - 4220258, - 4230315, - 4218316, - 4233233, - 4218416, - 4230860, - 4225710, - 4216647, - 4214929, - 4225652, - 4214885, - 4218618, - 4231735, - 4221582, - 4214436, - 4215148, - 4220660, - 4220961, - 4225132, - 4226398, - 4227075, - 4230396, - 4232781, - 4219639, - 4226922, - 4214655, - 4215794, - 4217289, - 4229917, - 4231338, - 4215758, - 4230959, - 4220884, - 4224940, - 4227612, - 4221295, - 4220798, - 4229663, - 4214280, - 4216820, - 4221197, - 4227191, - 4229546, - 4231234, - 4219758, - 4219970, - 4227641, - 4226511, - 4227169, - 4214991, - 4229781, - 4218981, - 4215110, - 4224826, - 4227188, - 4230643, - 4218541, - 4218615, - 4227655, - 4220995, - 4231171, - 4222270, - 4219794, - 4230953, - 4223981, - 4233234, - 4219058, - 6316617, - 4220304, - 4226507, - 4229817, - 4230311, - 4223542, - 4228218, - 4215302, - 4216436, - 4219300, - 4226185, - 4226331, - 4232944, - 6325565, - 4214719, - 4219751, - 4224710, - 4221021, - 4227336, - 4227126, - 4227068, - 4215823, - 4232867, - 4234911, - 4234903, - 4227183, - 4227198, - 4222590, - 4214917, - 4215187, - 4215259, - 2230542, - 4215616, - 4232921, - 6313385, - 4216513, - 4216589, - 4217003, - 4217306, - 4217398, - 6314686, - 4218190, - 4218247, - 4218313, - 4218323, - 4218669, - 4218776, - 4219096, - 4219197, - 4219390, - 4219496, - 4219599, - 4220189, - 4219919, - 4220146, - 4220253, - 4220511, - 4220841, - 4220903, - 4221291, - 4221232, - 4221351, - 4221508, - 4221584, - 6319112, - 4221971, - 6319651, - 4222737, - 4222718, - 4222782, - 4223487, - 4223973, - 4224050, - 4224095, - 4224224, - 4224268, - 4224626, - 4225322, - 4225236, - 4225466, - 4225561, - 4225685, - 4226290, - 4226419, - 4226525, - 4226613, - 4226990, - 4227041, - 4227162, - 4227167, - 4227187, - 4227184, - 4227190, - 4227411, - 4227466, - 4227509, - 4227533, - 4228082, - 4228437, - 4228565, - 4228890, - 4229174, - 4229278, - 4229336, - 4229364, - 4229419, - 4229435, - 4229482, - 4229487, - 4229661, - 4230405, - 4230415, - 4235086, - 4230801, - 4230817, - 4231250, - 4231182, - 4231472, - 4231510, - 4231512, - 4231525, - 4231539, - 4231538, - 4231586, - 4231599, - 4231594, - 4231604, - 4231610, - 4232311, - 4232856, - 4233021, - 6330208, - 6330225, - 4233228, - 4233331, - 4233411, - 4233797, - 4234061, - 4234072, - 4234182, - 4234209, - 4234225, - 4234568, - 4234703, - 4235016, - 4219505, - 4220567, - 4219151, - 4229219, - 6328405, - 4231290, - 4225263, - 2133151, - 4232936, - 2255185, - 10507177, - 4224220, - 4231243, - 8427788, - 2275288, - 2134707, - 2135473, - 6315766, - 4219892, - 2124991, - 4223321, - 4231264, - 6328923, - 4220348, - 4218752, - 6324161, - 4215672, - 4233203, - 4215574, - 4227761, - 4228051, - 4230312, - 4231246, - 2130621, - 6330053, - 4233491, - 4218619, - 4223088, - 6314931, - 8413544, - 10510696, - 12607848, - 4221418, - 8415618, - 2123630, - 2132434, - 4232852, - 2118258, - 4230980, - 4232076, - 4227781, - 4217810, - 4224176, - 4226537, - 2253346, - 4231300, - 4232594, - 4233171, - 4227608, - 4215665, - 4207618, - 2110466, - 6304770, - 4218494, - 2123235, - 4220703, - 4221535, - 4230519, - 4233442, - 2231223, - 4216235, - 4228688, - 4231174, - 4215754, - 4215864, - 4218917, - 4226330, - 4218344, - 4219602, - 4230621, - 2268491, - 4365643, - 2118527, - 2121530, - 4218960, - 4221377, - 4339258, - 2275214, - 4231415, - 6330367, - 6330711, - 4220545, - 4223883, - 4231121, - 2117617, - 4225001, - 4215159, - 4228702, - 4225658, - 4231239, - 6318811, - 4216147, - 4217169, - 4218997, - 6316391, - 4231118, - 6312081, - 4222804, - 6322804, - 4220680, - 4227615, - 4215164, - 4215352, - 4219314, - 2123587, - 4227241, - 4229913, - 4231267, - 2230884, - 2132481, - 2122294, - 4232903, - 4233319, - 2118707, - 2120219, - 4229796, - 4218341, - 4219212, - 2122373, - 4219815, - 4221387, - 4222313, - 4222511, - 4227093, - 4227412, - 4227922, - 4229915, - 6327548, - 2118719, - 4231543, - 4227440, - 6321425, - 4231100, - 2275142, - 4232086, - 2275191, - 4218729, - 4219809, - 2124658, - 4228060, - 6312372, - 4215986, - 4215370, - 2127138, - 2116408, - 4217343, - 6314495, - 2121215, - 4229870, - 6327022, - 4230343, - 6327495, - 4221729, - 6318881, - 4222667, - 2126778, - 2231199, - 4219752, - 4220316, - 6328490, - 2118394, - 6320693, - 2126389, - 4231500, - 4218673, - 4214331, - 4215767, - 4219784, - 2118760, - 4226370, - 4227026, - 4229190, - 4231217, - 4214607, - 4229203, - 4231152, - 4218337, - 4231285, - 6328437, - 4219456, - 4220664, - 4217203, - 4215517, - 4216134, - 4217781, - 2120710, - 4217871, - 2282820, - 2120729, - 4222344, - 4225117, - 4227222, - 2228235, - 2120578, - 2119630, - 4219077, - 6313972, - 4233470, - 6318349, - 4221846, - 4233439, - 2136288, - 2266751, - 2111373, - 4214709, - 2111738, - 4222328, - 4224799, - 4231218, - 2117307, - 2228642, - 4215299, - 4217867, - 4229642, - 6326794, - 4231109, - 2286953, - 6328386, - 2110751, - 2275153, - 4219408, - 4224731, - 4227158, - 2132352, - 4229792, - 4229835, - 4233052, - 6330204, - 2128389, - 4227334, - 4232891, - 4226125, - 6323136, - 2132650, - 4232938, - 2129237, - 4219463, - 2125720, - 4226977, - 6324793, - 4231288, - 4231287, - 4215373, - 4215144, - 4219779, - 2122743, - 2127398, - 4230512, - 4231169, - 4231277, - 4231200, - 2260919, - 4231199, - 4230346, - 4217866, - 6315018, - 4217253, - 2243838, - 4231168, - 4231214, - 4232842, - 4234203, - 4217127, - 2110503, - 4223015, - 4231252, - 2130219, - 4214329, - 4221774, - 4223149, - 6326933, - 4220566, - 4214820, - 4226926, - 4225993, - 2251479, - 4225873, - 4231184, - 4220913, - 4222184, - 4233680, - 4218731, - 4218805, - 6316530, - 4220701, - 2125678, - 4229823, - 4224756, - 4220693, - 6317845, - 4216988, - 4231165, - 4231194, - 4216682, - 4231651, - 4215880, - 4218397, - 4225547, - 4224644, - 4231273, - 4231149, - 4222459, - 4215118, - 4231188, - 4225082, - 2119457, - 2232893, - 2118060, - 4216080, - 2129110, - 4228580, - 4229892, - 6328323, - 4231183, - 4233776, - 4217870, - 4231251, - 2118686, - 2112392, - 2117991, - 4227209, - 4214387, - 4218829, - 4229773, - 2120679, - 4226317, - 4229511, - 6319422, - 4227258, - 4215642, - 4228484, - 4231147, - 4226587, - 4227207, - 2117175, - 4222801, - 4231601, - 4214580, - 4215332, - 4215626, - 4218374, - 4224340, - 4220521, - 4228419, - 4231295, - 4218798, - 4235067, - 4215609, - 2247956, - 2121573, - 2120172, - 4217324, - 4229717, - 2121369, - 4224453, - 4217446, - 4220279, - 4222318, - 4230304, - 6327456, - 4220685, - 4229510, - 4214297, - 4218467, - 4218483, - 4218634, - 4228369, - 4214863, - 4226536, - 4231124, - 4231245, - 4226111, - 4215557, - 4218153, - 4219569, - 4220683, - 4225074, - 4226603, - 4227294, - 4228108, - 4231334, - 6328486, - 4233469, - 4234604, - 4214433, - 4218429, - 4218840, - 4218841, - 4219455, - 4220699, - 6317851, - 4215186, - 4220009, - 4227067, - 4215265, - 4225256, - 4234068, - 4234939, - 4221401, - 6318173, - 2110568, - 2138036, - 4226669, - 4234943, - 6324488, - 4220430, - 4224735, - 4231159, - 4217220, - 2118352, - 4224754, - 4227095, - 4219451, - 4226315, - 2135528, - 4226308, - 4230797, - 2275209, - 6318202, - 2123777, - 4219145, - 2132717, - 4230968, - 4215495, - 4220681, - 4223798, - 6320950, - 6320951, - 2250367, - 4231242, - 4220636, - 2129802, - 4229505, - 4233482, - 4227020, - 6324220, - 2133686, - 4228653, - 4223879, - 4235149, - 6332301, - 4220357, - 2138052, - 4223440, - 6330019, - 4234327, - 6332063, - 2129019, - 2121417, - 4219280, - 2134051, - 8414999, - 2129922, - 2254512, - 6312138, - 4215066, - 6312276, - 6312341, - 2229800, - 4215437, - 4215511, - 2228362, - 2230660, - 2110782, - 4215775, - 4220668, - 6313267, - 6313444, - 2118741, - 4216512, - 2119993, - 4217372, - 4217538, - 2120566, - 4217795, - 2120724, - 2111458, - 2120934, - 4218452, - 2117192, - 4218595, - 6316183, - 2122452, - 4219596, - 4219932, - 4219846, - 4219944, - 2255257, - 2122523, - 6317663, - 8414815, - 2123363, - 4220661, - 2241484, - 4221085, - 4221069, - 2124278, - 2124166, - 2271718, - 4217832, - 4221371, - 2124748, - 6319889, - 2125335, - 4222872, - 4222122, - 2124970, - 4223003, - 4223330, - 4223547, - 2117164, - 4223772, - 4224202, - 2127087, - 2127221, - 2127340, - 2127438, - 2113457, - 2127722, - 2127785, - 4225344, - 2138054, - 6322515, - 4235083, - 4225454, - 4231299, - 2128723, - 2275261, - 4226068, - 2114148, - 4226128, - 4226136, - 4226374, - 4226403, - 4226594, - 6323746, - 2129480, - 6323765, - 4226627, - 4226700, - 2286200, - 2229567, - 2253418, - 4350576, - 4227013, - 4227014, - 6324201, - 2130241, - 2114643, - 4227672, - 2130553, - 6324857, - 4227705, - 4227811, - 2118009, - 2130778, - 4228128, - 4228029, - 4228340, - 2114853, - 4228487, - 2131444, - 2228400, - 4228919, - 4228923, - 4229125, - 4229053, - 2131581, - 6326326, - 2110510, - 2132166, - 4229565, - 4229851, - 4229950, - 4229978, - 4230515, - 4230553, - 2115558, - 4230708, - 2287338, - 4231151, - 4231303, - 4231162, - 4231198, - 4231221, - 4231248, - 2133960, - 4231297, - 4231306, - 6328458, - 8425610, - 10522762, - 12619914, - 14717066, - 6328457, - 8425609, - 10522761, - 12619913, - 14717065, - 16814217, - 18911369, - 21008521, - 23105673, - 25202825, - 27299977, - 29397129, - 2263431, - 4232157, - 4232636, - 2264599, - 4232882, - 4233049, - 2136121, - 4233451, - 4233475, - 4233481, - 4233541, - 6330693, - 4233547, - 2136584, - 4233823, - 4233829, - 4233967, - 4234008, - 2137055, - 4234505, - 4234504, - 4234917, - 4234956, - 6332168, - 4235082, - 2275354, - 4235111, - 4367898, - 4342510, - 2245358, - 4229404, - 4221128, - 4220667, - 4218693, - 4215552, - 2118537, - 4217171, - 2161169, - 2123858, - 4221555, - 2243774, - 2229777, - 4229650, - 2117124, - 2117125, - 2117151, - 2117163, - 2117167, - 2117168, - 2117184, - 2117185, - 2117188, - 2117210, - 2117247, - 2117261, - 2117270, - 2117305, - 2117328, - 2117344, - 2117373, - 2117375, - 2117387, - 2117397, - 2117472, - 2117435, - 2117449, - 2117460, - 2117498, - 2117501, - 2117502, - 2117527, - 2117566, - 2117583, - 2117629, - 2117632, - 2117633, - 2117648, - 2117659, - 2117671, - 2117678, - 2117719, - 2117734, - 2117738, - 2117691, - 2117775, - 2117782, - 2117788, - 2117836, - 2117862, - 2117865, - 2117871, - 2117896, - 2117899, - 2117904, - 2117915, - 2117918, - 2117983, - 2118049, - 2118076, - 6312414, - 2118126, - 2118132, - 2118145, - 2118146, - 2118163, - 2118217, - 2118241, - 2118246, - 2118291, - 2118344, - 2118384, - 2118410, - 2118411, - 2118462, - 2118476, - 2118475, - 2118497, - 2118508, - 2118571, - 2118618, - 2118630, - 2118645, - 2118695, - 2118733, - 2118758, - 2118763, - 2118772, - 2118797, - 2118806, - 2118817, - 2118829, - 2118841, - 2118847, - 2118854, - 2118861, - 2118926, - 2118955, - 2118965, - 2118986, - 2119008, - 4216161, - 2119048, - 2119054, - 2119176, - 2119182, - 2119183, - 2119223, - 2119231, - 2119241, - 2119243, - 2119247, - 2119270, - 2119273, - 2119279, - 2119281, - 2119282, - 2119317, - 2119322, - 2119340, - 2119341, - 2119345, - 2119369, - 2119389, - 2119396, - 2119434, - 2119445, - 2119459, - 2119471, - 2119475, - 2119476, - 2119500, - 2119536, - 2119564, - 2119580, - 2119608, - 2119654, - 2119661, - 2119669, - 2119670, - 2119679, - 2119689, - 2119712, - 2119730, - 2119804, - 2119808, - 2119849, - 2119886, - 2119888, - 2119892, - 2119898, - 2119913, - 2119948, - 2119972, - 2119983, - 2120033, - 2120045, - 2120138, - 2120146, - 2120157, - 2120163, - 2120164, - 2120196, - 2120204, - 2120227, - 2120263, - 2120277, - 2120291, - 2120301, - 2120318, - 2120350, - 2120359, - 2120364, - 2120371, - 2120416, - 2120448, - 2120473, - 2120485, - 2120493, - 2120513, - 2120572, - 2120574, - 2120575, - 2120586, - 2120739, - 2120747, - 2120752, - 2120803, - 2120809, - 2120828, - 2120907, - 2120914, - 2120948, - 2120996, - 2120998, - 2121027, - 2121030, - 2121034, - 2121106, - 2121108, - 2121113, - 2121120, - 2121176, - 2121184, - 2121208, - 2121216, - 2121234, - 2121236, - 2121237, - 2121240, - 2121262, - 2121304, - 2121323, - 2121324, - 2121384, - 2121386, - 2121406, - 2121407, - 4218571, - 2121426, - 2121479, - 2121486, - 2121500, - 2121501, - 2121506, - 2121512, - 2121526, - 2121531, - 2121536, - 2121552, - 2121560, - 2121572, - 2121609, - 2121628, - 2121639, - 2121636, - 2121647, - 2121656, - 2121668, - 2121673, - 2121697, - 2121705, - 2121709, - 2121724, - 2121751, - 2121754, - 2121779, - 2121825, - 2121855, - 2121886, - 2121892, - 2121904, - 2121931, - 2121947, - 2121976, - 2122002, - 2122003, - 2122004, - 2122012, - 2122108, - 2122125, - 2122143, - 2122152, - 2122178, - 2122207, - 2122261, - 2122281, - 2122307, - 2122310, - 2122316, - 2122321, - 2122326, - 2122436, - 2122492, - 2122506, - 2122509, - 2122520, - 2122553, - 2122562, - 2122563, - 2122597, - 2122612, - 2122621, - 2122628, - 2122631, - 2122640, - 2122654, - 2122705, - 2122716, - 2122761, - 2122768, - 2122786, - 2122836, - 2122843, - 2122861, - 2122875, - 2122942, - 2122943, - 2122981, - 2122999, - 2123003, - 2123012, - 2123030, - 2123033, - 2123079, - 2123111, - 2123137, - 2123141, - 2123202, - 2123248, - 2123250, - 2123308, - 2123340, - 2123355, - 2123356, - 2123361, - 2123371, - 4220535, - 2123428, - 2123464, - 2123500, - 2123525, - 2123539, - 2123571, - 2123592, - 2123596, - 2123638, - 2123643, - 2123696, - 2123698, - 2123769, - 2123735, - 2123737, - 2123760, - 2123820, - 2123824, - 2123825, - 2123867, - 2123890, - 2123893, - 2123898, - 2123908, - 2123941, - 2123954, - 2123984, - 2123990, - 2124008, - 2124013, - 2124016, - 2124017, - 2124028, - 2124049, - 2124051, - 2124085, - 2124091, - 2124119, - 2124131, - 2124146, - 2124159, - 2124160, - 2124198, - 2124205, - 2124215, - 2124246, - 2124247, - 2124289, - 2124303, - 2124309, - 2124328, - 2124340, - 2124350, - 2124357, - 2124368, - 2124369, - 2124374, - 2124379, - 2124419, - 2124425, - 2124433, - 2124445, - 2124446, - 2124447, - 2124508, - 2124519, - 2124524, - 2124574, - 2124580, - 2124597, - 2124614, - 2124630, - 2124640, - 2124674, - 2124734, - 2124769, - 2124785, - 2124816, - 2124851, - 2124853, - 4222010, - 2124889, - 2124918, - 2124923, - 2124933, - 2124949, - 2124956, - 2125008, - 2125012, - 2125014, - 2125024, - 2125035, - 2125036, - 2125038, - 2125066, - 2125070, - 2125073, - 2125102, - 2125143, - 2125150, - 2125157, - 2125186, - 2125247, - 2125252, - 2125258, - 2125270, - 2125289, - 2125346, - 2125393, - 2125511, - 2125514, - 2125518, - 2125565, - 2125594, - 2125610, - 2125615, - 2125619, - 2125658, - 2125662, - 2125666, - 2125693, - 2125707, - 2125709, - 2125714, - 2125716, - 2125722, - 2125735, - 2125736, - 2125750, - 2125786, - 2125790, - 4222969, - 2125881, - 2125884, - 4223050, - 2125908, - 2125917, - 2125918, - 2125924, - 2125932, - 2125950, - 2125953, - 2125973, - 2126007, - 2126035, - 2126036, - 2126040, - 2126044, - 2126087, - 2126112, - 2126129, - 2126154, - 2126162, - 2126176, - 2126201, - 2126226, - 4223411, - 2126283, - 2126291, - 2126294, - 2126336, - 2126365, - 2126379, - 2126392, - 2126401, - 2126419, - 2126421, - 2126422, - 2126428, - 2126477, - 2126509, - 2126516, - 2126535, - 2126587, - 2126596, - 2126597, - 2126632, - 2126641, - 2126659, - 2126700, - 2126716, - 2126723, - 2126725, - 2126726, - 2126741, - 2126750, - 2126751, - 2126752, - 2126758, - 2126763, - 2126773, - 2126775, - 2126780, - 2126799, - 2126809, - 2126825, - 2126836, - 2126845, - 2126852, - 2126858, - 2126874, - 2126875, - 2126884, - 2126888, - 2126892, - 2126895, - 2126896, - 2126897, - 2126905, - 2126916, - 2126919, - 2126923, - 2126925, - 2126929, - 2126935, - 2126950, - 2126955, - 2126961, - 2126976, - 2126981, - 2126982, - 2126983, - 2126992, - 2127000, - 2127004, - 2127008, - 2127011, - 2127016, - 2127019, - 2127029, - 2127039, - 2127048, - 2127066, - 2127070, - 2127182, - 2127225, - 2127233, - 2127248, - 2127250, - 2127251, - 2127284, - 2127332, - 2127353, - 2127360, - 2127370, - 2127381, - 2127382, - 2127385, - 2127390, - 2127405, - 2127413, - 2127427, - 2127435, - 2127461, - 2127469, - 2127471, - 2127473, - 2127476, - 2127524, - 2127525, - 2127557, - 2127564, - 2127596, - 2127612, - 2127668, - 2127670, - 2127708, - 2127711, - 2127712, - 2127730, - 2127741, - 2127765, - 2127786, - 2127846, - 2127856, - 2127860, - 2127878, - 2127906, - 2127917, - 2127918, - 2127920, - 2127925, - 2127976, - 2128030, - 2128072, - 2128076, - 2128078, - 2128100, - 2128096, - 2128097, - 2128114, - 2128119, - 2128123, - 2128177, - 4225332, - 2128187, - 2128189, - 2128197, - 2128219, - 2128220, - 2128267, - 2128278, - 2128280, - 2128312, - 2128315, - 2128330, - 2128346, - 2128387, - 2128393, - 2128401, - 2128414, - 2128429, - 2128441, - 2128453, - 2128460, - 2128477, - 4225632, - 2128493, - 2128504, - 2128544, - 2128547, - 2128563, - 2128571, - 2128572, - 2128582, - 2128647, - 2128660, - 2128679, - 2128689, - 2128711, - 2128718, - 2128736, - 2128745, - 2128749, - 2128754, - 2128785, - 2128815, - 2128855, - 2128857, - 2128907, - 2128911, - 2128928, - 2128934, - 2128945, - 2128950, - 2128977, - 2128985, - 2128999, - 2129006, - 2129008, - 2129084, - 2129087, - 2129096, - 2129097, - 2129111, - 2129113, - 2129117, - 2129131, - 2129159, - 2129160, - 2129161, - 2129171, - 2129181, - 2129187, - 2129217, - 2129235, - 2129241, - 2129245, - 2129274, - 2129286, - 2129291, - 2129292, - 2129356, - 2129387, - 2129393, - 2129401, - 2129416, - 2129425, - 2129429, - 2129440, - 2129479, - 2129506, - 2129518, - 2129523, - 2129549, - 2129553, - 2129560, - 2129732, - 2129743, - 2129746, - 2129747, - 2129761, - 2129809, - 2129855, - 2129870, - 2129887, - 2129893, - 2129900, - 2129902, - 2129903, - 2129914, - 2129934, - 2129937, - 2129940, - 2129956, - 2129958, - 2129978, - 2129980, - 2130016, - 2130033, - 2130037, - 2130078, - 2130086, - 2130091, - 2130135, - 2130136, - 2130198, - 2130200, - 2130234, - 2130250, - 2130252, - 2130305, - 2130308, - 2130356, - 2130383, - 2130425, - 2130435, - 2130465, - 2130482, - 2130484, - 2130502, - 2130507, - 2130511, - 2130574, - 2130606, - 2130615, - 2130622, - 2130630, - 2130686, - 2130755, - 2130769, - 2130773, - 2130822, - 2130829, - 2130834, - 2130840, - 2130857, - 2130879, - 2130880, - 2130922, - 2130959, - 2130961, - 2131018, - 2131062, - 2131112, - 2131119, - 2131136, - 2131138, - 2131184, - 2131197, - 2131212, - 2131252, - 2131294, - 2131343, - 2131383, - 2131406, - 2131373, - 2131474, - 2131497, - 2131538, - 2131555, - 2131564, - 2131567, - 2131578, - 2131597, - 2131601, - 2131608, - 2131623, - 2131624, - 2131706, - 2131709, - 2131723, - 2131731, - 2131737, - 2131742, - 2131752, - 2131774, - 2131825, - 2131848, - 2131865, - 2131884, - 2131885, - 2131893, - 2131926, - 2131947, - 2131949, - 2131969, - 4229123, - 2131974, - 2131979, - 2131988, - 2131996, - 2132054, - 2132063, - 2132068, - 2132120, - 2132138, - 2132157, - 2132158, - 2132170, - 2132178, - 2132187, - 2132208, - 2132209, - 2132230, - 2132248, - 2132249, - 2132250, - 2132263, - 2132272, - 2132286, - 2132347, - 2132436, - 2132438, - 2132453, - 2132465, - 2132487, - 2132495, - 2132501, - 2132514, - 2132558, - 2132607, - 2132724, - 2132767, - 2132791, - 2132803, - 2132804, - 2132820, - 2132892, - 2132894, - 2133063, - 2133076, - 2133107, - 2133156, - 2133209, - 2133217, - 2133240, - 2133246, - 2133275, - 2133353, - 2133356, - 2133380, - 2133389, - 2133397, - 2133414, - 2133446, - 2133454, - 2133476, - 2133484, - 2133536, - 2133579, - 2133612, - 2133616, - 2133626, - 2133650, - 2133678, - 2133683, - 2133713, - 4230868, - 2133753, - 2133783, - 2133814, - 2133926, - 2133941, - 2133942, - 4231110, - 2133984, - 2133988, - 2134006, - 2134018, - 2134060, - 2134084, - 2134152, - 2134165, - 2134169, - 2134171, - 2134178, - 2134196, - 2134231, - 2134237, - 2134260, - 2134295, - 2134300, - 2134321, - 2134330, - 2134333, - 2134344, - 2134363, - 2134369, - 2134372, - 2134414, - 2134430, - 2134440, - 2134445, - 2134446, - 2134450, - 2134460, - 2134512, - 2134519, - 2134523, - 2134535, - 2134568, - 2134579, - 2134584, - 2134595, - 2134599, - 2134607, - 2134624, - 2134722, - 2134731, - 2134732, - 2134751, - 2134797, - 2134805, - 2134815, - 2134823, - 2134855, - 2134866, - 4232037, - 2134890, - 2134893, - 2134939, - 2134970, - 2134953, - 2134977, - 2134986, - 2135010, - 2135034, - 2135037, - 2135055, - 2135092, - 2135103, - 2135125, - 2135147, - 2135154, - 2135416, - 2135462, - 2135465, - 4232619, - 2135476, - 2135485, - 2135514, - 2135581, - 2135617, - 2135640, - 2135684, - 2135716, - 2135721, - 2135762, - 2121138, - 2135774, - 2135785, - 2135793, - 2135810, - 2135817, - 2135898, - 2135907, - 2135918, - 2135923, - 2135962, - 2135970, - 2135989, - 2135990, - 2136025, - 2136030, - 2136052, - 2136074, - 2136078, - 2136094, - 2136099, - 2136107, - 2136126, - 2136146, - 2136147, - 2136153, - 2136172, - 2136248, - 2136250, - 2136255, - 2136264, - 2136293, - 2136370, - 2136371, - 2136384, - 2136397, - 2136412, - 2136415, - 2136497, - 2136505, - 2136506, - 2136521, - 2136578, - 2136598, - 2136612, - 2136615, - 2136621, - 2136622, - 2136630, - 2136632, - 2136650, - 2136662, - 2136757, - 2136758, - 2136825, - 2136835, - 2136864, - 2136883, - 2136884, - 2136947, - 2136953, - 2136999, - 2137025, - 2137031, - 2137047, - 2137063, - 2137067, - 2137079, - 2137082, - 2137085, - 2137099, - 2137127, - 2137130, - 2137142, - 2137153, - 2137171, - 2137187, - 2137200, - 2137207, - 2137346, - 2137410, - 2137415, - 2137443, - 2137449, - 2137468, - 2137470, - 2137485, - 2137521, - 2137539, - 2137543, - 2137558, - 2137567, - 2137579, - 2137588, - 2137621, - 2137629, - 2137764, - 2137768, - 2137772, - 2137831, - 2137838, - 2137872, - 2137874, - 2137879, - 2137881, - 2137903, - 2137911, - 2137913, - 2137921, - 2137925, - 2137943, - 2137960, - 2137969, - 2137973, - 2138000, - 2138004, - 2138018, - 4214320, - 2110469, - 4214624, - 2119200, - 2121419, - 4218704, - 4219044, - 2242106, - 4221732, - 2125817, - 2125542, - 2126259, - 4223531, - 4225734, - 4226913, - 4227185, - 4227230, - 4231094, - 4231676, - 4218290, - 4233182, - 2117587, - 2117849, - 2117872, - 2118083, - 2119286, - 2124372, - 2125057, - 2125264, - 2125378, - 2125529, - 2126820, - 2126881, - 2127212, - 2127953, - 2131957, - 2241534, - 2126760, - 2112243, - 2110683, - 2114572, - 2113162, - 4339140, - 2138045, - 2116584, - 2138044, - 2113242, - 2112290, - 2138046, - 2114938, - 2113683, - 4365885, - 2115173, - 2113795, - 2114195, - 2115246, - 2110600, - 2237961, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 2117448, - 2117471, - 2117482, - 2117484, - 2117646, - 2117656, - 2117697, - 2117874, - 2117840, - 2117894, - 2117891, - 2117941, - 2117973, - 2117975, - 2110645, - 2118090, - 2118114, - 2118231, - 2118348, - 2118358, - 2118395, - 2118428, - 2118499, - 2118557, - 2118674, - 2118783, - 2118792, - 2118992, - 2119041, - 2119085, - 2119118, - 2119227, - 2119326, - 2119337, - 2119347, - 2119543, - 2119548, - 2233115, - 2119631, - 2119652, - 2119780, - 2119817, - 2233454, - 2119890, - 2119904, - 2131521, - 2120075, - 2120082, - 2120131, - 2120211, - 2120295, - 2120311, - 2120324, - 2120388, - 2234557, - 2120573, - 2120595, - 2120722, - 2120814, - 2234036, - 2120826, - 2120847, - 2120863, - 2120867, - 2120874, - 2120912, - 2235956, - 2120973, - 2121031, - 2121089, - 2121124, - 2121127, - 2121163, - 2121310, - 2121465, - 2121472, - 2121474, - 2121507, - 2121533, - 2121556, - 2121597, - 2121741, - 2121748, - 2121752, - 2121781, - 2121799, - 2121885, - 2121940, - 2121949, - 2122027, - 2122172, - 2122169, - 2122274, - 2122330, - 2122351, - 2122454, - 2122620, - 2122725, - 2122873, - 2122948, - 2122960, - 2123049, - 2123165, - 2123322, - 2123298, - 2123307, - 2123312, - 2123315, - 2123336, - 2240964, - 2123383, - 2123384, - 2123405, - 2123451, - 2123483, - 2123496, - 2123591, - 2123649, - 2123667, - 2123672, - 2123675, - 2123772, - 2123805, - 2123939, - 2124042, - 2124105, - 2241988, - 2124098, - 2124132, - 2124197, - 2124239, - 2112438, - 2112451, - 2124265, - 2124277, - 2242367, - 2124347, - 2242403, - 2124436, - 2124453, - 2112527, - 2124571, - 2124588, - 2124647, - 2124713, - 2124717, - 2124759, - 2124799, - 2124805, - 2124916, - 2124952, - 2125051, - 2124998, - 2125105, - 2125113, - 2125119, - 2125144, - 2125204, - 2125226, - 2125275, - 2125277, - 2125380, - 2125406, - 2125489, - 2125505, - 2125584, - 2125657, - 2125665, - 2125694, - 2125708, - 2125728, - 2125756, - 2125767, - 2125770, - 2125808, - 2125902, - 2125941, - 2125988, - 2126052, - 2126123, - 2126110, - 2126126, - 2126161, - 2126184, - 2126213, - 2126215, - 2126266, - 2126276, - 2126357, - 2113087, - 2126491, - 2246641, - 2126631, - 2126672, - 2126694, - 2126754, - 2126891, - 2126918, - 2126946, - 2126957, - 2127014, - 2127017, - 2127049, - 2127103, - 2127127, - 2113394, - 2127310, - 2127362, - 2127368, - 2127460, - 2127489, - 2127517, - 2127530, - 2127542, - 2127566, - 2127572, - 2127590, - 2127601, - 2127626, - 2127641, - 2127693, - 2127694, - 2127738, - 2127744, - 2127764, - 2127840, - 2249870, - 2127939, - 2127982, - 2128048, - 2249998, - 2128045, - 2128128, - 2128156, - 2128174, - 2128180, - 2128198, - 2128249, - 2128328, - 2250609, - 2128340, - 2128350, - 2128363, - 2128365, - 2128517, - 2251204, - 2128590, - 2128637, - 2128658, - 2128685, - 2128699, - 2128751, - 2128897, - 2128947, - 2252193, - 2129005, - 2129017, - 2129039, - 2129044, - 2129056, - 2129109, - 2129201, - 2129244, - 2129283, - 2129318, - 2129346, - 2129448, - 2129815, - 2129883, - 2129973, - 2129975, - 2130122, - 2130144, - 2130163, - 2130272, - 2130279, - 2130280, - 2130285, - 2130363, - 2130378, - 2130391, - 2114651, - 2130528, - 2130548, - 2255615, - 2130593, - 2130595, - 2130596, - 2130601, - 2130623, - 2130645, - 2130685, - 2130688, - 2130722, - 2130733, - 2130746, - 2130759, - 2130813, - 2130855, - 2130895, - 2130897, - 2130913, - 2130945, - 2130950, - 2131039, - 2131056, - 2131059, - 2131077, - 2131102, - 2131130, - 2256448, - 2131250, - 2131230, - 2131247, - 2131300, - 2131322, - 2131340, - 2131362, - 2131403, - 2131437, - 2131455, - 2131460, - 2131461, - 2131472, - 2257140, - 2131480, - 2131512, - 2131543, - 2131554, - 2114973, - 2131573, - 2131640, - 2131708, - 2131847, - 2115050, - 2131978, - 2131984, - 2132174, - 2258564, - 2132274, - 2132281, - 2132288, - 2132372, - 2132470, - 2132551, - 2132573, - 2132577, - 2132597, - 2132688, - 2132806, - 2132825, - 2132841, - 2132893, - 2133065, - 2133096, - 2133423, - 2133457, - 2133463, - 2133539, - 2133565, - 2133627, - 2261623, - 2115652, - 2133754, - 2133790, - 2133805, - 2133844, - 2261965, - 2133992, - 2133998, - 2134024, - 2134061, - 2134167, - 2134195, - 2134206, - 2134212, - 2134213, - 2134215, - 2134255, - 2134292, - 2134294, - 2134306, - 2134307, - 2134319, - 2134324, - 2134403, - 2134513, - 2134857, - 2134884, - 2134885, - 2134947, - 2135007, - 2135044, - 2135091, - 2135114, - 2135139, - 2135153, - 2135438, - 2135455, - 2135468, - 2135478, - 2135499, - 2135504, - 2135507, - 2116016, - 2135518, - 2135717, - 2135791, - 2135886, - 2135957, - 2135982, - 2135994, - 2136001, - 2136009, - 2136027, - 2136150, - 2136295, - 2136408, - 2136579, - 2136769, - 2136771, - 2136782, - 2136790, - 2136834, - 2136840, - 2116631, - 2136877, - 2136926, - 2136934, - 2136964, - 2136970, - 2136990, - 2137038, - 2137061, - 2137080, - 2137123, - 2137167, - 2137168, - 2137189, - 2137373, - 2137374, - 2137411, - 2137426, - 2137482, - 2137494, - 2137536, - 2137516, - 2137532, - 2269584, - 2137575, - 2137607, - 2137758, - 2137775, - 2138007, - 2228361, - 2117122, - 2117135, - 2117138, - 2117161, - 2117166, - 2117191, - 2228386, - 2117201, - 2110470, - 2228388, - 2117225, - 2117277, - 2110508, - 2117308, - 2117315, - 2117320, - 2117355, - 2117338, - 2117361, - 2117365, - 2117398, - 2117476, - 2117431, - 2117438, - 2117464, - 2228755, - 2117495, - 2117496, - 2117506, - 2117509, - 2117606, - 2117554, - 2117573, - 2117579, - 2117586, - 2110570, - 2117618, - 2117651, - 2117660, - 2117710, - 2117715, - 2117731, - 2117795, - 2117768, - 2117778, - 2117779, - 2117781, - 2117802, - 2229035, - 2117809, - 2117818, - 2117819, - 2117828, - 2117831, - 2117875, - 2229121, - 2117838, - 2229105, - 2117844, - 2117857, - 2110610, - 2229241, - 2117911, - 2229322, - 2117984, - 2229513, - 2118003, - 2118019, - 2118027, - 2110652, - 2118040, - 2118051, - 2118061, - 2110663, - 2229718, - 2118131, - 2118162, - 2118166, - 2230095, - 2118229, - 2118236, - 2118252, - 2118263, - 2118276, - 2118274, - 2230279, - 2118296, - 2230330, - 2118308, - 2118330, - 2118331, - 2118346, - 2118353, - 2230457, - 2118391, - 2118453, - 2118466, - 2230652, - 2230685, - 2118503, - 2118522, - 2118564, - 2118580, - 2230995, - 2118583, - 2118592, - 2231069, - 2110813, - 2110814, - 2118613, - 2110819, - 2118644, - 2118692, - 2118696, - 2110830, - 2118723, - 2118754, - 2118764, - 2118805, - 2118816, - 2118822, - 2118830, - 2118839, - 2118842, - 2118851, - 2231621, - 2118892, - 2118895, - 2118897, - 2118899, - 2118912, - 2118913, - 2118921, - 2118972, - 2118977, - 2110886, - 2118983, - 2110888, - 2119012, - 2231777, - 2119037, - 2119042, - 2119057, - 2110917, - 2119122, - 2231957, - 2231917, - 2119103, - 2119113, - 2119116, - 2119121, - 2119133, - 2110938, - 2119138, - 2231908, - 2119145, - 2119208, - 2232159, - 2119175, - 2119184, - 2119216, - 2110964, - 2119229, - 2119232, - 2119239, - 2119262, - 2119264, - 2119277, - 2110981, - 2119304, - 2119308, - 2119325, - 2119336, - 2119346, - 2119365, - 2119373, - 2119391, - 2119400, - 2119414, - 2119415, - 2232833, - 2232917, - 2119465, - 2232955, - 2119493, - 2119494, - 2119501, - 2232948, - 2119528, - 2119535, - 2119539, - 2119540, - 2119541, - 2119547, - 2233060, - 2233047, - 2119578, - 2119581, - 2119582, - 2119592, - 2119639, - 2233085, - 2119628, - 2233142, - 2233156, - 2119646, - 2119664, - 2111050, - 2119672, - 2119675, - 2119677, - 2119684, - 2119710, - 2119719, - 2119737, - 2233284, - 2119753, - 2119756, - 2119783, - 2119818, - 2119819, - 2119821, - 2119823, - 2119824, - 2119828, - 2119837, - 2119850, - 2119857, - 2233453, - 2119875, - 2119885, - 2119906, - 2119923, - 2119924, - 2119941, - 2119942, - 2119949, - 2119956, - 2233815, - 2111121, - 2119997, - 2111129, - 2120006, - 2111126, - 2255913, - 2120031, - 2233927, - 2120053, - 2120054, - 2120060, - 2120095, - 2120110, - 2120124, - 2120136, - 2120141, - 2120158, - 2120167, - 2120174, - 2234118, - 2234178, - 2111183, - 2120205, - 2120215, - 2120231, - 2120237, - 2120293, - 2120314, - 2120331, - 2120348, - 2120351, - 2120352, - 2120354, - 2120369, - 2120373, - 2120378, - 2120383, - 2120410, - 2120412, - 2120421, - 2120432, - 2120430, - 2120437, - 2120456, - 2120471, - 2120500, - 2120524, - 2120530, - 2120552, - 2120559, - 2120577, - 2120580, - 2234819, - 2120598, - 2120620, - 2111329, - 2111330, - 2120654, - 2120662, - 2111340, - 2111339, - 2120689, - 2120701, - 2111349, - 2120707, - 2120745, - 2235478, - 2120799, - 2120807, - 2120808, - 2120816, - 2235693, - 2235717, - 2235768, - 2235746, - 2120840, - 2120842, - 2111425, - 2235809, - 2235804, - 2120864, - 2120866, - 2120871, - 2235794, - 2120877, - 2120885, - 2235831, - 2120905, - 2235872, - 2235955, - 2120966, - 2120976, - 2121003, - 2120989, - 2120992, - 2121009, - 2121017, - 2111464, - 2121057, - 2121066, - 2111476, - 2121072, - 2236190, - 2111485, - 2121096, - 2111488, - 2121111, - 2121136, - 2121140, - 2236278, - 2121169, - 2121175, - 2236410, - 2121188, - 2121193, - 2111535, - 2111542, - 2111552, - 2121247, - 2121278, - 2121289, - 2111580, - 2121302, - 2111585, - 2121325, - 2121326, - 2236795, - 2121381, - 2121388, - 2121401, - 2121414, - 2121433, - 2237214, - 2121469, - 2121480, - 2237357, - 2121502, - 2121543, - 2121571, - 2121586, - 2121598, - 2121615, - 2121634, - 2121671, - 2121675, - 2121682, - 2121683, - 2121684, - 2121698, - 2121710, - 2121711, - 2121715, - 2111767, - 2121762, - 2121764, - 2111770, - 2121804, - 2121877, - 2121896, - 2238195, - 2121905, - 2121918, - 2121928, - 2121945, - 2121966, - 2121973, - 2122000, - 2122009, - 2122014, - 2122042, - 2111855, - 2122049, - 2122054, - 2122080, - 2238555, - 2122130, - 2122131, - 2122135, - 2122149, - 2122157, - 2238635, - 2122197, - 2122205, - 2122229, - 2238863, - 2122275, - 2122322, - 2122337, - 2122340, - 2122363, - 2122349, - 2122355, - 2122393, - 2122453, - 2239160, - 2122493, - 2122499, - 2122512, - 2239311, - 2239312, - 2122546, - 2122549, - 2122555, - 2122556, - 2122561, - 2122564, - 2122574, - 2239302, - 2122585, - 2239517, - 2239398, - 2122604, - 2122649, - 2239524, - 2122644, - 2122685, - 2122708, - 2122709, - 2122720, - 2122731, - 2122732, - 2122738, - 2122782, - 2122789, - 2122793, - 2122799, - 2122842, - 2122845, - 2122867, - 2122877, - 2122887, - 2122897, - 2122911, - 2122955, - 2122956, - 2122965, - 2122967, - 2239969, - 2122980, - 2123007, - 2112110, - 2123023, - 2123028, - 2112115, - 2123038, - 2123058, - 2123076, - 2123092, - 2123115, - 2123130, - 2123140, - 2123146, - 2123186, - 2123189, - 2123192, - 2123199, - 2123209, - 2123220, - 2112214, - 2123257, - 2123260, - 2123268, - 2123272, - 2123297, - 2123306, - 2123333, - 2123345, - 2123342, - 2112234, - 2240963, - 2241013, - 2240950, - 2123370, - 2123372, - 2123373, - 2123387, - 2123392, - 2123408, - 2123410, - 2112270, - 2123437, - 2123441, - 2123445, - 2112282, - 2112284, - 2112215, - 2123521, - 2123538, - 2241394, - 2123545, - 2241491, - 2241490, - 2123597, - 2123604, - 2123613, - 2241488, - 2241508, - 2241493, - 2123636, - 2241498, - 2123666, - 2241503, - 2130787, - 2123792, - 2123715, - 2123720, - 2123730, - 2123739, - 2123767, - 2241610, - 2241617, - 2241611, - 2123800, - 2123807, - 2123821, - 2241637, - 2123827, - 2123835, - 2123838, - 2123845, - 2123849, - 2123852, - 2123861, - 2123863, - 2112375, - 2123883, - 2123886, - 2123900, - 2123906, - 2123920, - 2123926, - 2112365, - 2123928, - 2123929, - 2123930, - 2123932, - 2123946, - 2123947, - 2123956, - 2123963, - 2124027, - 2241764, - 2241882, - 2123971, - 2123973, - 2123980, - 2123993, - 2124004, - 2124005, - 2124012, - 2124023, - 2124035, - 2124039, - 2112391, - 2241940, - 2112397, - 2124102, - 2124137, - 2124140, - 2124154, - 2124178, - 2112420, - 2124182, - 2124208, - 2124218, - 2124220, - 2124224, - 2124241, - 2242105, - 2242119, - 2242104, - 2124259, - 2124270, - 2124271, - 2124275, - 2112461, - 2124276, - 2124286, - 2124305, - 2124314, - 2124317, - 2242332, - 2124338, - 2124339, - 2124351, - 2124361, - 2124410, - 2124366, - 2124370, - 2124388, - 2242316, - 2124427, - 2112496, - 2124449, - 2242404, - 2124459, - 2124477, - 2124486, - 2124500, - 2124496, - 2124509, - 2242559, - 2242535, - 2124529, - 2124530, - 2124531, - 2124541, - 2242596, - 2124555, - 2124559, - 2124560, - 2124561, - 2242621, - 2124567, - 2112550, - 2124591, - 2124618, - 2124632, - 2124652, - 2124661, - 2124666, - 2124673, - 2124699, - 2124718, - 2243224, - 2124733, - 2124743, - 2124744, - 2124745, - 2124762, - 2124774, - 2124775, - 2124782, - 2124802, - 2124810, - 2124814, - 2124854, - 2243711, - 2124877, - 2124891, - 2124909, - 2124932, - 2124937, - 2112707, - 2124948, - 2124951, - 2124973, - 2124994, - 2112722, - 2125020, - 2125033, - 2125037, - 2243840, - 2125056, - 2125092, - 2125094, - 2125095, - 2124903, - 2125103, - 2125116, - 2125147, - 2125152, - 2125168, - 2125184, - 2125185, - 2125194, - 2125197, - 2125201, - 2125208, - 2243904, - 2244090, - 2244089, - 2244051, - 2125227, - 2125230, - 2125236, - 2125250, - 2125108, - 2125256, - 2125262, - 2125279, - 2125302, - 2125366, - 2125342, - 2112785, - 2125362, - 2125384, - 2125385, - 2125387, - 2125388, - 2125391, - 2125395, - 2125396, - 2125399, - 2125411, - 2112798, - 2125459, - 2125479, - 2125492, - 2125507, - 2125621, - 2125547, - 2125561, - 2125563, - 2125578, - 2125580, - 2125592, - 2125605, - 2125622, - 2125628, - 2244478, - 2125650, - 2125655, - 2125664, - 2125672, - 2125712, - 2125718, - 2125758, - 2125727, - 2125733, - 2125743, - 2112868, - 2125768, - 2125769, - 2125801, - 2244758, - 2125820, - 2125824, - 2125834, - 2125859, - 2244867, - 2125882, - 2125891, - 2125895, - 2125899, - 2112922, - 2125925, - 2125929, - 2125934, - 2125942, - 2125958, - 2125975, - 2245062, - 2125983, - 2126001, - 2245118, - 2126060, - 2126026, - 2126033, - 2126083, - 2126086, - 2126088, - 2126092, - 2112960, - 2126127, - 2126160, - 2126163, - 2126174, - 2112980, - 2126230, - 2126208, - 2126235, - 2126240, - 2126242, - 2126254, - 2126255, - 2245564, - 2126297, - 2126300, - 2126343, - 2113029, - 2126388, - 2126393, - 2126402, - 2126423, - 2126435, - 2246185, - 2126446, - 2126447, - 2126456, - 2126463, - 2126478, - 2246309, - 2126510, - 2126512, - 2126529, - 2113120, - 2126540, - 2113126, - 2113128, - 2126579, - 2126586, - 2126599, - 2126610, - 2126616, - 2126617, - 2113155, - 2126649, - 2126636, - 2126643, - 2126653, - 2126674, - 2113172, - 2126699, - 2246806, - 2126702, - 2126703, - 2126705, - 2126721, - 2126730, - 2126740, - 2126744, - 2126748, - 2126757, - 2126777, - 2126783, - 2126789, - 2126795, - 2126817, - 2126823, - 2126841, - 2126867, - 2126842, - 2126849, - 2126931, - 2126912, - 2126915, - 2126930, - 2126941, - 2126977, - 2126984, - 2247245, - 2126994, - 2126999, - 2127001, - 2127009, - 2127013, - 2127018, - 2127033, - 2127035, - 2127034, - 2127062, - 2127064, - 2127083, - 2247510, - 2127098, - 2247535, - 2127136, - 2127140, - 2127146, - 2113367, - 2247702, - 2127165, - 2127166, - 2127168, - 2127176, - 2127184, - 2127186, - 2127218, - 2127217, - 2127226, - 2127229, - 2127230, - 2127244, - 2113397, - 2127266, - 2113399, - 2127280, - 2127287, - 2127295, - 2127296, - 2127302, - 2127311, - 2127315, - 2127325, - 2127327, - 2127328, - 2127335, - 2127342, - 2127345, - 2127363, - 2127384, - 2127367, - 2127375, - 2113454, - 2248206, - 2127379, - 2127387, - 2127388, - 2248247, - 2127397, - 2127400, - 2127420, - 2127411, - 2248298, - 2113481, - 2127425, - 2248331, - 2127433, - 2127445, - 2113495, - 2127470, - 2127509, - 2127521, - 2127520, - 2127527, - 2127528, - 2127535, - 2248778, - 2127561, - 2248789, - 2127592, - 2248994, - 2127639, - 2127642, - 2127661, - 2127669, - 2249129, - 2113593, - 2249189, - 2249165, - 2127704, - 2249246, - 2127740, - 2249292, - 2113624, - 2127770, - 2127775, - 2127778, - 2127780, - 2127838, - 2127839, - 2127844, - 2127850, - 2127852, - 2127867, - 2249774, - 2127877, - 2127881, - 2127885, - 2127897, - 2127916, - 2127943, - 2127978, - 2249945, - 2128010, - 2128020, - 2128036, - 2128029, - 2128031, - 2128059, - 2128085, - 2128102, - 2128121, - 2128122, - 2128126, - 2250151, - 2128144, - 2128155, - 2128165, - 2128202, - 2128216, - 2113797, - 2128231, - 2128242, - 2128277, - 2128289, - 2128297, - 2128308, - 2128322, - 2128327, - 2128332, - 2128333, - 2128342, - 2113864, - 2250665, - 2250676, - 2113871, - 2128394, - 2128405, - 2128411, - 2113891, - 2128440, - 2128455, - 2128470, - 2128473, - 2128476, - 2128479, - 2128487, - 2128490, - 2128501, - 2128514, - 2128522, - 2128528, - 2128556, - 2251220, - 2113972, - 2128569, - 2128574, - 2113983, - 2128588, - 2128616, - 2128628, - 2251492, - 2251491, - 2251505, - 2128701, - 2128682, - 2128686, - 2128687, - 2114022, - 2114035, - 2128767, - 2128705, - 2114030, - 2128725, - 2128761, - 2128740, - 2128742, - 2128755, - 2251698, - 2114055, - 2128784, - 2128795, - 2114062, - 2128821, - 2128828, - 2128837, - 2128842, - 2251851, - 2251876, - 2128852, - 2128854, - 2128858, - 2128874, - 2128880, - 2128899, - 2128910, - 2128965, - 2128970, - 2128983, - 2128990, - 2128993, - 2129001, - 2129007, - 2252334, - 2252374, - 2252389, - 2129062, - 2252386, - 2129078, - 2129079, - 2252504, - 2129092, - 2252482, - 2129101, - 2252520, - 2252579, - 2129126, - 2252636, - 2129141, - 2129155, - 2114246, - 2129170, - 2129182, - 2252768, - 2252756, - 2129213, - 2129214, - 2129216, - 2129223, - 2252812, - 2252795, - 2114262, - 2129242, - 2129258, - 2129264, - 2114269, - 2129279, - 2252823, - 2129288, - 2129303, - 2252896, - 2129309, - 2129319, - 2129322, - 2129334, - 2129344, - 2129367, - 2129369, - 2129382, - 2114306, - 2253037, - 4226569, - 2129424, - 2129431, - 2129437, - 2129447, - 2129452, - 2129477, - 2129525, - 2129534, - 2129542, - 2129543, - 2114347, - 2129562, - 2114371, - 2129724, - 2129723, - 2129726, - 2129731, - 2110657, - 2253424, - 2253446, - 2129763, - 2129764, - 2129773, - 2129789, - 2129790, - 2129808, - 2118011, - 2243854, - 2129814, - 2129820, - 2129837, - 2253826, - 2129859, - 2129871, - 2129891, - 2129906, - 2129930, - 2129928, - 2129942, - 2129964, - 2129968, - 2129987, - 2130022, - 2130043, - 2130073, - 2130076, - 2130084, - 2130087, - 2130104, - 2254462, - 2130117, - 2130133, - 2130150, - 2130189, - 2130165, - 2130171, - 2114542, - 2130229, - 2130206, - 2114544, - 2130212, - 2130215, - 2130220, - 2254621, - 2130237, - 2114568, - 2130281, - 2114583, - 2114588, - 2130309, - 2114594, - 2130328, - 2130354, - 2130369, - 2130371, - 2130390, - 2130395, - 2255069, - 2130404, - 2255082, - 2130412, - 2130429, - 2130431, - 2255215, - 2130436, - 2255325, - 2130457, - 2130466, - 2255390, - 2130492, - 2130505, - 2130501, - 2255448, - 2114678, - 2114682, - 2130519, - 2255500, - 2130524, - 2130531, - 2255543, - 2114705, - 2130557, - 2130559, - 2130563, - 2130570, - 2130579, - 2130599, - 2130600, - 2130610, - 2130612, - 2130618, - 2130620, - 2130658, - 2130664, - 2130679, - 2130695, - 2130696, - 2130700, - 2130772, - 2130715, - 2130717, - 2130736, - 2130748, - 2130756, - 2130775, - 2114750, - 2114772, - 2114739, - 2130836, - 2130837, - 2130843, - 2130845, - 2130889, - 2130896, - 2130900, - 2130909, - 2130917, - 2130937, - 2130965, - 2255987, - 2130967, - 2131001, - 2131023, - 2131025, - 2131026, - 2131033, - 2131034, - 2131036, - 2256093, - 2131045, - 2131064, - 2131068, - 2131073, - 2114829, - 2131095, - 2131110, - 2131134, - 2114824, - 2131150, - 2131151, - 2131155, - 2256485, - 2131175, - 2131178, - 2131183, - 2131185, - 2131194, - 2131227, - 2131236, - 2131237, - 2131243, - 2131279, - 2131311, - 2114883, - 2131281, - 2131297, - 2131298, - 2256788, - 2131323, - 2131325, - 2131327, - 2131329, - 2131334, - 2131347, - 2131357, - 2131359, - 2256888, - 2256886, - 2256887, - 2131388, - 2131399, - 2131402, - 2131416, - 2131417, - 2131423, - 2131425, - 2131430, - 2131446, - 2131456, - 2131473, - 2131486, - 2131489, - 2131492, - 2131495, - 2257165, - 2131513, - 2131516, - 2257209, - 2131520, - 2131539, - 2131542, - 2131575, - 2131591, - 2131593, - 2131612, - 2131613, - 2131633, - 2131635, - 2131649, - 2131651, - 2131665, - 2131669, - 2131671, - 2131683, - 2131686, - 2115000, - 2131717, - 2131719, - 2131726, - 2131728, - 2131743, - 2131745, - 2131747, - 2131761, - 2131770, - 2131776, - 2131779, - 2131793, - 2131800, - 2131812, - 2131813, - 2131826, - 2131836, - 2257883, - 2257882, - 2131879, - 2131849, - 2131851, - 2131859, - 2131872, - 2257918, - 2115045, - 2131902, - 2257936, - 2131905, - 2131918, - 2131935, - 2257993, - 2131939, - 2131941, - 2131942, - 2131946, - 2131987, - 2132008, - 2132014, - 2132018, - 2132028, - 2115087, - 2132042, - 2132056, - 2258453, - 2258452, - 2132073, - 2258481, - 2132079, - 2132128, - 2132156, - 2132160, - 2258579, - 2132177, - 2132179, - 2115137, - 2132225, - 2258702, - 2132279, - 2258723, - 2132290, - 2132293, - 2132297, - 2258770, - 2132322, - 2132361, - 2132368, - 2132383, - 2132400, - 2132407, - 2132440, - 2132459, - 2115233, - 2132467, - 2132477, - 2132479, - 2115247, - 2132497, - 2132500, - 2259333, - 2132513, - 2132533, - 2132542, - 2132549, - 2132557, - 2132568, - 2132654, - 2132624, - 2132663, - 2132695, - 2132732, - 2259588, - 2132746, - 2132741, - 2132749, - 2132764, - 2132781, - 2115340, - 2132817, - 2132830, - 2132854, - 2132865, - 2132875, - 2132884, - 2132885, - 2133049, - 2259891, - 2133053, - 2259902, - 2259911, - 2133061, - 2133071, - 2133079, - 2133097, - 2133101, - 2260152, - 2133139, - 2133138, - 2133145, - 2115428, - 2133147, - 2133206, - 2133205, - 2260384, - 2133233, - 2260496, - 2133257, - 2133262, - 2133448, - 2133465, - 2133516, - 2115581, - 2133501, - 2133510, - 2261130, - 2133524, - 2133526, - 2133537, - 2133538, - 2133543, - 2261179, - 2115606, - 2133558, - 2133561, - 2133588, - 2133602, - 2133613, - 2133615, - 2133656, - 2133662, - 2133685, - 2133691, - 2261634, - 2115662, - 2261747, - 2133760, - 2133768, - 2133803, - 2133824, - 2133834, - 2133848, - 2262028, - 2133924, - 2133940, - 2262101, - 2133953, - 2133958, - 2161188, - 2133962, - 2133965, - 2133971, - 2133973, - 2134001, - 2134005, - 2134011, - 2134028, - 2134071, - 2262379, - 2134083, - 2134109, - 2262472, - 2262473, - 2134149, - 2134156, - 2134160, - 2134177, - 2115765, - 2134192, - 2134198, - 2134211, - 2134216, - 2262743, - 2134236, - 2134239, - 2262778, - 2134262, - 2134258, - 2134272, - 2134251, - 2134270, - 2134271, - 2134276, - 2134278, - 2134296, - 2134302, - 2134327, - 2134329, - 2134342, - 2134343, - 2134359, - 2134361, - 2134388, - 2134393, - 2134405, - 2134451, - 2134454, - 2134467, - 2134468, - 2263369, - 2263366, - 2134508, - 2134529, - 2134550, - 2134551, - 2263403, - 2134594, - 2134602, - 2134614, - 2134625, - 2134629, - 2134632, - 2263432, - 2134652, - 2134653, - 2134655, - 2134665, - 2134669, - 2134679, - 2134681, - 2134687, - 2134699, - 2263482, - 2263483, - 2134706, - 2134719, - 2134720, - 2134726, - 2134734, - 2134757, - 2134801, - 2263582, - 2263593, - 2134775, - 2134825, - 2263665, - 2263619, - 2134865, - 2134874, - 2134891, - 2134897, - 2134899, - 2134945, - 2263705, - 2263757, - 2134920, - 2134923, - 2134927, - 2134942, - 2135029, - 2263780, - 2263773, - 2135025, - 2134983, - 2135004, - 2135015, - 2135049, - 2135062, - 2135063, - 2135035, - 2135090, - 2135099, - 2264001, - 2264047, - 2135149, - 2135151, - 2135417, - 2135430, - 2135436, - 2135437, - 2264336, - 2264433, - 2135496, - 2264571, - 2264607, - 2135596, - 2135603, - 2135604, - 2264630, - 2135612, - 2135649, - 2264713, - 2135682, - 2264811, - 2135706, - 2264882, - 2116071, - 2135731, - 2135738, - 2135741, - 2116090, - 2265080, - 2135768, - 2135770, - 2135773, - 2116100, - 2135828, - 2135843, - 2116137, - 2135862, - 2135873, - 2135879, - 2135895, - 2135899, - 2135914, - 2265760, - 2265777, - 2135958, - 2135966, - 2135985, - 2135986, - 2135998, - 2136012, - 2136017, - 2136020, - 2136024, - 2136033, - 2136049, - 2136068, - 2136077, - 2136084, - 2136086, - 2116284, - 2266256, - 2136114, - 2136115, - 2136101, - 2136135, - 2136166, - 2136235, - 2136237, - 2136240, - 2266575, - 2136247, - 2136251, - 2136252, - 2136258, - 2136263, - 2136267, - 2136289, - 2136291, - 2136298, - 2136304, - 2136305, - 2136307, - 2136328, - 2116411, - 2266864, - 2136342, - 2136343, - 2266905, - 2136346, - 2136347, - 2136348, - 2266960, - 2136369, - 2136378, - 2136379, - 2136380, - 2136385, - 2136390, - 2136398, - 2136416, - 2136483, - 2136486, - 2136509, - 2136511, - 2136515, - 2136532, - 2136537, - 2136542, - 2267334, - 2136560, - 2136569, - 2136572, - 2136586, - 2136593, - 2136602, - 2136608, - 2136625, - 2136644, - 2136652, - 2136664, - 2116546, - 2136751, - 2116554, - 2136759, - 2116562, - 2136761, - 2267762, - 2136774, - 2136784, - 2136786, - 2136789, - 2136800, - 2136805, - 2136809, - 2136844, - 2136848, - 2136850, - 2136854, - 2136860, - 2136875, - 2136893, - 2116640, - 2136907, - 2136931, - 2136933, - 2136939, - 2136940, - 2136950, - 2136951, - 2136998, - 2137004, - 2268635, - 2137010, - 2137016, - 2137022, - 2137075, - 2137048, - 2137053, - 2137066, - 2137071, - 2137070, - 2268693, - 2268810, - 2268745, - 2137110, - 2137112, - 2137113, - 2137114, - 2137117, - 2137122, - 2137129, - 2268868, - 2137137, - 2137143, - 2137157, - 2137180, - 2268905, - 2137161, - 2137162, - 2268891, - 2137172, - 2137176, - 2137179, - 2137181, - 2137183, - 2137193, - 2137194, - 2137195, - 2137197, - 2137198, - 2137202, - 2137205, - 2137210, - 2137318, - 2137330, - 2137355, - 2269143, - 2137361, - 2137367, - 2137368, - 2269231, - 2116804, - 2269210, - 2137394, - 2116817, - 2137418, - 2137439, - 2137442, - 2269433, - 2269314, - 2137459, - 2137462, - 2137463, - 2137476, - 2137497, - 2137505, - 2137535, - 2137525, - 2137529, - 2137533, - 2137545, - 2137562, - 2137568, - 2137571, - 2116871, - 2137610, - 2137602, - 2137613, - 2137628, - 2137723, - 2236952, - 2137728, - 2137733, - 2137755, - 2270092, - 2137789, - 2270263, - 2137823, - 2137855, - 2137858, - 2116983, - 2137859, - 2137914, - 2137917, - 2137926, - 2137939, - 2137941, - 2137944, - 2270705, - 2137949, - 2270722, - 2137961, - 2137965, - 2137968, - 2270898, - 2128186, - 2110996, - 2111661, - 2112972, - 2113500, - 2115006, - 2115088, - 2116478, - 2116664, - 2116833, - 2117132, - 2117155, - 2117156, - 2117241, - 2117363, - 2117388, - 2117401, - 2117419, - 2117422, - 2117425, - 2117508, - 2117534, - 2117559, - 2117636, - 2117644, - 2117708, - 2117727, - 2117730, - 2117751, - 2117774, - 2117790, - 2117794, - 2117827, - 2117864, - 2117873, - 2117886, - 2117895, - 2117900, - 2117901, - 2117902, - 2117939, - 2117944, - 2118004, - 2118020, - 2118072, - 2118074, - 2118088, - 2118095, - 2118097, - 2118099, - 2118100, - 2118104, - 2118111, - 2118149, - 2118182, - 2118184, - 2118187, - 2118193, - 2118194, - 2118197, - 2118204, - 2118234, - 2118240, - 2118254, - 2118264, - 2118265, - 2118282, - 2118284, - 2118369, - 2118377, - 2118385, - 2118403, - 2118417, - 2118431, - 2118445, - 2118450, - 2118461, - 2118501, - 2118509, - 2118521, - 2118526, - 2118548, - 2118553, - 2118570, - 2118575, - 2118586, - 2118593, - 2118596, - 2118597, - 2118624, - 2118675, - 2118698, - 2118705, - 2118708, - 2118709, - 2118732, - 2118823, - 2118826, - 2118833, - 2118843, - 2118862, - 2118890, - 2118908, - 2118917, - 2118920, - 2118933, - 2118951, - 2118954, - 2118966, - 2118993, - 2119014, - 2119055, - 2119058, - 2119060, - 2119076, - 2119090, - 2119107, - 2119110, - 2119123, - 2119131, - 2119148, - 2119150, - 2119153, - 2119158, - 2119160, - 2119173, - 2119181, - 2119185, - 2119186, - 2119212, - 2119221, - 2119225, - 2119245, - 2119252, - 2119301, - 2119327, - 2119334, - 2119351, - 2119372, - 2119375, - 2119385, - 2119393, - 2119403, - 2119405, - 2119409, - 2119431, - 2119436, - 2119450, - 2119451, - 2119453, - 2119468, - 2119470, - 2119485, - 2119486, - 2119519, - 2119531, - 2119533, - 2119546, - 2119555, - 2119575, - 2119598, - 2119637, - 2119655, - 2119693, - 2119718, - 2119757, - 2119759, - 2119775, - 2119789, - 2119807, - 2119809, - 2119832, - 2119868, - 2119967, - 2119971, - 2120025, - 2120057, - 2120087, - 2120111, - 2120115, - 2120159, - 2120177, - 2120184, - 2120370, - 2120376, - 2120426, - 2120438, - 2120475, - 2120477, - 2120481, - 2120504, - 2120631, - 2120663, - 2120672, - 2120735, - 2120746, - 2120748, - 2120758, - 2120793, - 2120796, - 2120813, - 2120925, - 2120961, - 2121012, - 2121021, - 2121049, - 2121086, - 2121091, - 2121159, - 2121209, - 2121256, - 2121266, - 2121269, - 2121307, - 2121320, - 2121322, - 2121335, - 2121344, - 2121355, - 2121395, - 2121405, - 2121425, - 2121428, - 2121429, - 2121549, - 2121644, - 2121706, - 2121735, - 2121801, - 2121812, - 2121831, - 2121915, - 2121924, - 2121981, - 2121994, - 2122006, - 2122026, - 2122038, - 2122078, - 2122084, - 2122107, - 2122109, - 2122111, - 2122141, - 2122168, - 2122204, - 2122210, - 2122213, - 2122216, - 2122244, - 2122247, - 2122289, - 2122297, - 2122301, - 2122362, - 2122384, - 2122408, - 2122458, - 2122484, - 2122518, - 2122538, - 2122550, - 2122566, - 2122571, - 2122579, - 2122609, - 2122613, - 2122623, - 2122626, - 2122634, - 2122670, - 2122671, - 2122730, - 2122744, - 2122745, - 2122770, - 2122776, - 2122784, - 2122788, - 2122794, - 2122805, - 2122813, - 2122815, - 2122834, - 2122847, - 2122868, - 2122896, - 2122904, - 2122905, - 2122924, - 2122931, - 2122989, - 2122992, - 2123035, - 2123039, - 2123054, - 2123081, - 2123104, - 2123154, - 2123157, - 2123188, - 2123198, - 2123208, - 2123214, - 2123216, - 2123231, - 2123390, - 2123403, - 2123404, - 2123443, - 2123456, - 2123471, - 2123557, - 2123573, - 2123605, - 2123648, - 2123663, - 2123665, - 2123684, - 2123697, - 2123701, - 2123710, - 2123816, - 2123910, - 2124011, - 2124021, - 2124055, - 2124083, - 2124088, - 2124123, - 2124133, - 2124200, - 2124203, - 2124207, - 2124261, - 2124273, - 2124362, - 2124373, - 2124391, - 2124401, - 2124463, - 2124488, - 2124489, - 2124547, - 2124603, - 2124607, - 2124669, - 2124670, - 2124720, - 2124791, - 2124793, - 2124804, - 2124809, - 2124813, - 2124844, - 2124874, - 2124882, - 2124884, - 2124921, - 2124972, - 2124980, - 2125010, - 2125153, - 2125180, - 2125241, - 2125296, - 2125381, - 2125427, - 2125435, - 2125437, - 2125449, - 2125500, - 2125530, - 2125531, - 2125606, - 2125609, - 2125616, - 2125703, - 2125725, - 2125742, - 2125751, - 2125837, - 2125856, - 2125897, - 2125976, - 2126000, - 2126037, - 2126038, - 2126149, - 2126258, - 2126324, - 2126359, - 2126367, - 2126403, - 2126415, - 2126416, - 2126426, - 2126432, - 2126440, - 2126455, - 2126468, - 2126537, - 2126565, - 2126580, - 2126594, - 2126603, - 2126622, - 2126626, - 2126650, - 2126651, - 2126669, - 2126680, - 2126695, - 2126962, - 2127023, - 2127071, - 2127076, - 2127092, - 2127099, - 2127126, - 2127137, - 2127167, - 2127198, - 2127257, - 2127268, - 2127297, - 2127300, - 2127308, - 2127319, - 2127324, - 2127329, - 2127343, - 2127364, - 2127372, - 2127389, - 2127410, - 2127416, - 2127429, - 2127434, - 2127455, - 2127533, - 2127549, - 2127577, - 2127595, - 2127600, - 2127609, - 2127616, - 2127630, - 2127650, - 2127656, - 2127663, - 2127673, - 2127678, - 2127685, - 2127690, - 2127695, - 2127710, - 2127716, - 2127719, - 2127724, - 2127748, - 2127756, - 2127757, - 2127766, - 2127783, - 2127791, - 2127799, - 2127806, - 2127817, - 2127825, - 2127833, - 2127857, - 2127927, - 2127964, - 2127998, - 2128024, - 2128033, - 2128049, - 2128051, - 2128073, - 2128083, - 2128140, - 2128159, - 2128167, - 2128168, - 2128191, - 2128194, - 2128212, - 2128235, - 2128252, - 2128299, - 2128324, - 2128362, - 2128386, - 2128396, - 2128432, - 2128442, - 2128452, - 2128512, - 2128518, - 2128532, - 2128565, - 2128573, - 2128638, - 2128683, - 2128759, - 2128800, - 2128812, - 2128816, - 2128872, - 2128882, - 2128888, - 2128892, - 2128894, - 2128905, - 2128936, - 2128943, - 2128962, - 2128978, - 2128979, - 2128987, - 2128988, - 2128989, - 2129010, - 2129021, - 2129031, - 2129054, - 2129082, - 2129095, - 2129107, - 2129114, - 2129212, - 2129229, - 2129282, - 2129285, - 2129293, - 2129297, - 2129310, - 2129331, - 2129337, - 2129360, - 2129381, - 2129397, - 2129398, - 2129455, - 2129462, - 2129476, - 2129519, - 2129528, - 2129537, - 2129725, - 2129755, - 2129757, - 2129765, - 2129777, - 2129791, - 2129792, - 2129803, - 2129826, - 2129917, - 2129918, - 2129919, - 2129927, - 2129933, - 2129950, - 2129977, - 2130056, - 2130062, - 2130127, - 2130132, - 2130157, - 2130160, - 2130167, - 2130170, - 2130174, - 2130179, - 2130199, - 2130224, - 2130263, - 2130287, - 2130291, - 2130315, - 2130320, - 2130331, - 2130334, - 2130379, - 2130389, - 2130397, - 2130398, - 2130401, - 2130415, - 2130422, - 2130432, - 2130443, - 2130451, - 2130452, - 2130458, - 2130490, - 2130500, - 2130541, - 2130564, - 2130569, - 2130577, - 2130602, - 2130608, - 2130640, - 2130666, - 2130671, - 2130678, - 2130774, - 2130808, - 2130936, - 2130940, - 2131032, - 2131091, - 2131121, - 2131133, - 2131195, - 2131270, - 2131286, - 2131293, - 2131333, - 2131352, - 2131522, - 2131526, - 2131648, - 2131732, - 2131746, - 2131758, - 2131769, - 2131805, - 2131835, - 2131852, - 2131854, - 2131863, - 2131864, - 2131870, - 2131875, - 2131886, - 2131903, - 2131913, - 2131930, - 2131992, - 2131995, - 2132013, - 2132026, - 2132037, - 2132043, - 2132046, - 2132053, - 2132058, - 2132078, - 2132122, - 2132123, - 2132124, - 2132173, - 2132192, - 2132207, - 2132238, - 2132239, - 2132262, - 2132277, - 2132314, - 2132316, - 2132331, - 2132336, - 2132348, - 2132389, - 2132405, - 2132412, - 2132437, - 2132553, - 2132567, - 2132583, - 2132606, - 2132614, - 2132630, - 2132662, - 2132681, - 2132689, - 2132701, - 2132716, - 2132725, - 2132742, - 2132751, - 2132753, - 2132805, - 2132818, - 2132845, - 2132856, - 2132860, - 2132862, - 2132869, - 2132895, - 2133067, - 2133075, - 2133115, - 2133178, - 2133189, - 2133193, - 2133202, - 2133228, - 2133237, - 2133239, - 2133249, - 2133251, - 2133271, - 2133276, - 2133358, - 2133393, - 2133407, - 2133419, - 2133426, - 2133461, - 2133479, - 2133489, - 2133490, - 2133492, - 2133505, - 2133515, - 2133542, - 2133553, - 2133568, - 2133569, - 2133581, - 2133583, - 2133596, - 2133601, - 2133609, - 2133617, - 2133621, - 2133623, - 2133641, - 2133648, - 2133653, - 2133658, - 2133671, - 2133673, - 2133677, - 2133736, - 2133744, - 2133767, - 2133784, - 2133797, - 2133799, - 2133804, - 2133813, - 2133818, - 2133827, - 2133831, - 2133841, - 2133845, - 2133920, - 2133921, - 2133922, - 2133925, - 2134020, - 2134043, - 2134063, - 2134092, - 2134107, - 2134128, - 2134132, - 2134137, - 2134155, - 2134168, - 2134176, - 2134194, - 2134205, - 2134217, - 2134256, - 2134277, - 2134309, - 2134362, - 2134375, - 2134394, - 2134410, - 2134417, - 2134421, - 2134448, - 2134459, - 2134461, - 2134466, - 2134469, - 2134528, - 2134537, - 2134563, - 2134646, - 2134670, - 2134703, - 2134715, - 2134716, - 2134721, - 2134723, - 2134725, - 2134728, - 2134804, - 2134835, - 2134838, - 2134872, - 2134911, - 2134914, - 2134922, - 2134971, - 2134988, - 2135014, - 2135033, - 2135042, - 2135053, - 2135054, - 2135086, - 2135116, - 2135432, - 2135457, - 2135487, - 2135494, - 2135497, - 2135505, - 2135506, - 2135520, - 2135524, - 2135526, - 2135588, - 2135601, - 2135608, - 2135613, - 2135636, - 2135668, - 2135675, - 2135679, - 2135681, - 2135683, - 2135689, - 2135702, - 2135726, - 2135811, - 2135835, - 2135841, - 2135842, - 2135848, - 2135857, - 2135911, - 2135926, - 2135933, - 2135935, - 2135961, - 2135967, - 2135980, - 2135993, - 2136013, - 2136032, - 2136047, - 2136071, - 2136102, - 2136110, - 2136162, - 2136163, - 2136244, - 2136261, - 2136322, - 2136337, - 2136341, - 2136373, - 2136392, - 2136404, - 2136414, - 2136545, - 2136588, - 2136592, - 2136611, - 2136641, - 2136657, - 2136765, - 2136766, - 2136833, - 2136841, - 2136843, - 2136845, - 2136846, - 2136857, - 2136885, - 2136904, - 2136917, - 2136936, - 2136960, - 2136966, - 2136976, - 2136989, - 2137008, - 2137023, - 2137032, - 2137087, - 2137090, - 2137116, - 2137141, - 2137156, - 2137174, - 2137185, - 2137192, - 2137392, - 2137405, - 2137450, - 2137467, - 2137573, - 2137577, - 2137587, - 2137722, - 2137730, - 2137731, - 2137732, - 2137776, - 2137828, - 2137840, - 2137842, - 2137865, - 2137871, - 2137876, - 2137883, - 2137890, - 2137894, - 2137898, - 2137899, - 2137908, - 2137946, - 2137967, - 2138014, - 2138021, - 2228469, - 2248196, - 2248690, - 2260339, - 2118029, - 4216196, - 4218722, - 4219208, - 4220959, - 2133716, - 2110942, - 2138047, - 2138048, - 2138049, - 2138050, - 2269874, - 4214286, - 4214310, - 2228568, - 4214643, - 4214870, - 4215021, - 4215147, - 2229681, - 8409566, - 4215293, - 2229996, - 4215396, - 4215409, - 6312562, - 4215615, - 2275155, - 4215872, - 2231640, - 4216220, - 6313387, - 4216329, - 6313646, - 8410798, - 2275162, - 2275164, - 4216526, - 4216558, - 4216790, - 4216893, - 4216921, - 4217167, - 6314321, - 4217184, - 4217186, - 4217562, - 4217690, - 4217715, - 4217724, - 8412083, - 2251212, - 4218435, - 2275190, - 6315747, - 4218680, - 4218785, - 4218845, - 4219234, - 6316466, - 4219384, - 2111908, - 2111928, - 2240066, - 2275196, - 4220150, - 2112092, - 2230216, - 4220254, - 2240491, - 4220295, - 4220297, - 2259380, - 4220302, - 2112196, - 2112203, - 4220385, - 4220519, - 4220526, - 6317761, - 2275202, - 2112133, - 4220672, - 4220769, - 4220868, - 4220930, - 4221245, - 4221278, - 2275211, - 4221596, - 2112499, - 2242545, - 2275220, - 4222008, - 6319274, - 2138060, - 4222436, - 2112817, - 4222472, - 4222578, - 6319819, - 4222677, - 4222683, - 4222811, - 6319963, - 4222820, - 4222836, - 2244683, - 4223550, - 2113088, - 2111649, - 6321098, - 4224189, - 4224349, - 4224444, - 2275244, - 4224520, - 4224612, - 4224617, - 2275247, - 4224823, - 4224894, - 4225447, - 4225457, - 4225726, - 4226016, - 6323280, - 4226313, - 4226482, - 6323634, - 4226878, - 6324193, - 4227090, - 2275273, - 4227286, - 4227337, - 4227369, - 4227596, - 4227611, - 4227648, - 2275279, - 4228052, - 4228111, - 2275282, - 4228330, - 2256030, - 4228433, - 4228451, - 4228559, - 4228686, - 4228706, - 4228746, - 4229186, - 4229239, - 4229441, - 4229974, - 6327126, - 4229980, - 2115359, - 2260028, - 4230250, - 4230265, - 6327498, - 4230503, - 2115614, - 4230915, - 6328132, - 6328261, - 6328276, - 4231158, - 6328439, - 8425591, - 31494281, - 16814218, - 4231336, - 4231501, - 4231913, - 4231989, - 4232075, - 2275312, - 4232653, - 4232746, - 6330008, - 4232871, - 8427519, - 10524671, - 2275173, - 4233505, - 8427863, - 4234152, - 4234158, - 4234169, - 4234248, - 4234276, - 4234299, - 2275341, - 4234470, - 4234688, - 4234690, - 2275351, - 6330607, - 4339773, - 6322952, - 4220015, - 6323262, - 4225909, - 6321429, - 6326813, - 6316130, - 4223096, - 12604329, - 4226178, - 4232857, - 4228692, - 4227441, - 4232053, - 4215980, - 4223713, - 4221079, - 4234155, - 4215753, - 4220758, - 4224294, - 8418577, - 4225736, - 4219706, - 6328385, - 4233665, - 4220327, - 4231644, - 4233133, - 4227730, - 6323326, - 4223546, - 6326277, - 4228867, - 2136861, - 2136876, - 2117634, - 2118110, - 2118407, - 2120684, - 4218570, - 2123294, - 2123543, - 2125898, - 4215262, - 2119009, - 2124858, - 2128480, - 2253644, - 2131971, - 2135467, - 2135893, - 2268733, - 2270746, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - 6319778, - 8413682, - 6325778, - 4230015, - 2117173, - 2117212, - 2117219, - 2117224, - 2117236, - 2117237, - 2117271, - 2117295, - 2117339, - 2117346, - 2117352, - 2117359, - 2117374, - 2117378, - 2117384, - 2117394, - 2117399, - 2117427, - 2117429, - 2117440, - 2117442, - 2117451, - 2117452, - 2117458, - 2117475, - 2117486, - 2117489, - 2117497, - 2117505, - 2117513, - 2117516, - 2117518, - 2117520, - 2117523, - 2117529, - 2117535, - 2117561, - 2117563, - 2117564, - 2117565, - 2117568, - 2117569, - 2117574, - 2117576, - 2117580, - 2117596, - 2117602, - 2117616, - 2117628, - 2117639, - 2117642, - 2117655, - 2117661, - 2117680, - 2117682, - 2117683, - 2117685, - 2117701, - 2117706, - 2117713, - 2117714, - 2117721, - 2117728, - 2117735, - 2117741, - 2117745, - 2117761, - 2117763, - 2117764, - 2117766, - 2117770, - 2117776, - 2117787, - 2117791, - 2117792, - 2117793, - 2117807, - 2117808, - 2117817, - 2117821, - 2117824, - 2117843, - 2117852, - 2117853, - 2117855, - 2117858, - 2117860, - 2117878, - 2117882, - 4215026, - 2117913, - 2117916, - 2117917, - 2117923, - 2117927, - 2117928, - 2117932, - 2117933, - 2117935, - 2117937, - 2117940, - 2117945, - 2117954, - 2117967, - 2117971, - 2117976, - 2117990, - 2118014, - 2118030, - 2118079, - 2118082, - 2118098, - 2118101, - 2118117, - 2118130, - 2118135, - 2118168, - 2118178, - 2118213, - 2118232, - 2118239, - 2118272, - 2118277, - 2118293, - 2118294, - 2118295, - 2118298, - 2118309, - 2118311, - 2118320, - 2118326, - 2118327, - 2118328, - 2118333, - 2118340, - 2118342, - 2118351, - 2118356, - 2118364, - 2118373, - 2118376, - 2118378, - 2118380, - 2118388, - 2118390, - 2118412, - 2118419, - 2118424, - 2118427, - 2118430, - 2118437, - 2118439, - 2118440, - 2118441, - 2118443, - 2118444, - 2118448, - 2118460, - 2118489, - 2118491, - 4215653, - 2118531, - 2118535, - 2118536, - 2118542, - 2118561, - 2118581, - 2118584, - 2118589, - 2118607, - 2118610, - 2118611, - 2118622, - 4215776, - 2118631, - 2118658, - 2118682, - 2118689, - 2118703, - 2118724, - 2118727, - 2118735, - 2118750, - 2118756, - 2118759, - 2118761, - 2118765, - 2118766, - 2118785, - 2118787, - 2118789, - 2118793, - 2118801, - 2118815, - 2118858, - 2118880, - 2118902, - 2118910, - 2118924, - 2118925, - 2118962, - 2118971, - 2118973, - 2118985, - 2118989, - 2119000, - 2119002, - 2119003, - 2119039, - 2119059, - 2119063, - 2119075, - 2119105, - 2119115, - 2119127, - 2119128, - 2119134, - 2119167, - 4216325, - 2119178, - 2119193, - 2119219, - 2119228, - 2119233, - 2119235, - 2119236, - 2119238, - 2119265, - 2119266, - 2119267, - 2119285, - 2119300, - 2119307, - 2119335, - 2119339, - 2119358, - 2119371, - 2119376, - 2119388, - 2119397, - 2119398, - 2119399, - 2119425, - 2119426, - 2119441, - 2119456, - 2119458, - 2119460, - 2119461, - 2119466, - 2119487, - 2119506, - 2119522, - 2119527, - 2119534, - 2119537, - 2119545, - 2119550, - 2119553, - 2119572, - 2119577, - 2119583, - 2119585, - 2119573, - 2119591, - 2119593, - 2119613, - 2119645, - 2119657, - 2119678, - 2119683, - 2119688, - 2119649, - 2119692, - 2119707, - 2119711, - 2119725, - 2119743, - 2119760, - 2119765, - 2119784, - 2119800, - 2119815, - 2119816, - 2119820, - 2119830, - 2119840, - 2119841, - 2119842, - 2119846, - 2119876, - 2119874, - 2119880, - 2119894, - 2119901, - 2119905, - 4217094, - 2119954, - 2119955, - 2119965, - 2119969, - 2119976, - 2119984, - 2119987, - 2119989, - 2119990, - 2119999, - 2120003, - 2120018, - 2120030, - 2120043, - 2120047, - 2120050, - 2120059, - 2120076, - 2120078, - 2120085, - 2120103, - 2120109, - 2120112, - 2120119, - 2120129, - 2120132, - 2120175, - 2120178, - 2120180, - 2120183, - 2120192, - 2120206, - 2120210, - 2120222, - 2120228, - 2120232, - 2120234, - 2120240, - 2120260, - 2120261, - 2120264, - 2120268, - 2120272, - 2120286, - 2120315, - 2120336, - 2120339, - 2120342, - 2120345, - 2120379, - 2120390, - 2120392, - 2120399, - 2120445, - 2120449, - 2120523, - 2120542, - 2120558, - 2120582, - 2120590, - 2120592, - 2120593, - 2120596, - 2120616, - 2120617, - 2120621, - 2120623, - 2120625, - 2120626, - 2120634, - 2120636, - 2120641, - 2120653, - 2120655, - 2120665, - 2120666, - 2120687, - 2120692, - 2120716, - 2120727, - 2120742, - 2120750, - 2120754, - 2120757, - 2120794, - 2120820, - 2120821, - 2120827, - 2120829, - 2120839, - 2120850, - 2120861, - 2120882, - 2120884, - 2120919, - 2120942, - 2120945, - 2120946, - 2120978, - 2120995, - 2121023, - 2121032, - 2121045, - 2121041, - 2121055, - 2121056, - 2121058, - 2121060, - 2121081, - 2121082, - 2121087, - 2121098, - 2121107, - 2121109, - 2121115, - 2121119, - 2121131, - 2121155, - 2121166, - 2121177, - 2121223, - 2121229, - 2121248, - 2121291, - 2121296, - 2121297, - 2121308, - 2121328, - 2121358, - 2121378, - 2121380, - 2121393, - 2121420, - 2121422, - 2121436, - 2121438, - 2121445, - 2121451, - 2121478, - 2121497, - 2121508, - 2121515, - 2121516, - 2121518, - 2121520, - 2121535, - 2121540, - 2121563, - 2121568, - 2121583, - 2121588, - 2121589, - 2121592, - 2121594, - 2121613, - 2121622, - 2121629, - 2121643, - 2121648, - 2121649, - 2121672, - 2121680, - 2121681, - 2121704, - 2121708, - 2121714, - 2121718, - 2121722, - 2121738, - 2121747, - 2121759, - 2121773, - 2121792, - 2121800, - 2121809, - 2121814, - 2121815, - 2121841, - 2121854, - 2121858, - 2121862, - 2121864, - 2121870, - 2121873, - 2121875, - 2121880, - 4219038, - 2121890, - 2121893, - 2121911, - 2121922, - 2121929, - 2121930, - 2121934, - 2121935, - 2121954, - 2121957, - 2121980, - 2121986, - 2121991, - 2121996, - 2122007, - 2122018, - 2122033, - 2122037, - 2122041, - 2122053, - 2122057, - 2122092, - 2122098, - 2122104, - 2122112, - 2122113, - 2122115, - 2122116, - 2122123, - 2122140, - 2122144, - 2122154, - 2122176, - 2122177, - 2122190, - 2122191, - 2122206, - 2122209, - 2122215, - 2122217, - 2122220, - 2122221, - 2122223, - 2122241, - 2122243, - 2122268, - 2122272, - 2122279, - 2122283, - 2122306, - 2122308, - 2122320, - 2122324, - 2122332, - 2122365, - 2122381, - 2122382, - 2122383, - 2122419, - 2122422, - 2122423, - 2122426, - 2122430, - 2122431, - 2122446, - 2122474, - 2122482, - 2122500, - 2122507, - 2122515, - 2122537, - 2122541, - 2122570, - 2122578, - 2122580, - 2122584, - 2122587, - 2122598, - 2122605, - 2122616, - 2122645, - 2122650, - 2122660, - 2122662, - 2122669, - 2122689, - 2122693, - 2122696, - 2122702, - 2122707, - 2122739, - 2122762, - 2122800, - 2122827, - 2122831, - 2122835, - 2122844, - 2122849, - 2122851, - 2122885, - 2122895, - 2122907, - 2122913, - 2122915, - 2122918, - 2122920, - 2122941, - 2122953, - 2122961, - 2122985, - 2122986, - 2122997, - 2123009, - 2123016, - 2123017, - 2123018, - 2123027, - 2123046, - 2123057, - 2123066, - 2123068, - 2123069, - 2123075, - 2123088, - 2123090, - 2123103, - 2123133, - 2123160, - 2123168, - 2123171, - 2123174, - 2123182, - 2123187, - 2123222, - 2123224, - 4220383, - 2123252, - 2123253, - 2123262, - 2123263, - 2123277, - 2123281, - 2123282, - 2123286, - 2123293, - 2123299, - 2123302, - 2123305, - 2123321, - 2123319, - 2123328, - 2123334, - 2123338, - 2123352, - 2123360, - 2123381, - 2123391, - 2123385, - 2123388, - 2123418, - 2123419, - 2123420, - 2123423, - 4220597, - 2123458, - 2123459, - 2123468, - 2123470, - 2123476, - 2123487, - 2123499, - 2123502, - 2123527, - 2123548, - 2123552, - 2123554, - 2123582, - 2123589, - 2123628, - 2123652, - 2123662, - 2123670, - 2123673, - 2123708, - 2123709, - 2123714, - 2123717, - 2123721, - 2123740, - 2123745, - 2123750, - 2123762, - 2123766, - 2123796, - 2123801, - 2123815, - 2123823, - 2123839, - 2123850, - 2123864, - 2123887, - 2123888, - 2123889, - 2123897, - 2123899, - 2123912, - 2123937, - 2123945, - 2123950, - 2123985, - 2123987, - 2123996, - 2123997, - 2124010, - 2124022, - 2124029, - 2124038, - 2124041, - 2124048, - 2124054, - 2124081, - 2124101, - 2124110, - 2124134, - 2124144, - 2124145, - 2124155, - 2124173, - 2124193, - 2124216, - 2124229, - 2124232, - 4221438, - 2124288, - 2124291, - 2124320, - 2124324, - 2124343, - 4221525, - 2124394, - 2124417, - 2124422, - 2124423, - 2124443, - 2124464, - 2124465, - 2124468, - 2124478, - 2124479, - 2124492, - 2124501, - 2124502, - 2124528, - 2124540, - 2124546, - 2124550, - 2124551, - 2124553, - 2124584, - 2124587, - 2124598, - 2124621, - 2124626, - 2124637, - 2124651, - 2124654, - 2124656, - 2124677, - 2124695, - 2124703, - 2124704, - 2124706, - 2124707, - 2124712, - 2124716, - 2124728, - 2124729, - 2124739, - 2124740, - 2124771, - 2124818, - 2124825, - 2124831, - 2124838, - 2124839, - 2124840, - 2124846, - 2124859, - 2124875, - 2124879, - 2124907, - 2124920, - 2124935, - 2124959, - 2124976, - 2124978, - 2125005, - 2125007, - 2125009, - 2125031, - 2125042, - 2125044, - 2125063, - 2125071, - 2125075, - 2125082, - 2125096, - 2125151, - 2125159, - 2125202, - 2125207, - 2125239, - 2125245, - 2125280, - 2125282, - 2125285, - 2125295, - 2125300, - 2125312, - 2125316, - 2125371, - 2125394, - 2125405, - 2125410, - 2125416, - 2125453, - 2125465, - 2125472, - 2125485, - 2125486, - 2125491, - 2125499, - 2125504, - 2125512, - 2125517, - 2125519, - 2125549, - 2125550, - 2125572, - 2125576, - 2125581, - 2125590, - 2125595, - 2125627, - 2125613, - 2125647, - 2125651, - 2125661, - 2125676, - 2125699, - 2125715, - 2125734, - 2125744, - 2125765, - 2125800, - 2125821, - 2125847, - 2125871, - 2125876, - 2125879, - 2125892, - 2125896, - 2125909, - 2125972, - 2125974, - 2125979, - 2126004, - 2126074, - 2126085, - 2126091, - 2126125, - 2126136, - 2126145, - 2126155, - 4223314, - 2126167, - 2126170, - 2126220, - 2126234, - 2126256, - 2126271, - 2126272, - 2126284, - 2126298, - 2126328, - 2126344, - 2126345, - 2126355, - 2126362, - 2126372, - 2126383, - 2126405, - 2126414, - 2126430, - 2126443, - 2126449, - 2126459, - 2126460, - 2126473, - 2126483, - 2126504, - 2126549, - 2126550, - 2126552, - 2126559, - 2126590, - 2126605, - 2126611, - 2126642, - 2126645, - 2126678, - 2126685, - 2126686, - 2126687, - 2126688, - 2126697, - 2126713, - 2126720, - 2126734, - 2126736, - 2126739, - 2126743, - 2126762, - 2126765, - 2126790, - 2126796, - 2126803, - 2126813, - 2126822, - 2126839, - 2126843, - 2126847, - 2126848, - 2126865, - 2126893, - 2126951, - 2126952, - 2126958, - 2126991, - 2126993, - 2127002, - 2127022, - 2127025, - 2127026, - 2127052, - 2127056, - 2127059, - 4224216, - 2127067, - 2127080, - 2127082, - 4224239, - 2127100, - 2127110, - 2127122, - 2127143, - 2127145, - 2127158, - 2127161, - 2127171, - 2127175, - 2127191, - 2127199, - 2127201, - 2127227, - 2127228, - 2127237, - 2127253, - 2127260, - 2127290, - 2127378, - 2127395, - 2127401, - 2127417, - 2127418, - 2127424, - 2127428, - 2127449, - 2127493, - 2127500, - 2127501, - 2127519, - 2127522, - 2127523, - 2127553, - 2127563, - 4224724, - 2127584, - 2127606, - 2127622, - 2127634, - 2127636, - 2127637, - 2127644, - 2127662, - 2127677, - 2127682, - 2127698, - 2127702, - 2127703, - 2127728, - 2127731, - 2127732, - 4224909, - 4224930, - 2127790, - 2127793, - 2127797, - 2127811, - 2127826, - 2127829, - 2127864, - 2127886, - 2127889, - 2127901, - 2127907, - 2127940, - 2127944, - 2127948, - 2127954, - 2127966, - 2127968, - 2127969, - 2127971, - 2128015, - 2128040, - 2128044, - 2128050, - 2128061, - 2128063, - 2128071, - 2128082, - 2128086, - 2128091, - 2128095, - 2128106, - 2128115, - 2128118, - 2128127, - 2128134, - 2128154, - 2128158, - 2128160, - 2128169, - 2128173, - 2128181, - 2128196, - 2128203, - 2128207, - 2128209, - 2128233, - 2128251, - 2128254, - 2128268, - 2128273, - 2128275, - 2128284, - 2128296, - 2128303, - 2128335, - 2128349, - 2128352, - 2128354, - 2128357, - 2128369, - 2128376, - 2128380, - 2128391, - 2128417, - 2128423, - 2128427, - 2128431, - 2128436, - 2128437, - 2128456, - 2128469, - 2128485, - 2128510, - 2128523, - 2128529, - 2128542, - 2128585, - 2128603, - 2128617, - 2128620, - 2128625, - 2128635, - 2128671, - 2128675, - 2128681, - 2128688, - 2128692, - 2128703, - 2128704, - 2128746, - 2128772, - 2128777, - 2128782, - 2128790, - 2128805, - 2128818, - 2128822, - 2128826, - 2128827, - 2128829, - 2128834, - 2128840, - 2128859, - 2128884, - 2128885, - 2128889, - 2128890, - 2128898, - 2128900, - 2128902, - 2128908, - 2128921, - 2128923, - 2128933, - 2128940, - 2128948, - 2128953, - 2128954, - 2128966, - 2128981, - 2128986, - 2128995, - 4226153, - 2129020, - 2129030, - 2129072, - 2129083, - 2129103, - 2129108, - 2129129, - 2129167, - 2129169, - 2129174, - 2129190, - 2129194, - 2129197, - 2129233, - 2129239, - 2129253, - 2129255, - 2129272, - 2129275, - 2129281, - 2129302, - 2129347, - 2129348, - 2129349, - 2129350, - 2129357, - 2129358, - 2129408, - 2129378, - 2129386, - 2129389, - 2129402, - 2129436, - 2129453, - 2129459, - 2129471, - 2129486, - 2129488, - 2129496, - 2129503, - 2129509, - 2129557, - 2129565, - 2129566, - 2129727, - 2129756, - 2129766, - 4226944, - 2129805, - 2129807, - 2129830, - 2129834, - 2129844, - 2129852, - 2129856, - 2129864, - 2129896, - 2129935, - 2129939, - 2129949, - 2129951, - 2129952, - 2129966, - 2129972, - 2129982, - 2129984, - 2129988, - 2130020, - 2130029, - 2130049, - 2130105, - 2130120, - 2130125, - 2130130, - 2130158, - 2130162, - 2130166, - 2130169, - 2130187, - 2130204, - 2130208, - 2130236, - 2130245, - 2130247, - 2130258, - 2130273, - 2130295, - 2130310, - 2130318, - 2130326, - 2130338, - 2130350, - 2130373, - 2130382, - 2130411, - 2130416, - 2130417, - 2130418, - 2130421, - 2130424, - 4227584, - 2130447, - 2130461, - 2130472, - 2130499, - 2130510, - 2130513, - 2130518, - 2130535, - 2130555, - 2130560, - 2130561, - 2130567, - 2130580, - 2130582, - 2130584, - 2130586, - 2130587, - 2130592, - 2130650, - 2130656, - 2130660, - 2130669, - 2130698, - 2130699, - 2130718, - 2130719, - 2130721, - 2130732, - 2130734, - 2130739, - 2130743, - 2130749, - 2130754, - 2130765, - 2130766, - 2130800, - 2130816, - 2130818, - 2130820, - 2130841, - 2130844, - 2130854, - 2130860, - 2130878, - 2130771, - 2130920, - 2130969, - 2130861, - 2130991, - 2131013, - 2131015, - 2131021, - 2131030, - 4228188, - 2131040, - 2131044, - 2131047, - 2131050, - 2131060, - 2131069, - 2131090, - 2131093, - 2131113, - 2131114, - 2131143, - 2131144, - 2131148, - 2131186, - 2131191, - 2131202, - 2131203, - 2131207, - 2131214, - 2131216, - 2131228, - 2131234, - 2131239, - 2131242, - 2131251, - 2131254, - 2131263, - 2131280, - 2131282, - 2131292, - 4228445, - 2131295, - 2131296, - 2131321, - 2131337, - 2131339, - 2131360, - 2131365, - 2131367, - 2131380, - 2131382, - 2131384, - 2131389, - 2131390, - 2131391, - 2131394, - 2131418, - 2131424, - 2131432, - 2131443, - 2131452, - 2131469, - 2131470, - 2131481, - 2131483, - 2131510, - 2131514, - 2131517, - 2131544, - 2131545, - 2131549, - 2131552, - 2131553, - 2131556, - 2131561, - 2131574, - 2131606, - 2131610, - 2131617, - 2131622, - 2131629, - 2131636, - 2131637, - 2131639, - 2131641, - 2131647, - 2131653, - 2131666, - 2131674, - 2131676, - 2131680, - 2131685, - 2131687, - 2131592, - 2131716, - 2131727, - 2131759, - 2131762, - 2131772, - 2131773, - 2131781, - 2131789, - 2131809, - 2131823, - 2131843, - 2131844, - 2131845, - 2131846, - 2131856, - 2131861, - 4229027, - 2131889, - 2131912, - 2131914, - 2131925, - 2131929, - 2131932, - 2131938, - 2131940, - 2131953, - 2131955, - 2131960, - 2131962, - 2131967, - 2131977, - 2131993, - 2131986, - 2131994, - 2131998, - 2132016, - 2132021, - 2132033, - 2132035, - 2132040, - 2132041, - 4229195, - 2132049, - 2132060, - 2132064, - 2132081, - 2132089, - 2132091, - 2132096, - 2132127, - 2132136, - 2132154, - 2132171, - 2132172, - 2132190, - 2132199, - 2132215, - 2132237, - 2132245, - 2132246, - 2132256, - 2132264, - 2132273, - 2132282, - 2132294, - 2132303, - 2132306, - 2132311, - 2132315, - 2132321, - 2132323, - 2132334, - 2132339, - 2132341, - 2132346, - 2132349, - 2132365, - 2132373, - 2132379, - 2132380, - 2132384, - 2132404, - 2132406, - 2132439, - 2132457, - 2132461, - 2132473, - 2132484, - 2132485, - 2132510, - 2132512, - 2132516, - 2132518, - 2132523, - 2132524, - 2132527, - 2132541, - 2132544, - 2132547, - 2132563, - 2132566, - 2132572, - 2132581, - 2132598, - 2132599, - 2132602, - 2132603, - 2132608, - 2132611, - 2132619, - 2132623, - 2132626, - 2132631, - 2132633, - 2132639, - 2132649, - 2132655, - 2132659, - 2132667, - 2132675, - 2132678, - 2132680, - 2132682, - 2132691, - 2132692, - 2132693, - 2132720, - 2132735, - 2132747, - 2132766, - 2132784, - 2132796, - 2132802, - 2132808, - 2132813, - 2132835, - 2132857, - 2132868, - 2132877, - 2132879, - 2133048, - 2133054, - 2133073, - 2133080, - 2133083, - 2133085, - 2133081, - 2133091, - 2133092, - 2133094, - 2133109, - 2133110, - 2133118, - 2133126, - 2133127, - 2133131, - 2133136, - 4230299, - 2133148, - 2133177, - 2133190, - 2133195, - 2133199, - 2133213, - 2133224, - 2133231, - 2133234, - 2133247, - 2133349, - 2133375, - 2133378, - 2133384, - 2133392, - 2133406, - 2133408, - 2133420, - 2133429, - 2133431, - 2133433, - 2133435, - 2133440, - 2133445, - 2133447, - 2133450, - 2133460, - 2133477, - 2133488, - 2133436, - 2133508, - 2133509, - 2133521, - 2133555, - 2133559, - 2133560, - 2133582, - 2133595, - 2133597, - 2133598, - 2133625, - 2133634, - 2133635, - 2133659, - 2133661, - 2133666, - 2133690, - 2133697, - 2133699, - 2133700, - 2133703, - 2133724, - 2133742, - 2133745, - 2133751, - 2133741, - 2133762, - 2133775, - 2133776, - 2133782, - 2133792, - 2133793, - 2133795, - 2133800, - 2133806, - 2133812, - 2133815, - 2133825, - 2133839, - 2133842, - 2133843, - 2133853, - 2133854, - 2133861, - 2133917, - 2133944, - 2133950, - 2133952, - 2133963, - 2133968, - 2133970, - 2133987, - 2134014, - 2134040, - 2134056, - 2134057, - 2134058, - 2134067, - 2134068, - 2134079, - 2134114, - 2134118, - 2134124, - 2134158, - 2134181, - 2134220, - 2134229, - 2134232, - 2134233, - 2134245, - 2134226, - 2134280, - 2134285, - 2134288, - 2134298, - 2134304, - 2134313, - 2134318, - 2134326, - 2134332, - 2134339, - 2134351, - 2134355, - 2134381, - 2134395, - 2134401, - 2134406, - 2134419, - 2134420, - 2134424, - 2134433, - 2134438, - 2134463, - 2134483, - 2134484, - 2134489, - 2134505, - 2134506, - 2134511, - 2134521, - 2134525, - 2134532, - 2134533, - 2134540, - 2134546, - 2134547, - 2134552, - 2134556, - 2134557, - 2134564, - 2134565, - 2134566, - 2134574, - 2134575, - 2134576, - 2134581, - 2134582, - 2134590, - 2134598, - 2134605, - 2134616, - 2134620, - 2134621, - 2134633, - 2134638, - 2134639, - 2134640, - 2134645, - 2134649, - 2134651, - 2134666, - 2134674, - 2134688, - 2134692, - 2134693, - 2134696, - 2134710, - 2134712, - 2134714, - 2134717, - 2134727, - 2134733, - 2134744, - 2134748, - 2134749, - 2134753, - 2134755, - 2134760, - 2134764, - 2134766, - 2134768, - 2134784, - 2134792, - 2134812, - 2134820, - 2134826, - 2134836, - 2134839, - 2134864, - 2134869, - 2134878, - 2134887, - 2134889, - 2134895, - 2134900, - 2134902, - 2134906, - 2134909, - 2134912, - 2134913, - 2134925, - 2134930, - 2134933, - 2134936, - 4232097, - 2134950, - 2134952, - 2134955, - 2134964, - 2134965, - 2134966, - 2134980, - 2134981, - 2134985, - 2134987, - 2134989, - 2134995, - 2135001, - 2135031, - 2135041, - 2135048, - 2135061, - 2135071, - 2135087, - 2135101, - 2135107, - 2135129, - 2135132, - 2135135, - 2135137, - 2135144, - 2135150, - 2135172, - 2135171, - 2135422, - 2135428, - 2135453, - 2135454, - 2135482, - 2135513, - 2135517, - 2135519, - 2135582, - 2135586, - 2135589, - 2135590, - 2135607, - 2135609, - 2135610, - 2135634, - 2135638, - 2135639, - 2135662, - 2135676, - 2135678, - 2135697, - 2135711, - 2135718, - 2135754, - 4232922, - 2135775, - 2135802, - 2135813, - 2135834, - 2135837, - 4232993, - 2135882, - 2135896, - 2135927, - 2135928, - 2135931, - 2135936, - 2135945, - 2135959, - 2135992, - 2135996, - 2135999, - 2136004, - 2136005, - 2136007, - 2136010, - 2136014, - 2136016, - 2136023, - 2136029, - 2136036, - 2136055, - 2136056, - 2136058, - 2136089, - 2136092, - 2136096, - 2136111, - 2136117, - 2136132, - 2136138, - 2136145, - 2136170, - 2136238, - 2136268, - 2136294, - 2136310, - 2136327, - 2136351, - 2136354, - 2136358, - 2136363, - 2136372, - 2136377, - 2136391, - 2136409, - 2136411, - 2136475, - 2136477, - 2136479, - 2136496, - 2136498, - 2136501, - 2136531, - 2136538, - 2136540, - 2136551, - 2136554, - 2136555, - 2136556, - 2136564, - 2136565, - 2136573, - 2136574, - 2136580, - 2136587, - 2136606, - 2136610, - 2136627, - 2136629, - 2136647, - 4233802, - 2136651, - 2136660, - 2136669, - 2136746, - 2136748, - 2136750, - 2136754, - 2136756, - 2136763, - 2136767, - 2136776, - 2136791, - 2136795, - 2136804, - 2136807, - 2136812, - 2136818, - 2136819, - 2136821, - 2136826, - 2136829, - 2136831, - 2136832, - 2136836, - 2136837, - 2136859, - 2136870, - 4234037, - 2136887, - 2136889, - 2136890, - 2136908, - 2136918, - 2136919, - 2136923, - 2136929, - 2136938, - 2136941, - 2136942, - 2136952, - 2136959, - 2136965, - 2136967, - 2136969, - 2136971, - 2136973, - 2136980, - 2136986, - 2137001, - 2137015, - 2137020, - 2137040, - 2137081, - 2137103, - 2137105, - 2137118, - 2137126, - 2137128, - 2137149, - 2137155, - 2137166, - 2137182, - 2137211, - 2137335, - 2137337, - 2137372, - 2137391, - 2137395, - 2137396, - 2137402, - 2137404, - 2137413, - 2137427, - 2137428, - 2137445, - 2137475, - 2137478, - 2137486, - 2137490, - 2137491, - 2137493, - 2137495, - 2137496, - 2137514, - 2137518, - 4234687, - 2137546, - 2137556, - 2137557, - 2137566, - 2137582, - 2137584, - 2137598, - 2137614, - 2137616, - 2137617, - 2137618, - 2137622, - 2137735, - 2137742, - 2137743, - 2137750, - 2137752, - 2137774, - 2137779, - 2137798, - 2137800, - 2137803, - 2137813, - 2137836, - 2137837, - 2137841, - 2137845, - 2137848, - 2137873, - 2137878, - 2137882, - 2137887, - 2137905, - 2137906, - 2137916, - 2137919, - 2137923, - 2137924, - 2137927, - 2137942, - 2137950, - 2137966, - 2137971, - 2137978, - 2137981, - 2137999, - 2138001, - 2138002, - 2138006, - 2138017, - 2138019, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,0x204edd,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,0x204e9c,0x205516,0x205a03,0x20963f,0x2054c0,0x20611b, + 0x206328,0x2059f6,0x209022,0x208475,0x20831c,0x207a50,0x2060aa,0x2063e1,0x206e25,0x2065ed, + 0x208466,0x2082a6,0x209bf5,0x206893,0x205727,0x2065a1,0x206271,0x205b9b,0x2059d0,0x20867b, + 0x2098f4,0x207d62,0x207dbe,0x209b8e,0x206216,0x207c9f,0x2088b7,0x205b89,0x205eb5,0x206309, + 0x206697,0x206848,0x2095c7,0x20978d,0x20674f,0x204ee5,0x204f0a,0x204f4d,0x204f9d,0x205049, + 0x2056f2,0x205937,0x2059d4,0x205a01,0x205c09,0x2060df,0x20610f,0x206170,0x206613,0x206905, + 0x2070ba,0x20754f,0x207570,0x2079fb,0x207dad,0x207def,0x2080c3,0x20840e,0x208863,0x208b02, + 0x209055,0x20907a,0x20533b,0x204e95,0x204ea5,0x2057df,0x2080b2,0x2090c1,0x2078ef,0x204e00, + 0x2058f1,0x206ea2,0x209038,0x207a32,0x208328,0x20828b,0x209c2f,0x205141,0x205370,0x2054bd, + 0x2054e1,0x2056e0,0x2059fb,0x205f15,0x2098f2,0x206deb,0x2080e4,0x20852d,0x209662,0x209670, + 0x2096a0,0x2097fb,0x20540b,0x2053f3,0x205b87,0x2070cf,0x407fbd,0x208fc2,0x2096e8,0x20536f, + 0x209d5c,0x207aba,0x204e11,0x207893,0x2081fc,0x206e26,0x205618,0x205504,0x206b1d,0x20851a, + 0x209c3b,0x2059e5,0x2053a9,0x206d66,0x2074dc,0x20958f,0x205642,0x204e91,0x20904b,0x2096f2, + 0x20834f,0x20990c,0x2053e1,0x2055b6,0x205b30,0x205f71,0x206620,0x2066f3,0x206804,0x206c38, + 0x206cf3,0x206d29,0x20745b,0x2076c8,0x207a4e,0x209834,0x2082f1,0x20885b,0x208a60,0x2092ed, + 0x206db2,0x2075ab,0x2076ca,0x2099c5,0x2060a6,0x408b01,0x208d8a,0x2095b2,0x20698e,0x2053ad, + 0x205186,0x205712,0x205830,0x205944,0x205bb4,0x205ef6,0x206028,0x2063a9,0x2063f4,0x406cbf, + 0x206f14,0x20708e,0x207114,0x207159,0x2071d5,0x20733f,0x207e01,0x208276,0x2082d1,0x208597, + 0x209060,0x20925b,0x209d1b,0x205869,0x2065bc,0x206c5a,0x207525,0x2051f9,0x20592e,0x205965, + 0x205f80,0x205fdc,0x2062bc,0x2065fa,0x206a2a,0x206b27,0x206bb4,0x20738b,0x207fc1,0x208956, + 0x209d2c,0x209d0e,0x209ec4,0x205ca1,0x206c96,0x20837b,0x205104,0x205c4b,0x2061b6,0x2081c6, + 0x206876,0x207261,0x204e59,0x204ffa,0x205378,0x206069,0x206e29,0x207a4f,0x2097f3,0x204e0b, + 0x205316,0x204eee,0x204f55,0x204f3d,0x204fa1,0x204f73,0x2052a0,0x2053ef,0x205609,0x20590f, + 0x205ac1,0x205bb6,0x205be1,0x2079d1,0x206687,0x20679c,0x2067b6,0x206b4c,0x206cb3,0x20706b, + 0x2073c2,0x40798d,0x2079be,0x207a3c,0x207b87,0x2082b1,0x2082db,0x208304,0x208377,0x2083ef, + 0x2083d3,0x208766,0x208ab2,0x205629,0x208ca8,0x208fe6,0x20904e,0x20971e,0x20868a,0x204fc4, + 0x205ce8,0x206211,0x207259,0x20753b,0x2081e5,0x4082bd,0x2086fe,0x208cc0,0x2096c5,0x209913, + 0x2099d5,0x204ecb,0x204f1a,0x2089e3,0x2056de,0x20584a,0x2058ca,0x205efb,0x205feb,0x20602a, + 0x406094,0x206062,0x2061d0,0x206212,0x2062d0,0x206539,0x209b41,0x206666,0x2068b0,0x406d77, + 0x207070,0x20754c,0x207686,0x207d75,0x2082a5,0x2087f9,0x20958b,0x20968e,0x208c9d,0x2051f1, + 0x2052be,0x205916,0x2054b3,0x205bb3,0x205d16,0x206168,0x206982,0x206daf,0x20788d,0x2084cb, + 0x208857,0x208a72,0x2093a7,0x209ab8,0x206d6c,0x2099a8,0x2086d9,0x2057a3,0x2067ff,0x2086ce, + 0x20920e,0x205283,0x205687,0x205404,0x205ed3,0x2062e1,0x2064b9,0x20683c,0x206838,0x206bbb, + 0x207372,0x2078ba,0x207a6b,0x20899a,0x4089d2,0x208d6b,0x208f03,0x2090ed,0x2095a3,0x209694, + 0x209769,0x205b66,0x205cb3,0x20697d,0x20984d,0x20984e,0x20639b,0x207b20,0x206a2b,0x206a7f, + 0x2068b6,0x209c0d,0x206f5f,0x405272,0x20559d,0x206070,0x2062ec,0x206d3b,0x206e07,0x206ed1, + 0x20845b,0x208910,0x208f44,0x204e14,0x209c39,0x2053f6,0x20691b,0x206a3a,0x209784,0x20682a, + 0x20515c,0x207ac3,0x2084b2,0x2091dc,0x20938c,0x20565b,0x209d28,0x206822,0x208305,0x208431, + 0x207ca5,0x205208,0x2082c5,0x2074e6,0x204e7e,0x204f83,0x2051a0,0x205bd2,0x20520a,0x2052d8, + 0x2052e7,0x205dfb,0x20559a,0x20582a,0x2059e6,0x205b8c,0x205b98,0x205bdb,0x205e72,0x205e79, + 0x2060a3,0x20611f,0x206163,0x2061be,0x2063db,0x206562,0x2067d1,0x206853,0x2068fa,0x206b3e, + 0x206b53,0x206c57,0x206f22,0x206f97,0x206f45,0x2074b0,0x207518,0x2076e3,0x20770b,0x207aff, + 0x207ba1,0x207c21,0x207de9,0x207f36,0x207ff0,0x20809d,0x208266,0x20839e,0x2089b3,0x208acc, + 0x208cab,0x209084,0x209451,0x209593,0x209591,0x2095a2,0x209665,0x2097d3,0x209928,0x208218, + 0x204e38,0x20542b,0x205cb8,0x205dcc,0x2073a9,0x20764c,0x20773c,0x205ca9,0x207feb,0x208d0b, + 0x2096c1,0x209811,0x209854,0x209858,0x204f01,0x204f0e,0x205371,0x20559c,0x205668,0x2057fa, + 0x205947,0x205b09,0x205bc4,0x205c90,0x205e0c,0x205e7e,0x205fcc,0x2063ee,0x20673a,0x2065d7, + 0x4065e2,0x20671f,0x2068cb,0x2068c4,0x206a5f,0x205e30,0x206bc5,0x206c17,0x206c7d,0x20757f, + 0x407948,0x205b63,0x207a00,0x207d00,0x205fbd,0x20898f,0x208a18,0x208cb4,0x208d77,0x208ecc, + 0x208f1d,0x2098e2,0x209a0e,0x209b3c,0x204e80,0x20507d,0x205100,0x205993,0x205b9c,0x20622f, + 0x206280,0x2064ec,0x206b3a,0x2072a0,0x207591,0x207947,0x207fa9,0x2087fb,0x208abc,0x208b70, + 0x2063ac,0x2083ca,0x2097a0,0x205409,0x205403,0x2055ab,0x206854,0x206a58,0x208a70,0x207827, + 0x206775,0x209ecd,0x205374,0x205ba2,0x20811a,0x208650,0x209006,0x204e18,0x204e45,0x204ec7, + 0x204f11,0x2053ca,0x205438,0x205bae,0x205f13,0x206025,0x206551,0x20673d,0x206c42,0x206c72, + 0x206ce3,0x207078,0x207403,0x207a76,0x207aae,0x207b08,0x207d1a,0x207cfe,0x207d66,0x2065e7, + 0x20725b,0x2053bb,0x205c45,0x205de8,0x2062d2,0x2062e0,0x206319,0x206e20,0x20865a,0x208a31, + 0x208ddd,0x2092f8,0x206f01,0x2079a6,0x209b5a,0x204ea8,0x204eab,0x204eac,0x204f9b,0x204fa0, + 0x2050d1,0x205147,0x207af6,0x205171,0x2051f6,0x205354,0x205321,0x40537f,0x2053eb,0x2055ac, + 0x205883,0x205ce1,0x205f37,0x205f4a,0x20602f,0x206050,0x20606d,0x20631f,0x206559,0x206a4b, + 0x206cc1,0x2072c2,0x2072ed,0x2077ef,0x2080f8,0x208105,0x208208,0x20854e,0x2090f7,0x2093e1, + 0x2097ff,0x209957,0x209a5a,0x204ef0,0x2051dd,0x205c2d,0x206681,0x20696d,0x205c40,0x2066f2, + 0x206975,0x207389,0x206850,0x207c81,0x2050c5,0x2052e4,0x205747,0x205dfe,0x209326,0x2065a4, + 0x206b23,0x206b3d,0x207434,0x207981,0x2079bd,0x207b4b,0x207dca,0x2082b9,0x2083cc,0x20887f, + 0x20895f,0x408b39,0x208fd1,0x2091d1,0x20541f,0x209280,0x204e5d,0x205036,0x2053e5,0x20533a, + 0x2072d7,0x207396,0x2077e9,0x2082e6,0x208eaf,0x2099c6,0x2099c8,0x2099d2,0x205177,0x20611a, + 0x20865e,0x2055b0,0x207a7a,0x205076,0x205bd3,0x209047,0x209685,0x204e32,0x406adb,0x2091e7, + 0x205c51,0x205c48,0x206398,0x207a9f,0x206c93,0x209774,0x208f61,0x207aaa,0x20718a,0x209688, + 0x207c82,0x206817,0x207e70,0x206851,0x20936c,0x2052f2,0x20541b,0x2085ab,0x208a13,0x207fa4, + 0x208ecd,0x2090e1,0x205366,0x208888,0x207941,0x204fc2,0x2050be,0x205211,0x205144,0x205553, + 0x20572d,0x2073ea,0x20578b,0x205951,0x205f62,0x205f84,0x206075,0x206176,0x206167,0x2061a9, + 0x2063b2,0x20643a,0x20656c,0x20666f,0x206842,0x206e13,0x207566,0x207a3d,0x207cfb,0x207d4c, + 0x207d99,0x207e4b,0x207f6b,0x20830e,0x20834a,0x2086cd,0x208a08,0x208a63,0x208b66,0x208efd, + 0x20981a,0x209d8f,0x2082b8,0x208fce,0x209be8,0x205287,0x20621f,0x206483,0x206fc0,0x209699, + 0x206841,0x205091,0x206b20,0x206c7a,0x206f54,0x207a74,0x207d50,0x208840,0x208a23,0x206708, + 0x204ef6,0x205039,0x205026,0x205065,0x20517c,0x205238,0x205263,0x2055a7,0x20570f,0x205805, + 0x205acc,0x205efa,0x2061b2,0x2061f8,0x2062f3,0x206372,0x20691c,0x206a29,0x20727d,0x2072ac, + 0x20732e,0x207814,0x20786f,0x207d79,0x20770c,0x2080a9,0x20898b,0x208b19,0x208ce2,0x208ed2, + 0x209063,0x209375,0x20967a,0x209855,0x209a13,0x209e78,0x205143,0x20539f,0x2053b3,0x205e7b, + 0x205f26,0x206e1b,0x206e90,0x207384,0x2073fe,0x207d43,0x208237,0x208a00,0x208afa,0x209650, + 0x204e4e,0x20500b,0x2053e4,0x20547c,0x2056fa,0x2059d1,0x205b64,0x205df1,0x205eab,0x205f27, + 0x206238,0x206545,0x2067af,0x206e56,0x2072d0,0x207cca,0x2088b4,0x2080a1,0x2080e1,0x2083f0, + 0x20864e,0x208a87,0x208de8,0x209237,0x2096c7,0x209867,0x209f13,0x204e94,0x204e92,0x204f0d, + 0x205348,0x205449,0x20543e,0x205a2f,0x205f8c,0x205fa1,0x20609f,0x2068a7,0x206a8e,0x20745a, + 0x207881,0x208a9e,0x208aa4,0x208b77,0x209190,0x204e5e,0x209bc9,0x204ea4,0x204f7c,0x204faf, + 0x205019,0x205016,0x205149,0x20516c,0x20529f,0x2052b9,0x2052fe,0x20539a,0x2053e3,0x205411, + 0x20540e,0x205589,0x205751,0x2057a2,0x20597d,0x205b54,0x205b5d,0x205b8f,0x205de5,0x205de7, + 0x205df7,0x205e78,0x205e83,0x205e9a,0x205eb7,0x205f18,0x206052,0x20614c,0x206297,0x2062d8, + 0x2063a7,0x20653b,0x206602,0x206643,0x2066f4,0x20676d,0x206821,0x206897,0x2069cb,0x206c5f, + 0x206d2a,0x206d69,0x206e2f,0x206e9d,0x207532,0x207687,0x20786c,0x207a3f,0x207ce0,0x207d05, + 0x207d18,0x207d5e,0x207db1,0x208015,0x208003,0x2080af,0x2080b1,0x208154,0x20818f,0x20822a, + 0x208352,0x20884c,0x208861,0x208b1b,0x208ca2,0x208cfc,0x2090ca,0x209175,0x209271,0x20783f, + 0x2092fc,0x2095a4,0x20964d,0x209805,0x209999,0x209ad8,0x209d3b,0x20525b,0x2052ab,0x2053f7, + 0x205408,0x2058d5,0x2062f7,0x206fe0,0x208c6a,0x208f5f,0x209eb9,0x20514b,0x20523b,0x20544a, + 0x2056fd,0x407a40,0x209177,0x209d60,0x209ed2,0x207344,0x206f09,0x208170,0x207511,0x205ffd, + 0x2060da,0x209aa8,0x2072db,0x208fbc,0x206b64,0x209803,0x204eca,0x2056f0,0x205764,0x2058be, + 0x205a5a,0x206068,0x2061c7,0x20660f,0x206606,0x206839,0x2068b1,0x206df7,0x2075d5,0x207d3a, + 0x20826e,0x209b42,0x204e9b,0x204f50,0x2053c9,0x205506,0x205d6f,0x205de6,0x205dee,0x2067fb, + 0x206c99,0x207473,0x207802,0x208a50,0x209396,0x2088df,0x205750,0x205ea7,0x20632b,0x2050b5, + 0x2050ac,0x40518d,0x206700,0x2054c9,0x20585e,0x2059bb,0x205bb0,0x205f69,0x20624d,0x2063a1, + 0x20683d,0x206b73,0x206e08,0x20707d,0x2091c7,0x207280,0x207815,0x207826,0x20796d,0x20658e, + 0x207d30,0x2083dc,0x2088c1,0x208f09,0x20969b,0x205264,0x205728,0x206750,0x207f6a,0x208ca1, + 0x2051b4,0x205742,0x20962a,0x20583a,0x20698a,0x2080b4,0x2054b2,0x205d0e,0x2057fc,0x207895, + 0x209dfa,0x204f5c,0x20524a,0x20548b,0x20643e,0x206628,0x206714,0x2067f5,0x207a84,0x207b56, + 0x207d22,0x20932f,0x20685c,0x209bad,0x207b39,0x205319,0x20518a,0x205237,0x205bdf,0x2062f6, + 0x2064ae,0x2064e6,0x20672d,0x406bba,0x2085a9,0x2096d1,0x207690,0x209bd6,0x20634c,0x209306, + 0x209bab,0x2076bf,0x206652,0x204e09,0x205098,0x2053c2,0x205c71,0x2060e8,0x206492,0x206563, + 0x20685f,0x2071e6,0x2073ca,0x207523,0x207b97,0x207e82,0x208695,0x208b83,0x208cdb,0x209178, + 0x209910,0x2065ac,0x2066ab,0x206b8b,0x204ed5,0x204ed4,0x204f3a,0x204f7f,0x20523a,0x2053f8, + 0x2053f2,0x2055e3,0x2056db,0x2058eb,0x2059cb,0x2059c9,0x2059ff,0x205b50,0x205c4d,0x205e02, + 0x205e2b,0x205fd7,0x20601d,0x206307,0x20652f,0x205b5c,0x2065af,0x2065bd,0x2065e8,0x20679d, + 0x206b62,0x206b7b,0x206c0f,0x207345,0x207949,0x2079c1,0x207cf8,0x207d19,0x207d2b,0x2080a2, + 0x208102,0x2081f3,0x208996,0x208a5e,0x208a69,0x208a66,0x208a8c,0x208aee,0x208cc7,0x208cdc, + 0x2096cc,0x2098fc,0x206b6f,0x204e8b,0x204f3c,0x204f8d,0x205150,0x205b57,0x205bfa,0x206148, + 0x206301,0x206642,0x206b21,0x206ecb,0x206cbb,0x20723e,0x2074bd,0x2075d4,0x2078c1,0x40793a, + 0x20800c,0x208033,0x2081ea,0x208494,0x208f9e,0x206c50,0x209e7f,0x205f0f,0x208b58,0x209d2b, + 0x207afa,0x208ef8,0x205b8d,0x2096eb,0x204e03,0x2053f1,0x2057f7,0x205931,0x205ac9,0x205ba4, + 0x206089,0x206e7f,0x206f06,0x2075be,0x208cea,0x205b9f,0x208500,0x207be0,0x205072,0x2067f4, + 0x20829d,0x205c61,0x20854a,0x207e1e,0x20820e,0x205199,0x205c04,0x206368,0x208d66,0x20659c, + 0x40716e,0x20793e,0x207d17,0x208005,0x208b1d,0x208eca,0x20906e,0x2086c7,0x2090aa,0x20501f, + 0x4052fa,0x205c3a,0x206753,0x20707c,0x407235,0x20914c,0x2091c8,0x20932b,0x2082e5,0x205bc2, + 0x205f31,0x2060f9,0x204e3b,0x2053d6,0x205b88,0x20624b,0x206731,0x206b8a,0x2072e9,0x2073e0, + 0x207a2e,0x20816b,0x208da3,0x209152,0x209996,0x205112,0x2053d7,0x20546a,0x205bff,0x206388, + 0x206a39,0x207dac,0x209700,0x2056da,0x2053ce,0x405468,0x205b97,0x205c31,0x205dde,0x204fee, + 0x206101,0x2062fe,0x206d32,0x2079c0,0x2079cb,0x207d42,0x207e4d,0x207fd2,0x2081ed,0x20821f, + 0x208490,0x208846,0x208972,0x208b90,0x208e74,0x208f2f,0x209031,0x20914b,0x20916c,0x2096c6, + 0x20919c,0x204ec0,0x204f4f,0x205145,0x205341,0x205f93,0x20620e,0x2067d4,0x206c41,0x206e0b, + 0x207363,0x207e26,0x2091cd,0x209283,0x2053d4,0x205919,0x205bbf,0x206dd1,0x40795d,0x207e2e, + 0x207c9b,0x20587e,0x20719f,0x2051fa,0x208853,0x208ff0,0x204fca,0x205cfb,0x206625,0x2077ac, + 0x207ae3,0x20821c,0x2099ff,0x2051c6,0x205faa,0x2065ec,0x20696f,0x206b89,0x206df3,0x206e96, + 0x206f64,0x2076fe,0x207d14,0x205de1,0x209075,0x209187,0x209806,0x2051e6,0x20521d,0x206240, + 0x206691,0x2066d9,0x406e1a,0x205eb6,0x207dd2,0x407f72,0x2066f8,0x2085af,0x2085f7,0x408af8, + 0x2052a9,0x2053d9,0x205973,0x205e8f,0x205f90,0x206055,0x2092e4,0x209664,0x2050b7,0x20511f, + 0x2052dd,0x205320,0x205347,0x2053ec,0x2054e8,0x205546,0x205531,0x205617,0x205968,0x2059be, + 0x205a3c,0x205bb5,0x405c06,0x205c0f,0x205c11,0x205c1a,0x205e84,0x205e8a,0x205ee0,0x205f70, + 0x20627f,0x206284,0x2062db,0x20638c,0x206377,0x206607,0x20660c,0x20662d,0x206676,0x20677e, + 0x2068a2,0x206a1f,0x206a35,0x206cbc,0x206d88,0x206e09,0x206e58,0x20713c,0x207126,0x207167, + 0x2075c7,0x207701,0x20785d,0x207901,0x407965,0x2079f0,0x207ae0,0x207b11,0x207ca7,0x207d39, + 0x208096,0x2083d6,0x20848b,0x208549,0x20885d,0x2088f3,0x208a1f,0x208a3c,0x208a54,0x208a73, + 0x208c61,0x208cde,0x2091a4,0x209266,0x20937e,0x209418,0x20969c,0x209798,0x204e0a,0x204e08, + 0x204e1e,0x204e57,0x205197,0x205270,0x4057ce,0x205834,0x2058cc,0x205b22,0x205e38,0x2060c5, + 0x2064fe,0x206761,0x206756,0x206d44,0x2072b6,0x207573,0x207a63,0x2084b8,0x208b72,0x2091b8, + 0x209320,0x205631,0x2057f4,0x2098fe,0x2062ed,0x20690d,0x206b96,0x2071ed,0x207e54,0x208077, + 0x208272,0x2089e6,0x2098df,0x208755,0x208fb1,0x205c3b,0x204f38,0x204fe1,0x204fb5,0x205507, + 0x205a20,0x205bdd,0x205be9,0x205fc3,0x20614e,0x20632f,0x2065b0,0x20664b,0x2068ee,0x20699b, + 0x206d78,0x206df1,0x207533,0x2075b9,0x20771f,0x40795e,0x2079e6,0x207d33,0x2081e3,0x2082af, + 0x2085aa,0x2089aa,0x208a3a,0x208eab,0x208f9b,0x209032,0x2091dd,0x209707,0x204eba,0x204ec1, + 0x205203,0x205875,0x2058ec,0x205c0b,0x20751a,0x205c3d,0x20814e,0x208a0a,0x208fc5,0x209663, + 0x20976d,0x207b25,0x208acf,0x209808,0x209162,0x2056f3,0x2053a8,0x209017,0x205439,0x205782, + 0x205e25,0x2063a8,0x206c34,0x20708a,0x207761,0x207c8b,0x207fe0,0x208870,0x209042,0x209154, + 0x209310,0x209318,0x20968f,0x20745e,0x209ac4,0x205d07,0x205d69,0x206570,0x2067a2,0x208da8, + 0x2096db,0x20636e,0x206749,0x206919,0x2083c5,0x209817,0x2096c0,0x2088fe,0x206f84,0x20647a, + 0x205bf8,0x204e16,0x20702c,0x20755d,0x20662f,0x2051c4,0x205236,0x2052e2,0x2059d3,0x205f81, + 0x206027,0x206210,0x20653f,0x206574,0x20661f,0x406674,0x2068f2,0x206816,0x206b63,0x206e05, + 0x207272,0x20751f,0x2076db,0x407cbe,0x208056,0x2058f0,0x2088fd,0x20897f,0x208aa0,0x208a93, + 0x208acb,0x20901d,0x209192,0x209752,0x209759,0x206589,0x207a0e,0x208106,0x2096bb,0x205e2d, + 0x2060dc,0x20621a,0x2065a5,0x206614,0x206790,0x2077f3,0x207a4d,0x207c4d,0x207e3e,0x20810a, + 0x208cac,0x208d64,0x208de1,0x208e5f,0x2078a9,0x205207,0x2062d9,0x2063a5,0x206442,0x206298, + 0x208a2d,0x207a83,0x207bc0,0x208aac,0x2096ea,0x207d76,0x20820c,0x208749,0x204ed9,0x205148, + 0x205343,0x205360,0x205ba3,0x205c02,0x205c16,0x205ddd,0x206226,0x206247,0x2064b0,0x206813, + 0x206834,0x206cc9,0x206d45,0x206d17,0x2067d3,0x206f5c,0x20714e,0x20717d,0x2065cb,0x207a7f, + 0x207bad,0x207dda,0x207e4a,0x207fa8,0x20817a,0x20821b,0x208239,0x2085a6,0x208a6e,0x208cce, + 0x208df5,0x209078,0x209077,0x2092ad,0x209291,0x209583,0x209bae,0x20524d,0x205584,0x206f38, + 0x207136,0x205168,0x207985,0x207e55,0x2081b3,0x207cce,0x20564c,0x205851,0x205ca8,0x2063aa, + 0x2066fe,0x2066fd,0x20695a,0x2072d9,0x20758f,0x20758e,0x20790e,0x207956,0x2079df,0x207c97, + 0x207d20,0x207d44,0x208607,0x208a34,0x20963b,0x209061,0x209f20,0x2050e7,0x205275,0x2053cc, + 0x2053e2,0x205009,0x2055aa,0x2058ee,0x20594f,0x20723d,0x205b8b,0x205c64,0x20531d,0x2060e3, + 0x2060f3,0x20635c,0x206383,0x20633f,0x2063bb,0x2064cd,0x2065e9,0x2066f9,0x205de3,0x2069cd, + 0x2069fd,0x206f15,0x2071e5,0x204e89,0x2075e9,0x2076f8,0x207a93,0x207cdf,0x207dcf,0x207d9c, + 0x208061,0x208349,0x208358,0x20846c,0x2084bc,0x2085fb,0x2088c5,0x208d70,0x209001,0x20906d, + 0x209397,0x20971c,0x209a12,0x2050cf,0x205897,0x40618e,0x2081d3,0x208535,0x208d08,0x209020, + 0x204fc3,0x205074,0x205247,0x205373,0x20606f,0x206349,0x20675f,0x206e2c,0x208db3,0x20901f, + 0x204fd7,0x205c5e,0x208cca,0x2065cf,0x207d9a,0x205352,0x208896,0x205176,0x2063c3,0x205b58, + 0x205b6b,0x205c0a,0x20640d,0x206751,0x20905c,0x204ed6,0x20591a,0x20592a,0x206c70,0x208a51, + 0x20553e,0x205815,0x2059a5,0x2060f0,0x206253,0x2067c1,0x208235,0x206955,0x209640,0x2099c4, + 0x209a28,0x204f53,0x205806,0x205bfe,0x208010,0x205cb1,0x205e2f,0x205f85,0x206020,0x20614b, + 0x206234,0x2066ff,0x206cf0,0x206ede,0x2080ce,0x20817f,0x2082d4,0x20888b,0x208cb8,0x209000, + 0x20902e,0x20968a,0x209edb,0x209bdb,0x204ee3,0x2053f0,0x205927,0x207b2c,0x20918d,0x20984c, + 0x209df9,0x206edd,0x207027,0x205353,0x205544,0x205b85,0x206258,0x20629e,0x2062d3,0x206ca2, + 0x206fef,0x407422,0x208a17,0x209438,0x206fc1,0x208afe,0x208338,0x2051e7,0x2086f8,0x2053ea, + 0x2053e9,0x204f46,0x209054,0x208fb0,0x20596a,0x208131,0x405dfd,0x207aea,0x208fbf,0x2068da, + 0x208c37,0x2072f8,0x209c48,0x206a3d,0x208ab0,0x204e39,0x205358,0x405606,0x205766,0x2062c5, + 0x2063a2,0x2065e6,0x206b4e,0x206de1,0x206e5b,0x2070ad,0x2077ed,0x207aef,0x207baa,0x207dbb, + 0x20803d,0x2080c6,0x2086cb,0x208a95,0x20935b,0x2056e3,0x2058c7,0x205f3e,0x2065ad,0x206696, + 0x206a80,0x206bb5,0x207537,0x208ac7,0x205024,0x2077e5,0x205730,0x205f1b,0x206065,0x20667a, + 0x206c60,0x2075f4,0x207a1a,0x207f6e,0x2081f4,0x208718,0x209045,0x2099b3,0x207bc9,0x20755c, + 0x207af9,0x207b51,0x2084c4,0x209010,0x2079e9,0x207a92,0x208336,0x205ae1,0x207740,0x204e2d, + 0x204ef2,0x205b99,0x205fe0,0x2062bd,0x20663c,0x2067f1,0x206ce8,0x20866b,0x208877,0x208a3b, + 0x20914e,0x2092f3,0x2099d0,0x206a17,0x207026,0x40732a,0x2082e7,0x208457,0x208caf,0x204e01, + 0x205146,0x2051cb,0x20558b,0x205bf5,0x205e16,0x205e33,0x205e81,0x205f14,0x205f35,0x205f6b, + 0x205fb4,0x2061f2,0x206311,0x2066a2,0x20671d,0x406f6e,0x207252,0x20753a,0x20773a,0x208074, + 0x208139,0x208178,0x208776,0x208abf,0x208adc,0x208d85,0x208df3,0x20929a,0x209577,0x209802, + 0x209ce5,0x2052c5,0x206357,0x2076f4,0x206715,0x206c88,0x2073cd,0x208cc3,0x2093ae,0x209673, + 0x206d25,0x20589c,0x20690e,0x2069cc,0x208ffd,0x20939a,0x2075db,0x20901a,0x20585a,0x206802, + 0x2063b4,0x2069fb,0x204f43,0x206f2c,0x2067d8,0x208fbb,0x208526,0x207db4,0x209354,0x20693f, + 0x206f70,0x20576a,0x2058f7,0x205b2c,0x207d2c,0x20722a,0x20540a,0x2091e3,0x409db4,0x204ead, + 0x204f4e,0x20505c,0x205075,0x205243,0x208c9e,0x205448,0x205824,0x205b9a,0x205e1d,0x205e95, + 0x205ead,0x205ef7,0x205f1f,0x20608c,0x2062b5,0x20633a,0x2063d0,0x2068af,0x206c40,0x207887, + 0x20798e,0x207a0b,0x207de0,0x208247,0x208a02,0x208ae6,0x208e44,0x209013,0x2090b8,0x20912d, + 0x2091d8,0x209f0e,0x206ce5,0x206458,0x2064e2,0x206575,0x206ef4,0x207684,0x207b1b,0x209069, + 0x2093d1,0x206eba,0x2054f2,0x205fb9,0x2064a4,0x208f4d,0x208fed,0x209244,0x205178,0x20586b, + 0x205929,0x205c55,0x205e97,0x206dfb,0x207e8f,0x20751c,0x208cbc,0x208ee2,0x20985b,0x2070b9, + 0x204f1d,0x206bbf,0x206fb1,0x207530,0x2096fb,0x20514e,0x205410,0x205835,0x205857,0x2059ac, + 0x205c60,0x205f92,0x206597,0x20675c,0x206e21,0x20767b,0x2083df,0x208ced,0x209014,0x4090fd, + 0x20934d,0x207825,0x20783a,0x2052aa,0x205ea6,0x20571f,0x205974,0x206012,0x205012,0x20515a, + 0x4051ac,0x2051cd,0x205200,0x205510,0x205854,0x205858,0x205957,0x205b95,0x205cf6,0x205d8b, + 0x2060bc,0x206295,0x20642d,0x206771,0x206843,0x2068bc,0x2068df,0x2076d7,0x206dd8,0x206e6f, + 0x206d9b,0x20706f,0x2071c8,0x205f53,0x2075d8,0x207977,0x207b49,0x207b54,0x207b52,0x407cd6, + 0x207d71,0x205230,0x208463,0x208569,0x2085e4,0x208a0e,0x208b04,0x208c46,0x208e0f,0x209003, + 0x20900f,0x209419,0x209676,0x20982d,0x209a30,0x2095d8,0x2050cd,0x2052d5,0x20540c,0x205802, + 0x205c0e,0x2061a7,0x20649e,0x206d1e,0x2077b3,0x207ae5,0x2080f4,0x208404,0x209053,0x209285, + 0x205ce0,0x209d07,0x20533f,0x205f97,0x205fb3,0x206d9c,0x207279,0x207763,0x2079bf,0x207be4, + 0x206bd2,0x2072ec,0x208aad,0x206803,0x206a61,0x2051f8,0x207a81,0x206934,0x205c4a,0x209cf6, + 0x2082eb,0x205bc5,0x209149,0x20701e,0x205678,0x205c6f,0x2060c7,0x206566,0x206c8c,0x208c5a, + 0x209041,0x209813,0x205451,0x2066c7,0x20920d,0x205948,0x2090a3,0x205185,0x204e4d,0x2051ea, + 0x208599,0x208b0e,0x207058,0x20637a,0x20934b,0x206962,0x2099b4,0x207e04,0x207577,0x205357, + 0x206960,0x208edf,0x4096e3,0x206c5d,0x204e8c,0x205c3c,0x205f10,0x208fe9,0x205302,0x208cd1, + 0x208089,0x208679,0x205eff,0x2065e5,0x204e73,0x205165,0x205982,0x205c3f,0x2097ee,0x204efb, + 0x20598a,0x205fcd,0x208a8d,0x206fe1,0x2079b0,0x207962,0x405be7,0x208471,0x20732b,0x2071b1, + 0x205e74,0x205ff5,0x20637b,0x20649a,0x2071c3,0x207c98,0x204e43,0x205efc,0x204e4b,0x2057dc, + 0x2056a2,0x2060a9,0x206fc3,0x207d0d,0x2080fd,0x208133,0x2081bf,0x208fb2,0x208997,0x2086a4, + 0x205df4,0x20628a,0x2064ad,0x208987,0x206777,0x206ce2,0x206d3e,0x207436,0x207834,0x205a46, + 0x207f75,0x2082ad,0x2099ac,0x204ff3,0x205ec3,0x2062dd,0x206392,0x206557,0x20676f,0x2076c3, + 0x20724c,0x2080cc,0x2080ba,0x208f29,0x20914d,0x20500d,0x2057f9,0x205a92,0x406885,0x206973, + 0x207164,0x2072fd,0x208cb7,0x2058f2,0x208ce0,0x20966a,0x209019,0x20877f,0x2079e4,0x2077e7, + 0x208429,0x204f2f,0x205265,0x20535a,0x2062cd,0x2067cf,0x206cca,0x20767d,0x207b94,0x207c95, + 0x208236,0x208584,0x208feb,0x2066dd,0x206f20,0x207206,0x207e1b,0x2083ab,0x2099c1,0x209ea6, + 0x2051fd,0x207bb1,0x207872,0x207bb8,0x208087,0x207b48,0x206ae8,0x205e61,0x20808c,0x207551, + 0x207560,0x20516b,0x209262,0x206e8c,0x20767a,0x209197,0x209aea,0x204f10,0x207f70,0x20629c, + 0x207b4f,0x2095a5,0x209ce9,0x20567a,0x205859,0x2086e4,0x2096bc,0x204f34,0x205224,0x20534a, + 0x2053cd,0x2053db,0x205e06,0x20642c,0x206591,0x20677f,0x206c3e,0x206c4e,0x207248,0x2072af, + 0x2073ed,0x207554,0x207e41,0x20822c,0x2085e9,0x208ca9,0x207bc4,0x2091c6,0x207169,0x209812, + 0x4098ef,0x20633d,0x206669,0x20756a,0x2076e4,0x2078d0,0x208543,0x2086ee,0x20532a,0x405351, + 0x205426,0x205983,0x205e87,0x205f7c,0x2060b2,0x206249,0x206279,0x2062ab,0x206590,0x206bd4, + 0x206ccc,0x2075b2,0x2076ae,0x407891,0x2079d8,0x207dcb,0x207f77,0x2080a5,0x2088ab,0x208ab9, + 0x208cbb,0x20907f,0x20975e,0x2098db,0x206a0b,0x207c38,0x205099,0x205c3e,0x205fae,0x206787, + 0x206bd8,0x207435,0x207709,0x207f8e,0x209f3b,0x2067ca,0x207a17,0x205339,0x20758b,0x209aed, + 0x205f66,0x20819d,0x2083f1,0x208098,0x205f3c,0x205fc5,0x207562,0x207b46,0x20903c,0x206867, + 0x2059eb,0x205a9b,0x207d10,0x20767e,0x208b2c,0x204ff5,0x205f6a,0x206a19,0x206c37,0x206f02, + 0x2074e2,0x207968,0x208868,0x208a55,0x208c79,0x205edf,0x2063cf,0x2075c5,0x2079d2,0x2082d7, + 0x209328,0x2092f2,0x20849c,0x2086ed,0x209c2d,0x2054c1,0x205f6c,0x20658c,0x206d5c,0x207015, + 0x208ca7,0x408cd3,0x40983b,0x40654f,0x2074f6,0x204e0d,0x204ed8,0x2057e0,0x20592b,0x205a66, + 0x205bcc,0x2051a8,0x205e03,0x205e9c,0x206016,0x206276,0x206577,0x2065a7,0x20666e,0x206d6e, + 0x207236,0x207b26,0x208150,0x20819a,0x208299,0x208b5c,0x208ca0,0x208ce6,0x208d74,0x20961c, + 0x209644,0x204fae,0x2064ab,0x206b66,0x20821e,0x208461,0x20856a,0x2090e8,0x205c01,0x206953, + 0x2098a8,0x20847a,0x208557,0x204f0f,0x20526f,0x205fa9,0x205e45,0x20670d,0x20798f,0x208179, + 0x208907,0x208986,0x206df5,0x205f17,0x206255,0x206cb8,0x204ecf,0x207269,0x209b92,0x205206, + 0x20543b,0x205674,0x2058b3,0x2061a4,0x20626e,0x20711a,0x20596e,0x207c89,0x207cde,0x207d1b, + 0x2096f0,0x206587,0x20805e,0x204e19,0x204f75,0x205175,0x205840,0x205e63,0x205e73,0x205f0a, + 0x2067c4,0x204e26,0x20853d,0x209589,0x20965b,0x207c73,0x209801,0x2050fb,0x2058c1,0x207656, + 0x2078a7,0x205225,0x2077a5,0x208511,0x207b86,0x20504f,0x205909,0x207247,0x207bc7,0x207de8, + 0x208fba,0x208fd4,0x20904d,0x204fbf,0x4052c9,0x205a29,0x205f01,0x2097ad,0x204fdd,0x208217, + 0x2092ea,0x205703,0x206355,0x206b69,0x20752b,0x2088dc,0x208f14,0x207a42,0x2052df,0x205893, + 0x206155,0x20620a,0x2066ae,0x206bcd,0x207c3f,0x2083e9,0x205023,0x204ff8,0x205305,0x205446, + 0x205831,0x205949,0x205b9d,0x205cf0,0x205cef,0x205d29,0x205e96,0x2062b1,0x206367,0x20653e, + 0x2065b9,0x20670b,0x206cd5,0x206ce1,0x2070f9,0x207832,0x207e2b,0x2080de,0x2082b3,0x20840c, + 0x2084ec,0x208702,0x208912,0x208a2a,0x208c4a,0x2090a6,0x2092d2,0x2098fd,0x209cf3,0x209d6c, + 0x204e4f,0x204ea1,0x20508d,0x205256,0x20574a,0x2059a8,0x205e3d,0x205fd8,0x205fd9,0x20623f, + 0x2066b4,0x20671b,0x2067d0,0x2068d2,0x205192,0x207d21,0x2080aa,0x2081a8,0x208b00,0x208c8c, + 0x208cbf,0x20927e,0x209632,0x205420,0x20982c,0x205317,0x2050d5,0x20535c,0x4058a8,0x2064b2, + 0x206734,0x207267,0x207766,0x207a46,0x2091e6,0x2052c3,0x206ca1,0x206b86,0x205800,0x205e4c, + 0x205954,0x20672c,0x207ffb,0x2051e1,0x2076c6,0x206469,0x2078e8,0x209b54,0x209ebb,0x2057cb, + 0x2059b9,0x206627,0x20679a,0x206bce,0x2054e9,0x2069d9,0x205e55,0x20819c,0x206795,0x209baa, + 0x2067fe,0x209c52,0x20685d,0x204ea6,0x204fe3,0x2053c8,0x2062b9,0x20672b,0x206cab,0x208fc4, + 0x204fad,0x207e6d,0x209ebf,0x204e07,0x206162,0x206e80,0x206f2b,0x208513,0x205473,0x20672a, + 0x209b45,0x205df3,0x207b95,0x205cac,0x205bc6,0x20871c,0x206e4a,0x2084d1,0x207a14,0x208108, + 0x205999,0x207c8d,0x206c11,0x207720,0x2052d9,0x205922,0x207121,0x20725f,0x2077db,0x209727, + 0x209d61,0x20690b,0x205a7f,0x205a18,0x2051a5,0x20540d,0x20547d,0x20660e,0x2076df,0x208ff7, + 0x209298,0x209cf4,0x2059ea,0x20725d,0x206ec5,0x20514d,0x2068c9,0x207dbf,0x207dec,0x209762, + 0x209eba,0x206478,0x206a21,0x208302,0x205984,0x205b5f,0x206bdb,0x20731b,0x2076f2,0x207db2, + 0x208017,0x208499,0x205132,0x206728,0x209ed9,0x2076ee,0x206762,0x2052ff,0x209905,0x205c24, + 0x20623b,0x207c7e,0x208cb0,0x20554f,0x2060b6,0x207d0b,0x209580,0x205301,0x204e5f,0x2051b6, + 0x20591c,0x20723a,0x208036,0x2091ce,0x205f25,0x2077e2,0x205384,0x205f79,0x207d04,0x2085ac, + 0x208a33,0x208e8d,0x209756,0x2067f3,0x2085ae,0x209453,0x206109,0x206108,0x206cb9,0x207652, + 0x408aed,0x208f38,0x20552f,0x204f51,0x20512a,0x2052c7,0x2053cb,0x205ba5,0x205e7d,0x2060a0, + 0x206182,0x2063d6,0x206709,0x2067da,0x206e67,0x206d8c,0x207336,0x207337,0x207531,0x407950, + 0x2088d5,0x208a98,0x20904a,0x209091,0x2090f5,0x2096c4,0x20878d,0x205915,0x204e88,0x204f59, + 0x204e0e,0x208a89,0x208f3f,0x209810,0x2050ad,0x205e7c,0x205996,0x205bb9,0x205eb8,0x2063da, + 0x2063fa,0x2064c1,0x2066dc,0x20694a,0x2069d8,0x206d0b,0x206eb6,0x207194,0x207528,0x207aaf, + 0x407f8a,0x208000,0x208449,0x2084c9,0x208981,0x208b21,0x208e0a,0x209065,0x20967d,0x20990a, + 0x20617e,0x206291,0x206b32,0x206c83,0x206d74,0x207fcc,0x207ffc,0x206dc0,0x207f85,0x2087ba, + 0x2088f8,0x206765,0x2083b1,0x20983c,0x2096f7,0x206d1b,0x207d61,0x20843d,0x20916a,0x204e71, + 0x205375,0x205d50,0x406b04,0x206feb,0x2085cd,0x20862d,0x2089a7,0x205229,0x20540f,0x205c65, + 0x20674e,0x2068a8,0x207406,0x207483,0x2075e2,0x2088cf,0x2088e1,0x2091cc,0x2096e2,0x209678, + 0x205f8b,0x207387,0x207acb,0x20844e,0x2063a0,0x207565,0x205289,0x206d41,0x206e9c,0x207409, + 0x207559,0x20786b,0x207c92,0x209686,0x207adc,0x209f8d,0x204fb6,0x20616e,0x2065c5,0x40865c, + 0x204e86,0x204eae,0x2050da,0x204e21,0x2051cc,0x205bee,0x206599,0x206881,0x206dbc,0x20731f, + 0x207642,0x2077ad,0x207a1c,0x207ce7,0x20826f,0x208ad2,0x20907c,0x2091cf,0x209675,0x209818, + 0x20529b,0x207dd1,0x20502b,0x205398,0x206797,0x206dcb,0x2071d0,0x207433,0x2081e8,0x208f2a, + 0x2096a3,0x209c57,0x209e9f,0x207460,0x205841,0x206d99,0x207d2f,0x40985e,0x204ee4,0x204f36, + 0x204f8b,0x2051b7,0x2052b1,0x205dba,0x20601c,0x2073b2,0x20793c,0x2082d3,0x209234,0x2096b7, + 0x2096f6,0x20970a,0x209e97,0x209f62,0x2066a6,0x206b74,0x205217,0x2052a3,0x2070c8,0x2088c2, + 0x405ec9,0x20604b,0x206190,0x406f23,0x407149,0x207c3e,0x407df4,0x20806f,0x4084ee,0x409023, + 0x20932c,0x205442,0x209b6f,0x206ad3,0x207089,0x208cc2,0x208def,0x209732,0x2052b4,0x205a41, + 0x205eca,0x205f04,0x406717,0x20697c,0x206994,0x206d6a,0x206f0f,0x207262,0x2072fc,0x207bed, + 0x208001,0x20807e,0x20874b,0x2090ce,0x20516d,0x209e93,0x207984,0x20808b,0x209332,0x208ad6, + 0x20502d,0x20548c,0x208a71,0x206b6a,0x208cc4,0x208107,0x2060d1,0x2067a0,0x209df2,0x204e99, + 0x204e98,0x209c10,0x208a6b,0x2085c1,0x208568,0x206900,0x206e7e,0x207897,0x208155,0x205f0c, + 0x204e10,0x204e15,0x204e2a,0x204e31,0x204e36,0x204e3c,0x204e3f,0x204e42,0x204e56,0x204e58, + 0x204e82,0x204e85,0x208c6b,0x204e8a,0x208212,0x205f0d,0x204e8e,0x204e9e,0x204e9f,0x204ea0, + 0x204ea2,0x204eb0,0x204eb3,0x204eb6,0x204ece,0x204ecd,0x204ec4,0x204ec6,0x204ec2,0x204ed7, + 0x204ede,0x204eed,0x204edf,0x204ef7,0x204f09,0x204f5a,0x204f30,0x204f5b,0x204f5d,0x204f57, + 0x204f47,0x204f76,0x204f88,0x204f8f,0x204f98,0x204f7b,0x204f69,0x204f70,0x204f91,0x204f6f, + 0x204f86,0x204f96,0x205118,0x204fd4,0x204fdf,0x204fce,0x204fd8,0x204fdb,0x204fd1,0x204fda, + 0x204fd0,0x204fe4,0x204fe5,0x20501a,0x205028,0x205014,0x20502a,0x205025,0x205005,0x204f1c, + 0x204ff6,0x205021,0x205029,0x20502c,0x204ffe,0x204fef,0x205011,0x205006,0x205043,0x205047, + 0x206703,0x205055,0x205050,0x205048,0x20505a,0x205056,0x20506c,0x205078,0x205080,0x20509a, + 0x205085,0x2050b4,0x2050b2,0x2050c9,0x2050ca,0x2050b3,0x2050c2,0x2050d6,0x2050de,0x2050e5, + 0x2050ed,0x2050e3,0x2050ee,0x2050f9,0x2050f5,0x205109,0x205101,0x205102,0x205116,0x205115, + 0x205114,0x20511a,0x205121,0x20513a,0x205137,0x20513c,0x20513b,0x20513f,0x205140,0x205152, + 0x20514c,0x405154,0x205162,0x207af8,0x205169,0x20516a,0x20516e,0x205180,0x205182,0x2056d8, + 0x20518c,0x205189,0x20518f,0x205191,0x205193,0x405195,0x205196,0x2051a4,0x2051a6,0x2051a2, + 0x2051a9,0x2051aa,0x2051ab,0x2051b3,0x2051b1,0x2051b2,0x2051b0,0x2051b5,0x2051bd,0x2051c5, + 0x2051c9,0x2051db,0x2051e0,0x208655,0x2051e9,0x2051ed,0x2051f0,0x2051f5,0x2051fe,0x205204, + 0x20520b,0x205214,0x20520e,0x205227,0x20522a,0x20522e,0x205233,0x205239,0x20524f,0x205244, + 0x20524b,0x20524c,0x20525e,0x205254,0x20526a,0x205274,0x205269,0x205273,0x20527f,0x20527d, + 0x20528d,0x205294,0x205292,0x205271,0x205288,0x205291,0x208fa8,0x208fa7,0x2052ac,0x2052ad, + 0x2052bc,0x2052b5,0x2052c1,0x2052cd,0x2052d7,0x2052de,0x2052e3,0x2052e6,0x2098ed,0x2052e0, + 0x2052f3,0x2052f5,0x2052f8,0x2052f9,0x205306,0x205308,0x207538,0x20530d,0x205310,0x20530f, + 0x205315,0x20531a,0x205323,0x20532f,0x205331,0x205333,0x205338,0x205340,0x205346,0x205345, + 0x204e17,0x205349,0x20534d,0x2051d6,0x20535e,0x205369,0x20536e,0x205918,0x20537b,0x205377, + 0x205382,0x205396,0x2053a0,0x2053a6,0x2053a5,0x2053ae,0x2053b0,0x2053b6,0x2053c3,0x207c12, + 0x2096d9,0x2053df,0x2066fc,0x2071ee,0x2053ee,0x2053e8,0x2053ed,0x2053fa,0x205401,0x20543d, + 0x205440,0x20542c,0x20542d,0x20543c,0x20542e,0x205436,0x205429,0x20541d,0x20544e,0x20548f, + 0x205475,0x20548e,0x20545f,0x205471,0x205477,0x205470,0x205492,0x20547b,0x205480,0x205476, + 0x205484,0x205490,0x205486,0x2054c7,0x2054a2,0x2054b8,0x2054a5,0x2054ac,0x2054c4,0x2054c8, + 0x2054a8,0x2054ab,0x2054c2,0x2054a4,0x2054be,0x2054bc,0x2054d8,0x2054e5,0x2054e6,0x20550f, + 0x205514,0x2054fd,0x2054ee,0x2054ed,0x2054fa,0x2054e2,0x205539,0x205540,0x205563,0x20554c, + 0x20552e,0x20555c,0x205545,0x205556,0x205557,0x205538,0x205533,0x20555d,0x205599,0x205580, + 0x2054af,0x20558a,0x20559f,0x20557b,0x20557e,0x205598,0x20559e,0x2055ae,0x20557c,0x205583, + 0x2055a9,0x205587,0x2055a8,0x2055da,0x2055c5,0x2055df,0x2055c4,0x2055dc,0x2055e4,0x2055d4, + 0x205614,0x2055f7,0x205616,0x2055fe,0x2055fd,0x20561b,0x2055f9,0x20564e,0x205650,0x2071df, + 0x205634,0x205636,0x205632,0x205638,0x20566b,0x205664,0x20562f,0x20566c,0x20566a,0x205686, + 0x205680,0x20568a,0x2056a0,0x205694,0x20568f,0x2056a5,0x2056ae,0x2056b6,0x2056b4,0x2056c2, + 0x2056bc,0x2056c1,0x2056c3,0x2056c0,0x2056c8,0x2056ce,0x2056d1,0x2056d3,0x2056d7,0x2056ee, + 0x2056f9,0x205700,0x2056ff,0x205704,0x205709,0x205708,0x20570b,0x20570d,0x205713,0x205718, + 0x205716,0x2055c7,0x20571c,0x205726,0x205737,0x205738,0x20574e,0x20573b,0x205740,0x20574f, + 0x205769,0x2057c0,0x205788,0x205761,0x20577f,0x205789,0x205793,0x2057a0,0x2057b3,0x2057a4, + 0x2057aa,0x2057b0,0x2057c3,0x2057c6,0x2057d4,0x2057d2,0x2057d3,0x20580a,0x2057d6,0x2057e3, + 0x20580b,0x205819,0x20581d,0x205872,0x205821,0x205862,0x20584b,0x205870,0x206bc0,0x205852, + 0x20583d,0x205879,0x205885,0x2058b9,0x20589f,0x2058ab,0x2058ba,0x2058de,0x2058bb,0x2058b8, + 0x2058ae,0x2058c5,0x2058d3,0x2058d1,0x2058d7,0x2058d9,0x2058d8,0x2058e5,0x2058dc,0x2058e4, + 0x2058df,0x2058ef,0x2058fa,0x2058f9,0x2058fb,0x2058fc,0x2058fd,0x205902,0x20590a,0x205910, + 0x20591b,0x2068a6,0x205925,0x20592c,0x20592d,0x205932,0x205938,0x20593e,0x207ad2,0x205955, + 0x205950,0x20594e,0x20595a,0x205958,0x205962,0x205960,0x205967,0x20596c,0x205969,0x205978, + 0x205981,0x20599d,0x204f5e,0x204fab,0x2059a3,0x2059b2,0x2059c6,0x2059e8,0x2059dc,0x20598d, + 0x2059d9,0x2059da,0x205a25,0x205a1f,0x205a11,0x205a1c,0x205a09,0x205a1a,0x205a40,0x205a6c, + 0x205a49,0x205a35,0x205a36,0x205a62,0x205a6a,0x205a9a,0x205abc,0x205abe,0x205acb,0x205ac2, + 0x205abd,0x205ae3,0x205ad7,0x205ae6,0x205ae9,0x205ad6,0x205afa,0x205afb,0x205b0c,0x205b0b, + 0x205b16,0x205b32,0x205ad0,0x205b2a,0x205b36,0x205b3e,0x205b43,0x205b45,0x205b40,0x205b51, + 0x205b55,0x205b5a,0x205b5b,0x205b65,0x205b69,0x205b70,0x205b73,0x205b75,0x205b78,0x206588, + 0x205b7a,0x205b80,0x205b83,0x205ba6,0x205bb8,0x205bc3,0x205bc7,0x205bc9,0x205bd4,0x205bd0, + 0x205be4,0x205be6,0x205be2,0x205bde,0x205be5,0x205beb,0x205bf0,0x205bf6,0x205bf3,0x205c05, + 0x205c07,0x205c08,0x205c0d,0x205c13,0x205c20,0x205c22,0x205c28,0x205c38,0x205c39,0x205c41, + 0x205c46,0x205c4e,0x205c53,0x205c50,0x205c4f,0x205b71,0x205c6c,0x405c6e,0x204e62,0x205c76, + 0x205c79,0x205c8c,0x205c91,0x205c94,0x20599b,0x205cab,0x205cbb,0x205cb6,0x205cbc,0x205cb7, + 0x205cc5,0x205cbe,0x205cc7,0x205cd9,0x205ce9,0x205cfd,0x205cfa,0x205ced,0x205d8c,0x205cea, + 0x205d0b,0x205d15,0x205d17,0x205d5c,0x205d1f,0x205d1b,0x205d11,0x205d14,0x205d22,0x205d1a, + 0x205d19,0x205d18,0x205d4c,0x205d52,0x205d4e,0x205d4b,0x205d6c,0x205d73,0x205d76,0x205d87, + 0x205d84,0x205d82,0x205da2,0x205d9d,0x205dac,0x205dae,0x205dbd,0x205d90,0x205db7,0x205dbc, + 0x205dc9,0x205dcd,0x205dd3,0x205dd2,0x205dd6,0x205ddb,0x205deb,0x205df2,0x205df5,0x205e0b, + 0x205e1a,0x205e19,0x205e11,0x205e1b,0x205e36,0x205e37,0x205e44,0x205e43,0x205e40,0x205e4e, + 0x205e57,0x205e54,0x205e5f,0x205e62,0x205e64,0x205e47,0x205e75,0x205e76,0x205e7a,0x209ebc, + 0x205e7f,0x205ea0,0x205ec1,0x205ec2,0x205ec8,0x205ed0,0x205ecf,0x205ed6,0x205ee3,0x205edd, + 0x205eda,0x205edb,0x205ee2,0x205ee1,0x205ee8,0x205ee9,0x205eec,0x205ef1,0x205ef3,0x205ef0, + 0x205ef4,0x205ef8,0x205efe,0x205f03,0x205f09,0x205f5d,0x205f5c,0x205f0b,0x205f11,0x205f16, + 0x205f29,0x205f2d,0x205f38,0x205f41,0x205f48,0x205f4c,0x205f4e,0x205f2f,0x205f51,0x205f56, + 0x205f57,0x205f59,0x205f61,0x205f6d,0x205f73,0x205f77,0x205f83,0x205f82,0x205f7f,0x205f8a, + 0x205f88,0x205f91,0x205f87,0x205f9e,0x205f99,0x205f98,0x205fa0,0x205fa8,0x205fad,0x205fbc, + 0x205fd6,0x205ffb,0x205fe4,0x205ff8,0x205ff1,0x205fdd,0x2060b3,0x205fff,0x206021,0x206060, + 0x206019,0x206010,0x206029,0x20600e,0x206031,0x20601b,0x206015,0x20602b,0x206026,0x20600f, + 0x20603a,0x20605a,0x206041,0x20606a,0x206077,0x20605f,0x20604a,0x206046,0x20604d,0x206063, + 0x206043,0x206064,0x206042,0x20606c,0x20606b,0x206059,0x206081,0x20608d,0x2060e7,0x206083, + 0x20609a,0x206084,0x20609b,0x206096,0x206097,0x206092,0x2060a7,0x20608b,0x2060e1,0x2060b8, + 0x2060e0,0x2060d3,0x2060b4,0x205ff0,0x2060bd,0x2060c6,0x2060b5,0x2060d8,0x20614d,0x206115, + 0x206106,0x2060f6,0x2060f7,0x206100,0x2060f4,0x2060fa,0x206103,0x206121,0x2060fb,0x2060f1, + 0x20610d,0x20610e,0x206147,0x20613e,0x206128,0x206127,0x20614a,0x20613f,0x20613c,0x20612c, + 0x206134,0x20613d,0x206142,0x206144,0x206173,0x206177,0x206158,0x206159,0x20615a,0x20616b, + 0x206174,0x20616f,0x206165,0x206171,0x20615f,0x20615d,0x206153,0x206175,0x206199,0x206196, + 0x206187,0x2061ac,0x206194,0x20619a,0x20618a,0x206191,0x2061ab,0x2061ae,0x2061cc,0x2061ca, + 0x2061c9,0x2061f7,0x2061c8,0x2061c3,0x2061c6,0x2061ba,0x2061cb,0x207f79,0x2061cd,0x2061e6, + 0x2061e3,0x2061f6,0x2061fa,0x2061f4,0x2061ff,0x2061fd,0x2061fc,0x2061fe,0x206200,0x206208, + 0x206209,0x20620d,0x20620c,0x206214,0x20621b,0x20621e,0x206221,0x20622a,0x20622e,0x206230, + 0x206232,0x206233,0x206241,0x20624e,0x20625e,0x206263,0x20625b,0x206260,0x206268,0x20627c, + 0x206282,0x206289,0x20627e,0x206292,0x206293,0x206296,0x4062d4,0x206283,0x206294,0x2062d7, + 0x2062d1,0x2062bb,0x2062cf,0x2062ff,0x2062c6,0x2064d4,0x2062c8,0x2062dc,0x2062cc,0x2062ca, + 0x2062c2,0x2062c7,0x20629b,0x2062c9,0x20630c,0x2062ee,0x2062f1,0x206327,0x206302,0x206308, + 0x2062ef,0x2062f5,0x206350,0x20633e,0x20634d,0x20641c,0x20634f,0x206396,0x20638e,0x206380, + 0x2063ab,0x206376,0x2063a3,0x20638f,0x206389,0x20639f,0x2063b5,0x20636b,0x206369,0x2063be, + 0x2063e9,0x2063c0,0x2063c6,0x2063e3,0x2063c9,0x2063d2,0x2063f6,0x2063c4,0x206416,0x206434, + 0x206406,0x206413,0x206426,0x206436,0x20651d,0x206417,0x206428,0x20640f,0x206467,0x20646f, + 0x206476,0x20644e,0x20652a,0x206495,0x206493,0x2064a5,0x2064a9,0x206488,0x2064bc,0x2064da, + 0x2064d2,0x2064c5,0x2064c7,0x2064bb,0x2064d8,0x2064c2,0x2064f1,0x2064e7,0x208209,0x2064e0, + 0x2064e1,0x2062ac,0x2064e3,0x2064ef,0x20652c,0x2064f6,0x2064f4,0x2064f2,0x2064fa,0x206500, + 0x2064fd,0x206518,0x20651c,0x206505,0x206524,0x206523,0x20652b,0x206534,0x206535,0x206537, + 0x206536,0x206538,0x20754b,0x206548,0x206556,0x206555,0x20654d,0x206558,0x20655e,0x20655d, + 0x206572,0x206578,0x206582,0x206583,0x208b8a,0x20659b,0x20659f,0x2065ab,0x2065b7,0x2065c3, + 0x2065c6,0x2065c1,0x2065c4,0x2065cc,0x2065d2,0x2065db,0x2065d9,0x2065e0,0x2065e1,0x2065f1, + 0x206772,0x20660a,0x206603,0x2065fb,0x206773,0x206635,0x206636,0x206634,0x20661c,0x20664f, + 0x206644,0x206649,0x206641,0x20665e,0x20665d,0x206664,0x206667,0x206668,0x20665f,0x206662, + 0x206670,0x206683,0x206688,0x20668e,0x206689,0x206684,0x206698,0x20669d,0x2066c1,0x2066b9, + 0x2066c9,0x2066be,0x2066bc,0x2066c4,0x2066b8,0x2066d6,0x2066da,0x2066e0,0x20663f,0x2066e6, + 0x2066e9,0x2066f0,0x2066f5,0x2066f7,0x20670f,0x206716,0x20671e,0x206726,0x206727,0x209738, + 0x20672e,0x20673f,0x206736,0x206741,0x206738,0x206737,0x206746,0x20675e,0x206760,0x206759, + 0x206763,0x206764,0x206789,0x206770,0x2067a9,0x20677c,0x20676a,0x20678c,0x20678b,0x2067a6, + 0x2067a1,0x206785,0x2067b7,0x2067ef,0x2067b4,0x2067ec,0x2067b3,0x2067e9,0x2067b8,0x2067e4, + 0x2067de,0x2067dd,0x2067e2,0x2067ee,0x2067b9,0x2067ce,0x2067c6,0x2067e7,0x206a9c,0x20681e, + 0x206846,0x206829,0x206840,0x20684d,0x206832,0x20684e,0x2068b3,0x20682b,0x206859,0x206863, + 0x206877,0x20687f,0x20689f,0x20688f,0x2068ad,0x206894,0x20689d,0x20689b,0x206883,0x206aae, + 0x2068b9,0x206874,0x2068b5,0x2068a0,0x2068ba,0x20690f,0x20688d,0x20687e,0x206901,0x2068ca, + 0x206908,0x2068d8,0x206922,0x206926,0x2068e1,0x20690c,0x2068cd,0x2068d4,0x2068e7,0x2068d5, + 0x206936,0x206912,0x206904,0x2068d7,0x2068e3,0x206925,0x2068f9,0x2068e0,0x2068ef,0x206928, + 0x20692a,0x20691a,0x206923,0x206921,0x2068c6,0x206979,0x206977,0x20695c,0x206978,0x20696b, + 0x206954,0x20697e,0x20696e,0x206939,0x206974,0x20693d,0x206959,0x206930,0x206961,0x20695e, + 0x20695d,0x206981,0x20696a,0x2069b2,0x2069ae,0x2069d0,0x2069bf,0x2069c1,0x2069d3,0x2069be, + 0x2069ce,0x205be8,0x2069ca,0x2069dd,0x2069bb,0x2069c3,0x2069a7,0x206a2e,0x206991,0x2069a0, + 0x20699c,0x206995,0x2069b4,0x2069de,0x2069e8,0x206a02,0x206a1b,0x2069ff,0x206b0a,0x2069f9, + 0x2069f2,0x2069e7,0x206a05,0x2069b1,0x206a1e,0x2069ed,0x206a14,0x2069eb,0x206a0a,0x206a12, + 0x206ac1,0x206a23,0x206a13,0x206a44,0x206a0c,0x206a72,0x206a36,0x206a78,0x206a47,0x206a62, + 0x206a59,0x206a66,0x206a48,0x206a38,0x206a22,0x206a90,0x206a8d,0x206aa0,0x206a84,0x206aa2, + 0x206aa3,0x206a97,0x208617,0x206abb,0x206ac3,0x206ac2,0x206ab8,0x206ab3,0x206aac,0x206ade, + 0x206ad1,0x206adf,0x206aaa,0x206ada,0x206aea,0x206afb,0x206b05,0x208616,0x206afa,0x206b12, + 0x206b16,0x209b31,0x206b1f,0x206b38,0x206b37,0x2076dc,0x206b39,0x2098ee,0x206b47,0x206b43, + 0x206b49,0x206b50,0x206b59,0x206b54,0x206b5b,0x206b5f,0x206b61,0x206b78,0x206b79,0x206b7f, + 0x206b80,0x206b84,0x206b83,0x206b8d,0x206b98,0x206b95,0x206b9e,0x206ba4,0x206baa,0x206bab, + 0x206baf,0x206bb2,0x206bb1,0x206bb3,0x206bb7,0x206bbc,0x206bc6,0x206bcb,0x206bd3,0x206bdf, + 0x206bec,0x206beb,0x206bf3,0x206bef,0x209ebe,0x206c08,0x206c13,0x206c14,0x206c1b,0x206c24, + 0x206c23,0x206c5e,0x206c55,0x206c62,0x206c6a,0x206c82,0x206c8d,0x206c9a,0x206c81,0x206c9b, + 0x206c7e,0x206c68,0x206c73,0x206c92,0x206c90,0x206cc4,0x206cf1,0x206cd3,0x206cbd,0x206cd7, + 0x206cc5,0x206cdd,0x206cae,0x206cb1,0x206cbe,0x206cba,0x206cdb,0x206cef,0x206cd9,0x206cea, + 0x206d1f,0x20884d,0x206d36,0x206d2b,0x206d3d,0x206d38,0x206d19,0x206d35,0x206d33,0x206d12, + 0x206d0c,0x206d63,0x206d93,0x206d64,0x206d5a,0x206d79,0x206d59,0x206d8e,0x206d95,0x206fe4, + 0x206d85,0x206df9,0x206e15,0x206e0a,0x206db5,0x206dc7,0x206de6,0x206db8,0x206dc6,0x206dec, + 0x206dde,0x206dcc,0x206de8,0x206dd2,0x206dc5,0x206dfa,0x206dd9,0x206de4,0x206dd5,0x206dea, + 0x206dee,0x206e2d,0x206e6e,0x206e2e,0x206e19,0x206e72,0x206e5f,0x206e3e,0x206e23,0x206e6b, + 0x206e2b,0x206e76,0x206e4d,0x206e1f,0x206e43,0x206e3a,0x206e4e,0x206e24,0x206eff,0x206e1d, + 0x206e38,0x206e82,0x206eaa,0x206e98,0x206ec9,0x206eb7,0x206ed3,0x206ebd,0x206eaf,0x206ec4, + 0x206eb2,0x206ed4,0x206ed5,0x206e8f,0x206ea5,0x206ec2,0x206e9f,0x206f41,0x206f11,0x20704c, + 0x206eec,0x206ef8,0x206efe,0x206f3f,0x206ef2,0x206f31,0x206eef,0x206f32,0x206ecc,0x206f3e, + 0x206f13,0x206ef7,0x206f86,0x206f7a,0x206f78,0x206f81,0x206f80,0x206f6f,0x206f5b,0x206ff3, + 0x206f6d,0x206f82,0x206f7c,0x206f58,0x206f8e,0x206f91,0x206fc2,0x206f66,0x206fb3,0x206fa3, + 0x206fa1,0x206fa4,0x206fb9,0x206fc6,0x206faa,0x206fdf,0x206fd5,0x206fec,0x206fd4,0x206fd8, + 0x206ff1,0x206fee,0x206fdb,0x207009,0x20700b,0x206ffa,0x207011,0x207001,0x20700f,0x206ffe, + 0x20701b,0x20701a,0x206f74,0x20701d,0x207018,0x20701f,0x207030,0x20703e,0x207032,0x207051, + 0x207063,0x207099,0x207092,0x2070af,0x2070f1,0x2070ac,0x2070b8,0x2070b3,0x2070ae,0x2070df, + 0x2070cb,0x2070dd,0x2070d9,0x207109,0x2070fd,0x20711c,0x207119,0x207165,0x207155,0x207188, + 0x207166,0x207162,0x20714c,0x207156,0x20716c,0x20718f,0x2071fb,0x207184,0x207195,0x2071a8, + 0x2071ac,0x2071d7,0x2071b9,0x2071be,0x2071d2,0x2071c9,0x2071d4,0x2071ce,0x2071e0,0x2071ec, + 0x2071e7,0x2071f5,0x2071fc,0x2071f9,0x2071ff,0x20720d,0x207210,0x20721b,0x407228,0x20722d, + 0x20722c,0x207230,0x207232,0x20723b,0x20723c,0x20723f,0x207240,0x207246,0x20724b,0x207258, + 0x207274,0x20727e,0x207282,0x207281,0x207287,0x207292,0x207296,0x2072a2,0x2072a7,0x2072b9, + 0x2072b2,0x2072c3,0x2072c6,0x2072c4,0x2072ce,0x2072d2,0x2072e2,0x2072e0,0x2072e1,0x2072f9, + 0x2072f7,0x20500f,0x207317,0x20730a,0x20731c,0x207316,0x20731d,0x207334,0x20732f,0x207329, + 0x207325,0x20733e,0x20734e,0x20734f,0x209ed8,0x207357,0x20736a,0x207368,0x207370,0x207378, + 0x207375,0x20737b,0x20737a,0x2073c8,0x2073b3,0x2073ce,0x2073bb,0x2073c0,0x2073e5,0x2073ee, + 0x2073de,0x2074a2,0x207405,0x20746f,0x207425,0x2073f8,0x207432,0x20743a,0x207455,0x20743f, + 0x20745f,0x207459,0x207441,0x20745c,0x207469,0x207470,0x207463,0x20746a,0x207476,0x20747e, + 0x20748b,0x20749e,0x2074a7,0x2074ca,0x2074cf,0x2074d4,0x2073f1,0x2074e0,0x2074e3,0x2074e7, + 0x2074e9,0x2074ee,0x2074f2,0x2074f0,0x2074f1,0x2074f8,0x2074f7,0x207504,0x207503,0x207505, + 0x20750c,0x20750e,0x20750d,0x207515,0x207513,0x20751e,0x207526,0x20752c,0x20753c,0x207544, + 0x20754d,0x20754a,0x207549,0x20755b,0x207546,0x20755a,0x207569,0x207564,0x207567,0x20756b, + 0x20756d,0x207578,0x207576,0x207586,0x207587,0x207574,0x20758a,0x207589,0x207582,0x207594, + 0x20759a,0x20759d,0x2075a5,0x2075a3,0x2075c2,0x2075b3,0x2075c3,0x2075b5,0x2075bd,0x2075b8, + 0x2075bc,0x2075b1,0x2075cd,0x2075ca,0x2075d2,0x2075d9,0x2075e3,0x2075de,0x2075fe,0x2075ff, + 0x2075fc,0x207601,0x2075f0,0x2075fa,0x2075f2,0x2075f3,0x20760b,0x20760d,0x207609,0x20761f, + 0x207627,0x207620,0x207621,0x207622,0x207624,0x207634,0x207630,0x20763b,0x207647,0x207648, + 0x207646,0x20765c,0x207658,0x207661,0x207662,0x207668,0x207669,0x20766a,0x207667,0x20766c, + 0x207670,0x207672,0x207676,0x207678,0x20767c,0x207680,0x207683,0x207688,0x20768b,0x20768e, + 0x207696,0x207693,0x207699,0x20769a,0x2076b0,0x2076b4,0x2076b8,0x2076b9,0x2076ba,0x2076c2, + 0x2076cd,0x2076d6,0x2076d2,0x2076de,0x2076e1,0x2076e5,0x2076e7,0x2076ea,0x20862f,0x2076fb, + 0x207708,0x207707,0x207704,0x207729,0x207724,0x40771e,0x207725,0x207726,0x20771b,0x207737, + 0x207738,0x207747,0x20775a,0x207768,0x20776b,0x20775b,0x207765,0x20777f,0x20777e,0x207779, + 0x20778e,0x20778b,0x207791,0x2077a0,0x20779e,0x2077b0,0x2077b6,0x2077b9,0x2077bf,0x2077bc, + 0x2077bd,0x2077bb,0x2077c7,0x2077cd,0x2077d7,0x2077da,0x2077dc,0x2077e3,0x2077ee,0x2077fc, + 0x20780c,0x207812,0x207926,0x207820,0x20792a,0x207845,0x20788e,0x207874,0x207886,0x20787c, + 0x20789a,0x20788c,0x2078a3,0x2078b5,0x2078aa,0x2078af,0x2078d1,0x2078c6,0x2078cb,0x2078d4, + 0x2078be,0x2078bc,0x2078c5,0x2078ca,0x2078ec,0x2078e7,0x2078da,0x2078fd,0x2078f4,0x207907, + 0x207912,0x207911,0x207919,0x20792c,0x20792b,0x207940,0x207960,0x207957,0x20795f,0x20795a, + 0x207955,0x207953,0x20797a,0x20797f,0x20798a,0x20799d,0x2079a7,0x209f4b,0x2079aa,0x2079ae, + 0x2079b3,0x2079b9,0x2079ba,0x2079c9,0x2079d5,0x2079e7,0x2079ec,0x2079e1,0x2079e3,0x207a08, + 0x207a0d,0x207a18,0x207a19,0x207a20,0x207a1f,0x207980,0x207a31,0x207a3b,0x207a3e,0x207a37, + 0x207a43,0x207a57,0x207a49,0x207a61,0x207a62,0x207a69,0x209f9d,0x207a70,0x207a79,0x207a7d, + 0x207a88,0x207a97,0x207a95,0x207a98,0x207a96,0x207aa9,0x207ac8,0x207ab0,0x207ab6,0x207ac5, + 0x207ac4,0x207abf,0x209083,0x207ac7,0x207aca,0x207acd,0x207acf,0x207ad5,0x207ad3,0x207ad9, + 0x207ada,0x207add,0x207ae1,0x207ae2,0x207ae6,0x207aed,0x207af0,0x207b02,0x207b0f,0x207b0a, + 0x207b06,0x207b33,0x207b18,0x207b19,0x207b1e,0x207b35,0x207b28,0x207b36,0x207b50,0x207b7a, + 0x207b04,0x207b4d,0x207b0b,0x207b4c,0x207b45,0x207b75,0x207b65,0x207b74,0x207b67,0x207b70, + 0x207b71,0x207b6c,0x207b6e,0x207b9d,0x207b98,0x207b9f,0x207b8d,0x207b9c,0x207b9a,0x207b8b, + 0x207b92,0x207b8f,0x207b5d,0x207b99,0x207bcb,0x207bc1,0x207bcc,0x207bcf,0x207bb4,0x207bc6, + 0x207bdd,0x207be9,0x207c11,0x207c14,0x207be6,0x207be5,0x207c60,0x207c00,0x207c07,0x207c13, + 0x207bf3,0x207bf7,0x207c17,0x207c0d,0x207bf6,0x207c23,0x207c27,0x207c2a,0x207c1f,0x207c37, + 0x207c2b,0x207c3d,0x207c4c,0x207c43,0x207c54,0x207c4f,0x207c40,0x207c50,0x207c58,0x207c5f, + 0x207c64,0x207c56,0x207c65,0x207c6c,0x207c75,0x207c83,0x207c90,0x207ca4,0x207cad,0x207ca2, + 0x207cab,0x207ca1,0x207ca8,0x207cb3,0x207cb2,0x207cb1,0x207cae,0x207cb9,0x207cbd,0x207cc0, + 0x207cc5,0x207cc2,0x207cd8,0x207cd2,0x207cdc,0x207ce2,0x209b3b,0x207cef,0x207cf2,0x207cf4, + 0x207cf6,0x207cfa,0x207d06,0x207d02,0x207d1c,0x207d15,0x207d0a,0x207d45,0x207d4b,0x207d2e, + 0x207d32,0x207d3f,0x207d35,0x207d46,0x207d73,0x207d56,0x207d4e,0x207d72,0x207d68,0x207d6e, + 0x207d4f,0x207d63,0x207d93,0x207d89,0x207d5b,0x207d8f,0x207d7d,0x207d9b,0x207dba,0x207dae, + 0x207da3,0x207db5,0x207dc7,0x207dbd,0x207dab,0x207e3d,0x207da2,0x207daf,0x207ddc,0x207db8, + 0x207d9f,0x207db0,0x207dd8,0x207ddd,0x207de4,0x207dde,0x207dfb,0x207df2,0x207de1,0x207e05, + 0x207e0a,0x207e23,0x207e21,0x207e12,0x207e31,0x207e1f,0x207e09,0x207e0b,0x207e22,0x207e46, + 0x207e66,0x207e3b,0x207e35,0x207e39,0x207e43,0x207e37,0x207e32,0x207e3a,0x207e67,0x207e5d, + 0x207e56,0x207e5e,0x207e59,0x207e5a,0x207e79,0x207e6a,0x207e69,0x207e7c,0x207e7b,0x207e83, + 0x207dd5,0x207e7d,0x208fae,0x207e7f,0x207e88,0x207e89,0x207e8c,0x207e92,0x207e90,0x207e93, + 0x207e94,0x207e96,0x207e8e,0x207e9b,0x207e9c,0x207f38,0x207f3a,0x207f45,0x207f4c,0x207f4d, + 0x207f4e,0x207f50,0x207f51,0x207f55,0x207f54,0x207f58,0x207f5f,0x207f60,0x207f68,0x207f69, + 0x207f67,0x207f78,0x207f82,0x207f86,0x207f83,0x207f88,0x207f87,0x207f8c,0x207f94,0x207f9e, + 0x207f9d,0x207f9a,0x207fa3,0x207faf,0x207fb2,0x207fb9,0x207fae,0x207fb6,0x207fb8,0x208b71, + 0x207fc5,0x207fc6,0x207fca,0x207fd5,0x207fd4,0x207fe1,0x207fe6,0x207fe9,0x207ff3,0x207ff9, + 0x2098dc,0x208006,0x208004,0x20800b,0x208012,0x208018,0x208019,0x20801c,0x208021,0x208028, + 0x20803f,0x20803b,0x20804a,0x208046,0x208052,0x208058,0x20805a,0x20805f,0x208062,0x208068, + 0x208073,0x208072,0x208070,0x208076,0x208079,0x20807d,0x20807f,0x208084,0x208086,0x208085, + 0x20809b,0x208093,0x20809a,0x2080ad,0x205190,0x2080ac,0x2080db,0x2080e5,0x2080d9,0x2080dd, + 0x2080c4,0x2080da,0x2080d6,0x208109,0x2080ef,0x2080f1,0x20811b,0x208129,0x208123,0x20812f, + 0x20814b,0x20968b,0x208146,0x20813e,0x208153,0x208151,0x2080fc,0x208171,0x20816e,0x208165, + 0x208166,0x208174,0x208183,0x208188,0x20818a,0x208180,0x208182,0x2081a0,0x208195,0x2081a4, + 0x2081a3,0x20815f,0x208193,0x2081a9,0x2081b0,0x2081b5,0x2081be,0x2081b8,0x2081bd,0x2081c0, + 0x2081c2,0x2081ba,0x2081c9,0x2081cd,0x2081d1,0x2081d9,0x2081d8,0x2081c8,0x2081da,0x2081df, + 0x2081e0,0x2081e7,0x2081fa,0x2081fb,0x2081fe,0x208201,0x208202,0x208205,0x208207,0x20820a, + 0x20820d,0x208210,0x208216,0x208229,0x20822b,0x208238,0x208233,0x208240,0x208259,0x208258, + 0x20825d,0x20825a,0x20825f,0x208264,0x208262,0x208268,0x20826a,0x20826b,0x20822e,0x208271, + 0x208277,0x208278,0x20827e,0x20828d,0x208292,0x2082ab,0x20829f,0x2082bb,0x2082ac,0x2082e1, + 0x2082e3,0x2082df,0x2082d2,0x2082f4,0x2082f3,0x2082fa,0x208393,0x208303,0x2082fb,0x2082f9, + 0x2082de,0x208306,0x2082dc,0x208309,0x2082d9,0x208335,0x208334,0x208316,0x208332,0x208331, + 0x208340,0x208339,0x208350,0x208345,0x20832f,0x20832b,0x208317,0x208318,0x208385,0x20839a, + 0x2083aa,0x20839f,0x2083a2,0x208396,0x208323,0x20838e,0x208387,0x20838a,0x20837c,0x2083b5, + 0x208373,0x208375,0x2083a0,0x208389,0x2083a8,0x2083f4,0x208413,0x2083eb,0x2083ce,0x2083fd, + 0x208403,0x2083d8,0x20840b,0x2083c1,0x2083f7,0x208407,0x2083e0,0x2083f2,0x20840d,0x208422, + 0x208420,0x2083bd,0x208438,0x208506,0x2083fb,0x20846d,0x20842a,0x20843c,0x20855a,0x208484, + 0x208477,0x20846b,0x2084ad,0x20846e,0x208482,0x208469,0x208446,0x20842c,0x20846f,0x208479, + 0x208435,0x2084ca,0x208462,0x2084b9,0x2084bf,0x20849f,0x2084d9,0x2084cd,0x2084bb,0x2084da, + 0x2084d0,0x2084c1,0x2084c6,0x2084d6,0x2084a1,0x208521,0x2084ff,0x2084f4,0x208517,0x208518, + 0x20852c,0x20851f,0x208515,0x208514,0x2084fc,0x208540,0x208563,0x208558,0x208548,0x208541, + 0x208602,0x20854b,0x208555,0x208580,0x2085a4,0x208588,0x208591,0x20858a,0x2085a8,0x20856d, + 0x208594,0x20859b,0x2085ea,0x208587,0x20859c,0x208577,0x20857e,0x208590,0x2085c9,0x2085ba, + 0x2085cf,0x2085b9,0x2085d0,0x2085d5,0x2085dd,0x2085e5,0x2085dc,0x2085f9,0x20860a,0x208613, + 0x20860b,0x2085fe,0x2085fa,0x208606,0x208622,0x20861a,0x208630,0x20863f,0x20864d,0x204e55, + 0x208654,0x20865f,0x208667,0x208671,0x208693,0x2086a3,0x2086a9,0x2086aa,0x20868b,0x20868c, + 0x2086b6,0x2086af,0x2086c4,0x2086c6,0x2086b0,0x2086c9,0x208823,0x2086ab,0x2086d4,0x2086de, + 0x2086e9,0x2086ec,0x2086df,0x2086db,0x2086ef,0x208712,0x208706,0x208708,0x208700,0x208703, + 0x2086fb,0x208711,0x208709,0x20870d,0x2086f9,0x20870a,0x208734,0x20873f,0x208737,0x20873b, + 0x208725,0x208729,0x20871a,0x208760,0x20875f,0x208778,0x20874c,0x20874e,0x208774,0x208757, + 0x208768,0x20876e,0x208759,0x208753,0x208763,0x20876a,0x208805,0x2087a2,0x20879f,0x208782, + 0x2087af,0x2087cb,0x2087bd,0x2087c0,0x2087d0,0x2096d6,0x2087ab,0x2087c4,0x2087b3,0x2087c7, + 0x2087c6,0x2087bb,0x2087ef,0x2087f2,0x2087e0,0x20880f,0x20880d,0x2087fe,0x2087f6,0x2087f7, + 0x20880e,0x2087d2,0x208811,0x208816,0x208815,0x208822,0x208821,0x208831,0x208836,0x208839, + 0x208827,0x20883b,0x208844,0x208842,0x208852,0x208859,0x20885e,0x208862,0x20886b,0x208881, + 0x20887e,0x20889e,0x208875,0x20887d,0x2088b5,0x208872,0x208882,0x208897,0x208892,0x2088ae, + 0x208899,0x2088a2,0x20888d,0x2088a4,0x2088b0,0x2088bf,0x2088b1,0x2088c3,0x2088c4,0x2088d4, + 0x2088d8,0x2088d9,0x2088dd,0x2088f9,0x208902,0x2088fc,0x2088f4,0x2088e8,0x2088f2,0x208904, + 0x20890c,0x20890a,0x208913,0x208943,0x20891e,0x208925,0x20892a,0x20892b,0x208941,0x208944, + 0x20893b,0x208936,0x208938,0x20894c,0x20891d,0x208960,0x20895e,0x208966,0x208964,0x20896d, + 0x20896a,0x20896f,0x208974,0x208977,0x20897e,0x208983,0x208988,0x20898a,0x208993,0x208998, + 0x2089a1,0x2089a9,0x2089a6,0x2089ac,0x2089af,0x2089b2,0x2089ba,0x2089bd,0x2089bf,0x2089c0, + 0x2089da,0x2089dc,0x2089dd,0x2089e7,0x2089f4,0x2089f8,0x208a03,0x208a16,0x208a10,0x208a0c, + 0x208a1b,0x208a1d,0x208a25,0x208a36,0x208a41,0x208a5b,0x208a52,0x208a46,0x208a48,0x208a7c, + 0x208a6d,0x208a6c,0x208a62,0x208a85,0x208a82,0x208a84,0x208aa8,0x208aa1,0x208a91,0x208aa5, + 0x208aa6,0x208a9a,0x208aa3,0x208ac4,0x208acd,0x208ac2,0x208ada,0x208aeb,0x208af3,0x208ae7, + 0x208ae4,0x208af1,0x208b14,0x208ae0,0x208ae2,0x208af7,0x208ade,0x208adb,0x208b0c,0x208b07, + 0x208b1a,0x208ae1,0x208b16,0x208b10,0x208b17,0x208b20,0x208b33,0x2097ab,0x208b26,0x208b2b, + 0x208b3e,0x208b28,0x208b41,0x208b4c,0x208b4f,0x208b4e,0x208b49,0x208b56,0x208b5b,0x208b5a, + 0x208b6b,0x208b5f,0x208b6c,0x208b6f,0x208b74,0x208b7d,0x208b80,0x208b8c,0x208b8e,0x208b92, + 0x208b93,0x208b96,0x208b99,0x208b9a,0x208c3a,0x208c41,0x208c3f,0x208c48,0x208c4c,0x208c4e, + 0x208c50,0x208c55,0x208c62,0x208c6c,0x208c78,0x208c7a,0x208c82,0x208c89,0x208c85,0x208c8a, + 0x208c8d,0x208c8e,0x208c94,0x208c7c,0x208c98,0x20621d,0x208cad,0x208caa,0x208cbd,0x208cb2, + 0x208cb3,0x208cae,0x208cb6,0x208cc8,0x208cc1,0x208ce4,0x208ce3,0x208cda,0x208cfd,0x208cfa, + 0x208cfb,0x208d04,0x208d05,0x208d0a,0x208d07,0x208d0f,0x208d0d,0x208d10,0x209f4e,0x208d13, + 0x208ccd,0x208d14,0x208d16,0x208d67,0x208d6d,0x208d71,0x208d73,0x208d81,0x208d99,0x208dc2, + 0x208dbe,0x208dba,0x208dcf,0x208dda,0x208dd6,0x208dcc,0x208ddb,0x208dcb,0x208dea,0x208deb, + 0x208ddf,0x208de3,0x208dfc,0x208e08,0x208e09,0x208dff,0x208e1d,0x208e1e,0x208e10,0x208e1f, + 0x208e42,0x208e35,0x208e30,0x208e34,0x208e4a,0x208e47,0x208e49,0x208e4c,0x208e50,0x208e48, + 0x208e59,0x208e64,0x208e60,0x208e2a,0x208e63,0x208e55,0x208e76,0x208e72,0x208e7c,0x208e81, + 0x208e87,0x208e85,0x208e84,0x208e8b,0x208e8a,0x208e93,0x208e91,0x208e94,0x208e99,0x208eaa, + 0x208ea1,0x208eac,0x208eb0,0x208ec6,0x208eb1,0x208ebe,0x208ec5,0x208ec8,0x208ecb,0x208edb, + 0x208ee3,0x208efc,0x208efb,0x208eeb,0x208efe,0x208f0a,0x208f05,0x208f15,0x208f12,0x208f19, + 0x208f13,0x208f1c,0x208f1f,0x208f1b,0x208f0c,0x208f26,0x208f33,0x208f3b,0x208f39,0x208f45, + 0x208f42,0x208f3e,0x208f4c,0x208f49,0x208f46,0x208f4e,0x208f57,0x208f5c,0x208f62,0x208f63, + 0x208f64,0x208f9c,0x208f9f,0x208fa3,0x208fad,0x208faf,0x208fb7,0x208fda,0x208fe5,0x208fe2, + 0x208fea,0x208fef,0x209087,0x208ff4,0x209005,0x208ff9,0x208ffa,0x209011,0x209015,0x209021, + 0x20900d,0x20901e,0x209016,0x20900b,0x209027,0x209036,0x209035,0x209039,0x208ff8,0x20904f, + 0x209050,0x209051,0x209052,0x20900e,0x209049,0x20903e,0x209056,0x209058,0x20905e,0x209068, + 0x20906f,0x209076,0x2096a8,0x209072,0x209082,0x20907d,0x209081,0x209080,0x20908a,0x209089, + 0x20908f,0x2090a8,0x2090af,0x2090b1,0x2090b5,0x2090e2,0x2090e4,0x206248,0x2090db,0x209102, + 0x209112,0x209119,0x209132,0x209130,0x20914a,0x209156,0x209158,0x209163,0x209165,0x209169, + 0x209173,0x209172,0x20918b,0x209189,0x209182,0x2091a2,0x2091ab,0x2091af,0x2091aa,0x2091b5, + 0x2091b4,0x2091ba,0x2091c0,0x2091c1,0x2091c9,0x2091cb,0x2091d0,0x2091d6,0x2091df,0x2091e1, + 0x2091db,0x2091fc,0x2091f5,0x2091f6,0x20921e,0x2091ff,0x209214,0x20922c,0x209215,0x209211, + 0x20925e,0x209257,0x209245,0x209249,0x209264,0x209248,0x209295,0x20923f,0x20924b,0x209250, + 0x20929c,0x209296,0x209293,0x20929b,0x20925a,0x2092cf,0x2092b9,0x2092b7,0x2092e9,0x20930f, + 0x2092fa,0x209344,0x20932e,0x209319,0x209322,0x20931a,0x209323,0x20933a,0x209335,0x20933b, + 0x20935c,0x209360,0x20937c,0x20936e,0x209356,0x2093b0,0x2093ac,0x2093ad,0x209394,0x2093b9, + 0x2093d6,0x2093d7,0x2093e8,0x2093e5,0x2093d8,0x2093c3,0x2093dd,0x2093d0,0x2093c8,0x2093e4, + 0x20941a,0x209414,0x209413,0x209403,0x209407,0x209410,0x209436,0x20942b,0x209435,0x209421, + 0x20943a,0x209441,0x209452,0x209444,0x20945b,0x209460,0x209462,0x20945e,0x20946a,0x209229, + 0x209470,0x209475,0x209477,0x20947d,0x20945a,0x20947c,0x20947e,0x209481,0x20947f,0x209582, + 0x209587,0x20958a,0x209594,0x209596,0x209598,0x209599,0x2095a0,0x2095a8,0x2095a7,0x2095ad, + 0x2095bc,0x2095bb,0x2095b9,0x2095be,0x2095ca,0x206ff6,0x2095c3,0x2095cd,0x2095cc,0x2095d5, + 0x2095d4,0x2095d6,0x2095dc,0x2095e1,0x2095e5,0x2095e2,0x209621,0x209628,0x20962e,0x20962f, + 0x209642,0x20964c,0x20964f,0x20964b,0x209677,0x20965c,0x20965e,0x20965d,0x20965f,0x209666, + 0x209672,0x20966c,0x20968d,0x209698,0x209695,0x209697,0x2096aa,0x2096a7,0x2096b1,0x2096b2, + 0x2096b0,0x2096b4,0x2096b6,0x2096b8,0x2096b9,0x2096ce,0x2096cb,0x2096c9,0x2096cd,0x20894d, + 0x2096dc,0x20970d,0x2096d5,0x2096f9,0x209704,0x209706,0x209708,0x209713,0x20970e,0x209711, + 0x20970f,0x209716,0x209719,0x209724,0x20972a,0x209730,0x209739,0x20973d,0x20973e,0x209744, + 0x209746,0x209748,0x209742,0x209749,0x20975c,0x209760,0x209764,0x209766,0x209768,0x2052d2, + 0x20976b,0x209771,0x209779,0x209785,0x20977c,0x209781,0x20977a,0x209786,0x20978b,0x20978f, + 0x209790,0x20979c,0x2097a8,0x2097a6,0x2097a3,0x2097b3,0x2097b4,0x2097c3,0x2097c6,0x2097c8, + 0x2097cb,0x2097dc,0x2097ed,0x209f4f,0x2097f2,0x207adf,0x2097f6,0x2097f5,0x20980f,0x20980c, + 0x209838,0x209824,0x209821,0x209837,0x20983d,0x209846,0x20984f,0x20984b,0x20986b,0x20986f, + 0x209870,0x209871,0x209874,0x209873,0x2098aa,0x2098af,0x2098b1,0x2098b6,0x2098c4,0x2098c3, + 0x2098c6,0x2098e9,0x2098eb,0x209903,0x209909,0x209912,0x209914,0x209918,0x209921,0x20991d, + 0x20991e,0x209924,0x209920,0x20992c,0x20992e,0x20993d,0x20993e,0x209942,0x209949,0x209945, + 0x209950,0x20994b,0x209951,0x209952,0x20994c,0x209955,0x209997,0x209998,0x2099a5,0x2099ad, + 0x2099ae,0x2099bc,0x2099df,0x2099db,0x2099dd,0x2099d8,0x2099d1,0x2099ed,0x2099ee,0x2099f1, + 0x2099f2,0x2099fb,0x2099f8,0x209a01,0x209a0f,0x209a05,0x2099e2,0x209a19,0x209a2b,0x209a37, + 0x209a45,0x209a42,0x209a40,0x209a43,0x209a3e,0x209a55,0x209a4d,0x209a5b,0x209a57,0x209a5f, + 0x209a62,0x209a65,0x209a64,0x209a69,0x209a6b,0x209a6a,0x209aad,0x209ab0,0x209abc,0x209ac0, + 0x209acf,0x209ad1,0x209ad3,0x209ad4,0x209ade,0x209adf,0x209ae2,0x209ae3,0x209ae6,0x209aef, + 0x209aeb,0x209aee,0x209af4,0x209af1,0x209af7,0x209afb,0x209b06,0x209b18,0x209b1a,0x209b1f, + 0x209b22,0x209b23,0x209b25,0x209b27,0x209b28,0x209b29,0x209b2a,0x209b2e,0x209b2f,0x209b32, + 0x209b44,0x209b43,0x209b4f,0x209b4d,0x209b4e,0x209b51,0x209b58,0x209b74,0x209b93,0x209b83, + 0x209b91,0x209b96,0x209b97,0x209b9f,0x209ba0,0x209ba8,0x209bb4,0x209bc0,0x209bca,0x209bb9, + 0x209bc6,0x209bcf,0x209bd1,0x209bd2,0x209be3,0x209be2,0x209be4,0x209bd4,0x209be1,0x209c3a, + 0x209bf2,0x209bf1,0x209bf0,0x209c15,0x209c14,0x209c09,0x209c13,0x209c0c,0x209c06,0x209c08, + 0x209c12,0x209c0a,0x209c04,0x209c2e,0x209c1b,0x209c25,0x209c24,0x209c21,0x209c30,0x209c47, + 0x209c32,0x209c46,0x209c3e,0x209c5a,0x209c60,0x209c67,0x209c76,0x209c78,0x209ce7,0x209cec, + 0x209cf0,0x209d09,0x209d08,0x209ceb,0x209d03,0x209d06,0x209d2a,0x209d26,0x209daf,0x209d23, + 0x209d1f,0x209d44,0x209d15,0x209d12,0x209d41,0x209d3f,0x209d3e,0x209d46,0x209d48,0x209d5d, + 0x209d5e,0x209d64,0x209d51,0x209d50,0x209d59,0x209d72,0x209d89,0x209d87,0x209dab,0x209d6f, + 0x209d7a,0x209d9a,0x209da4,0x209da9,0x209db2,0x209dc4,0x209dc1,0x209dbb,0x209db8,0x209dba, + 0x209dc6,0x209dcf,0x209dc2,0x209dd9,0x209dd3,0x209df8,0x209de6,0x209ded,0x209def,0x209dfd, + 0x209e1a,0x209e1b,0x209e1e,0x209e75,0x209e79,0x209e7d,0x209e81,0x209e88,0x209e8b,0x209e8c, + 0x209e92,0x209e95,0x209e91,0x209e9d,0x209ea5,0x209ea9,0x209eb8,0x209eaa,0x209ead,0x209761, + 0x209ecc,0x209ece,0x209ecf,0x209ed0,0x209ed4,0x209edc,0x209ede,0x209edd,0x209ee0,0x209ee5, + 0x209ee8,0x209eef,0x209ef4,0x209ef6,0x209ef7,0x209ef9,0x209efb,0x209efc,0x209efd,0x209f07, + 0x209f08,0x2076b7,0x209f15,0x209f21,0x209f2c,0x209f3e,0x209f4a,0x209f52,0x209f54,0x209f63, + 0x209f5f,0x209f60,0x209f61,0x209f66,0x209f67,0x209f6c,0x209f6a,0x209f77,0x209f72,0x209f76, + 0x209f95,0x209f9c,0x209fa0,0x20582f,0x2069c7,0x209059,0x207464,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,0x20555e,0x4098f4,0x406ea2,0x409c2f,0x406deb,0x408fc2,0x406b1d,0x4053a9, + 0x228cdd,0x405642,0x40990c,0x207130,0x408956,0x209dd7,0x408fe6,0x406062,0x4062d0,0x406666, + 0x40559d,0x40845b,0x409784,0x205699,0x203d4e,0x407ff0,0x407feb,0x405fbd,0x407947,0x204fe0, + 0x60537f,0x4050c5,0x208ec0,0x4055b0,0x206adb,0x405c51,0x409774,0x407941,0x406167,0x225874, + 0x207e6b,0x208346,0x228ef6,0x405026,0x405acc,0x406372,0x209e7c,0x408afa,0x405df7,0x20663b, + 0x406e9d,0x209eb4,0x409d60,0x407511,0x4091c7,0x40698a,0x206805,0x4085a9,0x409bd6,0x409306, + 0x4073ca,0x4053f1,0x205c62,0x40906e,0x406753,0x40707c,0x207e61,0x40914b,0x4066d9,0x206e1a, + 0x4085af,0x4085f7,0x4054e8,0x405ee0,0x4068a2,0x208523,0x2091ac,0x409798,0x408755,0x409771, + 0x409017,0x407fe0,0x40647a,0x40901d,0x2087ec,0x4064b0,0x406813,0x40714e,0x40717d,0x408a6e, + 0x40564c,0x409061,0x405275,0x206414,0x407626,0x40905c,0x209a52,0x40817f,0x409edb,0x405544, + 0x406fef,0x207422,0x4086f8,0x205dfd,0x408fbf,0x4068da,0x409c48,0x406a3d,0x207c1e,0x408a3b, + 0x407026,0x4051cb,0x406357,0x4069cc,0x40939a,0x40585a,0x206451,0x40912d,0x4064e2,0x406eba, + 0x205861,0x20985a,0x405835,0x405c60,0x4083df,0x408ced,0x405858,0x2079b1,0x409d07,0x207006, + 0x40701e,0x405678,0x409041,0x409813,0x4090a3,0x408b0e,0x407058,0x406962,0x4079b0,0x2056ca, + 0x40724c,0x409019,0x4079e4,0x20525d,0x407bb8,0x206f51,0x2091b1,0x40633d,0x406249,0x406a0b, + 0x4067ca,0x407a17,0x40903c,0x405a9b,0x408b2c,0x405edf,0x407015,0x20983b,0x40853d,0x4077a5, + 0x405a29,0x405e96,0x406ce1,0x4084ec,0x209830,0x409c52,0x209eb5,0x405132,0x409905,0x407c7e, + 0x409453,0x406108,0x407652,0x407337,0x407194,0x408000,0x20840a,0x40907c,0x206f23,0x207149, + 0x2084ee,0x406994,0x20881f,0x205154,0x405189,0x205195,0x4051a4,0x405539,0x405533,0x4055e4, + 0x405632,0x4056a5,0x40580b,0x405abe,0x221a1a,0x205c5b,0x405e64,0x406097,0x406369,0x406406, + 0x206522,0x406583,0x4067a6,0x2067fa,0x40689b,0x20688e,0x406e6e,0x2243d0,0x207228,0x4073ce, + 0x407504,0x40750d,0x407515,0x407693,0x40787c,0x407a31,0x409f9d,0x407b99,0x407c90,0x407cae, + 0x407d9b,0x407dae,0x407d9f,0x407fd4,0x40822e,0x40828d,0x4082d2,0x408323,0x408375,0x408517, + 0x20853e,0x408782,0x4087d2,0x40890a,0x4089af,0x408ade,0x408b41,0x408dda,0x408e09,0x408f13, + 0x408fea,0x408fe9,0x409058,0x406248,0x4091c1,0x4095bb,0x207762,0x409724,0x409760,0x40976d, + 0x409824,0x409b2e,0x409b97,0x409bf2,0x409eaa,0x409f9c,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + 0x4082a6,0x408328,0x205653,0x6053a9,0x407259,0x406c72,0x407b08,0x409957,0x4062f3,0x409910, + 0x60976d,0x60717d,0x407a7f,0x407bad,0x4063c3,0x6083df,0x407962,0x4053db,0x407bc7,0x408fc4, + 0x407c3e,0x4050ca,0x405315,0x4055a9,0x4056ae,0x405819,0x40591b,0x405c28,0x405ed0,0x405ecf, + 0x406241,0x4066c1,0x406c08,0x406e23,0x406eec,0x407a97,0x407bdd,0x407fe9,0x408422,0x408759, + 0x40880e,0x6087d2,0x409a19,0x409ead,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,0x409022,0x408fbb,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,0x2051dc,0x207199,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,0x207e8a,0x20891c, + 0x209348,0x209288,0x2084dc,0x204fc9,0x2070bb,0x206631,0x2068c8,0x2092f9,0x2066fb,0x205f45, + 0x204e28,0x204ee1,0x204efc,0x204f00,0x204f03,0x204f39,0x204f56,0x204f92,0x204f8a,0x204f9a, + 0x204f94,0x204fcd,0x205040,0x205022,0x204fff,0x20501e,0x205046,0x205070,0x205042,0x205094, + 0x2050f4,0x2050d8,0x20514a,0x205164,0x20519d,0x2051be,0x2051ec,0x205215,0x20529c,0x2052a6, + 0x2052c0,0x2052db,0x205300,0x405307,0x205324,0x205372,0x205393,0x2053b2,0x2053dd,0x20fa0e, + 0x20549c,0x20548a,0x2054a9,0x2054ff,0x205586,0x205759,0x205765,0x2057ac,0x2057c8,0x2057c7, + 0x20fa0f,0x60585a,0x20589e,0x2058b2,0x20590b,0x205953,0x20595b,0x20595d,0x205963,0x2059a4, + 0x2059ba,0x205b56,0x205bc0,0x20752f,0x205bd8,0x405bdb,0x205c1e,0x205ca6,0x205cba,0x205cf5, + 0x205d27,0x205d53,0x40fa11,0x205d42,0x205d6d,0x205db8,0x205db9,0x205dd0,0x205f21,0x205f34, + 0x205f67,0x205fb7,0x205fde,0x20605d,0x206085,0x20608a,0x2060de,0x2060d5,0x206120,0x2060f2, + 0x206111,0x206137,0x206130,0x206198,0x206213,0x2062a6,0x2063f5,0x206460,0x20649d,0x2064ce, + 0x20654e,0x206600,0x206615,0x206609,0x20662e,0x40661e,0x206624,0x206665,0x206657,0x206659, + 0x206674,0x206673,0x206699,0x2066a0,0x2066b2,0x2066bf,0x2066fa,0x20670e,0x606717,0x206766, + 0x2067bb,0x406852,0x2067c0,0x406801,0x206844,0x2068cf,0x20fa13,0x206968,0x20fa14,0x206998, + 0x2069e2,0x206a30,0x206a6b,0x206a46,0x206a73,0x206a7e,0x206ae2,0x206ae4,0x206bd6,0x206c3f, + 0x206c5c,0x206c86,0x206c6f,0x206cda,0x206d04,0x206d87,0x206d6f,0x206d96,0x206dac,0x206dcf, + 0x206df8,0x206df2,0x206dfc,0x206e39,0x206e5c,0x206e27,0x206e3c,0x206ebf,0x206f88,0x206fb5, + 0x206ff5,0x207005,0x207007,0x207028,0x207085,0x2070ab,0x20710f,0x207104,0x20715c,0x207146, + 0x207147,0xa051de,0x2071c1,0x2071fe,0x2072b1,0x2072be,0x207324,0x20732a,0x207377,0x2073bd, + 0x2073c9,0x2073d6,0x2073e3,0x2073d2,0x207407,0x2073f5,0x207426,0x20742a,0x207429,0x20742e, + 0x407462,0x207489,0x20749f,0x207501,0x20756f,0x207682,0x20769c,0x20769e,0x20769b,0x2076a6, + 0x4076ca,0x207746,0x2052af,0x207821,0x20784e,0x207864,0x20787a,0x207930,0x40793c,0x20795e, + 0x207965,0x207994,0x40798f,0x20799b,0x207ad1,0x207ae7,0x409756,0x207aeb,0x207b9e,0x207cbe, + 0x207d48,0x407d5c,0x207db7,0x207da0,0x207dd6,0x207e52,0x207f47,0x207fa1,0x207fbd,0x208301, + 0x208362,0x20837f,0x2083c7,0x2083f6,0x208448,0x2084b4,0x208553,0x208559,0x20856b,0x20fa1f, + 0x2085b0,0x408612,0x20fa21,0x208807,0x2088f5,0x208a12,0x208a37,0x208a79,0x208aa7,0x208abe, + 0x208adf,0x208af8,0x208af6,0x208b53,0x208b7f,0x208cf0,0x208cf4,0x208d12,0x208d76,0x20fa23, + 0x208ecf,0x40fa24,0x609038,0x209067,0x2090de,0x2090fd,0x209115,0x209127,0x2091da,0x2091d7, + 0x2091de,0x2091ed,0x2091ee,0x2091e4,0x2091e5,0x209206,0x209210,0x20920a,0x20923a,0x209240, + 0x20923c,0x20924e,0x209259,0x209251,0x209239,0x209267,0x2092a7,0x209277,0x209278,0x2092e7, + 0x2092d7,0x2092d9,0x2092d0,0x20fa27,0x2092d5,0x2092e0,0x2092d3,0x209325,0x209321,0x2092fb, + 0x20fa28,0x20931e,0x2092ff,0x20931d,0x209302,0x209370,0x209357,0x2093a4,0x2093c6,0x2093de, + 0x2093f8,0x209431,0x209445,0x209448,0x209592,0x609686,0x20fa29,0x20969d,0x2096af,0x209733, + 0x20973b,0x209743,0x20974d,0x20974f,0x209751,0x409755,0x209857,0x209865,0x2098ef,0x4098fc, + 0x209927,0x409928,0x20999e,0x209a4e,0x209ad9,0x209adc,0x209b75,0x209b72,0x209b8f,0x209bb1, + 0x209bbb,0x209c00,0x209d70,0x209d6b,0x209db4,0x209e19,0x209ed1,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,0x606ce8,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,0x409038, + 0x208b01,0x207de3,0x209ec3,0x206eab,0x20798d,0x206094,0x206d77,0x406168,0x2069ea,0x206e34, + 0x408910,0x406f22,0x405668,0x2065e2,0x207948,0x20865b,0x4097ff,0x4052e4,0x208b39,0x2063ed, + 0x2064ca,0x20784f,0x207a40,0x206bba,0x407949,0x408996,0x20716e,0x40793e,0x408005,0x4081ed, + 0x20795d,0x406691,0x207f72,0x206d89,0x2072c0,0x40614e,0x20771e,0x407bc0,0x407956,0x4050e7, + 0x405c64,0x205de2,0x20618e,0x408d08,0x20537d,0x205606,0x408457,0x205fb5,0x4061f2,0x4093ae, + 0x40798e,0x409b2d,0x407a81,0x2096e3,0x206885,0x407e41,0x20665a,0x205351,0x207891,0x208cd3, + 0x20654f,0x404fae,0x404f75,0x405840,0x2052c9,0x206b65,0x2058a8,0x206bcf,0x40514d,0x20623e, + 0x207950,0x206b04,0x409686,0x20865c,0x206dda,0x20985e,0x2066c6,0x206b77,0x207df4,0x20934a, + 0x605eca,0x209304,0x406982,0x4051b4,0x40634c,0x4086db,0x409089,0x609022,0x405049,0x407def, + 0x409055,0x8053a9,0x60990c,0x40885b,0x405ef6,0x606cbf,0x40925b,0x407fc1,0x6082bd,0x4096c5, + 0x405bb3,0x606168,0x606982,0x406bbb,0x406562,0x408cab,0x405dcc,0x409811,0x405e30,0x408ecc, + 0x407aae,0x405747,0x405091,0x407a74,0x405065,0x405efa,0x409237,0x406a8e,0x404ea4,0x40516c, + 0x4066f4,0x406821,0x40786c,0x407d5e,0x408003,0x408cfc,0x40964d,0x4062f7,0x407f6a,0x404f7f, + 0x4053f2,0x4059c9,0x408b1d,0x4090aa,0x4053ce,0x408f2f,0x4067d4,0x4077ac,0x40821c,0x40696f, + 0x40677e,0x408a1f,0x404e08,0x4057f4,0x40690d,0x408077,0x4089aa,0x409042,0x40636e,0x406442, + 0x408239,0x407dcf,0x408061,0x4050cf,0x408a95,0x406065,0x405146,0x40773a,0x408074,0x408df3, + 0x405ead,0x405ef7,0x408247,0x406843,0x409003,0x406d3e,0x406392,0x408f29,0x4073ed,0x409812, + 0x4060b2,0x606249,0x406590,0x407dcb,0x408ab9,0x408ca7,0x407236,0x40847a,0x405206,0x405674, + 0x4061a4,0x407c89,0x407d1b,0x4096f0,0x60853d,0x404fbf,0x406367,0x4076c6,0x40685d,0x408108, + 0x408036,0x407ffc,0x40540f,0x4096a3,0x409e9f,0x409e97,0x40806f,0x40807e,0x406e7e,0x405085, + 0x405193,0x4051db,0x22090e,0x405340,0x4096d9,0x6055a9,0x4056c1,0x40570d,0x4058ab,0x4059da, + 0x405a36,0x605abe,0x405d4e,0x405d87,0x405dc9,0x405dd3,0x405f2d,0x405f98,0x4060d8,0x40613d, + 0x4061fe,0x406268,0x4062cf,0x40651d,0x40640f,0x4064f2,0x40655d,0x40665f,0x4067a9,0x4067e7, + 0x40696b,0x406930,0x4069a7,0x406a44,0x406a90,0x606c08,0x406c13,0x606e23,0x406f11,0x406efe, + 0x406f3e,0x4071ff,0x4073e5,0x407432,0x40745f,0x4074e0,0x40750c,0x407672,0x40792a,0x4078d4, + 0x4079ba,0x407a19,0x407a95,0x407cf2,0x407d73,0x407ddd,0x407e35,0x407fae,0x407fe1,0x40805a, + 0x40805f,0x408073,0x408070,0x408076,0x408153,0x40818a,0x4081b5,0x4081cd,0x4083f2,0x408555, + 0x4085d5,0x40871a,0x408836,0x40889e,0x4088d8,0x4088f4,0x40892b,0x40893b,0x40896a,0x40896f, + 0x408a1d,0x408d05,0x408d0f,0x409f4e,0x408e91,0x408ea1,0x409052,0x40900e,0x409130,0x409156, + 0x409158,0x409165,0x409173,0x409172,0x4091a2,0x4091af,0x4091aa,0x4091b4,0x4091ba,0x409477, + 0x409698,0x40973d,0x609760,0x609771,0x40980c,0x409873,0x4098c3,0x409a45,0x409b4d,0x409b58, + 0x409bc6,0x409be1,0x409bf1,0x409d48,0x409dcf,0x409f08,0x406271,0x406697,0x40610f,0x408863, + 0x609055,0x40907a,0x4078ef,0x208c9f,0x4096e8,0x226951,0xa053a9,0x4074dc,0x40904b,0x80990c, + 0x22b7d8,0x2092b3,0x2095b1,0x605ef6,0x4063f4,0x206cbf,0x407159,0x409060,0x60925b,0x4065bc, + 0x405f80,0x607fc1,0x405378,0x4097f3,0x405316,0x4082b1,0x4083d3,0x408ca8,0x40904e,0x2082bd, + 0x6096c5,0x409913,0x405efb,0x407070,0x605bb3,0x806168,0xa06168,0xc06168,0x4069ea,0x806982, + 0x20676e,0x2089d2,0x409694,0x205272,0x408f44,0x40938c,0x4082c5,0x405bd2,0x4074b0,0x407de9, + 0x226222,0x409084,0x409592,0x4097d3,0x408218,0x405371,0x403402,0x203402,0x603402,0x405e7e, + 0x2065e3,0x40671f,0x406a5f,0x408d77,0x4098e2,0x220bb7,0x4055ab,0x408650,0x409006,0x4053ca, + 0x405438,0x406025,0x407d1a,0x405de8,0x4062d2,0x408ddd,0x229d4b,0x429d4b,0x20537f,0x205f3a, + 0x406050,0x4069c1,0x42363a,0x22b78e,0x4090f7,0x6097ff,0x609957,0x406681,0x40738b,0x408fd1, + 0x204ff1,0x4077e9,0x405177,0x40865e,0x407a7a,0x409047,0x606adb,0x405553,0x405951,0x406075, + 0x606167,0x408fce,0x605091,0x406f54,0x607a74,0x406708,0x40821f,0x40517c,0x405238,0x4061b2, + 0x206743,0x4080a9,0x408b19,0x409063,0x220a64,0x208a01,0x206236,0x4096c7,0x409867,0x205433, + 0x205a1b,0x408aa4,0x405de5,0x40614c,0x206285,0x4063a7,0x4069cb,0x406d69,0x406e2f,0x408015, + 0x408154,0x408352,0x408b1b,0x608cfc,0x20543f,0x409177,0x408170,0x607511,0x408fbc,0x22b746, + 0x409396,0x22b777,0x405f69,0x4063a1,0x206b72,0x4083dc,0x6051b4,0x4054b2,0x40524a,0x207522, + 0x204b38,0x4059ff,0x6059ff,0x205dff,0x408aee,0x608aee,0x408cc7,0x608cc7,0x406b21,0x606b21, + 0x406ecb,0x2073ba,0x220b9f,0x406368,0x40659c,0x6090aa,0x2052fa,0x607235,0x207235,0x40914c, + 0x405f31,0x404e3b,0x4053d7,0x406388,0x205468,0x407d42,0x407fd2,0x408846,0x409031,0x404f4f, + 0x408853,0x408ff0,0x405de1,0x409075,0x609075,0x406240,0x4066f8,0x405973,0x4052dd,0x405546, + 0x405bb5,0x205c06,0x405c0f,0x22d544,0x205c19,0x406d88,0x40785d,0x408096,0x22000b,0x205b82, + 0x2057ce,0x4060c5,0x6057f4,0x4098fe,0x60690d,0x406b96,0x4098df,0x2098e0,0x22967f,0x20378d, + 0x404fb5,0x2038fa,0x406d78,0x40771f,0x409032,0x204ebb,0x2201a2,0x405203,0x405c0b,0x408a0a, + 0x608a0a,0x408fc5,0x22e569,0x609042,0x20351f,0x22b751,0x406210,0x4076db,0x408056,0x208980, + 0x408aa0,0x408acb,0x40975c,0x60975c,0x207a05,0x408106,0x4096bb,0x407c4d,0x607bc0,0x208aaa, + 0x4096ea,0x207d55,0x406247,0x206f98,0x407fa1,0x608239,0x409078,0x409077,0x40524d,0x405168, + 0x406383,0x2063f7,0x207626,0x408d70,0x409001,0x40906d,0x409020,0x227fb7,0x40901f,0x408cca, + 0x405c0a,0x605c0a,0x4059a5,0x223cfe,0x409000,0x40902e,0x40968a,0x409bdb,0x405927,0x203427, + 0x407027,0x409054,0x20812b,0x404e39,0x406b4e,0x4070ad,0x608a95,0x406696,0x405024,0x407f6e, + 0x407bc9,0x225ad7,0x407b51,0x409010,0x4067f1,0x406ce8,0x4099d0,0x405f6b,0x405fb5,0x6061f2, + 0x40671d,0x206f6e,0x408abf,0x4076f4,0x406715,0x606715,0x40589c,0x408ffd,0x40901a,0x40576a, + 0x4091e3,0x405448,0x405e1d,0x407a0b,0x407684,0x409069,0x408fed,0x406dfb,0x40514e,0x409014, + 0x40783a,0x205721,0x22123d,0x2051ac,0x405510,0x207cd6,0x4085e4,0x408b04,0x609003,0x40900f, + 0x409a30,0x405c0e,0x409053,0x20541e,0x203b88,0x205167,0x408089,0x404e73,0x405fcd,0x408a8d, + 0x205be7,0x407d0d,0x408987,0x606d3e,0x4080ba,0x40535a,0x408584,0x408feb,0x407e1b,0x408087, + 0x204e37,0x406f51,0x4091b1,0x404f34,0x405224,0x40534a,0x405e06,0x407554,0x406669,0x408543, + 0x40907f,0x405fae,0x409f3b,0x405339,0x224d14,0x205f65,0x2059ec,0x4059ec,0x408a55,0x205e99, + 0x4075c5,0x405a66,0x406577,0x406d6e,0x408ca0,0x608ca0,0x40670d,0x408986,0x404e19,0x405e63, + 0x405e73,0x405f0a,0x408511,0x40504f,0x407de8,0x408fd4,0x40904d,0x407c3f,0x405305,0x405d29, + 0x4062b1,0x40670b,0x407832,0x407e2b,0x4080de,0x40840c,0x4090a6,0x6090a6,0x4098fd,0x409d6c, + 0x404ea1,0x405e3d,0x405fd8,0x405fd9,0x40623f,0x40671b,0x60671b,0x405192,0x406469,0x407ffb, + 0x4051e1,0x4078e8,0x409b54,0x409ebb,0x4069d9,0x60685d,0x203468,0x209fb4,0x407e6d,0x409ebf, + 0x608108,0x40660e,0x4076df,0x408ff7,0x405984,0x2052d0,0x4076f2,0x408017,0x40623b,0x407d0b, + 0x2095e8,0x407d04,0x408e8d,0x22b789,0x60687a,0x206801,0x406109,0x208aed,0x408f38,0x4052c7, + 0x406709,0x407336,0x607336,0x607337,0x22567f,0x40904a,0x4066dc,0x207f8a,0x408981,0x40990a, + 0x407fcc,0x607ffc,0x208eb6,0x40862d,0x407387,0x409f8d,0x609f8d,0x4065c5,0x209fc4,0x4071d0, + 0x6096a3,0x409c57,0x609e9f,0x207c7b,0x205ec9,0x406190,0x209023,0x806717,0x208002,0x2266b0, + 0x6050ca,0x40511a,0x605154,0x605195,0x220628,0x40528d,0x4052d7,0x22008a,0x220984,0x20353e, + 0x4053df,0x4066fc,0x605533,0x6055e4,0x205455,0x4056c0,0x205939,0x405a1c,0x405ac2,0x205b76, + 0x405bc3,0x205c14,0x2037e2,0x205ce6,0x405e54,0x204e48,0x405ee3,0x606097,0x2062d4,0x4062cc, + 0x40641c,0x4063c6,0x406428,0x226999,0x20631b,0x60665f,0x80665f,0x206663,0x4066f5,0x2233cc, + 0x40689d,0x40688d,0x2069f6,0x206986,0x22a9e6,0x405be8,0x4069bb,0x206bcc,0x606f11,0x206e17, + 0x406f98,0x406caa,0x206caa,0x40701b,0x407162,0x40723b,0x204e2c,0x40731c,0x4074ca,0x2074ef, + 0x207575,0x2075ec,0x20764e,0x203fb1,0x20776a,0x2077a9,0x407940,0x209fc6,0x607953,0x409f4b, + 0x4079ae,0x409083,0x207b53,0x22b7bd,0x407c14,0x204264,0x407c50,0x407c58,0x407d46,0x407d63, + 0x407e22,0x607e22,0x207e48,0x607e35,0x407e43,0x407e8c,0x22e278,0x22053f,0x22626a,0x426270, + 0x407fc5,0x407fc6,0x607fe9,0x208141,0x204453,0x408258,0x208279,0x608279,0x408279,0x4082e3, + 0x205179,0x20835a,0x408420,0x4083bd,0x4084f4,0x204525,0x408587,0x2085f4,0x2200b0,0x408737, + 0x40873b,0x408805,0x4087bd,0x20867d,0x608836,0x20342e,0x2088c6,0x4089bd,0x408adb,0x408b3e, + 0x408b5a,0x408d73,0x408d99,0x2047e6,0x408e34,0x22e6ea,0x408fef,0x409087,0x408ffa,0x40901e, + 0x409035,0x409050,0x208fc8,0x409081,0x40908a,0x60908a,0x80908a,0xa0908a,0xc0908a,0xe0908a, + 0x609089,0x809089,0xa09089,0xc09089,0xe09089,0x1009089,0x1209089,0x1409089,0x1609089,0x1809089, + 0x1a09089,0x1c09089,0x228987,0x4093dd,0x4095bc,0x228e17,0x4096b2,0x409759,0x209839,0x4098eb, + 0x409903,0x409909,0x409945,0x609945,0x40994b,0x209a08,0x409a5f,0x409a65,0x409aef,0x409b18, + 0x209bdf,0x409d09,0x409d08,0x409ea5,0x409ecc,0x609f08,0x409f4a,0x22b81a,0x409f67,0x42a61a, + 0x4242ee,0x2242ee,0x40891c,0x4068c8,0x4066fb,0x405f45,0x405300,0x205389,0x405953,0x20fa11, + 0x206852,0x406a73,0x223cbe,0x220611,0x408a12,0x204e04,0x204e05,0x204e1f,0x204e2b,0x204e2f, + 0x204e30,0x204e40,0x204e41,0x204e44,0x204e5a,0x204e7f,0x204e8d,0x204e96,0x204eb9,0x204ed0, + 0x204ee0,0x204efd,0x204eff,0x204f0b,0x204f15,0x204f60,0x204f3b,0x204f49,0x204f54,0x204f7a, + 0x204f7d,0x204f7e,0x204f97,0x204fbe,0x204fcf,0x204ffd,0x205000,0x205001,0x205010,0x20501b, + 0x205027,0x20502e,0x205057,0x205066,0x20506a,0x20503b,0x20508f,0x205096,0x20509c,0x2050cc, + 0x2050e6,0x2050e9,0x2050ef,0x205108,0x20510b,0x205110,0x20511b,0x20511e,0x20515f,0x2051a1, + 0x2051bc,0x6051de,0x2051ee,0x2051f4,0x205201,0x205202,0x205213,0x205249,0x205261,0x205266, + 0x205293,0x2052c8,0x2052f0,0x20530a,0x20530b,0x20533e,0x20534c,0x20534b,0x205361,0x20536c, + 0x2053ab,0x2053da,0x2053e6,0x2053f5,0x205427,0x20544d,0x205466,0x20546b,0x205474,0x20548d, + 0x205496,0x2054a1,0x2054ad,0x2054b9,0x2054bf,0x2054c6,0x2054cd,0x20550e,0x20552b,0x205535, + 0x20554a,0x205560,0x405561,0x205588,0x20558e,0x205608,0x20560e,0x20560f,0x205637,0x20563f, + 0x205649,0x20564b,0x20564f,0x205666,0x205669,0x20566f,0x205671,0x205672,0x205695,0x20569a, + 0x2056ac,0x2056ad,0x2056b1,0x2056c9,0x2056dd,0x2056e4,0x20570a,0x205715,0x205723,0x20572f, + 0x205733,0x205734,0x20574c,0x205770,0x20578c,0x20579c,0x2057b8,0x2057e6,0x2057ed,0x2057f5, + 0x2057f6,0x2057ff,0x205809,0x205820,0x205832,0x20587c,0x205880,0x2058a9,0x2058ce,0x2058d0, + 0x2058d4,0x2058da,0x2058e9,0x20590c,0x205924,0x20592f,0x205961,0x20596d,0x2059ca,0x2059d2, + 0x2059dd,0x2059e3,0x2059e4,0x205a04,0x205a0c,0x205a23,0x205a47,0x205a55,0x205a63,0x205a6d, + 0x205a7e,0x205a9e,0x205aa7,0x205aac,0x205ab3,0x205ae0,0x205b00,0x205b19,0x205b25,0x205b2d, + 0x205b41,0x205b7c,0x205b7e,0x205b7f,0x205b8a,0x205c23,0x205c2b,0x205c30,0x205c63,0x205c69, + 0x205c7c,0x205ccb,0x205cd2,0x205cf4,0x205d24,0x205d26,0x205d43,0x205d46,0x205d4a,0x205d92, + 0x205d94,0x205d99,0x205da0,0x205dd8,0x205de0,0x205df8,0x205e00,0x205e12,0x205e14,0x205e15, + 0x205e18,0x205e2e,0x205e58,0x205e6b,0x205e6c,0x205ea8,0x205eaa,0x205ebe,0x205ebf,0x405ecb, + 0x205ed2,0x205f07,0x205f0e,0x205f1c,0x205f1d,0x205f22,0x205f28,0x205f36,0x205f3b,0x205f40, + 0x205f50,0x205f58,0x205f64,0x205f89,0x205f9c,0x205fa7,0x205fa4,0x205faf,0x205fb8,0x205fc4, + 0x205fc9,0x205fe1,0x205fe9,0x205fed,0x205ffc,0x206017,0x20601a,0x206033,0x206061,0x20607f, + 0x20609e,0x2060a4,0x2060b0,0x2060cb,0x2060db,0x2060f8,0x206112,0x206113,0x206114,0x20611c, + 0x20617c,0x20618d,0x20619f,0x2061a8,0x2061c2,0x2061df,0x206215,0x206229,0x206243,0x206246, + 0x20624c,0x206251,0x206256,0x2062c4,0x2062fc,0x20630a,0x20630d,0x206318,0x206339,0x206342, + 0x206343,0x206365,0x206374,0x20637d,0x206384,0x206387,0x206390,0x20639e,0x2063d1,0x2063dc, + 0x206409,0x206410,0x206422,0x206454,0x20645b,0x20646d,0x20647b,0x2064be,0x2064bf,0x2064e5, + 0x2064f7,0x2064fb,0x206504,0x206516,0x206519,0x206547,0x206567,0x206581,0x206585,0x2065c2, + 0x2065f0,0x2065f2,0x20662c,0x20664c,0x20665b,0x20665c,0x206661,0x20666b,0x406677,0x2066a4, + 0x2066c8,0x2066ec,0x206705,0x206713,0x206733,0x206748,0x20674c,0x206776,0x20677b,0x2067b0, + 0x2067b2,0x2067f9,0x2067d7,0x2067d9,0x2067f0,0x20682c,0x206830,0x206831,0x20685b,0x206872, + 0x206875,0x20687a,0x206884,0x2068a5,0x2068b2,0x2068d0,0x2068d6,0x2068e8,0x2068ed,0x2068f0, + 0x2068f1,0x2068fc,0x206911,0x206913,0x206935,0x20693b,0x206957,0x206963,0x206972,0x20697f, + 0x206980,0x2069a6,0x2069ad,0x2069b7,0x2069d6,0x2069d7,0x206a01,0x206a0f,0x206a15,0x206a28, + 0x206a34,0x206a3e,0x206a45,0x206a50,0x206a51,0x206a56,0x206a5b,0x206a83,0x206a89,0x206a91, + 0x206a9d,0x206a9e,0x206a9f,0x206adc,0x206ae7,0x206aec,0x206b1e,0x206b24,0x206b35,0x206b46, + 0x206b56,0x206b60,0x206b82,0x206bbe,0x206be1,0x206bf1,0x206c10,0x206c33,0x206c35,0x406c3a, + 0x206c59,0x206c76,0x206c7b,0x206c85,0x206c95,0x206c9c,0x206cd0,0x206cd4,0x206cd6,0x206ce0, + 0x206ceb,0x206cec,0x206cee,0x206d0a,0x206d0e,0x206d11,0x206d2e,0x206d57,0x206d5e,0x206d65, + 0x206d82,0x206dbf,0x206dc4,0x206dca,0x206dd6,0x206de9,0x206e22,0x206e51,0x206ec7,0x206eca, + 0x206ece,0x206efd,0x206f1a,0x206f2a,0x206f2f,0x206f33,0x206f5a,0x206f5e,0x206f62,0x206f7d, + 0x206f8b,0x206f8d,0x206f92,0x206f94,0x206f9a,0x206fa7,0x206fa8,0x206fb6,0x206fda,0x206fde, + 0x406ff9,0x207039,0x20703c,0x40704a,0x207054,0x20705d,0x20705e,0x207064,0x20706c,0x20707e, + 0x207081,0x207095,0x2070b7,0x2070d3,0x2070d4,0x2070d8,0x2070dc,0x207107,0x207120,0x207131, + 0x20714a,0x207152,0x207160,0x207179,0x207192,0x4071b3,0x2071cb,0x2071d3,0x2071d6,0x207200, + 0x20721d,0x20722b,0x207238,0x207241,0x207253,0x207255,0x207256,0x20725c,0x20728d,0x2072ad, + 0x2072b4,0x2072c7,0x2072fb,0x207304,0x207305,0x207328,0x207331,0x207343,0x20736c,0x20737c, + 0x207383,0x207385,0x207386,0x207395,0x20739e,0x20739f,0x2073a0,0x2073a6,0x2073ab,0x2073b5, + 0x2073b7,0x2073bc,0x2073cf,0x2073d9,0x2073e9,0x2073f4,0x2073fd,0x207404,0x20740a,0x20741a, + 0x20741b,0x207424,0x207428,0x20742c,0x20742f,0x207430,0x207431,0x207439,0x207444,0x207447, + 0x20744b,0x20744d,0x207451,0x207457,0x207466,0x20746b,0x207471,0x207480,0x207485,0x207486, + 0x207487,0x207490,0x207498,0x20749c,0x2074a0,0x2074a3,0x2074a8,0x2074ab,0x2074b5,0x2074bf, + 0x2074c8,0x2074da,0x2074de,0x20754e,0x207579,0x207581,0x207590,0x207592,0x207593,0x2075b4, + 0x2075e4,0x2075f9,0x207600,0x20760a,0x207615,0x207616,0x207619,0x20761e,0x20762d,0x207635, + 0x207643,0x20764b,0x207665,0x20766d,0x20766f,0x207671,0x207674,0x2076a4,0x2076a5,0x2076c5, + 0x2076cc,0x2076ec,0x2076fc,0x207734,0x207736,0x20775c,0x20775f,0x207760,0x207772,0x20777d, + 0x207795,0x2077aa,0x2077e6,0x2077f0,0x2077f4,0x207806,0x207822,0x20782d,0x20782e,0x207830, + 0x207835,0x207868,0x20789e,0x2078c8,0x2078cc,0x2078ce,0x2078e4,0x2078e0,0x2078e1,0x2078f2, + 0x2078f7,0x2078fb,0x207931,0x407934,0x20793b,0x20793d,0x207945,0x20795b,0x20795c,0x20798b, + 0x207996,0x207998,0x2079b8,0x2079bb,0x2079ca,0x2079da,0x207a03,0x207a09,0x207a11,0x207a1e, + 0x207a2d,0x207a39,0x207a45,0x207a4c,0x207a5d,0x407a60,0x207a6d,0x207a78,0x207aa0,0x207aa3, + 0x207ab3,0x207abb,0x207abc,0x207ac6,0x207b07,0x207b14,0x207b27,0x207b31,0x207b47,0x207b4e, + 0x207b60,0x207b69,0x207b6d,0x207b72,0x207b91,0x207baf,0x207bd7,0x207bd9,0x207c0b,0x207c0f, + 0x207c20,0x207c26,0x207c31,0x207c36,0x207c51,0x207c59,0x207c67,0x207c6e,0x207c70,0x207cbc, + 0x207cbf,0x207cc8,0x207cc9,0x207cd7,0x207cd9,0x207cdd,0x207ceb,0x207d07,0x207d08,0x207d09, + 0x207d13,0x207d1d,0x207d23,0x207d41,0x207d53,0x207d59,0x207d5d,0x207d7a,0x207d86,0x207d8b, + 0x207d8c,0x207dcc,0x207deb,0x207df1,0x207df9,0x207e08,0x207e11,0x207e15,0x207e20,0x207e47, + 0x207e62,0x207e6e,0x207e73,0x207e8d,0x207e91,0x207e98,0x207f44,0x207f4f,0x207f52,0x207f53, + 0x207f61,0x207f91,0x207fbf,0x207fce,0x207fdf,0x207fe5,0x207fec,0x207fee,0x207fef,0x207ffa, + 0x20800e,0x208011,0x208014,0x208024,0x208026,0x20803a,0x20803c,0x208060,0x208071,0x208075, + 0x20809e,0x2080a6,0x2080ab,0x2080d7,0x2080d8,0x208116,0x208118,0x20813a,0x20814a,0x20814c, + 0x208181,0x208184,0x2081b4,0x2081cf,0x2081f9,0x208203,0x208221,0x208232,0x208234,0x208246, + 0x20824b,0x20824f,0x20828e,0x2082ae,0x2082b7,0x2082be,0x2082c6,0x2082fe,0x208343,0x208351, + 0x208355,0x208386,0x20838d,0x208392,0x208398,0x2083a9,0x2083bf,0x2083c0,0x2083ea,0x20840f, + 0x208411,0x20844a,0x208476,0x2084a8,0x2084af,0x2084c0,0x2084c2,0x2084f0,0x2084fd,0x20850c, + 0x208534,0x20855e,0x20858f,0x2085b7,0x2085ce,0x2085ad,0x208612,0x208629,0x208652,0x208663, + 0x20866c,0x20866f,0x20867a,0x20868d,0x208691,0x208698,0x2086a7,0x2086a8,0x2086fa,0x2086fd, + 0x20870b,0x208713,0x208719,0x20871e,0x208728,0x20873e,0x208771,0x208788,0x208799,0x2087ac, + 0x2087ad,0x2087b5,0x2087d6,0x2087eb,0x2087ed,0x208801,0x408803,0x208806,0x20880b,0x208814, + 0x20881c,0x208856,0x20885f,0x208864,0x208898,0x2088aa,0x2088bd,0x2088be,0x2088ca,0x2088d2, + 0x2088db,0x2088f0,0x2088f1,0x208906,0x208918,0x208919,0x20891a,0x208927,0x208930,0x20893e, + 0x20897b,0x2089d4,0x2089d6,0x2089e5,0x2089f1,0x208a07,0x208a0f,0x208a15,0x208a22,0x208a4e, + 0x208a7f,0x208af4,0x208b1f,0x208b37,0x208b43,0x208b44,0x208b54,0x208b9c,0x208b9e,0x208c47, + 0x208c54,0x208c73,0x208ca4,0x208cd9,0x208ce1,0x208cf8,0x208cfe,0x208d1b,0x208d69,0x208d6c, + 0x208d84,0x208d8d,0x208d95,0x208da6,0x208dc6,0x208dce,0x208de4,0x208dec,0x208e20,0x208e4b, + 0x208e6c,0x208e70,0x208e7a,0x208e92,0x208eae,0x208eb3,0x208ed1,0x408ed4,0x208ef9,0x208f17, + 0x208f36,0x208fa6,0x208fb5,0x208fb6,0x408fc6,0x208fe0,0x208fe4,0x208ff6,0x209002,0x20902c, + 0x209044,0x209088,0x209095,0x209099,0x20909b,0x2090a2,0x2090b4,0x2090d7,0x2090dd,0x2090f4, + 0x209117,0x20911c,0x209131,0x20913a,0x20913d,0x209148,0x20915b,0x209161,0x209164,0x20918e, + 0x20919e,0x2091a8,0x2091ad,0x2091ae,0x2091b2,0x2091bc,0x2091f0,0x2091f7,0x2091fb,0x209207, + 0x209228,0x209233,0x209238,0x209243,0x209247,0x20924f,0x209260,0x2092c2,0x2092cb,0x2092cc, + 0x2092df,0x20930d,0x209315,0x20931f,0x209327,0x209347,0x209352,0x409365,0x20936a,0x20936d, + 0x20939b,0x2093ba,0x2093a9,0x2093c1,0x2093ca,0x2093e2,0x2093fa,0x2093fd,0x20940f,0x209434, + 0x20943f,0x209455,0x20946b,0x209472,0x209578,0x2095a6,0x2095a9,0x4095ab,0x2095b4,0x2095bd, + 0x2095da,0x20961d,0x209641,0x209658,0x209684,0x2096a4,0x2096a9,0x2096d2,0x205db2,0x2096de, + 0x2096e9,0x2096f1,0x209702,0x209709,0x20975a,0x209763,0x20976e,0x209773,0x20979a,0x2097a2, + 0x2097b5,0x2097b6,0x2097d9,0x2097de,0x2097f4,0x20980a,0x20980e,0x20981e,0x209823,0x20982b, + 0x20983e,0x209852,0x209853,0x209859,0x20986c,0x2098b8,0x2098ba,0x2098bf,0x2098c8,0x2098e5, + 0x209932,0x209933,0x209940,0x20994d,0x20995c,0x20995f,0x2099b1,0x2099b9,0x2099ba,0x2099c9, + 0x209a02,0x209a16,0x209a24,0x209a27,0x209a2d,0x209a2e,0x209a36,0x209a38,0x209a4a,0x209a56, + 0x209ab5,0x209ab6,0x209af9,0x209b03,0x209b20,0x209b33,0x209b34,0x209b73,0x209b79,0x209ba7, + 0x209bc1,0x209bc7,0x209bd7,0x209be7,0x209beb,0x209bf7,0x209bfa,0x209bfd,0x209c0b,0x209c27, + 0x209c2a,0x209c36,0x209c41,0x209c53,0x209c63,0x209c70,0x209c77,0x209d02,0x209d42,0x209d47, + 0x209d63,0x209d69,0x209d7c,0x209d7e,0x209d8d,0x209db1,0x209dc3,0x209dc7,0x209dd6,0x209ddf, + 0x209deb,0x209df4,0x209e15,0x209e1d,0x209ea4,0x209ea8,0x209eac,0x209ee7,0x209eee,0x209f10, + 0x209f12,0x209f17,0x209f19,0x209f2f,0x209f37,0x209f39,0x209f41,0x209f45,0x209f57,0x209f68, + 0x209f71,0x209f75,0x209f90,0x209f94,0x209fa2,0x404e30,0x203405,0x404f60,0x205620,0x205ecb, + 0x405f50,0x4060a4,0x22363a,0x406b24,0x206ff9,0x206ee6,0x2071b3,0x40722b,0x407ac6,0x407f61, + 0x408071,0x40809e,0x408fb6,0x4091fc,0x405db2,0x4097de,0x204fd3,0x2050d9,0x2050f0,0x2051c3, + 0x205676,0x206a54,0x206d01,0x206dd0,0x206e42,0x206ed9,0x2073e4,0x207421,0x20756c,0x207851, + 0x2087f5,0x2233fe,0x2073a8,0x203af3,0x2034db,0x20440c,0x203e8a,0x4235c4,0x209fbd,0x204be8, + 0x209fbc,0x203eda,0x203b22,0x209fbe,0x20457a,0x204093,0x429e3d,0x204665,0x204103,0x204293, + 0x2046ae,0x203488,0x222609,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,0x204f48,0x204f5f, + 0x204f6a,0x204f6c,0x20500e,0x205018,0x205041,0x2050f2,0x2050d0,0x205106,0x205103,0x205135, + 0x205155,0x205157,0x2034b5,0x2051ca,0x2051e2,0x205257,0x2052cc,0x2052d6,0x2052fb,0x20531c, + 0x205363,0x20539d,0x205412,0x20547f,0x205488,0x205550,0x205581,0x2055ad,0x2055ce,0x20563b, + 0x20569e,0x2056a9,0x2056b3,0x205777,0x20577c,0x22131b,0x2057cf,0x2057e4,0x205864,0x205889, + 0x22146e,0x2058d2,0x2058e0,0x208641,0x20598b,0x205992,0x2059c3,0x205a13,0x205a67,0x205a77, + 0x205a84,0x205ac4,0x2218bd,0x205b7d,0x205b93,0x205c12,0x205c6e,0x2216b4,0x205c7a,0x205c8f, + 0x205c9f,0x205ca3,0x205caa,0x205cd0,0x221e34,0x205d0d,0x205d47,0x205d81,0x205da4,0x205da7, + 0x205dcb,0x205e5e,0x205ef9,0x205f00,0x205f02,0x205f23,0x205f3d,0x205f54,0x205f7d,0x20600d, + 0x206014,0x206018,0x206035,0x206047,0x20609d,0x2060d4,0x2060dd,0x20612b,0x2061bc,0x2061b9, + 0x206222,0x20625a,0x20626f,0x2062d6,0x20637c,0x2063e5,0x206479,0x2064c4,0x2064d0,0x206529, + 0x20659d,0x20663a,0x206622,0x20662b,0x206630,0x206633,0x206648,0x2231c4,0x206677,0x206678, + 0x20668d,0x2066bb,0x2066db,0x2066e8,0x206747,0x206781,0x206793,0x206798,0x20679b,0x2067fc, + 0x20681d,0x2068a3,0x20690a,0x206949,0x2235c4,0x206942,0x206964,0x2069a5,0x2069cf,0x203bb6, + 0x203bc3,0x2069e9,0x2069f5,0x22373f,0x206a3b,0x223763,0x206a94,0x206aa5,0x203c0f,0x206b1b, + 0x206b2c,0x206b67,0x206ba9,0x206bad,0x206bd7,0x206bff,0x206c05,0x206c74,0x206c98,0x206cfb, + 0x206cc6,0x206d31,0x206d39,0x206d3f,0x206d58,0x206d94,0x206daa,0x206ddb,0x206ddd,0x206e44, + 0x206e5e,0x206eb1,0x206ec1,0x206f10,0x206f59,0x206f61,0x206f7e,0x206f8c,0x206fa0,0x206fbc, + 0x206fc7,0x206fca,0x206ff0,0x20704e,0x207075,0x2070a4,0x2070e4,0x20712b,0x20711e,0x20712e, + 0x207151,0x207168,0x207185,0x207187,0x2071ba,0x2071c4,0x207215,0x203e3f,0x20729b,0x2247f1, + 0x207327,0x207350,0x207366,0x2073a2,0x20742b,0x207446,0x207462,0x20746d,0x2074a6,0x2074a9, + 0x2074c9,0x2074ff,0x207517,0x203f72,0x2075ce,0x207602,0x207608,0x207664,0x207681,0x20769d, + 0x2076aa,0x2076b6,0x2076ce,0x2076d4,0x2076e6,0x2076f1,0x20770a,0x207719,0x20774d,0x20774e, + 0x20777a,0x207780,0x207794,0x2077e0,0x22548e,0x207843,0x20786e,0x2078b0,0x22550e,0x2078ad, + 0x207900,0x20791c,0x20792e,0x207934,0x207946,0x207979,0x2079c8,0x225771,0x2079d4,0x2079de, + 0x2079eb,0x2079ed,0x207a85,0x2259c4,0x207ace,0x207afd,0x207b12,0x207b2d,0x207b3b,0x207b6f, + 0x207c01,0x207c33,0x225da1,0x207c6d,0x207c79,0x207c8f,0x207c94,0x207ca0,0x207cd5,0x207d31, + 0x207d5c,0x207d83,0x207da6,0x207dc2,0x207e28,0x207f97,0x207fdb,0x208035,0x208037,0x2080ca, + 0x2080e0,0x2080f3,0x208160,0x208167,0x208168,0x20816d,0x2081bb,0x2081ca,0x2081d7,0x20445b, + 0x208260,0x208274,0x226aff,0x2082a1,0x2082a3,0x2082a4,0x2082a9,0x2082bf,0x2082d5,0x2082fd, + 0x208300,0x208322,0x20832d,0x20833a,0x208347,0x20837d,0x2083a7,0x2083cf,0x2083d1,0x2083e1, + 0x208401,0x208406,0x20845f,0x208470,0x208473,0x208485,0x20849e,0x2084ba,0x226e40,0x208532, + 0x20851e,0x20852f,0x208564,0x20857a,0x20858c,0x2085a2,0x2085cb,0x2085ed,0x2085ff,0x208604, + 0x208605,0x208610,0x2270f4,0x208618,0x208638,0x208657,0x208662,0x20459d,0x208675,0x2086b8, + 0x2086fc,0x208787,0x2045ea,0x20880a,0x208810,0x2088ce,0x227684,0x208932,0x208939,0x208940, + 0x208994,0x2089f6,0x208a47,0x208a5d,0x208a61,0x208a75,0x208ad0,0x208b46,0x208b59,0x208b69, + 0x208b9d,0x208c49,0x208c68,0x208daf,0x208dd1,0x208dd7,0x208e23,0x208e3d,0x208e7b,0x228277, + 0x204844,0x208efa,0x208f1e,0x208f2d,0x208f54,0x2283cd,0x208fe8,0x208fee,0x209008,0x20902d, + 0x209097,0x2090b3,0x2090be,0x2090c4,0x2090c5,0x2090c7,0x2090ef,0x209114,0x209116,0x209122, + 0x209123,0x20912f,0x209134,0x209183,0x2091f1,0x209349,0x209364,0x209365,0x2093a3,0x2093df, + 0x209404,0x209433,0x20944a,0x209463,0x209471,0x20958e,0x20959f,0x2095ac,0x2095b6,0x2095cb, + 0x2095d0,0x2095d3,0x2049b0,0x2095de,0x2096a5,0x2096ef,0x20974e,0x209795,0x2097ae,0x2097ba, + 0x2097c1,0x2097c9,0x2097db,0x209856,0x2098e7,0x209958,0x209a03,0x209ac1,0x209ac3,0x209ace, + 0x209ad6,0x209b02,0x209b08,0x204c17,0x209b2d,0x209b5e,0x209b66,0x209b84,0x209b8a,0x209b9e, + 0x209bce,0x209be5,0x209bf8,0x209c23,0x209c4f,0x209c50,0x209c65,0x209d1d,0x209d1e,0x209d43, + 0x209d52,0x209d8a,0x209d96,0x209dc0,0x209dac,0x209dbc,0x22a190,0x209de7,0x209e07,0x209e9e, + 0x209eaf,0x209f97,0x220089,0x204e02,0x204e0f,0x204e12,0x204e29,0x204e2e,0x204e47,0x2200a2, + 0x204e51,0x203406,0x2200a4,0x204e69,0x204e9d,0x20342c,0x204ebc,0x204ec3,0x204ec8,0x204eeb, + 0x204eda,0x204ef1,0x204ef5,0x204f16,0x204f64,0x204f37,0x204f3e,0x204f58,0x220213,0x204f77, + 0x204f78,0x204f82,0x204f85,0x204fe6,0x204fb2,0x204fc5,0x204fcb,0x204fd2,0x20346a,0x204ff2, + 0x205013,0x20501c,0x20504e,0x205053,0x205063,0x2050a3,0x205088,0x205092,0x205093,0x205095, + 0x2050aa,0x22032b,0x2050b1,0x2050ba,0x2050bb,0x2050c4,0x2050c7,0x2050f3,0x220381,0x2050ce, + 0x220371,0x2050d4,0x2050e1,0x203492,0x2203f9,0x205117,0x22044a,0x205160,0x220509,0x205173, + 0x205183,0x20518b,0x2034bc,0x205198,0x2051a3,0x2051ad,0x2034c7,0x2205d6,0x2051f3,0x205212, + 0x205216,0x22074f,0x205255,0x20525c,0x20526c,0x205277,0x205284,0x205282,0x220807,0x205298, + 0x22083a,0x2052a4,0x2052ba,0x2052bb,0x2052ca,0x2052d1,0x2208b9,0x2052f7,0x205335,0x205342, + 0x22097c,0x22099d,0x205367,0x20537a,0x2053a4,0x2053b4,0x220ad3,0x2053b7,0x2053c0,0x220b1d, + 0x20355d,0x20355e,0x2053d5,0x203563,0x2053f4,0x205424,0x205428,0x20356e,0x205443,0x205462, + 0x20546c,0x205495,0x2054a0,0x2054a6,0x2054ae,0x2054b7,0x2054ba,0x2054c3,0x220d45,0x2054ec, + 0x2054ef,0x2054f1,0x2054f3,0x205500,0x205501,0x205509,0x20553c,0x205541,0x2035a6,0x205547, + 0x2035a8,0x205564,0x220de1,0x20557d,0x205582,0x205591,0x2035c5,0x2055d2,0x220e95,0x220e6d, + 0x2055bf,0x2055c9,0x2055cc,0x2055d1,0x2055dd,0x2035da,0x2055e2,0x220e64,0x2055e9,0x205628, + 0x220f5f,0x205607,0x205610,0x205630,0x2035f4,0x20563d,0x205640,0x205647,0x20565e,0x205660, + 0x20566d,0x203605,0x205688,0x20568c,0x20569d,0x2056a8,0x2056b2,0x2056c5,0x2056cd,0x2056df, + 0x2056e8,0x2056f6,0x2056f7,0x221201,0x221255,0x205729,0x22127b,0x205745,0x205746,0x20574d, + 0x221274,0x205768,0x20576f,0x205773,0x205774,0x205775,0x20577b,0x2212e4,0x2212d7,0x20579a, + 0x20579d,0x20579e,0x2057a8,0x2057d7,0x2212fd,0x2057cc,0x221336,0x221344,0x2057de,0x2057f0, + 0x20364a,0x2057f8,0x2057fb,0x2057fd,0x205804,0x20581e,0x205827,0x205839,0x2213c4,0x205849, + 0x20584c,0x205867,0x20588a,0x20588b,0x20588d,0x20588f,0x205890,0x205894,0x20589d,0x2058aa, + 0x2058b1,0x22146d,0x2058c3,0x2058cd,0x2058e2,0x2058f3,0x2058f4,0x205905,0x205906,0x20590d, + 0x205914,0x2215d7,0x203691,0x20593d,0x203699,0x205946,0x203696,0x226c29,0x20595f,0x221647, + 0x205975,0x205976,0x20597c,0x20599f,0x2059ae,0x2059bc,0x2059c8,0x2059cd,0x2059de,0x2059e7, + 0x2059ee,0x221706,0x221742,0x2036cf,0x205a0d,0x205a17,0x205a27,0x205a2d,0x205a65,0x205a7a, + 0x205a8b,0x205a9c,0x205a9f,0x205aa0,0x205aa2,0x205ab1,0x205ab5,0x205aba,0x205abf,0x205ada, + 0x205adc,0x205ae5,0x205af0,0x205aee,0x205af5,0x205b08,0x205b17,0x205b34,0x205b4c,0x205b52, + 0x205b68,0x205b6f,0x205b81,0x205b84,0x2219c3,0x205b96,0x205bac,0x203761,0x203762,0x205bce, + 0x205bd6,0x20376c,0x20376b,0x205bf1,0x205bfd,0x203775,0x205c03,0x205c29,0x221c56,0x205c5f, + 0x205c67,0x205c68,0x205c70,0x221d2d,0x221d45,0x221d78,0x221d62,0x205c88,0x205c8a,0x2037c1, + 0x221da1,0x221d9c,0x205ca0,0x205ca2,0x205ca7,0x221d92,0x205cad,0x205cb5,0x221db7,0x205cc9, + 0x221de0,0x221e33,0x205d06,0x205d10,0x205d2b,0x205d1d,0x205d20,0x205d31,0x205d39,0x2037e8, + 0x205d61,0x205d6a,0x2037f4,0x205d70,0x221f1e,0x2037fd,0x205d88,0x203800,0x205d97,0x205db0, + 0x205db4,0x221f76,0x205dd1,0x205dd7,0x221ffa,0x205de4,0x205de9,0x20382f,0x203836,0x203840, + 0x205e1f,0x205e3e,0x205e49,0x20385c,0x205e56,0x203861,0x205e6d,0x205e6e,0x22217b,0x205ea5, + 0x205eac,0x205eb9,0x205ec6,0x205ed9,0x22231e,0x205efd,0x205f08,0x2223ad,0x205f1e,0x205f47, + 0x205f63,0x205f72,0x205f7e,0x205f8f,0x205fa2,0x205fc7,0x205fcb,0x205fd2,0x205fd3,0x205fd4, + 0x205fe2,0x205fee,0x205fef,0x205ff3,0x203917,0x206022,0x206024,0x20391a,0x20604c,0x206095, + 0x2060a8,0x2226f3,0x2060b1,0x2060be,0x2060c8,0x2060d9,0x2060ee,0x2060f5,0x206110,0x206119, + 0x20611e,0x20613a,0x20396f,0x206141,0x206146,0x206160,0x22285b,0x206192,0x206193,0x206197, + 0x2061a5,0x2061ad,0x2228ab,0x2061d5,0x2061dd,0x2061f5,0x22298f,0x206223,0x206252,0x206261, + 0x206264,0x20627b,0x20626d,0x206273,0x206299,0x2062d5,0x222ab8,0x2062fd,0x206303,0x206310, + 0x222b4f,0x222b50,0x206332,0x206335,0x20633b,0x20633c,0x206341,0x206344,0x20634e,0x222b46, + 0x206359,0x222c1d,0x222ba6,0x20636c,0x206399,0x222c24,0x206394,0x2063bd,0x2063d4,0x2063d5, + 0x2063e0,0x2063eb,0x2063ec,0x2063f2,0x20641e,0x206425,0x206429,0x20642f,0x20645a,0x20645d, + 0x206473,0x20647d,0x206487,0x206491,0x20649f,0x2064cb,0x2064cc,0x2064d5,0x2064d7,0x222de1, + 0x2064e4,0x2064ff,0x203a6e,0x20650f,0x206514,0x203a73,0x20651e,0x206532,0x206544,0x206554, + 0x20656b,0x20657a,0x206584,0x20658a,0x2065b2,0x2065b5,0x2065b8,0x2065bf,0x2065c9,0x2065d4, + 0x203ad6,0x2065f9,0x2065fc,0x206604,0x206608,0x206621,0x20662a,0x206645,0x206651,0x20664e, + 0x203aea,0x2231c3,0x2231f5,0x2231b6,0x20666a,0x20666c,0x20666d,0x20667b,0x206680,0x206690, + 0x206692,0x203b0e,0x2066ad,0x2066b1,0x2066b5,0x203b1a,0x203b1c,0x203ad7,0x206701,0x206712, + 0x223372,0x206719,0x2233d3,0x2233d2,0x20674d,0x206754,0x20675d,0x2233d0,0x2233e4,0x2233d5, + 0x206774,0x2233da,0x206792,0x2233df,0x208363,0x206810,0x2067c3,0x2067c8,0x2067d2,0x2067db, + 0x2067f7,0x22344a,0x223451,0x22344b,0x206818,0x20681f,0x20682d,0x223465,0x206833,0x20683b, + 0x20683e,0x206845,0x206849,0x20684c,0x206855,0x206857,0x203b77,0x20686b,0x20686e,0x20687c, + 0x206882,0x206890,0x206896,0x203b6d,0x206898,0x206899,0x20689a,0x20689c,0x2068aa,0x2068ab, + 0x2068b4,0x2068bb,0x2068fb,0x2234e4,0x22355a,0x2068c3,0x2068c5,0x2068cc,0x2068d9,0x2068e4, + 0x2068e5,0x2068ec,0x2068f7,0x206903,0x206907,0x203b87,0x223594,0x203b8d,0x206946,0x206969, + 0x20696c,0x20697a,0x206992,0x203ba4,0x206996,0x2069b0,0x2069ba,0x2069bc,0x2069c0,0x2069d1, + 0x223639,0x223647,0x223638,0x2069e3,0x2069ee,0x2069ef,0x2069f3,0x203bcd,0x2069f4,0x2069fe, + 0x206a11,0x206a1a,0x206a1d,0x22371c,0x206a32,0x206a33,0x206a3f,0x206a49,0x206a7a,0x206a4e, + 0x206a52,0x206a64,0x22370c,0x206a8b,0x203bf0,0x206aa1,0x223764,0x206aab,0x206abd,0x206ac6, + 0x206ad4,0x206ad0,0x206add,0x2237ff,0x2237e7,0x206af1,0x206af2,0x206af3,0x206afd,0x223824, + 0x206b0b,0x206b0f,0x206b10,0x206b11,0x22383d,0x206b17,0x203c26,0x206b2f,0x206b4a,0x206b58, + 0x206b6c,0x206b75,0x206b7a,0x206b81,0x206b9b,0x206bae,0x223a98,0x206bbd,0x206bc7,0x206bc8, + 0x206bc9,0x206bda,0x206be6,0x206be7,0x206bee,0x206c02,0x206c0a,0x206c0e,0x206c36,0x223c7f, + 0x206c4d,0x206c5b,0x206c6d,0x206c84,0x206c89,0x203cc3,0x206c94,0x206c97,0x206cad,0x206cc2, + 0x203cd2,0x206cdc,0x206ce9,0x206ced,0x223d00,0x206d00,0x206d24,0x206d26,0x206d27,0x206c67, + 0x206d2f,0x206d3c,0x206d5b,0x206d60,0x206d70,0x206d80,0x206d81,0x206d8a,0x206d8d,0x206d91, + 0x206d98,0x223d40,0x223dfa,0x223df9,0x223dd3,0x206dab,0x206dae,0x206db4,0x206dc2,0x206d34, + 0x206dc8,0x206dce,0x206ddf,0x206df6,0x206e36,0x206e1e,0x203d11,0x206e32,0x206e48,0x206e49, + 0x206e4b,0x206e4c,0x206e4f,0x206e53,0x206e54,0x206e57,0x206e63,0x203d1e,0x206e93,0x206ea7, + 0x206eb4,0x206ec3,0x206f35,0x206eeb,0x206ef9,0x206efb,0x206f0a,0x206f0c,0x206f18,0x206f25, + 0x206f36,0x206f3c,0x223f7e,0x206f52,0x206f57,0x206f60,0x206f68,0x206f90,0x206f96,0x206fbe, + 0x206f9f,0x206fa5,0x206faf,0x203d64,0x206fc8,0x206fc9,0x206fe9,0x224096,0x206ffc,0x207000, + 0x20700a,0x207023,0x224103,0x20703a,0x207043,0x207047,0x20704b,0x203d9a,0x207065,0x207069, + 0x20706e,0x207076,0x207086,0x207097,0x2241c6,0x20709f,0x2070b1,0x2241fe,0x2070ec,0x2070ca, + 0x2070d1,0x207103,0x207106,0x207108,0x20710c,0x203dc0,0x20712f,0x207150,0x207153,0x20715e, + 0x203dd4,0x207196,0x207180,0x20719b,0x2071a0,0x2071a2,0x2071ae,0x2071af,0x2243bc,0x2071d9, + 0x2071dc,0x207207,0x203e05,0x207234,0x207239,0x207242,0x207257,0x207263,0x224629,0x20726e, + 0x20726f,0x207278,0x20727f,0x20728e,0x2246a5,0x2072ae,0x2072b0,0x2072c1,0x203e60,0x2072cc, + 0x203e66,0x203e68,0x2072f3,0x2072fa,0x207307,0x207312,0x207318,0x207319,0x203e83,0x207339, + 0x20732c,0x207333,0x20733d,0x207352,0x203e94,0x20736b,0x224896,0x20736e,0x20736f,0x207371, + 0x207381,0x20738a,0x207394,0x207398,0x20739c,0x2073a5,0x2073b9,0x2073bf,0x2073c5,0x2073cb, + 0x2073e1,0x2073e7,0x2073f9,0x207413,0x2073fa,0x207401,0x207453,0x207440,0x207443,0x207452, + 0x20745d,0x207481,0x207488,0x224a4d,0x207492,0x207497,0x207499,0x2074a1,0x2074a5,0x2074aa, + 0x2074b9,0x2074bb,0x2074ba,0x2074d6,0x2074d8,0x2074eb,0x224b56,0x2074fa,0x224b6f,0x207520, + 0x207524,0x20752a,0x203f57,0x224c16,0x20753d,0x20753e,0x207540,0x207548,0x207550,0x207552, + 0x207572,0x207571,0x20757a,0x20757d,0x20757e,0x20758c,0x203f75,0x2075a2,0x203f77,0x2075b0, + 0x2075b7,0x2075bf,0x2075c0,0x2075c6,0x2075cf,0x2075d3,0x2075dd,0x2075df,0x2075e0,0x2075e7, + 0x2075ee,0x2075f1,0x207603,0x207618,0x207607,0x20760f,0x203fae,0x224e0e,0x207613,0x20761b, + 0x20761c,0x224e37,0x207625,0x207628,0x20763c,0x207633,0x224e6a,0x203fc9,0x207641,0x224e8b, + 0x207649,0x207655,0x203fd7,0x20766e,0x207695,0x2076a1,0x2076a0,0x2076a7,0x2076a8,0x2076af, + 0x22504a,0x2076c9,0x225055,0x2076e8,0x225122,0x207717,0x20771a,0x20772d,0x207735,0x2251a9, + 0x204039,0x2251e5,0x2251cd,0x207758,0x22521e,0x20777c,0x22524c,0x204058,0x20779a,0x20779f, + 0x2077a2,0x2077a4,0x2077de,0x2077df,0x2077e4,0x2077ea,0x2077ec,0x2077fb,0x22542e,0x207805, + 0x207809,0x20780d,0x207819,0x20782c,0x207847,0x20786a,0x2254d9,0x20788a,0x207894,0x2078a4, + 0x20789d,0x20789f,0x2078bb,0x2078d5,0x2078e6,0x2078f9,0x2078fa,0x2078fe,0x2255a7,0x207910, + 0x20791b,0x207925,0x20794a,0x207958,0x204105,0x207967,0x207972,0x207995,0x2079a1,0x2079a9, + 0x2079b4,0x2079c2,0x2079c7,0x2079cc,0x2079cd,0x2079d6,0x204148,0x2257a9,0x2257b4,0x20414f, + 0x207a0a,0x207a15,0x207a1b,0x204163,0x207a38,0x207a47,0x207a56,0x207a59,0x207a5c,0x207a5f, + 0x207a67,0x207a6a,0x207a75,0x207a82,0x207a8a,0x207a90,0x207aac,0x2259d4,0x2041b4,0x207ab9, + 0x207abe,0x2041bf,0x207acc,0x207ae8,0x207af4,0x225ae4,0x225ae3,0x225af1,0x207b3d,0x207b2a, + 0x207b2e,0x207b2f,0x2041e6,0x2041f3,0x207b7f,0x207b41,0x2041ee,0x207b55,0x207b79,0x207b64, + 0x207b66,0x207b73,0x225bb2,0x204207,0x207b90,0x207b9b,0x20420e,0x207bb5,0x207bbc,0x207bc5, + 0x207bca,0x225c4b,0x225c64,0x207bd4,0x207bd6,0x207bda,0x207bea,0x207bf0,0x207c03,0x207c0e, + 0x207c45,0x207c4a,0x207c57,0x207c5e,0x207c61,0x207c69,0x207c6f,0x225e2e,0x225e56,0x225e65, + 0x207ca6,0x225e62,0x207cb6,0x207cb7,0x225ed8,0x207cc4,0x225ec2,0x207ccd,0x225ee8,0x225f23, + 0x207ce6,0x225f5c,0x207cf5,0x207d03,0x2042c6,0x207d12,0x207d1e,0x225fe0,0x225fd4,0x207d3d, + 0x207d3e,0x207d40,0x207d47,0x22600c,0x225ffb,0x2042d6,0x207d5a,0x207d6a,0x207d70,0x2042dd, + 0x207d7f,0x226017,0x207d88,0x207d97,0x226060,0x207d9d,0x207da7,0x207daa,0x207db6,0x207dc0, + 0x207dd7,0x207dd9,0x207de6,0x204302,0x2260ed,0x407e09,0x207e10,0x207e17,0x207e1d,0x207e27, + 0x207e2c,0x207e45,0x207e75,0x207e7e,0x207e86,0x207e87,0x20432b,0x207e9a,0x204343,0x207f3c, + 0x207f3b,0x207f3e,0x207f43,0x2034c1,0x226270,0x226286,0x207f63,0x207f64,0x207f6d,0x207f7d, + 0x207f7e,0x207f90,0x20517b,0x223d0e,0x207f96,0x207f9c,0x207fad,0x226402,0x207fc3,0x207fcf, + 0x207fe3,0x207ff2,0x20800a,0x208008,0x208016,0x20802c,0x208030,0x208043,0x208066,0x20807b, + 0x208099,0x20809c,0x2080a4,0x2080a7,0x2080b8,0x22667e,0x2080c5,0x2080d5,0x2080e6,0x20810d, + 0x2080f5,0x2080fb,0x2043ee,0x208135,0x20811e,0x2043f0,0x208124,0x208127,0x20812c,0x22671d, + 0x20813d,0x204408,0x208169,0x204417,0x20441c,0x208185,0x204422,0x208198,0x2081b2,0x2081c1, + 0x2081c3,0x2081d6,0x2081db,0x2268dd,0x2081e4,0x2268ea,0x2081ec,0x2081fd,0x2081ff,0x22696f, + 0x208204,0x2269dd,0x208219,0x208222,0x226a1e,0x20823c,0x208249,0x208245,0x226a58,0x204476, + 0x20447a,0x208257,0x226a8c,0x20825c,0x208263,0x226ab7,0x204491,0x20827d,0x20827f,0x208283, + 0x20828a,0x208293,0x2082a7,0x2082a8,0x2082b2,0x2082b4,0x2082ba,0x2082bc,0x2082e2,0x2082e8, + 0x2082f7,0x208307,0x208308,0x20830c,0x208354,0x20831b,0x20831d,0x208330,0x20833c,0x208344, + 0x208357,0x2044be,0x2044d4,0x2044b3,0x208394,0x208395,0x20839b,0x20839d,0x2083c9,0x2083d0, + 0x2083d4,0x2083dd,0x2083e5,0x2083f9,0x208415,0x226c73,0x208417,0x208439,0x20844f,0x208451, + 0x208452,0x208459,0x20845a,0x20845c,0x226cdd,0x208465,0x208478,0x20847c,0x208481,0x20450d, + 0x208497,0x2084a6,0x2084be,0x204508,0x2084ce,0x2084cf,0x2084d3,0x226e65,0x2084e7,0x2084ea, + 0x2084ef,0x2084f1,0x2084fa,0x20851b,0x208524,0x208525,0x20852b,0x20854f,0x20856f,0x204543, + 0x208551,0x208561,0x208562,0x226f94,0x20857b,0x20857d,0x20857f,0x208581,0x208586,0x208593, + 0x20859d,0x20859f,0x226ff8,0x226ff6,0x226ff7,0x2085bc,0x2085c7,0x2085ca,0x2085d8,0x2085d9, + 0x2085df,0x2085e1,0x2085e6,0x2085f6,0x208600,0x208611,0x20861e,0x208621,0x208624,0x208627, + 0x22710d,0x208639,0x20863c,0x227139,0x208640,0x208653,0x208656,0x208677,0x208687,0x208689, + 0x20869c,0x20869d,0x2086b1,0x2086b3,0x2086c1,0x2086c3,0x2086d1,0x2086d5,0x2086d7,0x2086e3, + 0x2086e6,0x2045b8,0x208705,0x208707,0x20870e,0x208710,0x20871f,0x208721,0x208723,0x208731, + 0x20873a,0x208740,0x208743,0x208751,0x208758,0x208764,0x208765,0x208772,0x20877c,0x2273db, + 0x2273da,0x2087a7,0x208789,0x20878b,0x208793,0x2087a0,0x2273fe,0x2045e5,0x2087be,0x227410, + 0x2087c1,0x2087ce,0x2087df,0x227449,0x2087e3,0x2087e5,0x2087e6,0x2087ea,0x208813,0x208828, + 0x20882e,0x208832,0x20883c,0x20460f,0x20884a,0x208858,0x227615,0x227614,0x208869,0x227631, + 0x20886f,0x2088a0,0x2088bc,0x2088c0,0x227693,0x2088d1,0x2088d3,0x204641,0x208901,0x22770e, + 0x208937,0x227723,0x208942,0x208945,0x208949,0x227752,0x208962,0x208989,0x208990,0x20899f, + 0x2089b0,0x2089b7,0x2089d8,0x2089eb,0x2046a1,0x2089f3,0x2089fd,0x2089ff,0x2046af,0x208a11, + 0x208a14,0x227985,0x208a21,0x208a35,0x208a3e,0x208a45,0x208a4d,0x208a58,0x208aae,0x208a90, + 0x208ab7,0x208ad7,0x208afc,0x227a84,0x208b0a,0x208b05,0x208b0d,0x208b1c,0x208b2d,0x20470c, + 0x208b51,0x208b5e,0x208b76,0x208b81,0x208b8b,0x208b94,0x208b95,0x208c39,0x227bb3,0x208c3d, + 0x227bbe,0x227bc7,0x208c45,0x208c4f,0x208c57,0x208c69,0x208c6d,0x227cb8,0x208c93,0x208c92, + 0x208c99,0x204764,0x208c9b,0x208cd6,0x208cd5,0x227da0,0x208cf1,0x227e10,0x208d09,0x208d0e, + 0x208dc8,0x208dd9,0x208e0c,0x2047fd,0x208dfd,0x208e06,0x22808a,0x208e14,0x208e16,0x208e21, + 0x208e22,0x208e27,0x2280bb,0x204816,0x208e36,0x208e39,0x208e54,0x208e62,0x208e6d,0x208e6f, + 0x208e98,0x208e9e,0x208eb5,0x208ebb,0x228282,0x20484e,0x2282f3,0x208f00,0x208f08,0x208f2b, + 0x208f40,0x208f4a,0x208f58,0x22840c,0x208fa4,0x208fb4,0x228455,0x208fc1,0x208fc6,0x20fa24, + 0x208fca,0x208fcd,0x208fd3,0x208fd5,0x208ff1,0x208ff5,0x208ffb,0x20900c,0x209037,0x22856b, + 0x209043,0x20905d,0x2285c8,0x2285c9,0x209085,0x20908c,0x209090,0x2090a1,0x2048b5,0x2090b0, + 0x2090b6,0x2090c3,0x2090c8,0x2286d7,0x2090dc,0x2090df,0x2286fa,0x2090f6,0x2090f2,0x209100, + 0x2090eb,0x2090fe,0x2090ff,0x209104,0x209106,0x209118,0x20911e,0x209137,0x209139,0x209146, + 0x209147,0x209157,0x209159,0x209174,0x209179,0x209185,0x2091b3,0x2091b6,0x2091c3,0x2091c4, + 0x228949,0x228946,0x2091ec,0x209201,0x209216,0x209217,0x22896b,0x209242,0x20924a,0x209256, + 0x209261,0x209265,0x209268,0x228988,0x20927c,0x20927d,0x20927f,0x209289,0x20928d,0x209297, + 0x209299,0x20929f,0x2092ab,0x2289ba,0x2289bb,0x2092b2,0x2092bf,0x2092c0,0x2092c6,0x2092ce, + 0x2092e5,0x209311,0x228a1e,0x228a29,0x2092f7,0x209329,0x228a71,0x228a43,0x209351,0x20935a, + 0x20936b,0x209371,0x209373,0x2093a1,0x228a99,0x228acd,0x209388,0x20938b,0x20938f,0x20939e, + 0x2093f5,0x228ae4,0x228add,0x2093f1,0x2093c7,0x2093dc,0x2093e7,0x209409,0x209416,0x209417, + 0x2093fb,0x209432,0x20943b,0x228bc1,0x228bef,0x20946d,0x20946f,0x209579,0x209586,0x20958c, + 0x20958d,0x228d10,0x228d71,0x2095c8,0x228dfb,0x228e1f,0x20962c,0x209633,0x209634,0x228e36, + 0x20963c,0x209661,0x228e89,0x209682,0x228eeb,0x20969a,0x228f32,0x2049e7,0x2096b3,0x2096ba, + 0x2096bd,0x2049fa,0x228ff8,0x2096d8,0x2096da,0x2096dd,0x204a04,0x209714,0x209723,0x204a29, + 0x209736,0x209741,0x209747,0x209757,0x20975b,0x20976a,0x2292a0,0x2292b1,0x209796,0x20979e, + 0x2097b1,0x2097b2,0x2097be,0x2097cc,0x2097d1,0x2097d4,0x2097d8,0x2097e1,0x2097f1,0x209804, + 0x20980d,0x209814,0x209816,0x204abc,0x229490,0x209832,0x209833,0x209825,0x209847,0x209866, + 0x2098ab,0x2098ad,0x2098b0,0x2295cf,0x2098b7,0x2098bb,0x2098bc,0x2098c2,0x2098c7,0x2098cb, + 0x2098e1,0x2098e3,0x2098ea,0x2098f0,0x2098f1,0x2098f3,0x209908,0x204b3b,0x2296f0,0x209916, + 0x209917,0x229719,0x20991a,0x20991b,0x20991c,0x229750,0x209931,0x20993a,0x20993b,0x20993c, + 0x209941,0x209946,0x20994e,0x209960,0x2099a3,0x2099a6,0x2099bd,0x2099bf,0x2099c3,0x2099d4, + 0x2099d9,0x2099de,0x2298c6,0x2099f0,0x2099f9,0x2099fc,0x209a0a,0x209a11,0x209a1a,0x209a20, + 0x209a31,0x209a44,0x209a4c,0x209a58,0x204bc2,0x209aaf,0x204bca,0x209ab7,0x204bd2,0x209ab9, + 0x229a72,0x209ac6,0x209ad0,0x209ad2,0x209ad5,0x209ae0,0x209ae5,0x209ae9,0x209b0c,0x209b10, + 0x209b12,0x209b16,0x209b1c,0x209b2b,0x209b3d,0x204c20,0x209b4b,0x209b63,0x209b65,0x209b6b, + 0x209b6c,0x209b76,0x209b77,0x209ba6,0x209bac,0x229ddb,0x209bb2,0x209bb8,0x209bbe,0x209bf3, + 0x209bd8,0x209bdd,0x209bea,0x209bef,0x209bee,0x229e15,0x229e8a,0x229e49,0x209c16,0x209c18, + 0x209c19,0x209c1a,0x209c1d,0x209c22,0x209c29,0x229ec4,0x209c31,0x209c37,0x209c45,0x209c5c, + 0x229ee9,0x209c49,0x209c4a,0x229edb,0x209c54,0x209c58,0x209c5b,0x209c5d,0x209c5f,0x209c69, + 0x209c6a,0x209c6b,0x209c6d,0x209c6e,0x209c72,0x209c75,0x209c7a,0x209ce6,0x209cf2,0x209d0b, + 0x229fd7,0x209d11,0x209d17,0x209d18,0x22a02f,0x204cc4,0x22a01a,0x209d32,0x204cd1,0x209d4a, + 0x209d5f,0x209d62,0x22a0f9,0x22a082,0x209d73,0x209d76,0x209d77,0x209d84,0x209d99,0x209da1, + 0x209dbf,0x209db5,0x209db9,0x209dbd,0x209dc9,0x209dda,0x209de0,0x209de3,0x204d07,0x209e0a, + 0x209e02,0x209e0d,0x209e1c,0x209e7b,0x222218,0x209e80,0x209e85,0x209e9b,0x22a38c,0x209ebd, + 0x22a437,0x209edf,0x209eff,0x209f02,0x204d77,0x209f03,0x209f3a,0x209f3d,0x209f46,0x209f53, + 0x209f55,0x209f58,0x22a5f1,0x209f5d,0x22a602,0x209f69,0x209f6d,0x209f70,0x22a6b2,0x20793a, + 0x203614,0x2038ad,0x203dcc,0x203fdc,0x2045be,0x204610,0x204b7e,0x204c38,0x204ce1,0x204e0c, + 0x204e23,0x204e24,0x204e79,0x204ef3,0x204f0c,0x204f19,0x204f2b,0x204f2e,0x204f31,0x204f84, + 0x204f9e,0x204fb7,0x205004,0x20500c,0x20504c,0x20505f,0x205062,0x205077,0x20508e,0x20509e, + 0x2050a2,0x2050c3,0x2050e8,0x2050f1,0x2050fe,0x205107,0x20510c,0x20510d,0x20510e,0x205133, + 0x205138,0x205174,0x205184,0x2051b8,0x2051ba,0x2051c8,0x2051cf,0x2051d1,0x2051d3,0x2051d4, + 0x2051d8,0x2051df,0x205205,0x205226,0x205228,0x20522b,0x205231,0x205232,0x205235,0x20523c, + 0x20525a,0x205260,0x20526e,0x205278,0x205279,0x20528a,0x20528c,0x2052e1,0x2052e9,0x2052f1, + 0x205303,0x205311,0x20531f,0x20532d,0x205332,0x20533d,0x205365,0x20536d,0x205379,0x20537e, + 0x205394,0x205399,0x2053aa,0x2053af,0x2053ba,0x2053c1,0x2053c4,0x2053c5,0x2053e0,0x205413, + 0x20542a,0x205431,0x205434,0x205435,0x20544c,0x2054a7,0x2054aa,0x2054b1,0x2054bb,0x2054ce, + 0x2054ea,0x2054fc,0x205505,0x205508,0x205515,0x205527,0x20552a,0x205536,0x205551,0x205566, + 0x20558f,0x205592,0x205594,0x2055a4,0x2055b2,0x2055c3,0x2055c6,0x2055d3,0x2055db,0x2055ec, + 0x2055ee,0x2055f1,0x2055f6,0x2055f8,0x205605,0x20560d,0x205611,0x205612,0x20562c,0x205635, + 0x205639,0x20564d,0x205654,0x205685,0x20569f,0x2056a6,0x2056b7,0x2056cc,0x2056cf,0x2056d9, + 0x2056e1,0x2056eb,0x2056ed,0x2056f1,0x205707,0x20570c,0x20571a,0x20571b,0x20571d,0x20572c, + 0x20572e,0x20573d,0x20573e,0x20575f,0x20576b,0x20576d,0x20577a,0x205783,0x205797,0x2057ae, + 0x2057d5,0x2057e7,0x20580d,0x205826,0x20584d,0x20584f,0x20585f,0x20586d,0x20587f,0x205881, + 0x205898,0x2058bc,0x20591f,0x205923,0x205959,0x205979,0x205997,0x2059af,0x2059b3,0x2059df, + 0x2059f1,0x2059f8,0x205ab2,0x205ab8,0x205aea,0x205af6,0x205b1b,0x205b1d,0x205b21,0x205b38, + 0x205bb7,0x205bd7,0x205be0,0x205c1f,0x205c2a,0x205c2c,0x205c36,0x205c59,0x205c5c,0x205c6d, + 0x205cdd,0x205d01,0x205d34,0x205d3d,0x205d59,0x205d7e,0x205d83,0x205dc7,0x205df9,0x205e28, + 0x205e32,0x205e35,0x205e5b,0x205e68,0x205e6a,0x205e77,0x205e80,0x205e8b,0x205eb3,0x205ebd, + 0x205ed1,0x205ed4,0x205ed5,0x205f4d,0x205fac,0x205fea,0x206007,0x206049,0x206054,0x206067, + 0x2060bb,0x2060c4,0x2060fd,0x20610a,0x206116,0x20612a,0x206136,0x20615e,0x206164,0x20617b, + 0x20617d,0x20617f,0x20619d,0x2061b8,0x2061dc,0x2061e2,0x2061e5,0x2061e8,0x206204,0x206207, + 0x206231,0x206239,0x20623d,0x20627a,0x206290,0x2062a8,0x2062da,0x2062f4,0x206316,0x20632a, + 0x206336,0x206346,0x20634b,0x206353,0x206371,0x206375,0x20637f,0x206382,0x20638a,0x2063ae, + 0x2063af,0x2063ea,0x2063f8,0x2063f9,0x206412,0x206418,0x206420,0x206424,0x20642a,0x206435, + 0x20643d,0x20643f,0x206452,0x20645f,0x206474,0x206490,0x206498,0x206499,0x2064ac,0x2064b3, + 0x2064ed,0x2064f0,0x20651b,0x20651f,0x20652e,0x206549,0x206560,0x206592,0x206595,0x2065b4, + 0x2065be,0x2065c8,0x2065ce,0x2065d0,0x2065df,0x20667e,0x20668b,0x20668c,0x2066b3,0x2066c0, + 0x2066cf,0x206725,0x206735,0x206755,0x206780,0x20678f,0x206791,0x2067a4,0x2067b1,0x2067b5, + 0x2067be,0x206828,0x206886,0x2068eb,0x2068f5,0x206917,0x206933,0x206938,0x20695b,0x206965, + 0x2069a8,0x2069ab,0x2069af,0x2069e5,0x2069f1,0x206a4a,0x206a55,0x206a67,0x206a71,0x206aaf, + 0x206ac8,0x206ac9,0x206b03,0x206b3b,0x206b3f,0x206b7d,0x206b7e,0x206bb0,0x206bf7,0x206bf9, + 0x206c04,0x206c09,0x206c0d,0x206c2c,0x206c4a,0x206c52,0x206c54,0x206c79,0x206cac,0x206cb4, + 0x206cd2,0x206d61,0x206d7c,0x206db9,0x206df0,0x206e45,0x206e73,0x206e7b,0x206e7d,0x206e89, + 0x206ebc,0x206eda,0x206edb,0x206f26,0x206f29,0x206f30,0x206f87,0x206f9d,0x206fae,0x206fb7, + 0x20700d,0x207020,0x207049,0x207098,0x2070b0,0x2070d5,0x2070d6,0x207145,0x2071b2,0x2071f4, + 0x207217,0x20721f,0x207243,0x20724f,0x207250,0x20725a,0x207260,0x207268,0x207277,0x207284, + 0x2072c9,0x2072e5,0x2072f4,0x207302,0x20730b,0x20731e,0x207322,0x20733a,0x20733b,0x20734d, + 0x207358,0x207367,0x207472,0x2074af,0x2074df,0x2074e4,0x2074f4,0x2074fb,0x207516,0x207521, + 0x20753f,0x20755e,0x207599,0x2075a4,0x2075c1,0x2075c4,0x2075cc,0x2075d7,0x2075dc,0x2075e1, + 0x2075ef,0x207604,0x20760c,0x20761d,0x207632,0x207638,0x207645,0x20764a,0x20765f,0x2076ad, + 0x2076bd,0x2076d9,0x2076eb,0x2076f0,0x2076f9,0x207700,0x20770e,0x207722,0x207728,0x20772f, + 0x207739,0x20773e,0x207745,0x20774a,0x20774f,0x20775e,0x207764,0x207767,0x20776c,0x207784, + 0x20778c,0x20778d,0x207796,0x2077a7,0x2077af,0x2077b7,0x2077be,0x2077c9,0x2077d1,0x2077d9, + 0x2077f1,0x207837,0x20785c,0x20787e,0x207898,0x2078a1,0x2078b1,0x2078b3,0x2078c9,0x2078d3, + 0x20790c,0x20791f,0x207927,0x207928,0x20793f,0x207942,0x207954,0x20796b,0x20797c,0x2079ab, + 0x2079c4,0x2079ea,0x207a02,0x207a0c,0x207a30,0x207a3a,0x207a44,0x207a80,0x207a86,0x207a94, + 0x207ab5,0x207abd,0x207afe,0x207b2b,0x207b77,0x207ba0,0x207bac,0x207bb0,0x207be8,0x207bf2, + 0x207bf8,0x207bfc,0x207bfe,0x207c09,0x207c28,0x207c2f,0x207c42,0x207c52,0x207c53,0x207c5b, + 0x207c5c,0x207c5d,0x207c72,0x207c7d,0x207c87,0x207c9e,0x207cba,0x207cc7,0x207cd3,0x207cda, + 0x207d3c,0x207d4d,0x207d82,0x207d85,0x207d8d,0x207d91,0x207d9e,0x207db3,0x207db9,0x207dd0, + 0x207de5,0x207df5,0x207df6,0x207e2f,0x207e36,0x207e44,0x207e6f,0x207e78,0x207e81,0x207f3d, + 0x207f5b,0x207f5d,0x207f65,0x207f71,0x207f7f,0x207f80,0x207f8b,0x207fa2,0x207ffd,0x207ffe, + 0x207fff,0x208007,0x20800d,0x20801e,0x208039,0x208088,0x20808e,0x2080cf,0x2080d4,0x2080ed, + 0x2080f0,0x2080f7,0x2080fa,0x2080fe,0x208103,0x208117,0x208130,0x208157,0x20816f,0x208173, + 0x20818b,0x208190,0x20819b,0x20819e,0x2081cb,0x2081d5,0x2081dd,0x2081de,0x2081e1,0x2081ef, + 0x2081f6,0x208200,0x20820b,0x208213,0x208214,0x20821a,0x20823a,0x208244,0x20826d,0x208284, + 0x208289,0x208291,0x2082aa,0x2082b0,0x2082d0,0x2082ea,0x2082ef,0x2082f6,0x208356,0x208378, + 0x2083f8,0x2083fc,0x208458,0x208493,0x2084b1,0x2084bd,0x2084fb,0x208546,0x208556,0x20855d, + 0x208585,0x208598,0x208642,0x208646,0x2086c0,0x208714,0x208722,0x20872e,0x208739,0x20875d, + 0x20877b,0x20878c,0x20878e,0x208797,0x208798,0x20879e,0x2087a3,0x2087ae,0x2087bf,0x2087c9, + 0x2087da,0x208818,0x20881b,0x20882d,0x20883a,0x208845,0x20884b,0x20884e,0x208855,0x20885a, + 0x20886e,0x20889a,0x20889b,0x20889c,0x2088cd,0x2088e0,0x2088ef,0x20890e,0x20890f,0x208926, + 0x208935,0x20895a,0x20895c,0x20896b,0x208970,0x20897c,0x2089a5,0x2089b5,0x2089bc,0x2089d5, + 0x208a49,0x208a57,0x208a67,0x208a7e,0x208a86,0x208a96,0x208ab6,0x208ac9,0x208ad1,0x208add, + 0x208aec,0x208af5,0x208b06,0x208b0f,0x208b11,0x208b45,0x208b52,0x208b6d,0x208b78,0x208b7c, + 0x208b7e,0x208b85,0x208b9f,0x208c4b,0x208c53,0x208c7b,0x208cba,0x208cc5,0x208cc9,0x208cd2, + 0x208cec,0x208cf5,0x208cf7,0x208d01,0x208d03,0x208d17,0x208d1c,0x208d6e,0x208d91,0x208d9f, + 0x208dab,0x208db2,0x208dd5,0x208de7,0x208df1,0x208df2,0x208df4,0x208e01,0x208e0b,0x208e26, + 0x208e31,0x208e40,0x208e41,0x208e4d,0x208e4f,0x208e5c,0x208e61,0x208e69,0x208e71,0x208e75, + 0x208e77,0x208e89,0x208e90,0x208e95,0x208e9a,0x208ea7,0x208ea9,0x208ead,0x208ee8,0x208ef0, + 0x208f07,0x208f18,0x208f25,0x208f27,0x208f2c,0x208f35,0x208f3a,0x208f43,0x208f47,0x208f51, + 0x208f55,0x208fa0,0x208fa1,0x208fa2,0x208fa5,0x209004,0x20901b,0x20902f,0x20904c,0x20905b, + 0x209070,0x209074,0x209079,0x20908b,0x209098,0x2090a0,0x2090b2,0x2090bd,0x2090c9,0x2090f0, + 0x209105,0x209125,0x20915a,0x209167,0x20917a,0x20918a,0x209191,0x209195,0x2091b0,0x2091bb, + 0x2091bd,0x2091c2,0x2091c5,0x209200,0x209209,0x209223,0x209276,0x20928e,0x2092af,0x2092bb, + 0x2092bc,0x2092c1,0x2092c3,0x2092c5,0x2092c8,0x209314,0x209333,0x209336,0x209358,0x20937f, + 0x209382,0x20938a,0x2093bb,0x2093cc,0x2093e6,0x2093f9,0x209402,0x20940d,0x20940e,0x20942e, + 0x20944c,0x209588,0x2095a1,0x2095bf,0x2095c6,0x2095c9,0x2095d1,0x2095d2,0x2095e0,0x2095e4, + 0x2095e6,0x209624,0x209631,0x209638,0x20963d,0x209654,0x209674,0x20967b,0x20967f,0x209681, + 0x209683,0x209689,0x209696,0x2096ae,0x209703,0x20971b,0x209721,0x209722,0x209728,0x209731, + 0x209767,0x209776,0x20977d,0x20977f,0x209799,0x20979f,0x2097ac,0x2097b9,0x2097cd,0x2097e0, + 0x2097ef,0x209807,0x209826,0x20982e,0x209862,0x209863,0x2098b4,0x2098c5,0x209902,0x209911, + 0x209915,0x209935,0x209948,0x209954,0x20995e,0x2099e1,0x209a0c,0x209a10,0x209a23,0x209a41, + 0x209a51,0x209abd,0x209abe,0x209b01,0x209b09,0x209b0b,0x209b0d,0x209b0e,0x209b19,0x209b35, + 0x209b48,0x209b55,0x209b68,0x209b80,0x209b86,0x209b90,0x209b9d,0x209bb0,0x209bbf,0x209bc8, + 0x209bff,0x209c02,0x209c1c,0x209c35,0x209c44,0x209c56,0x209c61,0x209c68,0x209d30,0x209d3d, + 0x209d6a,0x209d7b,0x209de5,0x209de9,0x209df3,0x209e7a,0x209e82,0x209e83,0x209e84,0x209eb0, + 0x209ee4,0x209ef0,0x209ef2,0x209f09,0x209f0f,0x209f14,0x209f1b,0x209f22,0x209f26,0x209f2a, + 0x209f2b,0x209f34,0x209f5a,0x209f6f,0x209f9e,0x209fa5,0x2200f5,0x224e04,0x224ff2,0x227d73, + 0x20518d,0x405584,0x405f62,0x406148,0x40681f,0x208ed4,0x2035de,0x209fbf,0x209fc0,0x209fc1, + 0x209fc2,0x22a2b2,0x404e0e,0x404e26,0x220158,0x404f73,0x405056,0x4050ed,0x40516b,0x2205b1, + 0x8051de,0x4051fd,0x2206ec,0x405264,0x405271,0x605272,0x40533f,0x22b753,0x405440,0x220d58, + 0x40559c,0x6055ab,0x405609,0x6056ae,0x8056ae,0x22b75a,0x22b75c,0x4056ce,0x4056ee,0x4057d6, + 0x40583d,0x405859,0x40594f,0x605951,0x405960,0x405962,0x405ada,0x405b5a,0x405b73,0x405b7c, + 0x805bb3,0x2259cc,0x405e43,0x22b776,0x605ee3,0x405f38,0x405fa1,0x405fdd,0x406162,0x6061b2, + 0x4061f8,0x2039a4,0x2039b8,0x222e42,0x22b77c,0x4064f6,0x203a5c,0x2207c8,0x40655e,0x222feb, + 0x406587,0x406589,0x2279b4,0x40658e,0x203ac4,0x203acb,0x4065e1,0x406667,0x40666e,0x6066c1, + 0x22b782,0x203a85,0x406700,0x406761,0x4067c4,0x406802,0x40693d,0x40695e,0x22b78b,0x406a9c, + 0x203bf3,0x2237f1,0x22b794,0x406c38,0x606caa,0x209fcc,0x406de4,0x203d31,0x406e08,0x406e72, + 0x606ecb,0x406ed5,0x406edb,0x406f5b,0x606f5b,0x406f64,0x406f74,0x22404b,0x40723e,0x203e40, + 0x2038a1,0x6073ca,0x4074bd,0x40755d,0x4075bc,0x22b7ac,0x407608,0x407664,0x407669,0x22b7af, + 0x407737,0x40777e,0x4079a7,0x4079b1,0x407abe,0x407be0,0x607c50,0x407d09,0x407db2,0x607db2, + 0x407f3e,0x607fe1,0x408012,0x22b7c9,0x4080d6,0x408109,0x408129,0x40820c,0x40821b,0x408240, + 0x22b7cf,0x4083d4,0x40840f,0x22b7d2,0x4084ea,0x226c9e,0x408551,0x408563,0x4085cf,0x40864e, + 0x408662,0x40868a,0x408842,0x408877,0x408941,0x408b56,0x608b56,0x408b5c,0x20471f,0x227c3c, + 0x408c6a,0x408c79,0x608cca,0x408d67,0x20481e,0x408f03,0x608f44,0x608fc5,0x608fd4,0x408ff6, + 0x609077,0x809077,0x1e09089,0x100908a,0x4090a8,0x40914d,0x4092e9,0x409335,0x40938b,0x22b7f0, + 0x4095cd,0x40962a,0x609698,0x4096a7,0x8097ff,0xa097ff,0x22b765,0x409921,0x809957,0x409ba8, + 0x409bae,0x409bb9,0x409c08,0x409c24,0x409c3b,0x22b80d,0x409ce6,0x409dc0,0x409dc2,0x22b817, + 0x6098ef,0x42383d,0x607b08,0x40646f,0x607c3e,0x407b75,0x607515,0x608a1d,0x606062,0x407078, + 0xc053a9,0x407c82,0x409699,0x408654,0x408171,0x409375,0x4054ac,0x4072e1,0x406897,0x409bab, + 0x4053c9,0x406756,0x407526,0x807511,0x407ac8,0x40633a,0x609041,0x4099c1,0x4065a7,0x4091dc, + 0x4097ad,0x408292,0x607c7e,0x40723a,0x608805,0x408703,0x209b1d,0x209b2c,0x205002,0x2051de, + 0x205307,0x205bec,0x405eca,0x20661e,0x206717,0x20704a,0x4051de,0x205561,0x206c3a,0x207a60, + 0x22634c,0x208803,0x2095ab,0x209755,0x229e3d,0x22a61a,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + f,f,f,f,f,f,f,f,f,f, + 0x606ea2,0x8061f2,0x608612,0x408b7f,0x204e35,0x204e5c,0x204e63,0x204e68,0x204e74,0x204e75, + 0x204e97,0x204eaf,0x204edb,0x204ee2,0x204ee8,0x204eef,0x204efe,0x204f02,0x204f08,0x204f12, + 0x204f17,0x204f33,0x204f35,0x204f40,0x204f42,0x204f4b,0x204f4c,0x204f52,0x204f63,0x204f6e, + 0x204f71,0x204f79,0x204f81,0x204f89,0x204f8c,0x204f8e,0x204f90,0x204f93,0x204f99,0x204f9f, + 0x204fb9,0x204fbb,0x204fbc,0x204fbd,0x204fc0,0x204fc1,0x204fc6,0x204fc8,0x204fcc,0x204fdc, + 0x204fe2,0x204ff0,0x204ffc,0x205007,0x20500a,0x205017,0x20501d,0x205030,0x205032,0x205033, + 0x205035,0x205045,0x20504a,0x205051,0x205052,0x205059,0x205060,0x205067,0x20506d,0x205071, + 0x205081,0x205083,0x205084,0x205086,0x20508a,0x205090,0x20509b,0x20509f,0x2050a0,0x2050a1, + 0x2050af,0x2050b0,0x2050b9,0x2050bd,0x2050c0,0x2050d3,0x2050dc,0x2050dd,0x2050df,0x2050e2, + 0x2050e4,0x2050f6,0x2050fa,0x4050f2,0x205119,0x20511c,0x20511d,0x205123,0x205127,0x205128, + 0x20512c,0x20512d,0x20512f,0x205131,0x205134,0x205139,0x205142,0x20514f,0x205153,0x205158, + 0x205166,0x20517e,0x20518e,0x2051bf,0x2051c2,0x2051d2,0x2051d5,0x2051e5,0x2051f2,0x2051f7, + 0x205218,0x205222,0x205245,0x205258,0x20525f,0x205280,0x205285,0x205295,0x205296,0x205297, + 0x20529a,0x2052a5,0x2052a7,0x2052b0,0x2052b6,0x2052b7,0x2052b8,0x2052bd,0x2052c4,0x2052c6, + 0x2052cf,0x2052d4,0x2052dc,0x2052e5,0x2052e8,0x2052ea,0x2052ec,0x2052f4,0x2052f6,0x20530c, + 0x205313,0x205318,0x20531b,0x20531e,0x205325,0x205327,0x205328,0x205329,0x20532b,0x20532c, + 0x205330,0x20533c,0x205359,0x20535b,0x405365,0x205383,0x205387,0x205388,0x20538e,0x2053a1, + 0x2053b5,0x2053b8,0x2053bd,0x2053cf,0x2053d2,0x2053d3,0x2053de,0x4053e0,0x2053e7,0x205402, + 0x20541a,0x205421,0x20542f,0x205444,0x205447,0x20544f,0x20545e,0x205464,0x205467,0x205469, + 0x20546d,0x20546e,0x205481,0x205483,0x205485,0x205489,0x205491,0x20549f,0x2054ca,0x2054e0, + 0x2054f6,0x2054fe,0x20550c,0x20550d,0x205532,0x20553b,0x20553d,0x205549,0x20554d,0x205558, + 0x20555a,0x20555b,0x20557f,0x205593,0x205597,0x2055a3,0x2055c1,0x2055cb,0x2055d7,0x2055d8, + 0x2055de,0x2055ff,0x405605,0x20560a,0x205619,0x205633,0x20563c,0x205641,0x205643,0x205644, + 0x205646,0x205661,0x205662,0x205663,0x205675,0x205684,0x20568b,0x2056a7,0x2056ab,0x2056be, + 0x2056cb,0x2056d0,0x2056dc,0x2056e5,0x2056e6,0x2056e7,0x205701,0x205702,0x205711,0x205720, + 0x205722,0x205724,0x205725,0x20572a,0x20573f,0x205752,0x205762,0x205767,0x20576e,0x205771, + 0x205779,0x20577e,0x205781,0x205794,0x205799,0x20579f,0x2057a1,0x205795,0x2057a7,0x2057a9, + 0x2057bd,0x2057dd,0x2057e9,0x2057fe,0x205803,0x205808,0x2057e1,0x20580c,0x20581b,0x20581f, + 0x20582d,0x20583f,0x205850,0x205855,0x205868,0x205878,0x205887,0x205888,0x20588c,0x205896, + 0x2058a0,0x2058a1,0x2058a2,0x2058a6,0x2058c4,0x2058c2,0x2058c8,0x2058d6,0x2058dd,0x2058e1, + 0x405906,0x205912,0x205913,0x20591d,0x205921,0x205928,0x205930,0x205933,0x205935,0x205936, + 0x20593f,0x205943,0x205952,0x20595e,0x20596b,0x20596f,0x205972,0x20597b,0x20598c,0x20598e, + 0x205995,0x2059a7,0x2059ad,0x2059b0,0x2059b7,0x2059c1,0x2059c4,0x2059ef,0x2059f2,0x2059f4, + 0x2059f7,0x205a00,0x205a0e,0x205a12,0x205a1e,0x205a24,0x205a28,0x205a2a,0x205a30,0x205a44, + 0x205a45,0x205a48,0x205a4c,0x205a50,0x205a5e,0x205a7b,0x205a90,0x205a93,0x205a96,0x205a99, + 0x205abb,0x205ac6,0x205ac8,0x205acf,0x205afd,0x205b01,0x205b4b,0x205b5e,0x205b6e,0x205b86, + 0x205b8e,0x205b90,0x205b91,0x205b94,0x205ba8,0x205ba9,0x205bad,0x205baf,0x205bb1,0x205bb2, + 0x205bba,0x205bbc,0x205bc1,0x205bcd,0x205bcf,0x205bd9,0x205bda,0x205bef,0x205bf4,0x205c0c, + 0x205c17,0x205c26,0x205c2e,0x205c32,0x205c35,0x205c5a,0x205c74,0x205c75,0x205c7b,0x205c7d, + 0x205c87,0x205c92,0x205c9d,0x205cb2,0x205cb4,0x205cd7,0x205cee,0x205cf1,0x205cf2,0x205d12, + 0x205d23,0x205d3f,0x205d48,0x205d55,0x205d51,0x205d5f,0x205d60,0x205d62,0x205d64,0x205d79, + 0x205d7a,0x205d7f,0x205d8a,0x205d93,0x205d95,0x205d9b,0x205d9f,0x205dab,0x205dc3,0x205dce, + 0x205dd9,0x205e07,0x205e0d,0x205e20,0x205e4b,0x205e50,0x205e51,0x205e5c,0x205e70,0x205e8e, + 0x205ea2,0x205ea4,0x205eb1,0x205ecc,0x205ece,0x205edc,0x205ede,0x205ee5,0x205eeb,0x205f06, + 0x205f19,0x205f24,0x205f2b,0x205f2c,0x205f2e,0x205f30,0x205f3f,0x205f44,0x205f5b,0x205f60, + 0x205f6f,0x205f74,0x205f75,0x205f78,0x205f7a,0x205f8d,0x205f96,0x205f9d,0x205fab,0x205fb0, + 0x205fb1,0x205fc8,0x205fd0,0x205fd1,0x205fe8,0x205fec,0x205ff2,0x205ff6,0x205ffa,0x20600a, + 0x206013,0x20601f,0x20602d,0x206040,0x206048,0x206051,0x206056,0x206057,0x206071,0x20607e, + 0x206082,0x206086,0x206088,0x20608e,0x206091,0x206093,0x206098,0x40609e,0x2060a2,0x2060a5, + 0x2060b7,0x2060c2,0x2060c9,0x2060ca,0x2060ce,0x2060cf,0x2060e2,0x2060e5,0x2060fc,0x206102, + 0x206107,0x20610c,0x206117,0x206122,0x206131,0x206135,0x206139,0x206145,0x206149,0x20616c, + 0x206172,0x206178,0x206180,0x206181,0x206183,0x206184,0x20618b,0x20619c,0x2061a0,0x2061aa, + 0x2061c0,0x2061c1,0x2061ce,0x2061cf,0x2061de,0x2061e1,0x2061e7,0x2061e9,0x2061ec,0x2061ed, + 0x2061ef,0x206201,0x206203,0x20621c,0x206220,0x206227,0x20622b,0x206242,0x206244,0x206250, + 0x206254,0x20625c,0x20627d,0x20628d,0x20628e,0x20628f,0x2062b3,0x2062b6,0x2062b7,0x2062ba, + 0x2062be,0x2062bf,0x2062ce,0x2062ea,0x2062f2,0x206304,0x20630b,0x206313,0x206329,0x20632d, + 0x20634a,0x206352,0x206354,0x206358,0x20635b,0x206366,0x20636d,0x206378,0x206395,0x20639a, + 0x2063a4,0x2063a6,0x2063ad,0x2063c1,0x2063c5,0x2063c8,0x2063ce,0x2063d3,0x2063f3,0x20640a, + 0x206430,0x20644b,0x20644f,0x206453,0x20645c,0x206461,0x206463,0x206485,0x20648f,0x20649b, + 0x2064a1,0x2064a3,0x2064a6,0x2064a8,0x2064bd,0x2064c9,0x2064d1,0x2064e9,0x2064ea,0x2064f5, + 0x206501,0x206508,0x206509,0x20650a,0x206513,0x206526,0x206531,0x20653a,0x20653c,0x20653d, + 0x206543,0x206550,0x206552,0x20655f,0x20657d,0x206598,0x2065a0,0x2065a3,0x2065a6,0x2065ae, + 0x2065b3,0x2065d6,0x2065d8,0x4065df,0x2065f4,0x2065f5,0x2065fe,0x2065ff,0x20660d,0x206611, + 0x206612,0x206616,0x20661d,0x206623,0x206626,0x206629,0x206639,0x206637,0x206640,0x206646, + 0x20664a,0x206658,0x206660,0x206675,0x20667f,0x206679,0x20667c,0x20669a,0x20669b,0x20669c, + 0x20669f,0x4066b5,0x2066c2,0x2066c3,0x2066cc,0x2066ce,0x2066d4,0x2066df,0x2066eb,0x2066ee, + 0x206707,0x20671c,0x206720,0x206722,0x20673e,0x206745,0x20676c,0x206784,0x20678e,0x206796, + 0x206799,0x2067bc,0x2067bd,0x2067c2,0x2067c5,0x2067c9,0x2067dc,0x2067e1,0x2067e6,0x2067f2, + 0x2067f6,0x206814,0x206819,0x206827,0x20682f,0x20683f,0x20684a,0x206858,0x20686f,0x206870, + 0x206871,0x206879,0x20687b,0x206888,0x2068a1,0x2068a9,0x2068ae,0x2068d1,0x2068d3,0x2068dc, + 0x2068dd,0x2068ea,0x2068f6,0x2068fd,0x206906,0x206909,0x206910,0x206916,0x206931,0x206945, + 0x20694e,0x206966,0x206970,0x206971,0x20697b,0x20698d,0x2069a1,0x2069b8,0x2069c5,0x2069c8, + 0x4069fe,0x206a00,0x206a03,0x206a20,0x206a24,0x206a37,0x406a55,0x206a6a,0x206a81,0x206a86, + 0x206a87,0x206a9b,0x206ab0,0x206ab1,0x206ab4,0x206abe,0x206abf,0x206acc,0x206ad5,0x206ad6, + 0x206af0,0x206afc,0x206b02,0x206b06,0x206b07,0x206b09,0x206b28,0x206b2b,0x206b36,0x206b4d, + 0x206b52,0x206b5d,0x206b6b,0x206b6e,0x206b70,0x206b85,0x206b97,0x206b9f,0x206ba0,0x206ba2, + 0x206ba3,0x206ba8,0x206bac,0x206bb8,0x206bb9,0x206bc3,0x206bc4,0x206be3,0x206c12,0x206c19, + 0x206c1f,0x206c26,0x206c27,0x206c28,0x206c2e,0x206c3b,0x206c4b,0x206c4f,0x206c6b,0x206c78, + 0x206c87,0x206c9f,0x206cb0,0x206cb2,0x206ccd,0x206ccf,0x206cd1,0x206ce7,0x206cf2,0x206cf4, + 0x206d07,0x206d0f,0x206d13,0x206d1a,0x206d28,0x206d5f,0x206d67,0x206d92,0x206d97,0x206db7, + 0x206dbd,0x206de0,0x206de2,0x206de5,0x206def,0x206df4,0x206e00,0x206e04,0x206e3b,0x206e52, + 0x206e5d,0x206e62,0x206e68,0x206e8d,0x206e99,0x206ea0,0x206ead,0x206eae,0x206eb3,0x206ebb, + 0x206ec0,0x206ec8,0x206ecd,0x206ecf,0x206eed,0x206eee,0x206f04,0x206f08,0x206f0d,0x206f16, + 0x206f1b,0x206f3b,0x206f2d,0x206f4f,0x206f53,0x206f5d,0x206f6c,0x206f83,0x206f93,0x206fa6, + 0x206fb0,0x206fc5,0x206fe8,0x206ffd,0x207017,0x20702f,0x207034,0x207037,0x207044,0x207048, + 0x207055,0x207094,0x207096,0x20709b,0x2070b4,0x2070fa,0x207105,0x20710b,0x20712d,0x207138, + 0x207141,0x20714b,0x407152,0x207157,0x20715a,0x20718c,0x20719a,0x2071b0,0x2071bf,0x2071c0, + 0x2071cc,0x2071da,0x2071f8,0x207208,0x207209,0x207213,0x20721a,0x207224,0x20722f,0x207245, + 0x20724e,0x20725e,0x20726b,0x207271,0x20727b,0x20727c,0x207289,0x207293,0x2072a8,0x2072d5, + 0x2072d6,0x2072d8,0x2072df,0x2072fe,0x20730d,0x207313,0x207332,0x207335,0x207356,0x20735d, + 0x20735e,0x20735f,0x207360,0x207369,0x207379,0x207380,0x20738e,0x207390,0x207393,0x207397, + 0x2073aa,0x2073ad,0x2073c6,0x2073cc,0x2073d3,0x2073dd,0x2073e6,0x2073f7,0x2073fb,0x2073ff, + 0x207400,0x207411,0x20742d,0x207467,0x207468,0x20746e,0x20748f,0x207491,0x20749a,0x2074ae, + 0x2074b1,0x2074b2,0x2074cc,0x2074d0,0x2074d3,0x4074d8,0x2074db,0x2074e8,0x2074ea,0x4074ef, + 0x2074fc,0x207506,0x207512,0x207527,0x207529,0x207536,0x207539,0x207543,0x207547,0x207557, + 0x20755f,0x207561,0x20757b,0x20757c,0x207585,0x207595,0x20759c,0x2075ba,0x207612,0x207623, + 0x207629,0x207639,0x20763a,0x207640,0x207644,0x207659,0x207685,0x20768c,0x20768d,0x20769f, + 0x2076a2,0x2076a3,0x2076c1,0x2076cb,0x4076d4,0x2076e0,0x2076f6,0x207706,0x207712,0x207714, + 0x207715,0x20771c,0x20772e,0x20773d,0x207742,0x207752,0x207756,0x207757,0x207770,0x207773, + 0x207774,0x40778d,0x4077a2,0x2077ae,0x2077b1,0x2077b5,0x2077c3,0x2077d2,0x2077d5,0x2077f8, + 0x20780e,0x207811,0x20781d,0x207823,0x207844,0x207848,0x20784c,0x207852,0x20785e,0x207860, + 0x207861,0x207863,0x20788f,0x2078a8,0x2078ac,0x2078b2,0x2078bd,0x2078bf,0x2078c7,0x2078d2, + 0x2078d6,0x2078db,0x2078df,0x2078ea,0x2078f3,0x2078f6,0x2078ff,0x207906,0x20791a,0x20791e, + 0x207920,0x207929,0x20792d,0x207935,0x207944,0x20794b,0x20794f,0x207951,0x207969,0x20797b, + 0x20797e,0x20798c,0x207991,0x207993,0x20799c,0x2079a8,0x2079af,0x2079cf,0x2079dd,0x2079e0, + 0x2079e2,0x2079e5,0x2079f1,0x2079f8,0x2079fc,0x207a07,0x207a21,0x207a27,0x207a2b,0x207a2f, + 0x207a34,0x207a35,0x207a48,0x207a55,0x207a65,0x207a7e,0x207a8b,0x207a91,0x207a9e,0x207ac9, + 0x207adb,0x207ae9,0x207aec,0x207af1,0x207afb,0x207b1f,0x207b23,0x207b29,0x207b30,0x207b34, + 0x207b3f,0x207b40,0x207b6a,0x207b84,0x207b89,0x207b8e,0x207b96,0x207ba5,0x207bb2,0x207bb6, + 0x207bba,0x207bbb,0x207bbd,0x207bc2,0x207bc8,0x207bdb,0x207bf4,0x207bf5,0x207bf9,0x207bfa, + 0x207c02,0x207c04,0x207c06,0x207c0c,0x207c19,0x207c1b,0x207c25,0x207c2c,0x207c34,0x207c39, + 0x207c3a,0x207c46,0x207c55,0x207c5a,0x207c63,0x407c69,0x207c7c,0x207c86,0x207cb0,0x207cbb, + 0x207ccf,0x207cd4,0x207ce9,0x207d0f,0x207d11,0x207d16,0x207d26,0x207d2a,0x207d2d,0x207d51, + 0x207d57,0x207d65,0x207d67,0x207d78,0x207d7b,0x207d81,0x207d96,0x207dc3,0x207dc4,0x207dc5, + 0x207dc6,0x207dcd,0x207dce,0x207e00,0x207de2,0x207dea,0x207ded,0x207dfa,0x207e1c,0x207e2d, + 0x207e33,0x207e3f,0x207e4e,0x207e50,0x207e58,0x207e5f,0x207e65,0x207e95,0x207e9d,0x207e9e, + 0x207f3f,0x207f5c,0x207f66,0x407f80,0x207f8d,0x207f8f,0x207fa6,0x207faa,0x207fb4,0x207fbc, + 0x207fc0,0x207fc8,0x207fe8,0x20800f,0x208013,0x20801d,0x20801f,0x208020,0x20802e,0x208034, + 0x20803e,0x208040,0x208044,0x208064,0x20806d,0x208081,0x2080b9,0x2080c8,0x2080cd,0x2080d2, + 0x2080ee,0x2080f2,0x2080f6,0x2080f9,0x20810b,0x20811c,0x208120,0x20813c,0x208145,0x208147, + 0x208152,0x208161,0x208177,0x208186,0x20818e,0x208196,0x2081a2,0x2081ae,0x2081c5,0x2081ce, + 0x2081eb,0x2081f0,0x2081f1,0x2081f2,0x2081f5,0x2081f8,0x408200,0x20820f,0x20821d,0x208228, + 0x208243,0x20824e,0x208251,0x208256,0x208267,0x20827b,0x208280,0x208281,0x208287,0x208294, + 0x208296,0x208298,0x20829a,0x20829b,0x2082a0,0x2082da,0x2082e0,0x2082e4,0x2082ed,0x20830a, + 0x20830b,0x20831e,0x20831f,0x208321,0x20832c,0x20832e,0x208333,0x208337,0x20833d,0x208342, + 0x20834d,0x20834e,0x208370,0x208380,0x208382,0x208384,0x208399,0x20839c,0x2083a6,0x2083ac, + 0x2083be,0x208353,0x2083e8,0x208419,0x2083ad,0x20842f,0x208445,0x208447,0x20844d,0x208456, + 0x40845c,0x208460,0x208464,0x208467,0x20846a,0x208474,0x20847d,0x208492,0x208495,0x2084a9, + 0x2084aa,0x2084c7,0x2084c8,0x2084cc,0x2084f2,0x2084f7,0x208502,0x208503,0x208507,0x20850e, + 0x208510,0x20851c,0x208522,0x208527,0x20852a,0x208533,0x208536,0x20853f,0x208550,0x208552, + 0x20855c,0x40855d,0x20855f,0x208560,0x208579,0x208589,0x20858b,0x2085a0,0x2085a5,0x2085a7, + 0x2085b4,0x2085b6,0x2085b8,0x2085bd,0x2085be,0x2085bf,0x2085c2,0x2085da,0x2085e0,0x2085e8, + 0x2085f3,0x2085fc,0x20860d,0x20860e,0x208619,0x20861b,0x208636,0x20863a,0x20863d,0x208658, + 0x208659,0x20865d,0x208660,0x208661,0x208664,0x208669,0x208676,0x208696,0x20869a,0x2086a1, + 0x2086a6,0x2086ad,0x2086b4,0x2086b5,0x2086b7,0x2086b9,0x2086bf,0x2086c5,0x2086d2,0x2086da, + 0x2086dc,0x2086e0,0x2086e5,0x2086e7,0x208688,0x208704,0x20870f,0x20872f,0x208732,0x20873c, + 0x20873d,0x208745,0x20874d,0x208761,0x20876f,0x208783,0x208784,0x208785,0x208786,0x208790, + 0x208795,0x4087a3,0x2087b1,0x2087c8,0x2087ca,0x2087d5,0x2087d9,0x2087dc,0x2087e2,0x2087e4, + 0x2087f1,0x2087f3,0x2087f8,0x2087fa,0x2087ff,0x208809,0x208819,0x208812,0x20881a,0x20881e, + 0x208830,0x208835,0x208841,0x208843,0x208848,0x208849,0x40884b,0x208851,0x20885c,0x208860, + 0x208871,0x208879,0x20887b,0x208880,0x20889f,0x2088a8,0x2088ba,0x2088cb,0x2088cc,0x2088de, + 0x2088e7,0x2088f7,0x20890d,0x208915,0x208916,0x208920,0x208928,0x208931,0x20893a,0x208946, + 0x20894f,0x208952,0x208957,0x20895b,0x208961,0x208963,0x20896e,0x208973,0x208975,0x20897a, + 0x20897d,0x20898d,0x208995,0x20899b,0x20899c,0x2089a0,0x2089b4,0x2089b6,0x2089d7,0x2089e9, + 0x2089ed,0x2089f9,0x208a04,0x208a05,0x208a1e,0x208a20,0x208a24,0x208a26,0x208a2b,0x208a2c, + 0x208a2f,0x208a3d,0x208a40,0x208a43,0x208a53,0x208a56,0x208a5c,0x208a65,0x208a76,0x208a77, + 0x208a7a,0x208a7b,0x208a80,0x208a83,0x208a8b,0x208a8f,0x208a92,0x208a97,0x208a99,0x208a9f, + 0x208aa9,0x208aaf,0x208ab3,0x208abb,0x208ac3,0x208ac6,0x208ac8,0x208aca,0x208ad3,0x208ad4, + 0x208ad5,0x208af0,0x208aff,0x208b0b,0x208b1e,0x208b30,0x208b3c,0x208b42,0x208b48,0x208b4d, + 0x208b63,0x208b79,0x208b84,0x208b8d,0x208b8f,0x208c38,0x208c3e,0x208c51,0x208c58,0x208c5b, + 0x208c5d,0x208c59,0x208c63,0x208c64,0x208c66,0x208c75,0x208c76,0x208c7e,0x208c86,0x208c87, + 0x208c8b,0x208c90,0x408c9b,0x208c9c,0x208cb9,0x208cc6,0x208ccb,0x208ccf,0x208cdd,0x208ce8, + 0x208cef,0x208cf2,0x208cff,0x208d65,0x208d7f,0x208d82,0x208d88,0x208d90,0x208d9e,0x208da0, + 0x208dac,0x208db5,0x208db7,0x208db9,0x208dbb,0x208dc0,0x208dc5,0x208dc7,0x208dca,0x208dd4, + 0x208de5,0x208df0,0x208dbc,0x208e04,0x208e05,0x208e11,0x208e33,0x208e37,0x208e38,0x208e4e, + 0x208e5b,0x208e5d,0x208e5e,0x208e79,0x208e82,0x208e83,0x208e9b,0x208e9d,0x208ea2,0x208eba, + 0x208ec1,0x208ec3,0x208ec4,0x208ec7,0x208edc,0x208eee,0x208ef1,0x208ef7,0x208eed,0x208f02, + 0x208f0f,0x208f10,0x208f16,0x208f20,0x208f21,0x208f23,0x208f28,0x208f2e,0x208f34,0x208f37, + 0x208f41,0x208f4f,0x208f52,0x208f53,0x208f5d,0x208f5e,0x208f65,0x208f9d,0x208fb8,0x208fbe, + 0x208fc0,0x208fcb,0x208fd0,0x208fd2,0x208fe3,0x208ffe,0x209018,0x209028,0x209029,0x20902a, + 0x209033,0x209034,0x20903f,0x209062,0x209066,0x20906c,0x20908e,0x2090a5,0x2090cc,0x2090d5, + 0x2090d8,0x2090d9,0x2090e5,0x2090d2,0x209108,0x20910d,0x209110,0x20911a,0x209120,0x209129, + 0x20912e,0x209136,0x20913c,0x209143,0x20914f,0x209153,0x20916d,0x20917b,0x209181,0x209186, + 0x209193,0x209194,0x209198,0x2091a1,0x2091a6,0x2091bf,0x2091d3,0x2091d4,0x2091d9,0x2091e9, + 0x2091ea,0x2091ef,0x2091f9,0x2091fd,0x209204,0x209205,0x20920c,0x209212,0x209213,0x209218, + 0x20921c,0x20921d,0x209224,0x209225,0x209226,0x20922e,0x20922f,0x209230,0x209235,0x209236, + 0x20923e,0x209246,0x20924d,0x209258,0x20925c,0x20925d,0x209269,0x20926e,0x20926f,0x209270, + 0x209275,0x209279,0x20927b,0x20928a,0x209292,0x2092a0,0x2092a4,0x2092a5,0x2092a8,0x2092b6, + 0x2092b8,0x2092ba,0x2092bd,0x2092c7,0x2092cd,0x2092d8,0x2092dc,0x2092dd,0x2092e1,0x2092e3, + 0x2092e8,0x2092ec,0x2092ee,0x2092f0,0x209300,0x209308,0x20931c,0x209324,0x20932a,0x209334, + 0x209337,0x209350,0x209355,0x20935e,0x209367,0x209369,0x20936f,0x209374,0x209376,0x20937a, + 0x20937d,0x209380,0x209381,0x20938d,0x209392,0x209395,0x209398,0x4093a1,0x2093a6,0x2093a8, + 0x2093ab,0x2093b4,0x2093b5,0x2093b6,0x2093c4,0x2093c5,0x2093c9,0x2093cb,0x2093cd,0x2093d3, + 0x2093d9,0x2093f7,0x209401,0x209408,0x209415,0x20941f,0x20942f,0x20943d,0x209443,0x209459, + 0x20945c,0x20945f,0x209461,0x209468,0x20946e,0x209484,0x209483,0x20957e,0x209584,0x20959d, + 0x20959e,0x2095ba,0x2095d9,0x2095dd,0x2095df,0x20961e,0x209622,0x209625,0x209626,0x209637, + 0x209639,0x20963a,0x209652,0x209656,0x209657,0x20966e,0x20967c,0x20967e,0x209691,0x20969f, + 0x2096a6,0x2096ca,0x4096da,0x2096df,0x2096fa,0x209705,0x20971a,0x20971d,0x409721,0x20974a, + 0x209758,0x209777,0x209778,0x20977b,0x209780,0x209789,0x209797,0x2097b8,0x2097bc,0x2097bf, + 0x2097c4,0x2097c5,0x2097c7,0x2097ca,0x2097ce,0x2097d0,0x2097d7,0x2097dd,0x2097e4,0x2097f7, + 0x2097f8,0x2097fa,0x209819,0x20981c,0x209820,0x20982f,0x209835,0x209844,0x20984a,0x209851, + 0x20986a,0x2098ae,0x2098cc,0x2098e6,0x2098f6,0x209907,0x20991f,0x209922,0x209926,0x20992b, + 0x209934,0x209939,0x209947,0x209959,0x20995b,0x20999b,0x20999d,0x20999f,0x2099b0,0x2099b2, + 0x2099b5,0x2099d3,0x2099da,0x2099dc,0x2099e7,0x2099ea,0x2099eb,0x2099ec,0x2099f4,0x2099f5, + 0x2099fd,0x2099fe,0x209a04,0x209a0b,0x209a1e,0x209a22,0x209a33,0x209a35,0x209a47,0x409a4a, + 0x209a4b,0x209a54,0x209a5d,0x209aaa,0x209aac,0x209aae,0x209ab2,0x209ab4,0x209abb,0x209abf, + 0x209ac8,0x209ad7,0x209adb,0x209ae4,0x209ae7,0x209aec,0x209af2,0x209af3,0x209af5,0x209afa, + 0x209afd,0x209aff,0x209b00,0x209b04,0x209b05,0x209b1b,0x209b26,0x409b35,0x209b37,0x209b39, + 0x209b3a,0x209b4c,0x209b56,0x209b57,0x209b5b,0x209b61,0x209b6a,0x209b6d,0x209b6e,0x209b78, + 0x209b7f,0x209b85,0x209b87,0x209b89,0x209b8b,0x209b8d,0x209b94,0x209b9a,0x209ba9,0x209bb7, + 0x209bbc,0x209bd0,0x209bf9,0x209c0f,0x209c11,0x209c1e,0x209c26,0x209c28,0x209c3d,0x209c43, + 0x209c4e,0x209c5e,0x209c7b,0x209cf7,0x209cf9,0x209d1c,0x209d2f,0x209d33,0x209d34,0x209d3a, + 0x209d3c,0x209d45,0x209d53,0x209d54,0x209d65,0x209d83,0x209d86,0x209d8e,0x209d92,0x209d93, + 0x209d95,0x209d97,0x209d98,0x209daa,0x209dae,0x409dbf,0x209dca,0x209dd4,0x209dd5,0x209dde, + 0x209dee,0x209df0,0x209dfe,0x209e0e,0x209e10,0x209e11,0x209e12,0x209e16,0x209e87,0x209e8e, + 0x209e8f,0x209e96,0x209e98,0x209eae,0x209eb3,0x209ec6,0x209ec8,0x209ecb,0x209ed5,0x209eec, + 0x209eed,0x209ef1,0x209ef5,0x209ef8,0x209f11,0x209f16,0x209f1a,0x209f1f,0x209f31,0x209f32, + 0x209f3c,0x209f3f,0x209f43,0x209f44,0x209f47,0x209f56,0x209f5e,0x209f6e,0x209f73,0x209f7a, + 0x209f7d,0x209f8f,0x209f91,0x209f92,0x209f96,0x209fa1,0x209fa3 }} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua index d3f9d99aa28..84249a7ad1b 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua @@ -3,17 +3,17 @@ -- luatexbase.provides_module({ name = 'luatexja.jfmglue', - date = '2020/01/23', + date = '2020-07-30', description = 'Insertion process of JFM glues, [x]kanjiskip and others', }) luatexja.jfmglue = luatexja.jfmglue or {} -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('stack'); local ltjs = luatexja.stack -luatexja.load_module('jfont'); local ltjf = luatexja.jfont -luatexja.load_module('direction'); local ltjd = luatexja.direction -luatexja.load_module('setwidth'); local ltjw = luatexja.setwidth -luatexja.load_module('lotf_aux'); local ltju = luatexja.lotf_aux +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'stack'; local ltjs = luatexja.stack +luatexja.load_module 'jfont'; local ltjf = luatexja.jfont +luatexja.load_module 'direction'; local ltjd = luatexja.direction +luatexja.load_module 'setwidth'; local ltjw = luatexja.setwidth +luatexja.load_module 'lotf_aux'; local ltju = luatexja.lotf_aux local pairs = pairs --local to_node = node.direct.tonode @@ -51,25 +51,25 @@ local node_tail = node.direct.tail local node_free = node.direct.free local node_remove = node.direct.remove -local id_glyph = node.id('glyph') -local id_hlist = node.id('hlist') -local id_vlist = node.id('vlist') -local id_rule = node.id('rule') -local id_ins = node.id('ins') -local id_mark = node.id('mark') -local id_adjust = node.id('adjust') -local id_disc = node.id('disc') -local id_whatsit = node.id('whatsit') -local id_math = node.id('math') -local id_glue = node.id('glue') -local id_kern = node.id('kern') -local id_penalty = node.id('penalty') +local id_glyph = node.id 'glyph' +local id_hlist = node.id 'hlist' +local id_vlist = node.id 'vlist' +local id_rule = node.id 'rule' +local id_ins = node.id 'ins' +local id_mark = node.id 'mark' +local id_adjust = node.id 'adjust' +local id_disc = node.id 'disc' +local id_whatsit = node.id 'whatsit' +local id_math = node.id 'math' +local id_glue = node.id 'glue' +local id_kern = node.id 'kern' +local id_penalty = node.id 'penalty' local id_jglyph = 512 -- Japanese character local id_box_like = 256 -- vbox, shifted hbox local id_pbox = 257 -- already processed nodes (by \unhbox) local id_pbox_w = 258 -- cluster which consists of a whatsit -local sid_user = node.subtype('user_defined') +local sid_user = node.subtype 'user_defined' local ITALIC = luatexja.icflag_table.ITALIC local PACKED = luatexja.icflag_table.PACKED @@ -112,9 +112,9 @@ do slow_find_char_class = function (c, m, oc) local cls = ltjf_find_char_class(oc, m) if oc~=c and c and cls==0 then - return ltjf_find_char_class(c, m) + return ltjf_find_char_class(c, m) else - return cls + return cls end end end @@ -140,7 +140,7 @@ function add_penalty(p,e) pp = pp + e if pp>=10000 then setpenalty(p, 10000) elseif pp<=-10000 then setpenalty(p, -10000) - else setpenalty(p, pp) end + else setpenalty(p, pp) end end end end @@ -177,59 +177,51 @@ local function check_box(box_ptr, box_end) while p and p~=box_end do local pid = getid(p) if pid==id_kern and getsubtype(p)==2 then - p = node_next(node_next(node_next(p))); pid = getid(p) -- p must be glyph_node + p = node_next(node_next(node_next(p))); pid = getid(p) -- p must be glyph_node end if pid==id_glyph then - repeat - if find_first_char then - first_char = p; find_first_char = false - end - last_char = p; found_visible_node = true; p=node_next(p) - if (not p) or p==box_end then - return found_visible_node - end - until getid(p)~=id_glyph - pid = getid(p) -- p must be non-nil + repeat + if find_first_char then first_char = p; find_first_char = false end + last_char = p; found_visible_node = true; p=node_next(p) + if (not p) or p==box_end then return found_visible_node end + until getid(p)~=id_glyph + pid = getid(p) -- p must be non-nil end if pid==id_kern then - local pa = get_attr_icflag(p) - if pa==IC_PROCESSED then - -- do nothing - elseif getsubtype(p)==2 then - p = node_next(node_next(p)); - -- Note that another node_next will be executed outside this if-statement. - else - found_visible_node = true - find_first_char = false; last_char = nil - end + local pa = get_attr_icflag(p) + if pa==IC_PROCESSED then + -- do nothing + elseif getsubtype(p)==2 then + p = node_next(node_next(p)); + -- Note that another node_next will be executed outside this if-statement. + else + found_visible_node = true + find_first_char = false; last_char = nil + end elseif pid==id_hlist then - if PACKED == get_attr_icflag(p) then - local s = ltjd_glyph_from_packed(p) - if find_first_char then - first_char = s; find_first_char = false - end - last_char = s; found_visible_node = true - else - if getfield(p, 'shift')==0 then - last_char = nil - if check_box(getlist(p), nil) then found_visible_node = true end - find_first_char = false - else - find_first_char = false; last_char = nil - end - end + if PACKED == get_attr_icflag(p) then + local s = ltjd_glyph_from_packed(p) + if find_first_char then first_char = s; find_first_char = false end + last_char = s; found_visible_node = true + else + if getfield(p, 'shift')==0 then + last_char = nil + if check_box(getlist(p), nil) then found_visible_node = true end + find_first_char = false + else + find_first_char = false; last_char = nil + end + end elseif pid==id_math then - if find_first_char then - first_char = p; find_first_char = false - end - last_char = p; found_visible_node = true + if find_first_char then first_char = p; find_first_char = false end + last_char = p; found_visible_node = true elseif pid==id_rule and get_attr_icflag(p)==PACKED then - -- do nothing + -- do nothing elseif not (pid==id_ins or pid==id_mark - or pid==id_adjust or pid==id_whatsit - or pid==id_penalty) then - found_visible_node = true - find_first_char = false; last_char = nil + or pid==id_adjust or pid==id_whatsit + or pid==id_penalty) then + found_visible_node = true + find_first_char = false; last_char = nil end p = node_next(p) end @@ -242,13 +234,13 @@ check_box_high = function (Nx, box_ptr, box_end) local first_char = first_char if first_char then if getid(first_char)==id_glyph then - if if_lang_ja(first_char) then - set_np_xspc_jachar_hbox(Nx, first_char) - else - set_np_xspc_alchar(Nx, getchar(first_char),first_char, 1) - end - else -- math_node - set_np_xspc_alchar(Nx, -1,first_char) + if if_lang_ja(first_char) then + set_np_xspc_jachar_hbox(Nx, first_char) + else + set_np_xspc_alchar(Nx, getchar(first_char),first_char, 1) + end + else -- math_node + set_np_xspc_alchar(Nx, -1,first_char) end end end @@ -258,14 +250,14 @@ end -------------------- Np の計算と情報取得 luatexbase.create_callback("luatexja.jfmglue.whatsit_getinfo", "data", - function (Np, lp, Nq) - if Np.nuc then return Np - else - return Np -- your code - end - end) + function (Np, lp, Nq) + if Np.nuc then return Np + else + return Np -- your code + end + end) luatexbase.create_callback("luatexja.jfmglue.whatsit_after", "data", - function (stat, Nq, Np) return false end) + function (stat, Nq, Np) return false end) -- calc next Np local calc_np @@ -292,12 +284,12 @@ local function calc_np_pbox(lp, last) local lpi = getid(lp) if lpa==PACKED then if lpi==id_rule then lp = node_next(lp) end - nc, lp = lp, node_next(lp) + nc, lp = lp, node_next(lp) elseif lpi==id_hlist or lpi==id_vlist then - head, lp, nc = ltjd_make_dir_whatsit(head, lp, list_dir, 'jfm pbox') - Np.first = first and nc or Np.first + head, lp, nc = ltjd_make_dir_whatsit(head, lp, list_dir, 'jfm pbox') + Np.first = first and nc or Np.first else - nc, lp = lp, node_next(lp) + nc, lp = lp, node_next(lp) end first, lpa = false, (lp and has_attr(lp, attr_icflag) or 0) -- get_attr_icflag() ではいけない! @@ -317,13 +309,13 @@ do -- 002 --------------------------------------- local font_getfont = font.getfont local function calc_np_notdef(lp) if not font_getfont(getfont(lp)).characters[getchar(lp)] then - local ln = node_next(lp) - if ltju.specified_feature(getfont(lp), 'notdef') and ln and getid(ln)==id_glyph then - set_attr(lp, attr_icflag, PROCESSED) - set_attr(ln, attr_jchar_code, has_attr(lp, attr_jchar_code) or getchar(lp)) - set_attr(ln, attr_jchar_class, has_attr(lp, attr_jchar_class) or 0) - Np.nuc, lp = ln, ln - end + local ln = node_next(lp) + if ltju.specified_feature(getfont(lp), 'notdef') and ln and getid(ln)==id_glyph then + set_attr(lp, attr_icflag, PROCESSED) + set_attr(ln, attr_jchar_code, has_attr(lp, attr_jchar_code) or getchar(lp)) + set_attr(ln, attr_jchar_class, has_attr(lp, attr_jchar_class) or 0) + Np.nuc, lp = ln, ln + end end return lp end @@ -351,73 +343,73 @@ function calc_np_aux_glyph_common(lp, acc_flag) setfield(lp, 'yoffset', getfield(lp, 'yoffset') - y_adjust) lp = node_next(lp) for lx in traverse(lp) do - local lai = get_attr_icflag(lx) - if lx==last or lai>=PACKED then - lp=lx; break - else - local lid = getid(lx) - if lid==id_glyph and not if_lang_ja(lx) then - -- 欧文文字 - last_glyph = lx; set_attr(lx, attr_icflag, PROCESSED); Np.last = lx - y_adjust = has_attr(lx,attr_ablshift) or 0 - node_depth = max(getfield(lx, 'depth') + min(y_adjust, 0), node_depth) - adj_depth = (y_adjust>0) and max(getfield(lx, 'depth') + y_adjust, adj_depth) or adj_depth - setfield(lx, 'yoffset', getfield(lx, 'yoffset') - y_adjust) - elseif lid==id_kern then - local ls = getsubtype(lx) - if ls==2 then -- アクセント用の kern - set_attr(lx, attr_icflag, PROCESSED) - lx = node_next(lx) -- lx: アクセント本体 - if getid(lx)==id_glyph then - setfield(lx, 'yoffset', getfield(lx, 'yoffset') - (has_attr(lx,attr_ablshift) or 0)) - else -- アクセントは上下にシフトされている - setfield(lx, 'shift', getfield(lx, 'shift') + (has_attr(lx,attr_ablshift) or 0)) - end - lx = node_next(node_next(lx)) - elseif ls==0 then - Np.last = lx - elseif (ls==3) or (lai==ITALIC) then - Np.last = lx; set_attr(lx, attr_icflag, IC_PROCESSED) - else - lp=lx; break - end - else - lp=lx; break - end - end + local lai = get_attr_icflag(lx) + if lx==last or lai>=PACKED then + lp=lx; break + else + local lid = getid(lx) + if lid==id_glyph and not if_lang_ja(lx) then + -- 欧文文字 + last_glyph = lx; set_attr(lx, attr_icflag, PROCESSED); Np.last = lx + y_adjust = has_attr(lx,attr_ablshift) or 0 + node_depth = max(getfield(lx, 'depth') + min(y_adjust, 0), node_depth) + adj_depth = (y_adjust>0) and max(getfield(lx, 'depth') + y_adjust, adj_depth) or adj_depth + setfield(lx, 'yoffset', getfield(lx, 'yoffset') - y_adjust) + elseif lid==id_kern then + local ls = getsubtype(lx) + if ls==2 then -- アクセント用の kern + set_attr(lx, attr_icflag, PROCESSED) + lx = node_next(lx) -- lx: アクセント本体 + if getid(lx)==id_glyph then + setfield(lx, 'yoffset', getfield(lx, 'yoffset') - (has_attr(lx,attr_ablshift) or 0)) + else -- アクセントは上下にシフトされている + setfield(lx, 'shift', getfield(lx, 'shift') + (has_attr(lx,attr_ablshift) or 0)) + end + lx = node_next(node_next(lx)) + elseif ls==0 then + Np.last = lx + elseif (ls==3) or (lai==ITALIC) then + Np.last = lx; set_attr(lx, attr_icflag, IC_PROCESSED) + else + lp=lx; break + end + else + lp=lx; break + end + end end local r if adj_depth>node_depth then - r = node_new(id_rule,3) - setfield(r, 'width', 0); setfield(r, 'height', 0) - setfield(r, 'depth',adj_depth); setfield(r, 'dir', tex_dir) - set_attr(r, attr_icflag, PROCESSED) + r = node_new(id_rule,3) + setfield(r, 'width', 0); setfield(r, 'height', 0) + setfield(r, 'depth',adj_depth); setfield(r, 'dir', tex_dir) + set_attr(r, attr_icflag, PROCESSED) end if last_glyph then - Np.last_char = last_glyph - if r then insert_after(head, first_glyph, r) end + Np.last_char = last_glyph + if r then insert_after(head, first_glyph, r) end else - local npn = Np.nuc - Np.last_char = npn - if r then - local nf, nc = getfont(npn), getchar(npn) - local ct = (font.getfont(nf) or font.fonts[nf] ).characters[nc] - if not ct then -- variation selector - node_free(r) - elseif (ct.left_protruding or 0) == 0 then - head = insert_before(head, npn, r) - Np.first = acc_flag and Np.first or ((Np.first==npn) and r or npn) - elseif (ct.right_protruding or 0) == 0 then - insert_after(head, npn, r); Np.last, lp = r, r - else - ltjb.package_warning_no_line( - 'luatexja', - 'Check depth of glyph node ' .. tostring(npn) .. '(font=' .. nf - .. ', char=' .. nc .. '), because its \\lpcode is ' .. tostring(ct.left_protruding) - .. ' and its \\rpcode is ' .. tostring(ct.right_protruding) - ); node_free(r) - end - end + local npn = Np.nuc + Np.last_char = npn + if r then + local nf, nc = getfont(npn), getchar(npn) + local ct = (font.getfont(nf) or font.fonts[nf] ).characters[nc] + if not ct then -- variation selector + node_free(r) + elseif (ct.left_protruding or 0) == 0 then + head = insert_before(head, npn, r) + Np.first = acc_flag and Np.first or ((Np.first==npn) and r or npn) + elseif (ct.right_protruding or 0) == 0 then + insert_after(head, npn, r); Np.last, lp = r, r + else + ltjb.package_warning_no_line( + 'luatexja', + 'Check depth of glyph node ' .. tostring(npn) .. '(font=' .. nf + .. ', char=' .. nc .. '), because its \\lpcode is ' .. tostring(ct.left_protruding) + .. ' and its \\rpcode is ' .. tostring(ct.right_protruding) + ); node_free(r) + end + end end return true, lp end @@ -429,10 +421,10 @@ local ltjw_apply_ashift_math = ltjw.apply_ashift_math local ltjw_apply_ashift_disc = ltjw.apply_ashift_disc local node_end_of_math = node.direct.end_of_math local dir_tate = luatexja.dir_table.dir_tate -local sid_start_link = node.subtype('pdf_start_link') -local sid_start_thread = node.subtype('pdf_start_thread') -local sid_end_link = node.subtype('pdf_end_link') -local sid_end_thread = node.subtype('pdf_end_thread') +local sid_start_link = node.subtype 'pdf_start_link' +local sid_start_thread = node.subtype 'pdf_start_thread' +local sid_end_link = node.subtype 'pdf_end_link' +local sid_end_thread = node.subtype 'pdf_end_thread' calc_np_auxtable = { [id_glyph] = calc_np_aux_glyph_common, [id_hlist] = function(lp) @@ -441,10 +433,10 @@ calc_np_auxtable = { set_attr(op, attr_icflag, PROCESSED) Np.first = Np.first or op; Np.last = op; Np.nuc = op; if (flag or getfield(op, 'shift')~=0) then - Np.id = id_box_like + Np.id = id_box_like else - Np.id = id_hlist - Np.last_char = check_box_high(Np, getlist(op), nil) + Np.id = id_hlist + Np.last_char = check_box_high(Np, getlist(op), nil) end return true, lp end, @@ -463,34 +455,34 @@ calc_np_auxtable = { [id_whatsit] = function(lp) local lps = getsubtype(lp) if lps==sid_user then - if getfield(lp, 'user_id')==luatexja.userid_table.IHB then - local lq = node_next(lp); - head = node_remove(head, lp); node_free(lp); non_ihb_flag = false - return false, lq; - elseif getfield(lp, 'user_id')==luatexja.userid_table.JA_AL_BDD then - local lq = node_next(lp); - head = node_remove(head, lp); node_free(lp) - return false, lq; - else - set_attr(lp, attr_icflag, PROCESSED) - luatexbase.call_callback("luatexja.jfmglue.whatsit_getinfo", - Np, lp, Nq) - if Np.nuc then - Np.id = id_pbox_w; Np.first = Np.nuc; Np.last = Np.nuc; - return true, node_next(lp) - else - return false, node_next(lp) - end - end + if getfield(lp, 'user_id')==luatexja.userid_table.IHB then + local lq = node_next(lp); + head = node_remove(head, lp); node_free(lp); non_ihb_flag = false + return false, lq; + elseif getfield(lp, 'user_id')==luatexja.userid_table.JA_AL_BDD then + local lq = node_next(lp); + head = node_remove(head, lp); node_free(lp) + return false, lq; + else + set_attr(lp, attr_icflag, PROCESSED) + luatexbase.call_callback("luatexja.jfmglue.whatsit_getinfo", + Np, lp, Nq) + if Np.nuc then + Np.id = id_pbox_w; Np.first = Np.nuc; Np.last = Np.nuc; + return true, node_next(lp) + else + return false, node_next(lp) + end + end else - -- we do special treatment for these whatsit nodes. - if lps == sid_start_link or lps == sid_start_thread then - Np.first = lp - elseif lps == sid_end_link or lps == sid_end_thread then - Np.first, Nq.last = nil, lp; - end - set_attr(lp, attr_icflag, PROCESSED) - return false, node_next(lp) + -- we do special treatment for these whatsit nodes. + if lps == sid_start_link or lps == sid_start_thread then + Np.first = lp + elseif lps == sid_end_link or lps == sid_end_thread then + Np.first, Nq.last = nil, lp; + end + set_attr(lp, attr_icflag, PROCESSED) + return false, node_next(lp) end end, [id_math] = function(lp) @@ -517,21 +509,21 @@ calc_np_auxtable = { end, [id_kern] = function(lp) if getsubtype(lp)==2 then - Np.first = Np.first or lp - set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp) - if getid(lp)==id_glyph then -- アクセント本体 - setfield(lp, 'yoffset', getfield(lp, 'yoffset') - (has_attr(lp,attr_ablshift) or 0)) - else -- アクセントは上下にシフトされている - setfield(lp, 'shift', getfield(lp, 'shift') + (has_attr(lp,attr_ablshift) or 0)) - end - set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp) - set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp) - set_attr(lp, attr_icflag, PROCESSED); - return calc_np_aux_glyph_common(lp, true) + Np.first = Np.first or lp + set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp) + if getid(lp)==id_glyph then -- アクセント本体 + setfield(lp, 'yoffset', getfield(lp, 'yoffset') - (has_attr(lp,attr_ablshift) or 0)) + else -- アクセントは上下にシフトされている + setfield(lp, 'shift', getfield(lp, 'shift') + (has_attr(lp,attr_ablshift) or 0)) + end + set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp) + set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp) + set_attr(lp, attr_icflag, PROCESSED); + return calc_np_aux_glyph_common(lp, true) else - Np.first = Np.first or lp - Np.id = id_kern; set_attr(lp, attr_icflag, PROCESSED) - Np.last = lp; return true, node_next(lp) + Np.first = Np.first or lp + Np.id = id_kern; set_attr(lp, attr_icflag, PROCESSED) + Np.last = lp; return true, node_next(lp) end end, [id_penalty] = function(lp) @@ -567,14 +559,14 @@ function calc_np(last, lp) -- unbox 由来ノードの検出 if lpa>=PACKED then if lpa%PROCESSED_BEGIN_FLAG == BOXBDD then - local lq = node_next(lp) + local lq = node_next(lp) head = node_remove(head, lp); node_free(lp); lp = lq else - return calc_np_pbox(lp, last) + return calc_np_pbox(lp, last) end -- id_pbox else - k, lp = (calc_np_auxtable[getid(lp)] or calc_np_aux_skip)(lp) - if k then return lp end + k, lp = (calc_np_auxtable[getid(lp)] or calc_np_aux_skip)(lp) + if k then return lp end end end Np=nil @@ -634,44 +626,42 @@ do local nullfunc = function(n) return n end function set_np_xspc_alchar(Nx, c,x, lig) if c~=-1 then - local f = (lig ==1) and nullfunc or node_tail + local f = (lig ==1) and nullfunc or node_tail local xc, xs = getcomponents(x), getsubtype(x) - while xc and xs and xs%4>=2 do - x = f(xc); - if getid(x)==id_disc then x, xc, xs = nil, getfield(x,'replace'), 2 - else xc, xs = getcomponents(x), getsubtype(x) end - end - c = x and getchar(x) or c - Nx.pre = table_current_stack[PRE + c] or 0 - Nx.post = table_current_stack[POST + c] or 0 + while xc and xs and xs%4>=2 do + x = f(xc); + if getid(x)==id_disc then x, xc, xs = nil, getfield(x,'replace'), 2 + else xc, xs = getcomponents(x), getsubtype(x) end + end + c = x and getchar(x) or c + Nx.pre = table_current_stack[PRE + c] or 0 + Nx.post = table_current_stack[POST + c] or 0 else - Nx.pre, Nx.post = 0, 0 + Nx.pre, Nx.post = 0, 0 end Nx.met = nil Nx.xspc = table_current_stack[XSP + c] or 3 Nx.auto_xspc = (has_attr(x, attr_autoxspc)==1) end local set_np_xspc_alchar = set_np_xspc_alchar - -- change the information for the next loop -- (will be done if Nx is an alphabetic character or a hlist) after_hlist = function (Nx) local s = Nx.last_char if s then - if getid(s)==id_glyph then - if if_lang_ja(s) then - set_np_xspc_jachar_hbox(Nx, s) - else - set_np_xspc_alchar(Nx, getchar(s), s, 2) - end - else - set_np_xspc_alchar(Nx, -1, s) - end + if getid(s)==id_glyph then + if if_lang_ja(s) then + set_np_xspc_jachar_hbox(Nx, s) + else + set_np_xspc_alchar(Nx, getchar(s), s, 2) + end + else + set_np_xspc_alchar(Nx, -1, s) + end else - Nx.pre, Nx.met = nil, nil + Nx.pre, Nx.met = nil, nil end end - after_alchar = function (Nx) local x = Nx.last_char return set_np_xspc_alchar(Nx, getchar(x), x, 2) @@ -689,12 +679,10 @@ local function handle_penalty_normal(post, pre, g) local a = (pre or 0) + (post or 0) if #Bp == 0 then if (a~=0 and not(g and getid(g)==id_kern)) then - local p = node_new(id_penalty) - if a<-10000 then a = -10000 elseif a>10000 then a = 10000 end - setfield(p, 'penalty', a) - head = insert_before(head, Np.first, p) - Bp[1]=p; - set_attr(p, attr_icflag, KINSOKU) + local p = node_new(id_penalty) + if a<-10000 then a = -10000 elseif a>10000 then a = 10000 end + setfield(p, 'penalty', a); head = insert_before(head, Np.first, p) + Bp[1]=p; set_attr(p, attr_icflag, KINSOKU) end else for _, v in pairs(Bp) do add_penalty(v,a) end end @@ -705,12 +693,10 @@ local function handle_penalty_always(post, pre, g) local a = (pre or 0) + (post or 0) if #Bp == 0 then if not (g and getid(g)==id_glue) or a~=0 then - local p = node_new(id_penalty) - if a<-10000 then a = -10000 elseif a>10000 then a = 10000 end - setfield(p, 'penalty', a) - head = insert_before(head, Np.first, p) - Bp[1]=p - set_attr(p, attr_icflag, KINSOKU) + local p = node_new(id_penalty) + if a<-10000 then a = -10000 elseif a>10000 then a = 10000 end + setfield(p, 'penalty', a); head = insert_before(head, Np.first, p) + Bp[1]=p; set_attr(p, attr_icflag, KINSOKU) end else for _, v in pairs(Bp) do add_penalty(v,a) end end @@ -720,10 +706,9 @@ local function handle_penalty_suppress(post, pre, g) luatexbase.call_callback('luatexja.adjust_jfmglue', head, Nq, Np, Bp) if #Bp == 0 then if g and getid(g)==id_glue then - local p = node_new(id_penalty) - setfield(p, 'penalty', 10000); head = insert_before(head, Np.first, p) - Bp[1]=p - set_attr(p, attr_icflag, KINSOKU) + local p = node_new(id_penalty) + setfield(p, 'penalty', 10000); head = insert_before(head, Np.first, p) + Bp[1]=p; set_attr(p, attr_icflag, KINSOKU) end else local a = (pre or 0) + (post or 0) @@ -735,12 +720,10 @@ local function handle_penalty_jwp() local a = table_current_stack[luatexja.stack_table_index.JWP] if #widow_Bp == 0 then if a~=0 then - local p = node_new(id_penalty) - if a<-10000 then a = -10000 elseif a>10000 then a = 10000 end - setfield(p, 'penalty', a) - head = insert_before(head, widow_Np.first, p) - widow_Bp[1]=p; - set_attr(p, attr_icflag, KINSOKU) + local p = node_new(id_penalty) + if a<-10000 then a = -10000 elseif a>10000 then a = 10000 end + setfield(p, 'penalty', a); head = insert_before(head, widow_Np.first, p) + widow_Bp[1]=p; set_attr(p, attr_icflag, KINSOKU) end else for _, v in pairs(widow_Bp) do add_penalty(v,a) end end @@ -752,12 +735,12 @@ local function new_jfm_glue(mc, bc, ac) local g = mc[bc][ac] if g then if g[1] then - return node_copy(g[1]), g.ratio, false, false, false + return node_copy(g[1]), g.ratio, false, false, false else - local f = node_new(id_glue) + local f = node_new(id_glue) set_attr(f, attr_icflag, g.priority) - setglue(f, g.width, g.stretch, g.shrink) - return f, g.ratio, g.kanjiskip_natural, g.kanjiskip_stretch, g.kanjiskip_shrink + setglue(f, g.width, g.stretch, g.shrink) + return f, g.ratio, g.kanjiskip_natural, g.kanjiskip_stretch, g.kanjiskip_shrink end end return false, 0 @@ -798,36 +781,36 @@ do calc_ja_ja_aux = function (gb, ga, db, da) if luatexja.jfmglue.diffmet_rule ~= math.two_pleft and diffmet_rule ~= math.two_pright and luatexja.jfmglue.diffmet_rule ~= math.two_paverage then - db, da = 0, 1 + db, da = 0, 1 end if not gb then - if ga then gb = node_new(id_kern, 1); setfield(gb, 'kern', 0) - else return nil end + if ga then gb = node_new(id_kern, 1); setfield(gb, 'kern', 0) + else return nil end elseif not ga then - ga = node_new(id_kern, 1); setfield(ga, 'kern', 0) + ga = node_new(id_kern, 1); setfield(ga, 'kern', 0) end local gbw, gaw, gbst, gast, gbsto, gasto, gbsh, gash, gbsho, gasho if getid(gb)==id_glue then gbw, gbst, gbsh, gbsto, gbsho = getglue(gb) else - gbw = getfield(gb, 'kern') + gbw = getfield(gb, 'kern') end if getid(ga)==id_glue then gaw, gast, gash, gasto, gasho = getglue(ga) else - gaw = getfield(ga, 'kern') + gaw = getfield(ga, 'kern') end if not (gbst or gast) then -- 両方とも kern - setfield(gb, 'kern', blend_diffmet(gbw, gaw, db, da)) - node_free(ga); return gb + setfield(gb, 'kern', blend_diffmet(gbw, gaw, db, da)) + node_free(ga); return gb else local gr = gb if not gbst then gr = ga; node_free(gb) else node_free(ga) end gbw = blend_diffmet(gbw or 0, gaw or 0, db, da) -- 結果の自然長 gbst, gbsto = blend_diffmet_inf(gbst, gast, gbsto, gasto, db, da) -- 伸び gbsh, gbsho = blend_diffmet_inf(-(gbsh or 0), -(gash or 0), gbsho, gasho, db, da) -- -(縮み) - setglue(gr, gbw, gbst, -gbsh, gbsto, gbsho) - return gr + setglue(gr, gbw, gbst, -gbsh, gbsto, gbsho) + return gr end end end @@ -846,51 +829,50 @@ do -- ノード kanji_skip のコピーで良い場合は nil が帰る -- flag = true: JFM グルーに付随する kanjiskip 自然長/伸び/縮み分 if qm.with_kanjiskip and (bn or bp or bh) then - if kanjiskip_jfm_flag then - local g = node_new(id_glue); - local bk = qm.kanjiskip or null_skip_table - setglue(g, bn and (bn*bk[1]) or 0, - bp and (bp*bk[2]) or 0, - bh and (bh*bk[3]) or 0, 0, 0) - set_attr(g, attr_icflag, KANJI_SKIP_JFM) - return g - elseif flag then - local g = node_new(id_glue) + if kanjiskip_jfm_flag then + local g = node_new(id_glue); + local bk = qm.kanjiskip or null_skip_table + setglue(g, bn and (bn*bk[1]) or 0, + bp and (bp*bk[2]) or 0, + bh and (bh*bk[3]) or 0, 0, 0) + set_attr(g, attr_icflag, KANJI_SKIP_JFM) + return g + elseif flag then + local g = node_new(id_glue) local st = bp and (bp*getfield(kanji_skip, 'stretch')) or 0 local sh = bh and (bh*getfield(kanji_skip, 'shrink')) or 0 - setglue(g, - bn and (bn*getfield(kanji_skip, 'width')) or 0, - st, sh, - (st==0) and 0 or getfield(kanji_skip, 'stretch_order'), - (sh==0) and 0 or getfield(kanji_skip, 'shrink_order')) - set_attr(g, attr_icflag, KANJI_SKIP_JFM) - return g - end + setglue(g, + bn and (bn*getfield(kanji_skip, 'width')) or 0, + st, sh, + (st==0) and 0 or getfield(kanji_skip, 'stretch_order'), + (sh==0) and 0 or getfield(kanji_skip, 'shrink_order')) + set_attr(g, attr_icflag, KANJI_SKIP_JFM) + return g + end end end get_kanjiskip = function() - if Np.auto_kspc==0 or Nq.auto_kspc==0 then - return nil + if Np.auto_kspc==0 or Nq.auto_kspc==0 then return nil elseif Np.auto_kspc or Nq.auto_kspc then - local pm, qm = Np.met, Nq.met - if (pm.char_type==qm.char_type) and (qm.var==pm.var) then - return get_kanjiskip_low(false, qm, 1, 1, 1) or node_copy(kanji_skip) - else - local gb = get_kanjiskip_low(false, qm, 1, 1, 1) - if gb then - return calc_ja_ja_aux(gb, - get_kanjiskip_low(false, pm, 1, 1, 1) or node_copy(kanji_skip), 0, 1) - else - local ga = get_kanjiskip_low(false, pm, 1, 1, 1) - return (ga and calc_ja_ja_aux(node_copy(kanji_skip), ga, 0, 1)) - or node_copy(kanji_skip) - end - end + local pm, qm = Np.met, Nq.met + if (pm.char_type==qm.char_type) and (qm.var==pm.var) then + return get_kanjiskip_low(false, qm, 1, 1, 1) or node_copy(kanji_skip) + else + local gb = get_kanjiskip_low(false, qm, 1, 1, 1) + if gb then + return calc_ja_ja_aux(gb, + get_kanjiskip_low(false, pm, 1, 1, 1) or node_copy(kanji_skip), 0, 1) + else + local ga = get_kanjiskip_low(false, pm, 1, 1, 1) + return (ga and calc_ja_ja_aux(node_copy(kanji_skip), ga, 0, 1)) + or node_copy(kanji_skip) + end + end else - local g = node_new(id_glue) - set_attr(g, attr_icflag, kanjiskip_jfm_flag and KANJI_SKIP_JFM or KANJI_SKIP) - return g + local g = node_new(id_glue) + set_attr(g, attr_icflag, kanjiskip_jfm_flag and KANJI_SKIP_JFM or KANJI_SKIP) + return g end end @@ -898,27 +880,25 @@ do local qm, pm = Nq.met, Np.met local qmc, pmc = qm.char_type, pm.char_type if (qmc==pmc) and (qm.var==pm.var) then - local g, _, kn, kp, kh = new_jfm_glue(qmc, Nq.class, Np.class) - return g, (Np.auto_kspc or Nq.auto_kspc) and get_kanjiskip_low(true, qm, kn, kp, kh) + local g, _, kn, kp, kh = new_jfm_glue(qmc, Nq.class, Np.class) + return g, (Np.auto_kspc or Nq.auto_kspc) and get_kanjiskip_low(true, qm, kn, kp, kh) else - local npn, nqn = Np.nuc, Nq.nuc - local gb, db, bn, bp, bh - = new_jfm_glue(qmc, Nq.class, - slow_find_char_class(Np.char, - qm, getchar(npn))) - local ga, da, an, ap, ah - = new_jfm_glue(pmc, - slow_find_char_class(Nq.char, - pm, getchar(nqn)), - Np.class) - local g = calc_ja_ja_aux(gb, ga, db, da) - local k - --if (pmc==qmc) and (qm.var==pm.var) then + local npn, nqn = Np.nuc, Nq.nuc + local gb, db, bn, bp, bh + = new_jfm_glue(qmc, Nq.class, + slow_find_char_class(Np.char, + qm, getchar(npn))) + local ga, da, an, ap, ah + = new_jfm_glue(pmc, + slow_find_char_class(Nq.char, + pm, getchar(nqn)), + Np.class) + local g = calc_ja_ja_aux(gb, ga, db, da) + local k gb = get_kanjiskip_low(true, qm, bn, bp, bh) - ga = get_kanjiskip_low(true, pm, an, ap, ah) - k = calc_ja_ja_aux(gb, ga, db, da) - --end - return g, k + ga = get_kanjiskip_low(true, pm, an, ap, ah) + k = calc_ja_ja_aux(gb, ga, db, da) + return g, k end end end @@ -935,27 +915,27 @@ do get_xkanjiskip_low = function(flag, qm, bn, bp, bh) if flag or (qm.with_kanjiskip and (bn or bp or bh)) then - if xkanjiskip_jfm_flag then - local g = node_new(id_glue); - local bk = qm.xkanjiskip or null_skip_table - setglue(g, bn and bk[1] or 0, - bp and bk[2] or 0, - bh and bk[3] or 0, 0, 0) - set_attr(g, attr_icflag, XKANJI_SKIP_JFM) - return g - elseif flag then - return node_copy(xkanji_skip) - else - local g = node_new(id_glue); - setglue(g, - bn and (bn*getfield(xkanji_skip, 'width')) or 0, - bp and (bp*getfield(xkanji_skip, 'stretch')) or 0, - bh and (bh*getfield(xkanji_skip, 'shrink')) or 0, - bp and getfield(xkanji_skip, 'stretch_order') or 0, - bh and getfield(xkanji_skip, 'shrink_order') or 0) - set_attr(g, attr_icflag, XKANJI_SKIP_JFM) - return g - end + if xkanjiskip_jfm_flag then + local g = node_new(id_glue); + local bk = qm.xkanjiskip or null_skip_table + setglue(g, bn and bk[1] or 0, + bp and bk[2] or 0, + bh and bk[3] or 0, 0, 0) + set_attr(g, attr_icflag, XKANJI_SKIP_JFM) + return g + elseif flag then + return node_copy(xkanji_skip) + else + local g = node_new(id_glue); + setglue(g, + bn and (bn*getfield(xkanji_skip, 'width')) or 0, + bp and (bp*getfield(xkanji_skip, 'stretch')) or 0, + bh and (bh*getfield(xkanji_skip, 'shrink')) or 0, + bp and getfield(xkanji_skip, 'stretch_order') or 0, + bh and getfield(xkanji_skip, 'shrink_order') or 0) + set_attr(g, attr_icflag, XKANJI_SKIP_JFM) + return g + end end end @@ -963,11 +943,11 @@ do if Np.auto_xspc==0 or Nq.auto_xspc==0 then return nil elseif (Nq.xspc>=2) and (Np.xspc%2==1) and (Nq.auto_xspc or Np.auto_xspc) then - return get_xkanjiskip_low(true, Nn.met, 1, 1, 1) + return get_xkanjiskip_low(true, Nn.met, 1, 1, 1) else - local g = node_new(id_glue) - set_attr(g, attr_icflag, xkanjiskip_jfm_flag and XKANJI_SKIP_JFM or XKANJI_SKIP) - return g + local g = node_new(id_glue) + set_attr(g, attr_icflag, xkanjiskip_jfm_flag and XKANJI_SKIP_JFM or XKANJI_SKIP) + return g end end end @@ -986,7 +966,7 @@ local function get_NA_skip() fast_find_char_class( (Nq.id == id_math and -1 or (Nq.xspc>=2 and 'alchar' or 'nox_alchar')), pm), Np.class) - local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc('auto_xspc')) + local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc') and get_xkanjiskip_low(false, pm, kn, kp, kh) return g, k end @@ -997,12 +977,12 @@ local function get_NB_skip() fast_find_char_class( (Np.id == id_math and -1 or (Np.xspc%2==1 and 'alchar' or 'nox_alchar')), qm) ) - local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc('auto_xspc')) - and get_xkanjiskip_low(false, qm, kn, kp, kh) + local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc') + and get_xkanjiskip_low(false, qm, kn, kp, kh) return g, k end -local function get_OA_skip(is_kanji) +local function get_OA_skip(insert_ksp) local pm = Np.met local g, _, kn, kp, kh = new_jfm_glue( pm.char_type, @@ -1010,20 +990,20 @@ local function get_OA_skip(is_kanji) (((Nq.id==id_glue)or(Nq.id==id_kern)) and 'glue' or 'jcharbdd'), pm), Np.class) local k - if is_kanji==0 then - k = combine_spc('auto_kspc') and get_kanjiskip_low(true, pm, kn, kp, kh) + if insert_ksp then + k = (combine_spc 'auto_kspc') and get_kanjiskip_low(true, pm, kn, kp, kh) end return g, k end -local function get_OB_skip(is_kanji) +local function get_OB_skip(insert_ksp) local qm = Nq.met local g, _, kn, kp, kh = new_jfm_glue( qm.char_type, Nq.class, fast_find_char_class( (((Np.id==id_glue)or(Np.id==id_kern)) and 'glue' or 'jcharbdd'), qm)) local k - if is_kanji==0 then - k = combine_spc('auto_kspc') and get_kanjiskip_low(true, qm, kn, kp, kh) + if insert_ksp then + k = (combine_spc 'auto_kspc') and get_kanjiskip_low(true, qm, kn, kp, kh) end return g, k end @@ -1039,7 +1019,7 @@ local function handle_np_jachar(mode) real_insert(g); real_insert(k) elseif Nq.met then -- qid==id_hlist local g, k - if non_ihb_flag then g, k = get_OA_skip(0) end -- O_A->K + if non_ihb_flag then g, k = get_OA_skip(true) end -- O_A->K if not g then g = get_kanjiskip() end handle_penalty_normal(0, Np.pre, g); real_insert(g); real_insert(k) elseif Nq.pre then @@ -1081,7 +1061,7 @@ end local function handle_np_ja_hlist() local qid = Nq.id if qid==id_jglyph or ((qid==id_pbox or qid == id_pbox_w) and Nq.met) then - local g = non_ihb_flag and get_OB_skip(0) or get_kanjiskip() -- O_B->K + local g = non_ihb_flag and get_OB_skip(true) or get_kanjiskip() -- O_B->K handle_penalty_normal(Nq.post, 0, g); real_insert(g) elseif Nq.met then -- Nq.id==id_hlist local g = get_kanjiskip() -- K @@ -1110,12 +1090,12 @@ do [id_pbox] = function() after_hlist(Nq) end, [id_disc] = function() after_hlist(Nq) end, [id_pbox_w] = function() - luatexbase.call_callback("luatexja.jfmglue.whatsit_after", - false, Nq, Np) - end, + luatexbase.call_callback("luatexja.jfmglue.whatsit_after", + false, Nq, Np) + end, } - adjust_nq=function() + adjust_nq = function() local x = adjust_nq_aux[Nq.id] if x then x() end end @@ -1133,15 +1113,15 @@ local function handle_list_tail(mode, last) -- Insert \jcharwidowpenalty if widow_Np.first then handle_penalty_jwp() end else - Np=Nq + Np = Nq -- the current list is the contents of a hbox local npi, pm = Np.id, Np.met if npi == id_jglyph or (npi==id_pbox and pm) then - local g = new_jfm_glue(pm.char_type, Np.class, fast_find_char_class('boxbdd', pm)) - if g then - set_attr(g, attr_icflag, BOXBDD) - head = insert_after(head, Np.last, g) - end + local g = new_jfm_glue(pm.char_type, Np.class, fast_find_char_class('boxbdd', pm)) + if g then + set_attr(g, attr_icflag, BOXBDD) + head = insert_after(head, Np.last, g) + end end end end @@ -1149,17 +1129,17 @@ end -- リスト先頭の処理 local function handle_list_head(par_indented) local npi, pm = Np.id, Np.met - if npi == id_jglyph or (npi==id_pbox and pm) then + if npi == id_jglyph or (npi==id_pbox and pm) then if non_ihb_flag then - local g = new_jfm_glue(pm.char_type, fast_find_char_class(par_indented, pm), Np.class) - if g then - set_attr(g, attr_icflag, BOXBDD) - if getid(g)==id_glue and #Bp==0 then - local h = node_new(id_penalty) - setfield(h, 'penalty', 10000); set_attr(h, attr_icflag, BOXBDD) - end - head = insert_before(head, Np.first, g) - end + local g = new_jfm_glue(pm.char_type, fast_find_char_class(par_indented, pm), Np.class) + if g then + set_attr(g, attr_icflag, BOXBDD) + if getid(g)==id_glue and #Bp==0 then + local h = node_new(id_penalty) + setfield(h, 'penalty', 10000); set_attr(h, attr_icflag, BOXBDD) + end + head = insert_before(head, Np.first, g) + end end end end @@ -1168,7 +1148,7 @@ end -- return value: (the initial cursor lp), (last node) local init_var do - local id_local = node.id('local_par') + local id_local = node.id 'local_par' local KANJI_SKIP = luatexja.icflag_table.KANJI_SKIP local XKANJI_SKIP = luatexja.icflag_table.XKANJI_SKIP local KSK = luatexja.stack_table_index.KSK @@ -1180,16 +1160,16 @@ do local table_pool = { {}, {}, {first=nil}, { auto_kspc=nil, auto_xspc=nil, char=nil, class=nil, - first=nil, id=nil, last=nil, met=nil, nuc=nil, - post=nil, pre=nil, xspc=nil, }, + first=nil, id=nil, last=nil, met=nil, nuc=nil, + post=nil, pre=nil, xspc=nil, }, { auto_kspc=nil, auto_xspc=nil, char=nil, class=nil, - first=nil, id=nil, last=nil, met=nil, nuc=nil, - post=nil, pre=nil, xspc=nil, }, + first=nil, id=nil, last=nil, met=nil, nuc=nil, + post=nil, pre=nil, xspc=nil, }, } init_var = function (mode,dir) -- 1073741823: max_dimen Bp, widow_Bp, widow_Np, Np, Nq - = table_pool[1], table_pool[2], table_pool[3], table_pool[4], table_pool[5] + = table_pool[1], table_pool[2], table_pool[3], table_pool[4], table_pool[5] for i=1,5 do for j,_ in pairs(table_pool[i]) do table_pool[i][j]=nil end end table_current_stack = ltjs.table_current_stack @@ -1202,31 +1182,31 @@ do -- ithout this node, set_attr(kanji_skip, ...) somehow creates an "orphaned" attribute list. do - kanji_skip, kanjiskip_jfm_flag = skip_table_to_glue(KSK) - set_attr(kanji_skip, attr_icflag, KANJI_SKIP) + kanji_skip, kanjiskip_jfm_flag = skip_table_to_glue(KSK) + set_attr(kanji_skip, attr_icflag, KANJI_SKIP) end do - xkanji_skip, xkanjiskip_jfm_flag = skip_table_to_glue(XSK) - set_attr(xkanji_skip, attr_icflag, XKANJI_SKIP) + xkanji_skip, xkanjiskip_jfm_flag = skip_table_to_glue(XSK) + set_attr(xkanji_skip, attr_icflag, XKANJI_SKIP) end if mode then - -- the current list is to be line-breaked: - -- hbox from \parindent is skipped. - local lp, par_indented, lpi, lps = head, 'boxbdd', getid(head), getsubtype(head) - while lp and - ((lpi==id_whatsit and lps~=sid_user) - or ((lpi==id_hlist) and (lps==3)) + -- the current list is to be line-breaked: + -- hbox from \parindent is skipped. + local lp, par_indented, lpi, lps = head, 'boxbdd', getid(head), getsubtype(head) + while lp and + ((lpi==id_whatsit and lps~=sid_user) + or ((lpi==id_hlist) and (lps==3)) or (lpi==id_local)) do - if (lpi==id_hlist) and (lps==3) then + if (lpi==id_hlist) and (lps==3) then Np.char, par_indented = 'parbdd', 'parbdd' Np.width = getfield(lp, 'width') end - lp=node_next(lp); lpi, lps = getid(lp), getsubtype(lp) end - return lp, node_tail(head), par_indented, TEMP + lp=node_next(lp); lpi, lps = getid(lp), getsubtype(lp) end + return lp, node_tail(head), par_indented, TEMP else - return head, nil, 'boxbdd', TEMP + return head, nil, 'boxbdd', TEMP end end end @@ -1242,10 +1222,10 @@ local function cleanup(mode, TEMP) if mode then local h = node_next(head) if getid(h) == id_penalty and getfield(h, 'penalty') == 10000 then - h = node_next(h) - if getid(h) == id_glue and getsubtype(h) == 15 and not node_next(h) then - return false - end + h = node_next(h) + if getid(h) == id_glue and getsubtype(h) == 15 and not node_next(h) then + return false + end end end return head @@ -1264,19 +1244,19 @@ function luatexja.jfmglue.main(ahead, mode, dir) handle_list_head(par_indented) lp = calc_np(last,lp); while Np do - adjust_nq(); - local pid, pm = Np.id, Np.met - -- 挿入部 - if pid == id_jglyph then - handle_np_jachar(mode) - elseif pm then - if pid==id_hlist then handle_np_ja_hlist() - else handle_np_jachar() end - elseif Nq.met then - if Nq.id==id_hlist then handle_nq_ja_hlist() - else handle_nq_jachar() end - end - lp = calc_np(last,lp) + adjust_nq(); + local pid, pm = Np.id, Np.met + -- 挿入部 + if pid == id_jglyph then + handle_np_jachar(mode) + elseif pm then + if pid==id_hlist then handle_np_ja_hlist() + else handle_np_jachar() end + elseif Nq.met then + if Nq.id==id_hlist then handle_nq_ja_hlist() + else handle_nq_jachar() end + end + lp = calc_np(last,lp) end handle_list_tail(mode, last) end @@ -1327,17 +1307,17 @@ do Np.first = lp; Np.nuc = lp; Np.last = lp return Np elseif Np and getfield(lp, 'user_id') == BOXB then - Np.first = lp; Np.nuc = lp; Np.last = lp - if Nq then - if Nq.met then - Np.class = fast_find_char_class('boxbdd', Nq.met) + Np.first = lp; Np.nuc = lp; Np.last = lp + if Nq then + if Nq.met then + Np.class = fast_find_char_class('boxbdd', Nq.met) end Np.met = Nq.met; Np.pre = 0; Np.post = 0; Np.xspc = 0 Np.auto_xspc, Np.auto_kspc = 0, 0 - end + end return Np else - return Np + return Np end end @@ -1365,7 +1345,7 @@ do Nq.auto_xspc, Nq.auto_kspc = 0, 0 end head = node_remove(head, y) - node_free(y) + node_free(y) end return s end diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua index a15b7616bdd..d1751af4651 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua @@ -3,15 +3,15 @@ -- luatexbase.provides_module({ name = 'luatexja.jfont', - date = '2020-05-17', + date = '2020-07-30', description = 'Loader for Japanese fonts', }) -luatexja.load_module('lotf_aux'); local ltju = luatexja.lotf_aux -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('charrange'); local ltjc = luatexja.charrange -luatexja.load_module('rmlgbm'); local ltjr = luatexja.rmlgbm -luatexja.load_module('direction'); local ltjd = luatexja.direction +luatexja.load_module 'lotf_aux'; local ltju = luatexja.lotf_aux +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'charrange'; local ltjc = luatexja.charrange +luatexja.load_module 'rmlgbm'; local ltjr = luatexja.rmlgbm +luatexja.load_module 'direction'; local ltjd = luatexja.direction local setfield = node.direct.setfield local getid = node.direct.getid @@ -226,7 +226,7 @@ do kanjiskip_stretch = w.kanjiskip_stretch, kanjiskip_shrink = w.kanjiskip_shrink, round_threshold = w.round_threshold, - } + } end for k,w in pairs(v.kern) do local g = node_new(id_kern, 1) @@ -289,7 +289,7 @@ do 'no JFM specified', 'To load and define a Japanese font, a JFM must be specified.'.. "The JFM 'ujis' will be used for now.") - jfm_file_name='ujis' + jfm_file_name = 'ujis' end for j,v in ipairs(metrics) do if v.name==jfm_file_name then return j end @@ -338,7 +338,7 @@ do local fmtable = { jfm = j, size = f.size, var = jfm_var, with_kanjiskip = jfm_ksp, zw = sz.zw, zh = sz.zh, - chars = sz.chars, char_type = sz.char_type, + chars = sz.chars, char_type = sz.char_type, kanjiskip = sz.kanjiskip, xkanjiskip = sz.xkanjiskip, chars_cbcache = {}, vert_activated = vert_activated, @@ -347,9 +347,6 @@ do ltju.enable_feature(fn, ltju.exist_feature(fn, 'vrt2') and 'vrt2' or 'vert') end - --texio.write_nl('term and log', - --'JFNT\t' .. identifiers[fn].name .. '\t' .. identifiers[fn].size .. '\t' .. fn, '') - fmtable = luatexbase.call_callback("luatexja.define_jfont", fmtable, fn) font_metric_table[fn]=fmtable tex.sprint(cat_lp, global_flag, '\\protected\\expandafter\\def\\csname ', @@ -381,15 +378,7 @@ do -- extract jfm_file_name and jfm_var -- normalize position of 'jfm=' and 'jfmvar=' keys local function extract_metric(name) - do - local nametemp - nametemp = name:match('^{(.*)}$') - if nametemp then name = nametemp - else - nametemp = name:match('^"(.*)"$') - name = nametemp or name - end - end + name = (name:match '^{(.*)}$') or (name:match '^"(.*)"$') or name jfm_file_name = ''; jfm_var = ''; jfm_ksp = true local tmp, index = name:sub(1, 5), 1 if tmp == 'file:' or tmp == 'name:' or tmp == 'psft:' then @@ -404,16 +393,14 @@ do if l~=q then name = name:sub(1,index-1) .. name:sub(q+1) else - name = name:sub(1,index-1) - index = nil + name = name:sub(1,index-1); index = nil end elseif name:sub(index, index+6)=='jfmvar=' and q>index+6 then jfm_var = name:sub(index+7, q-1) if l~=q then name = name:sub(1,index-1) .. name:sub(q+1) else - name = name:sub(1,index-1) - index = nil + name = name:sub(1,index-1); index = nil end else index = (l~=q) and (q+1) or nil @@ -432,9 +419,9 @@ do jfm_ksp = not (x=='-') end if jfm_dir == 'tate' then - vert_activated = (not name:match('[:;]%-vert')) and (not name:match('[:;]%-vrt2')) + vert_activated = (not name:match '[:;]%-vert') and (not name:match '[:;]%-vrt2') auto_enable_vrt2 - = (not name:match('[:;][+%-]?vert')) and (not name:match('[:;][+%-]?vrt2')) + = (not name:match '[:;][+%-]?vert') and (not name:match '[:;][+%-]?vrt2') else vert_activated, auto_enable_vrt2 = nil, nil end @@ -672,18 +659,14 @@ do -- EXT function luatexja.jfont.output_alt_font_cmd(dir, bbase) alt_font_base = bbase - if dir == 't' then - alt_font_base_num = tex.getattribute(attr_curtfnt) - else - alt_font_base_num = tex.getattribute(attr_curjfnt) - end + alt_font_base_num = tex.getattribute((dir == 't') and attr_curtfnt or attr_curjfnt) local t = alt_font_table[alt_font_base_num] if t then for i,_ in pairs(t) do t[i]=nil end end t = alt_font_table_latex[bbase] if t then - for i,_ in pairs(t) do + for i,_ in pairs(t) do tex.sprint(cat_lp, '\\ltj@pickup@altfont@aux' .. dir .. '{' .. i .. '}') end end @@ -762,9 +745,9 @@ local list_rotate_glyphs do local ceil = math.ceil -- output of function_uax50.lua - -- UAX#50 for Unicode 12.1.0 + -- UAX#50 for Unicode 13.0.0 -- t[0] = true - local t={ 0, 167, 168, 169, 170, 174, 175, 177, 178, 188, 191, 215, 216, 247, 248, 746, 748, 888, 890, 896, 900, 907, 908, 909, 910, 930, 931, 1328, 1329, 1367, 1369, 1419, 1421, 1424, 1425, 1480, 1488, 1515, 1519, 1525, 1536, 1565, 1566, 1806, 1807, 1867, 1869, 1970, 1984, 2043, 2045, 2094, 2096, 2111, 2112, 2140, 2142, 2143, 2144, 2155, 2208, 2229, 2230, 2238, 2259, 2436, 2437, 2445, 2447, 2449, 2451, 2473, 2474, 2481, 2482, 2483, 2486, 2490, 2492, 2501, 2503, 2505, 2507, 2511, 2519, 2520, 2524, 2526, 2527, 2532, 2534, 2559, 2561, 2564, 2565, 2571, 2575, 2577, 2579, 2601, 2602, 2609, 2610, 2612, 2613, 2615, 2616, 2618, 2620, 2621, 2622, 2627, 2631, 2633, 2635, 2638, 2641, 2642, 2649, 2653, 2654, 2655, 2662, 2679, 2689, 2692, 2693, 2702, 2703, 2706, 2707, 2729, 2730, 2737, 2738, 2740, 2741, 2746, 2748, 2758, 2759, 2762, 2763, 2766, 2768, 2769, 2784, 2788, 2790, 2802, 2809, 2816, 2817, 2820, 2821, 2829, 2831, 2833, 2835, 2857, 2858, 2865, 2866, 2868, 2869, 2874, 2876, 2885, 2887, 2889, 2891, 2894, 2902, 2904, 2908, 2910, 2911, 2916, 2918, 2936, 2946, 2948, 2949, 2955, 2958, 2961, 2962, 2966, 2969, 2971, 2972, 2973, 2974, 2976, 2979, 2981, 2984, 2987, 2990, 3002, 3006, 3011, 3014, 3017, 3018, 3022, 3024, 3025, 3031, 3032, 3046, 3067, 3072, 3085, 3086, 3089, 3090, 3113, 3114, 3130, 3133, 3141, 3142, 3145, 3146, 3150, 3157, 3159, 3160, 3163, 3168, 3172, 3174, 3184, 3191, 3213, 3214, 3217, 3218, 3241, 3242, 3252, 3253, 3258, 3260, 3269, 3270, 3273, 3274, 3278, 3285, 3287, 3294, 3295, 3296, 3300, 3302, 3312, 3313, 3315, 3328, 3332, 3333, 3341, 3342, 3345, 3346, 3397, 3398, 3401, 3402, 3408, 3412, 3428, 3430, 3456, 3458, 3460, 3461, 3479, 3482, 3506, 3507, 3516, 3517, 3518, 3520, 3527, 3530, 3531, 3535, 3541, 3542, 3543, 3544, 3552, 3558, 3568, 3570, 3573, 3585, 3643, 3647, 3676, 3713, 3715, 3716, 3717, 3718, 3723, 3724, 3748, 3749, 3750, 3751, 3774, 3776, 3781, 3782, 3783, 3784, 3790, 3792, 3802, 3804, 3808, 3840, 3912, 3913, 3949, 3953, 3992, 3993, 4029, 4030, 4045, 4046, 4059, 4096, 4294, 4295, 4296, 4301, 4302, 4304, 4352, 4608, 4681, 4682, 4686, 4688, 4695, 4696, 4697, 4698, 4702, 4704, 4745, 4746, 4750, 4752, 4785, 4786, 4790, 4792, 4799, 4800, 4801, 4802, 4806, 4808, 4823, 4824, 4881, 4882, 4886, 4888, 4955, 4957, 4989, 4992, 5018, 5024, 5110, 5112, 5118, 5120, 5121, 5760, 5789, 5792, 5881, 5888, 5901, 5902, 5909, 5920, 5943, 5952, 5972, 5984, 5997, 5998, 6001, 6002, 6004, 6016, 6110, 6112, 6122, 6128, 6138, 6144, 6159, 6160, 6170, 6176, 6265, 6272, 6315, 6400, 6431, 6432, 6444, 6448, 6460, 6464, 6465, 6468, 6510, 6512, 6517, 6528, 6572, 6576, 6602, 6608, 6619, 6622, 6684, 6686, 6751, 6752, 6781, 6783, 6794, 6800, 6810, 6816, 6830, 6832, 6847, 6912, 6988, 6992, 7037, 7040, 7156, 7164, 7224, 7227, 7242, 7245, 7305, 7312, 7355, 7357, 7368, 7376, 7419, 7424, 7674, 7675, 7958, 7960, 7966, 7968, 8006, 8008, 8014, 8016, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031, 8062, 8064, 8117, 8118, 8133, 8134, 8148, 8150, 8156, 8157, 8176, 8178, 8181, 8182, 8191, 8192, 8214, 8215, 8224, 8226, 8240, 8242, 8251, 8253, 8258, 8259, 8263, 8266, 8273, 8274, 8293, 8294, 8306, 8308, 8335, 8336, 8349, 8352, 8384, 8400, 8413, 8417, 8418, 8421, 8433, 8450, 8451, 8458, 8463, 8464, 8467, 8469, 8470, 8472, 8478, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8494, 8495, 8501, 8512, 8517, 8523, 8524, 8526, 8527, 8586, 8588, 8592, 8734, 8735, 8756, 8758, 8960, 8968, 8972, 8992, 8996, 9001, 9003, 9004, 9085, 9115, 9150, 9166, 9167, 9168, 9169, 9180, 9186, 9251, 9252, 9472, 9632, 9754, 9760, 10088, 10102, 10132, 11026, 11056, 11088, 11098, 11124, 11126, 11158, 11160, 11192, 11218, 11219, 11244, 11248, 11264, 11311, 11312, 11359, 11360, 11508, 11513, 11558, 11559, 11560, 11565, 11566, 11568, 11624, 11631, 11633, 11647, 11671, 11680, 11687, 11688, 11695, 11696, 11703, 11704, 11711, 11712, 11719, 11720, 11727, 11728, 11735, 11736, 11743, 11744, 11856, 12296, 12306, 12308, 12320, 12336, 12337, 12448, 12449, 12540, 12541, 42192, 42540, 42560, 42744, 42752, 42944, 42946, 42951, 42999, 43052, 43056, 43066, 43072, 43128, 43136, 43206, 43214, 43226, 43232, 43348, 43359, 43360, 43392, 43470, 43471, 43482, 43486, 43519, 43520, 43575, 43584, 43598, 43600, 43610, 43612, 43715, 43739, 43767, 43777, 43783, 43785, 43791, 43793, 43799, 43808, 43815, 43816, 43823, 43824, 43880, 43888, 44014, 44016, 44026, 55296, 57344, 64256, 64263, 64275, 64280, 64285, 64311, 64312, 64317, 64318, 64319, 64320, 64322, 64323, 64325, 64326, 64450, 64467, 64832, 64848, 64912, 64914, 64968, 65008, 65022, 65024, 65040, 65056, 65072, 65097, 65104, 65112, 65119, 65123, 65127, 65136, 65141, 65142, 65277, 65279, 65280, 65288, 65290, 65293, 65294, 65306, 65311, 65339, 65340, 65341, 65342, 65343, 65344, 65371, 65471, 65474, 65480, 65482, 65488, 65490, 65496, 65498, 65501, 65507, 65508, 65512, 65519, 65529, 65532, 65536, 65548, 65549, 65575, 65576, 65595, 65596, 65598, 65599, 65614, 65616, 65630, 65664, 65787, 65792, 65795, 65799, 65844, 65847, 65935, 65936, 65948, 65952, 65953, 66000, 66046, 66176, 66205, 66208, 66257, 66272, 66300, 66304, 66340, 66349, 66379, 66384, 66427, 66432, 66462, 66463, 66500, 66504, 66518, 66560, 66718, 66720, 66730, 66736, 66772, 66776, 66812, 66816, 66856, 66864, 66916, 66927, 66928, 67072, 67383, 67392, 67414, 67424, 67432, 67584, 67590, 67592, 67593, 67594, 67638, 67639, 67641, 67644, 67645, 67647, 67670, 67671, 67743, 67751, 67760, 67808, 67827, 67828, 67830, 67835, 67868, 67871, 67898, 67903, 67904, 68000, 68024, 68028, 68048, 68050, 68100, 68101, 68103, 68108, 68116, 68117, 68120, 68121, 68150, 68152, 68155, 68159, 68169, 68176, 68185, 68192, 68256, 68288, 68327, 68331, 68343, 68352, 68406, 68409, 68438, 68440, 68467, 68472, 68498, 68505, 68509, 68521, 68528, 68608, 68681, 68736, 68787, 68800, 68851, 68858, 68904, 68912, 68922, 69216, 69247, 69376, 69416, 69424, 69466, 69600, 69623, 69632, 69710, 69714, 69744, 69759, 69826, 69837, 69838, 69840, 69865, 69872, 69882, 69888, 69941, 69942, 69959, 69968, 70007, 70016, 70094, 70096, 70112, 70113, 70133, 70144, 70162, 70163, 70207, 70272, 70279, 70280, 70281, 70282, 70286, 70287, 70302, 70303, 70314, 70320, 70379, 70384, 70394, 70400, 70404, 70405, 70413, 70415, 70417, 70419, 70441, 70442, 70449, 70450, 70452, 70453, 70458, 70459, 70469, 70471, 70473, 70475, 70478, 70480, 70481, 70487, 70488, 70493, 70500, 70502, 70509, 70512, 70517, 70656, 70746, 70747, 70748, 70749, 70752, 70784, 70856, 70864, 70874, 71168, 71237, 71248, 71258, 71264, 71277, 71296, 71353, 71360, 71370, 71424, 71451, 71453, 71468, 71472, 71488, 71680, 71740, 71840, 71923, 71935, 71936, 72096, 72104, 72106, 72152, 72154, 72165, 72384, 72441, 72704, 72713, 72714, 72759, 72760, 72774, 72784, 72813, 72816, 72848, 72850, 72872, 72873, 72887, 72960, 72967, 72968, 72970, 72971, 73015, 73018, 73019, 73020, 73022, 73023, 73032, 73040, 73050, 73056, 73062, 73063, 73065, 73066, 73103, 73104, 73106, 73107, 73113, 73120, 73130, 73440, 73465, 73664, 73714, 73727, 74650, 74752, 74863, 74864, 74869, 74880, 75076, 92160, 92729, 92736, 92767, 92768, 92778, 92782, 92784, 92880, 92910, 92912, 92918, 92928, 92998, 93008, 93018, 93019, 93026, 93027, 93048, 93053, 93072, 93760, 93851, 93952, 94027, 94031, 94088, 94095, 94112, 113664, 113771, 113776, 113789, 113792, 113801, 113808, 113818, 113820, 113828, 119296, 119366, 119808, 119893, 119894, 119965, 119966, 119968, 119970, 119971, 119973, 119975, 119977, 119981, 119982, 119994, 119995, 119996, 119997, 120004, 120005, 120070, 120071, 120075, 120077, 120085, 120086, 120093, 120094, 120122, 120123, 120127, 120128, 120133, 120134, 120135, 120138, 120145, 120146, 120486, 120488, 120780, 120782, 120832, 122880, 122887, 122888, 122905, 122907, 122914, 122915, 122917, 122918, 122923, 123136, 123181, 123184, 123198, 123200, 123210, 123214, 123216, 123584, 123642, 123647, 123648, 124928, 125125, 125127, 125143, 125184, 125260, 125264, 125274, 125278, 125280, 126065, 126133, 126209, 126270, 126464, 126468, 126469, 126496, 126497, 126499, 126500, 126501, 126503, 126504, 126505, 126515, 126516, 126520, 126521, 126522, 126523, 126524, 126530, 126531, 126535, 126536, 126537, 126538, 126539, 126540, 126541, 126544, 126545, 126547, 126548, 126549, 126551, 126552, 126553, 126554, 126555, 126556, 126557, 126558, 126559, 126560, 126561, 126563, 126564, 126565, 126567, 126571, 126572, 126579, 126580, 126584, 126585, 126589, 126590, 126591, 126592, 126602, 126603, 126620, 126625, 126628, 126629, 126634, 126635, 126652, 126704, 126706, 129024, 129036, 129040, 129096, 129104, 129114, 129120, 129160, 129168, 129198, 917505, 917506, 917536, 917632, 917760, 918000 } + local t={ 0, 167, 168, 169, 170, 174, 175, 177, 178, 188, 191, 215, 216, 247, 248, 746, 748, 888, 890, 896, 900, 907, 908, 909, 910, 930, 931, 1328, 1329, 1367, 1369, 1419, 1421, 1424, 1425, 1480, 1488, 1515, 1519, 1525, 1536, 1565, 1566, 1806, 1807, 1867, 1869, 1970, 1984, 2043, 2045, 2094, 2096, 2111, 2112, 2140, 2142, 2143, 2144, 2155, 2208, 2229, 2230, 2248, 2259, 2436, 2437, 2445, 2447, 2449, 2451, 2473, 2474, 2481, 2482, 2483, 2486, 2490, 2492, 2501, 2503, 2505, 2507, 2511, 2519, 2520, 2524, 2526, 2527, 2532, 2534, 2559, 2561, 2564, 2565, 2571, 2575, 2577, 2579, 2601, 2602, 2609, 2610, 2612, 2613, 2615, 2616, 2618, 2620, 2621, 2622, 2627, 2631, 2633, 2635, 2638, 2641, 2642, 2649, 2653, 2654, 2655, 2662, 2679, 2689, 2692, 2693, 2702, 2703, 2706, 2707, 2729, 2730, 2737, 2738, 2740, 2741, 2746, 2748, 2758, 2759, 2762, 2763, 2766, 2768, 2769, 2784, 2788, 2790, 2802, 2809, 2816, 2817, 2820, 2821, 2829, 2831, 2833, 2835, 2857, 2858, 2865, 2866, 2868, 2869, 2874, 2876, 2885, 2887, 2889, 2891, 2894, 2901, 2904, 2908, 2910, 2911, 2916, 2918, 2936, 2946, 2948, 2949, 2955, 2958, 2961, 2962, 2966, 2969, 2971, 2972, 2973, 2974, 2976, 2979, 2981, 2984, 2987, 2990, 3002, 3006, 3011, 3014, 3017, 3018, 3022, 3024, 3025, 3031, 3032, 3046, 3067, 3072, 3085, 3086, 3089, 3090, 3113, 3114, 3130, 3133, 3141, 3142, 3145, 3146, 3150, 3157, 3159, 3160, 3163, 3168, 3172, 3174, 3184, 3191, 3213, 3214, 3217, 3218, 3241, 3242, 3252, 3253, 3258, 3260, 3269, 3270, 3273, 3274, 3278, 3285, 3287, 3294, 3295, 3296, 3300, 3302, 3312, 3313, 3315, 3328, 3341, 3342, 3345, 3346, 3397, 3398, 3401, 3402, 3408, 3412, 3428, 3430, 3456, 3457, 3460, 3461, 3479, 3482, 3506, 3507, 3516, 3517, 3518, 3520, 3527, 3530, 3531, 3535, 3541, 3542, 3543, 3544, 3552, 3558, 3568, 3570, 3573, 3585, 3643, 3647, 3676, 3713, 3715, 3716, 3717, 3718, 3723, 3724, 3748, 3749, 3750, 3751, 3774, 3776, 3781, 3782, 3783, 3784, 3790, 3792, 3802, 3804, 3808, 3840, 3912, 3913, 3949, 3953, 3992, 3993, 4029, 4030, 4045, 4046, 4059, 4096, 4294, 4295, 4296, 4301, 4302, 4304, 4352, 4608, 4681, 4682, 4686, 4688, 4695, 4696, 4697, 4698, 4702, 4704, 4745, 4746, 4750, 4752, 4785, 4786, 4790, 4792, 4799, 4800, 4801, 4802, 4806, 4808, 4823, 4824, 4881, 4882, 4886, 4888, 4955, 4957, 4989, 4992, 5018, 5024, 5110, 5112, 5118, 5120, 5121, 5760, 5789, 5792, 5881, 5888, 5901, 5902, 5909, 5920, 5943, 5952, 5972, 5984, 5997, 5998, 6001, 6002, 6004, 6016, 6110, 6112, 6122, 6128, 6138, 6144, 6159, 6160, 6170, 6176, 6265, 6272, 6315, 6400, 6431, 6432, 6444, 6448, 6460, 6464, 6465, 6468, 6510, 6512, 6517, 6528, 6572, 6576, 6602, 6608, 6619, 6622, 6684, 6686, 6751, 6752, 6781, 6783, 6794, 6800, 6810, 6816, 6830, 6832, 6849, 6912, 6988, 6992, 7037, 7040, 7156, 7164, 7224, 7227, 7242, 7245, 7305, 7312, 7355, 7357, 7368, 7376, 7419, 7424, 7674, 7675, 7958, 7960, 7966, 7968, 8006, 8008, 8014, 8016, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031, 8062, 8064, 8117, 8118, 8133, 8134, 8148, 8150, 8156, 8157, 8176, 8178, 8181, 8182, 8191, 8192, 8214, 8215, 8224, 8226, 8240, 8242, 8251, 8253, 8258, 8259, 8263, 8266, 8273, 8274, 8293, 8294, 8306, 8308, 8335, 8336, 8349, 8352, 8384, 8400, 8413, 8417, 8418, 8421, 8433, 8450, 8451, 8458, 8463, 8464, 8467, 8469, 8470, 8472, 8478, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8494, 8495, 8501, 8512, 8517, 8523, 8524, 8526, 8527, 8586, 8588, 8592, 8734, 8735, 8756, 8758, 8960, 8968, 8972, 8992, 8996, 9001, 9003, 9004, 9085, 9115, 9150, 9166, 9167, 9168, 9169, 9180, 9186, 9251, 9252, 9472, 9632, 9754, 9760, 10088, 10102, 10132, 11026, 11056, 11088, 11098, 11124, 11126, 11158, 11160, 11192, 11218, 11219, 11244, 11248, 11264, 11311, 11312, 11359, 11360, 11508, 11513, 11558, 11559, 11560, 11565, 11566, 11568, 11624, 11631, 11633, 11647, 11671, 11680, 11687, 11688, 11695, 11696, 11703, 11704, 11711, 11712, 11719, 11720, 11727, 11728, 11735, 11736, 11743, 11744, 11856, 11858, 11859, 12296, 12306, 12308, 12320, 12336, 12337, 12448, 12449, 12540, 12541, 42192, 42540, 42560, 42744, 42752, 42944, 42946, 42955, 42997, 43053, 43056, 43066, 43072, 43128, 43136, 43206, 43214, 43226, 43232, 43348, 43359, 43360, 43392, 43470, 43471, 43482, 43486, 43519, 43520, 43575, 43584, 43598, 43600, 43610, 43612, 43715, 43739, 43767, 43777, 43783, 43785, 43791, 43793, 43799, 43808, 43815, 43816, 43823, 43824, 43884, 43888, 44014, 44016, 44026, 55296, 57344, 64256, 64263, 64275, 64280, 64285, 64311, 64312, 64317, 64318, 64319, 64320, 64322, 64323, 64325, 64326, 64450, 64467, 64832, 64848, 64912, 64914, 64968, 65008, 65022, 65024, 65040, 65056, 65072, 65097, 65104, 65112, 65119, 65123, 65127, 65136, 65141, 65142, 65277, 65279, 65280, 65288, 65290, 65293, 65294, 65306, 65311, 65339, 65340, 65341, 65342, 65343, 65344, 65371, 65471, 65474, 65480, 65482, 65488, 65490, 65496, 65498, 65501, 65507, 65508, 65512, 65519, 65529, 65532, 65536, 65548, 65549, 65575, 65576, 65595, 65596, 65598, 65599, 65614, 65616, 65630, 65664, 65787, 65792, 65795, 65799, 65844, 65847, 65935, 65936, 65949, 65952, 65953, 66000, 66046, 66176, 66205, 66208, 66257, 66272, 66300, 66304, 66340, 66349, 66379, 66384, 66427, 66432, 66462, 66463, 66500, 66504, 66518, 66560, 66718, 66720, 66730, 66736, 66772, 66776, 66812, 66816, 66856, 66864, 66916, 66927, 66928, 67072, 67383, 67392, 67414, 67424, 67432, 67584, 67590, 67592, 67593, 67594, 67638, 67639, 67641, 67644, 67645, 67647, 67670, 67671, 67743, 67751, 67760, 67808, 67827, 67828, 67830, 67835, 67868, 67871, 67898, 67903, 67904, 68000, 68024, 68028, 68048, 68050, 68100, 68101, 68103, 68108, 68116, 68117, 68120, 68121, 68150, 68152, 68155, 68159, 68169, 68176, 68185, 68192, 68256, 68288, 68327, 68331, 68343, 68352, 68406, 68409, 68438, 68440, 68467, 68472, 68498, 68505, 68509, 68521, 68528, 68608, 68681, 68736, 68787, 68800, 68851, 68858, 68904, 68912, 68922, 69216, 69247, 69248, 69290, 69291, 69294, 69296, 69298, 69376, 69416, 69424, 69466, 69552, 69580, 69600, 69623, 69632, 69710, 69714, 69744, 69759, 69826, 69837, 69838, 69840, 69865, 69872, 69882, 69888, 69941, 69942, 69960, 69968, 70007, 70016, 70112, 70113, 70133, 70144, 70162, 70163, 70207, 70272, 70279, 70280, 70281, 70282, 70286, 70287, 70302, 70303, 70314, 70320, 70379, 70384, 70394, 70400, 70404, 70405, 70413, 70415, 70417, 70419, 70441, 70442, 70449, 70450, 70452, 70453, 70458, 70459, 70469, 70471, 70473, 70475, 70478, 70480, 70481, 70487, 70488, 70493, 70500, 70502, 70509, 70512, 70517, 70656, 70748, 70749, 70754, 70784, 70856, 70864, 70874, 71168, 71237, 71248, 71258, 71264, 71277, 71296, 71353, 71360, 71370, 71424, 71451, 71453, 71468, 71472, 71488, 71680, 71740, 71840, 71923, 71935, 71943, 71945, 71946, 71948, 71956, 71957, 71959, 71960, 71990, 71991, 71993, 71995, 72007, 72016, 72026, 72096, 72104, 72106, 72152, 72154, 72165, 72384, 72441, 72704, 72713, 72714, 72759, 72760, 72774, 72784, 72813, 72816, 72848, 72850, 72872, 72873, 72887, 72960, 72967, 72968, 72970, 72971, 73015, 73018, 73019, 73020, 73022, 73023, 73032, 73040, 73050, 73056, 73062, 73063, 73065, 73066, 73103, 73104, 73106, 73107, 73113, 73120, 73130, 73440, 73465, 73648, 73649, 73664, 73714, 73727, 74650, 74752, 74863, 74864, 74869, 74880, 75076, 92160, 92729, 92736, 92767, 92768, 92778, 92782, 92784, 92880, 92910, 92912, 92918, 92928, 92998, 93008, 93018, 93019, 93026, 93027, 93048, 93053, 93072, 93760, 93851, 93952, 94027, 94031, 94088, 94095, 94112, 113664, 113771, 113776, 113789, 113792, 113801, 113808, 113818, 113820, 113828, 119296, 119366, 119808, 119893, 119894, 119965, 119966, 119968, 119970, 119971, 119973, 119975, 119977, 119981, 119982, 119994, 119995, 119996, 119997, 120004, 120005, 120070, 120071, 120075, 120077, 120085, 120086, 120093, 120094, 120122, 120123, 120127, 120128, 120133, 120134, 120135, 120138, 120145, 120146, 120486, 120488, 120780, 120782, 120832, 122880, 122887, 122888, 122905, 122907, 122914, 122915, 122917, 122918, 122923, 123136, 123181, 123184, 123198, 123200, 123210, 123214, 123216, 123584, 123642, 123647, 123648, 124928, 125125, 125127, 125143, 125184, 125260, 125264, 125274, 125278, 125280, 126065, 126133, 126209, 126270, 126464, 126468, 126469, 126496, 126497, 126499, 126500, 126501, 126503, 126504, 126505, 126515, 126516, 126520, 126521, 126522, 126523, 126524, 126530, 126531, 126535, 126536, 126537, 126538, 126539, 126540, 126541, 126544, 126545, 126547, 126548, 126549, 126551, 126552, 126553, 126554, 126555, 126556, 126557, 126558, 126559, 126560, 126561, 126563, 126564, 126565, 126567, 126571, 126572, 126579, 126580, 126584, 126585, 126589, 126590, 126591, 126592, 126602, 126603, 126620, 126625, 126628, 126629, 126634, 126635, 126652, 126704, 126706, 129024, 129036, 129040, 129096, 129104, 129114, 129120, 129160, 129168, 129198, 129200, 129202, 129792, 129939, 129940, 129995, 130032, 130042, 917505, 917506, 917536, 917632, 917760, 918000 } local function rotate_in_uax50(i) local lo, hi = 1, #t while lo < hi do @@ -808,15 +791,44 @@ do end do + local cache_ver = 22 local nameonly, lower = file.nameonly, string.lower + local lfs = require"lfs" + local file_attributes = lfs.attributes + local load_cache, save_cache = ltjb.load_cache, ltjb.save_cache local function prepare_extra_data_base(tfmdata) if (not tfmdata) or (not tfmdata.filename) then return end local bname = tfmdata.psname or nameonly(tfmdata.filename) if not font_extra_basename[bname] then - ltjb.remove_cache("extra_" .. lower(bname)) -- remove cache - local dest = ltju.get_vmet_table(tfmdata, dest) - dest = list_rotate_glyphs(tfmdata, dest) - font_extra_basename[bname] = dest or {} + -- if the cache is present, read it + -- + local newtime = file_attributes(tfmdata.filename,"modification") + local v = "extra_" .. string.lower(bname) + local dest = load_cache( + v, + function (t) + return (t.lotf_version~=luaotfload.version) + or (t.version~=cache_ver) or (t.modtime~=newtime) + end + ) + -- if the cache is not found or outdated, save the cache + if dest then + font_extra_basename[bname] = dest[1] or {} + local vheight, vorigin = dest[1].vheight, dest[1].vorigin + local vhd, vod = vheight.default, vorigin.default + setmetatable(vheight, {__index = function () return vhd end } ) + setmetatable(vorigin, {__index = function () return vod end } ) + else + local dest = ltju.get_vmet_table(tfmdata, nil) + dest = list_rotate_glyphs(tfmdata, dest) + font_extra_basename[bname] = dest or {} + save_cache(v, + { modtime = newtime, + version = cache_ver, + lotf_version = luaotfload.version, + dest, + }) + end return bname end end @@ -825,14 +837,14 @@ do local bname = res.psname or nameonly(res.filename) local t = font_extra_basename[bname] if not t then bname = prepare_extra_data_base(res) end - font_extra_info[id] = t or font_extra_basename[bname] + font_extra_info[id] = t or font_extra_basename[bname] end end luatexbase.add_to_callback( 'luaotfload.patch_font', function (tfmdata) - -- these function is executed one time per one fontfile - prepare_extra_data_base(tfmdata); return tfmdata + -- these function is executed one time per one fontfile + prepare_extra_data_base(tfmdata); return tfmdata end, 'ltj.prepare_extra_data', 1) luatexbase.add_to_callback( @@ -893,7 +905,7 @@ luatexbase.add_to_callback( local t = font_getfont(fnum) if not t then return fmtable end for i,v in pairs(vert_form_table) do - if t.characters[v] then vform[i] = v end + if t.characters[v] then vform[i] = v end end if ltju.specified_feature(fnum, 'jpotf') then for i,v in pairs(vert_jpotf_table) do @@ -902,7 +914,7 @@ luatexbase.add_to_callback( end if not ltju.exist_feature(fnum, 'vert') and not ltju.exist_feature(fnum, 'vrt2') then -- 現在の (script, lang) で vert もvrt2 も有効にできない場合, - -- 全 (script,lang) の vert を強制的に適用 + -- 全 (script,lang) の vert を強制的に適用 ltju.loop_over_feat(t, vert_feat, function (i,k) vform[i] = vform[i] or k end, true) end -- vform の中身を vert 適用結果に変える @@ -910,7 +922,7 @@ luatexbase.add_to_callback( function (i,k) for j,w in pairs(vform) do if (i==j)and(w==k) then vform[j]=nil elseif w==i then vform[j] = k end - end + end end) return fmtable end, 'ltj.get_vert_form', 1 @@ -929,8 +941,8 @@ do if cidinfo and cidinfo.registry and cidinfo.ordering then local rd = ltjr_prepare_cid_font(cidinfo.registry, cidinfo.ordering) if rd then - local ru = rd.resources.unicodes -- defined by LuaTeX-ja - local rc = rd.characters + local ru = rd.resources.unicodes -- defined by LuaTeX-ja + local rc = rd.characters for i,v in pairs(tfmdata.characters) do local w = ru[cidinfo.ordering .. "." .. tostring(v.index)] if w then diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-kinsoku.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-kinsoku.lua deleted file mode 100644 index 1f277c90fa3..00000000000 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-kinsoku.lua +++ /dev/null @@ -1,1035 +0,0 @@ -return { - [0]=500, - { - ["shrink"]=26214, - ["shrink_order"]=0, - ["stretch"]=26214, - ["stretch_order"]=0, - ["width"]=0, - }, - { - ["shrink"]=65536, - ["shrink_order"]=0, - ["stretch"]=65536, - ["stretch_order"]=0, - ["width"]=157649, - }, - [256]=51, - [512]=52, - [768]=53, - [1024]=12295, - [1025]=19968, - [1026]=20108, - [1027]=19977, - [1028]=22235, - [1029]=20116, - [1030]=20845, - [1031]=19971, - [1032]=20843, - [1033]=20061, - [2097185]=10000, - [2097186]=10000, - [2097189]=500, - [2097190]=500, - [2097191]=10000, - [2097193]=10000, - [2097194]=500, - [2097195]=500, - [2097196]=10000, - [2097197]=10000, - [2097198]=10000, - [2097199]=500, - [2097210]=10000, - [2097211]=10000, - [2097215]=10000, - [2097245]=10000, - [2097322]=10000, - [2097330]=10000, - [2097331]=10000, - [2097332]=10000, - [2097335]=10000, - [2097337]=10000, - [2097338]=10000, - [2097339]=10000, - [2097872]=10000, - [2105369]=10000, - [2105373]=10000, - [2105381]=250, - [2105382]=250, - [2105404]=10000, - [2105415]=10000, - [2105416]=10000, - [2105417]=10000, - [2105634]=10000, - [2105874]=200, - [2107782]=10000, - [2109441]=10000, - [2109442]=10000, - [2109445]=10000, - [2109449]=10000, - [2109451]=10000, - [2109453]=10000, - [2109455]=10000, - [2109457]=10000, - [2109461]=10000, - [2109463]=10000, - [2109465]=10000, - [2109471]=10000, - [2109491]=10000, - [2109492]=10000, - [2109493]=10000, - [2109499]=10000, - [2109505]=150, - [2109507]=150, - [2109509]=150, - [2109511]=150, - [2109513]=150, - [2109539]=150, - [2109571]=150, - [2109573]=150, - [2109575]=150, - [2109582]=150, - [2109589]=150, - [2109590]=150, - [2109595]=10000, - [2109596]=10000, - [2109597]=10000, - [2109598]=10000, - [2109601]=150, - [2109603]=150, - [2109605]=150, - [2109607]=150, - [2109609]=150, - [2109635]=150, - [2109667]=150, - [2109669]=150, - [2109671]=150, - [2109678]=150, - [2109685]=150, - [2109686]=150, - [2109691]=10000, - [2109692]=10000, - [2109693]=10000, - [2109694]=10000, - [2109936]=150, - [2109937]=150, - [2109938]=150, - [2109939]=150, - [2109940]=150, - [2109941]=150, - [2109942]=150, - [2109943]=150, - [2109944]=150, - [2109945]=150, - [2109946]=150, - [2109947]=150, - [2109948]=150, - [2109949]=150, - [2109950]=150, - [2109951]=150, - [2162433]=10000, - [2162437]=200, - [2162438]=200, - [2162441]=10000, - [2162443]=200, - [2162444]=10000, - [2162445]=200, - [2162446]=10000, - [2162458]=10000, - [2162459]=10000, - [2162461]=200, - [2162463]=10000, - [2162493]=10000, - [2162525]=10000, - [2162528]=10000, - [2162529]=10000, - [2162531]=10000, - [2162532]=10000, - [2162590]=10000, - [2162591]=10000, - [4194339]=500, - [4194340]=500, - [4194344]=10000, - [4194395]=10000, - [4194400]=10000, - [4194465]=10000, - [4194475]=10000, - [4194495]=10000, - [4202520]=10000, - [4202524]=10000, - [4202668]=10000, - [4204933]=10000, - [4206600]=10000, - [4206602]=10000, - [4206604]=10000, - [4206606]=10000, - [4206608]=10000, - [4206612]=10000, - [4206614]=10000, - [4206616]=10000, - [4206621]=10000, - [4259587]=200, - [4259588]=200, - [4259592]=10000, - [4259643]=10000, - [4259648]=10000, - [4259675]=10000, - [4259679]=10000, - [4259682]=10000, - [6299648]=1, - [6299649]=1, - [6299650]=1, - [6299651]=1, - [6299652]=1, - [6299653]=1, - [6299654]=1, - [6299655]=1, - [6299656]=1, - [6299657]=1, - [6299658]=1, - [6299659]=1, - [6299660]=1, - [6299661]=1, - [6299662]=1, - [6299663]=1, - [6299664]=1, - [6299665]=1, - [6299666]=1, - [6299667]=1, - [6299668]=1, - [6299669]=1, - [6299670]=1, - [6299671]=1, - [6299672]=1, - [6299673]=1, - [6299674]=1, - [6299675]=1, - [6299676]=1, - [6299677]=1, - [6299678]=1, - [6299679]=1, - [6299680]=1, - [6299681]=1, - [6299682]=1, - [6299683]=1, - [6299684]=1, - [6299685]=1, - [6299686]=1, - [6299687]=1, - [6299688]=1, - [6299689]=1, - [6299690]=1, - [6299691]=1, - [6299692]=1, - [6299693]=1, - [6299694]=1, - [6299695]=1, - [6299696]=1, - [6299697]=1, - [6299698]=1, - [6299699]=1, - [6299700]=1, - [6299701]=1, - [6299702]=1, - [6299703]=1, - [6299704]=1, - [6299705]=1, - [6299706]=1, - [6299707]=1, - [6299708]=1, - [6299709]=1, - [6299710]=1, - [6299711]=1, - [6299712]=1, - [6299713]=1, - [6299714]=1, - [6299715]=1, - [6299716]=1, - [6299717]=1, - [6299718]=1, - [6299719]=1, - [6299720]=1, - [6299721]=1, - [6299722]=1, - [6299723]=1, - [6299724]=1, - [6299725]=1, - [6299726]=1, - [6299727]=1, - [6299728]=1, - [6299729]=1, - [6299730]=1, - [6299731]=1, - [6299732]=1, - [6299733]=1, - [6299734]=1, - [6299735]=1, - [6299736]=1, - [6299737]=1, - [6299738]=1, - [6299739]=1, - [6299740]=1, - [6299741]=1, - [6299742]=1, - [6299743]=1, - [6299744]=1, - [6299745]=1, - [6299746]=1, - [6299747]=1, - [6299748]=1, - [6299749]=1, - [6299750]=1, - [6299751]=1, - [6299752]=1, - [6299753]=1, - [6299754]=1, - [6299755]=1, - [6299756]=1, - [6299757]=1, - [6299758]=1, - [6299759]=1, - [6303744]=1, - [6303745]=1, - [6303746]=1, - [6303747]=1, - [6303748]=1, - [6303749]=1, - [6303750]=1, - [6303751]=1, - [6303752]=1, - [6303753]=1, - [6303754]=1, - [6303755]=1, - [6303756]=1, - [6303757]=1, - [6303758]=1, - [6303759]=1, - [6303760]=1, - [6303761]=1, - [6303762]=1, - [6303763]=1, - [6303764]=1, - [6303765]=1, - [6303766]=1, - [6303767]=1, - [6303768]=1, - [6303769]=1, - [6303770]=1, - [6303771]=1, - [6303772]=1, - [6303773]=1, - [6303774]=1, - [6303775]=1, - [6303776]=1, - [6303777]=1, - [6303778]=1, - [6303779]=1, - [6303780]=1, - [6303781]=1, - [6303782]=1, - [6303783]=1, - [6303784]=1, - [6303785]=1, - [6303786]=1, - [6303787]=1, - [6303788]=1, - [6303789]=1, - [6303790]=1, - [6303791]=1, - [6303792]=1, - [6303793]=1, - [6303794]=1, - [6303795]=1, - [6303796]=1, - [6303797]=1, - [6303798]=1, - [6303799]=1, - [6303800]=1, - [6303801]=1, - [6303802]=1, - [6303803]=1, - [6303804]=1, - [6303805]=1, - [6303806]=1, - [6303807]=1, - [6356736]=1, - [6356737]=1, - [6356738]=1, - [6356739]=1, - [6356740]=1, - [6356741]=1, - [6356742]=1, - [6356743]=1, - [6356744]=1, - [6356745]=1, - [6356746]=1, - [6356747]=1, - [6356748]=1, - [6356749]=1, - [6356750]=1, - [6356751]=1, - [6356752]=1, - [6356753]=1, - [6356754]=1, - [6356755]=1, - [6356756]=1, - [6356757]=1, - [6356758]=1, - [6356759]=1, - [6356760]=1, - [6356761]=1, - [6356762]=1, - [6356763]=1, - [6356764]=1, - [6356765]=1, - [6356766]=1, - [6356767]=1, - [6356768]=1, - [6356769]=1, - [6356770]=1, - [6356771]=1, - [6356772]=1, - [6356773]=1, - [6356774]=1, - [6356775]=1, - [6356776]=1, - [6356777]=1, - [6356778]=1, - [6356779]=1, - [6356780]=1, - [6356781]=1, - [6356782]=1, - [6356783]=1, - [6356784]=1, - [6356785]=1, - [6356786]=1, - [6356787]=1, - [6356788]=1, - [6356789]=1, - [6356790]=1, - [6356791]=1, - [6356792]=1, - [6356793]=1, - [6356794]=1, - [6356795]=1, - [6356796]=1, - [6356797]=1, - [6356798]=1, - [6356799]=1, - [6356800]=1, - [6356801]=1, - [6356802]=1, - [6356803]=1, - [6356804]=1, - [6356805]=1, - [6356806]=1, - [6356807]=1, - [6356808]=1, - [6356809]=1, - [6356810]=1, - [6356811]=1, - [6356812]=1, - [6356813]=1, - [6356814]=1, - [6356815]=1, - [6356816]=1, - [6356817]=1, - [6356818]=1, - [6356819]=1, - [6356820]=1, - [6356821]=1, - [6356822]=1, - [6356823]=1, - [6356824]=1, - [6356825]=1, - [6356826]=1, - [6356827]=1, - [6356828]=1, - [6356829]=1, - [6356830]=1, - [6356831]=1, - [6356832]=1, - [6356833]=1, - [6356834]=1, - [6356835]=1, - [6356836]=1, - [6356837]=1, - [6356838]=1, - [6356839]=1, - [6356840]=1, - [6356841]=1, - [6356842]=1, - [6356843]=1, - [6356844]=1, - [6356845]=1, - [6356846]=1, - [6356847]=1, - [6356848]=1, - [6356849]=1, - [6356850]=1, - [6356851]=1, - [6356852]=1, - [6356853]=1, - [6356854]=1, - [6356855]=1, - [6356856]=1, - [6356857]=1, - [6356858]=1, - [6356859]=1, - [6356860]=1, - [6356861]=1, - [6356862]=1, - [6356863]=1, - [6356864]=1, - [6356865]=1, - [6356866]=1, - [6356867]=1, - [6356868]=1, - [6356869]=1, - [6356870]=1, - [6356871]=1, - [6356872]=1, - [6356873]=1, - [6356874]=1, - [6356875]=1, - [6356876]=1, - [6356877]=1, - [6356878]=1, - [6356879]=1, - [6356880]=1, - [6356881]=1, - [6356882]=1, - [6356883]=1, - [6356884]=1, - [6356885]=1, - [6356886]=1, - [6356887]=1, - [6356888]=1, - [6356889]=1, - [6356890]=1, - [6356891]=1, - [6356892]=1, - [6356893]=1, - [6356894]=1, - [6356895]=1, - [6356896]=1, - [6356897]=1, - [6356898]=1, - [6356899]=1, - [6356900]=1, - [6356901]=1, - [6356902]=1, - [6356903]=1, - [6356904]=1, - [6356905]=1, - [6356906]=1, - [6356907]=1, - [6356908]=1, - [6356909]=1, - [6356910]=1, - [6356911]=1, - [6356912]=1, - [6356913]=1, - [6356914]=1, - [6356915]=1, - [6356916]=1, - [6356917]=1, - [6356918]=1, - [6356919]=1, - [6356920]=1, - [6356921]=1, - [6356922]=1, - [6356923]=1, - [6356924]=1, - [6356925]=1, - [6356926]=1, - [6356927]=1, - [6356928]=1, - [6356929]=1, - [6356930]=1, - [6356931]=1, - [6356932]=1, - [6356933]=1, - [6356934]=1, - [6356935]=1, - [6356936]=1, - [6356937]=1, - [6356938]=1, - [6356939]=1, - [6356940]=1, - [6356941]=1, - [6356942]=1, - [6356943]=1, - [6356944]=1, - [6356945]=1, - [6356946]=1, - [6356947]=1, - [6356948]=1, - [6356949]=1, - [6356950]=1, - [6356951]=1, - [6356952]=1, - [6356953]=1, - [6356954]=1, - [6356955]=1, - [6356956]=1, - [6356957]=1, - [6356958]=1, - [6356959]=1, - [6356960]=1, - [6356961]=1, - [6356962]=1, - [6356963]=1, - [6356964]=1, - [6356965]=1, - [6356966]=1, - [6356967]=1, - [6356968]=1, - [6356969]=1, - [6356970]=1, - [6356971]=1, - [6356972]=1, - [6356973]=1, - [6356974]=1, - [6356975]=1, - [8388608]=0, - [8388609]=0, - [8388610]=0, - [8388611]=0, - [8388612]=0, - [8388613]=0, - [8388614]=0, - [8388615]=0, - [8388616]=0, - [8388617]=0, - [8388618]=0, - [8388619]=0, - [8388620]=0, - [8388621]=0, - [8388622]=0, - [8388623]=0, - [8388624]=0, - [8388625]=0, - [8388626]=0, - [8388627]=0, - [8388628]=0, - [8388629]=0, - [8388630]=0, - [8388631]=0, - [8388632]=0, - [8388633]=0, - [8388634]=0, - [8388635]=0, - [8388636]=0, - [8388637]=0, - [8388638]=0, - [8388639]=0, - [8388640]=0, - [8388641]=0, - [8388642]=0, - [8388643]=0, - [8388644]=0, - [8388645]=0, - [8388646]=0, - [8388647]=2, - [8388648]=1, - [8388649]=2, - [8388650]=0, - [8388651]=0, - [8388652]=2, - [8388653]=0, - [8388654]=2, - [8388655]=0, - [8388656]=3, - [8388657]=3, - [8388658]=3, - [8388659]=3, - [8388660]=3, - [8388661]=3, - [8388662]=3, - [8388663]=3, - [8388664]=3, - [8388665]=3, - [8388666]=0, - [8388667]=2, - [8388668]=0, - [8388669]=0, - [8388670]=0, - [8388671]=0, - [8388672]=0, - [8388673]=3, - [8388674]=3, - [8388675]=3, - [8388676]=3, - [8388677]=3, - [8388678]=3, - [8388679]=3, - [8388680]=3, - [8388681]=3, - [8388682]=3, - [8388683]=3, - [8388684]=3, - [8388685]=3, - [8388686]=3, - [8388687]=3, - [8388688]=3, - [8388689]=3, - [8388690]=3, - [8388691]=3, - [8388692]=3, - [8388693]=3, - [8388694]=3, - [8388695]=3, - [8388696]=3, - [8388697]=3, - [8388698]=3, - [8388699]=1, - [8388700]=0, - [8388701]=2, - [8388702]=0, - [8388703]=0, - [8388704]=1, - [8388705]=3, - [8388706]=3, - [8388707]=3, - [8388708]=3, - [8388709]=3, - [8388710]=3, - [8388711]=3, - [8388712]=3, - [8388713]=3, - [8388714]=3, - [8388715]=3, - [8388716]=3, - [8388717]=3, - [8388718]=3, - [8388719]=3, - [8388720]=3, - [8388721]=3, - [8388722]=3, - [8388723]=3, - [8388724]=3, - [8388725]=3, - [8388726]=3, - [8388727]=3, - [8388728]=3, - [8388729]=3, - [8388730]=3, - [8388731]=0, - [8388732]=0, - [8388733]=0, - [8388734]=0, - [8388735]=0, - [8388736]=3, - [8388737]=3, - [8388738]=3, - [8388739]=3, - [8388740]=3, - [8388741]=3, - [8388742]=3, - [8388743]=3, - [8388744]=3, - [8388745]=3, - [8388746]=3, - [8388747]=3, - [8388748]=3, - [8388749]=3, - [8388750]=3, - [8388751]=3, - [8388752]=3, - [8388753]=3, - [8388754]=3, - [8388755]=3, - [8388756]=3, - [8388757]=3, - [8388758]=3, - [8388759]=3, - [8388760]=3, - [8388761]=3, - [8388762]=3, - [8388763]=3, - [8388764]=3, - [8388765]=3, - [8388766]=3, - [8388767]=3, - [8388768]=3, - [8388769]=1, - [8388770]=3, - [8388771]=3, - [8388772]=3, - [8388773]=0, - [8388774]=3, - [8388775]=3, - [8388776]=3, - [8388777]=3, - [8388778]=2, - [8388779]=1, - [8388780]=3, - [8388781]=3, - [8388782]=3, - [8388783]=3, - [8388784]=2, - [8388785]=3, - [8388786]=2, - [8388787]=2, - [8388788]=3, - [8388789]=3, - [8388790]=3, - [8388791]=3, - [8388792]=3, - [8388793]=2, - [8388794]=2, - [8388795]=2, - [8388796]=3, - [8388797]=3, - [8388798]=3, - [8388799]=1, - [8388800]=3, - [8388801]=3, - [8388802]=3, - [8388803]=3, - [8388804]=3, - [8388805]=3, - [8388806]=3, - [8388807]=3, - [8388808]=3, - [8388809]=3, - [8388810]=3, - [8388811]=3, - [8388812]=3, - [8388813]=3, - [8388814]=3, - [8388815]=3, - [8388816]=3, - [8388817]=3, - [8388818]=3, - [8388819]=3, - [8388820]=3, - [8388821]=3, - [8388822]=3, - [8388823]=3, - [8388824]=3, - [8388825]=3, - [8388826]=3, - [8388827]=3, - [8388828]=3, - [8388829]=3, - [8388830]=3, - [8388831]=3, - [8388832]=3, - [8388833]=3, - [8388834]=3, - [8388835]=3, - [8388836]=3, - [8388837]=3, - [8388838]=3, - [8388839]=3, - [8388840]=3, - [8388841]=3, - [8388842]=3, - [8388843]=3, - [8388844]=3, - [8388845]=3, - [8388846]=3, - [8388847]=3, - [8388848]=3, - [8388849]=3, - [8388850]=3, - [8388851]=3, - [8388852]=3, - [8388853]=3, - [8388854]=3, - [8388855]=3, - [8388856]=3, - [8388857]=3, - [8388858]=3, - [8388859]=3, - [8388860]=3, - [8388861]=3, - [8388862]=3, - [8388863]=3, - [8396820]=0, - [8396821]=0, - [8396824]=1, - [8396825]=2, - [8396828]=1, - [8396829]=2, - [8396838]=0, - [8396850]=2, - [8396851]=2, - [8396860]=2, - [8396871]=2, - [8396872]=2, - [8396873]=2, - [8396972]=1, - [8397090]=2, - [8398080]=0, - [8398081]=0, - [8398082]=0, - [8398083]=0, - [8398084]=0, - [8398085]=0, - [8398086]=0, - [8398087]=0, - [8398088]=0, - [8398089]=0, - [8398090]=0, - [8398091]=0, - [8398092]=0, - [8398093]=0, - [8398094]=0, - [8398095]=0, - [8398096]=0, - [8398097]=0, - [8398098]=0, - [8398099]=0, - [8398100]=0, - [8398101]=0, - [8398102]=0, - [8398103]=0, - [8398104]=0, - [8398105]=0, - [8398106]=0, - [8398107]=0, - [8398108]=0, - [8398109]=0, - [8398110]=0, - [8398111]=0, - [8398112]=0, - [8398113]=0, - [8398114]=0, - [8398115]=0, - [8398116]=0, - [8398117]=0, - [8398118]=0, - [8398119]=0, - [8398120]=0, - [8398121]=0, - [8398122]=0, - [8398123]=0, - [8398124]=0, - [8398125]=0, - [8398126]=0, - [8398127]=0, - [8398128]=0, - [8398129]=0, - [8398130]=0, - [8398131]=0, - [8398132]=0, - [8398133]=0, - [8398134]=0, - [8398135]=0, - [8398136]=0, - [8398137]=0, - [8398138]=0, - [8398139]=0, - [8398140]=0, - [8398141]=0, - [8398142]=0, - [8398143]=0, - [8398144]=0, - [8398145]=0, - [8398146]=0, - [8398147]=0, - [8398148]=0, - [8398149]=0, - [8398150]=0, - [8398151]=0, - [8398152]=0, - [8398153]=0, - [8398154]=0, - [8398155]=0, - [8398156]=0, - [8398157]=0, - [8398158]=0, - [8398159]=0, - [8398160]=0, - [8398161]=0, - [8398162]=0, - [8398163]=0, - [8398164]=0, - [8398165]=0, - [8398166]=0, - [8398167]=0, - [8398168]=0, - [8398169]=0, - [8398170]=0, - [8398171]=0, - [8398172]=0, - [8398173]=0, - [8398174]=0, - [8398175]=0, - [8398176]=0, - [8398177]=0, - [8398178]=0, - [8398179]=0, - [8398180]=0, - [8398181]=0, - [8398182]=0, - [8398183]=0, - [8398184]=0, - [8398185]=0, - [8398186]=0, - [8398187]=0, - [8398188]=0, - [8398189]=0, - [8398190]=0, - [8398191]=0, - [8398192]=0, - [8398193]=0, - [8398194]=0, - [8398195]=0, - [8398196]=0, - [8398197]=0, - [8398198]=0, - [8398199]=0, - [8398200]=0, - [8398201]=0, - [8398202]=0, - [8398203]=0, - [8398204]=0, - [8398205]=0, - [8398206]=0, - [8398207]=0, - [8399237]=1, - [8399238]=2, - [8400897]=2, - [8400898]=2, - [8400904]=1, - [8400905]=2, - [8400906]=1, - [8400907]=2, - [8400908]=1, - [8400909]=2, - [8400910]=1, - [8400911]=2, - [8400912]=1, - [8400913]=2, - [8400916]=1, - [8400917]=2, - [8400918]=1, - [8400919]=2, - [8400920]=1, - [8400921]=2, - [8400924]=0, - [8400925]=1, - [8400927]=2, - [8453896]=1, - [8453897]=2, - [8453900]=2, - [8453902]=2, - [8453915]=2, - [8453919]=2, - [8453947]=1, - [8453949]=2, - [8453979]=1, - [8453981]=2, - [8453982]=0, - [8453983]=1, - [8453984]=2, - [8453985]=2, - [8453986]=1, - [8453987]=2, - [8453988]=2, - [8454117]=0, -} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty b/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty index 8af066eee6e..ca774fe8cdc 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty @@ -83,6 +83,7 @@ \ltj@pkgpatch@im{unicode-math} \ltj@pkgpatch@im{siunitx} \ltj@pkgpatch@im{microtype} +\ltj@pkgpatch@im{everyshi} \RequirePackage{lltjp-geometry} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-lineskip.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-lineskip.lua index f5c439e559d..1fc6f7b2d37 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-lineskip.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-lineskip.lua @@ -1,15 +1,15 @@ -- -- ltj-lineskip.lua -- -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('direction'); local ltjd = luatexja.direction +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'direction'; local ltjd = luatexja.direction luatexja.lineskip = luatexja.lineskip or {} local to_direct = node.direct.todirect local ltjl = luatexja.lineskip -local id_glue = node.id('glue') -local id_penalty = node.id('penalty') -local id_hlist = node.id('hlist') +local id_glue = node.id 'glue' +local id_penalty = node.id 'penalty' +local id_hlist = node.id 'hlist' local setfield = node.direct.setfield local getfield = node.direct.getfield local getlist = node.direct.getlist @@ -46,71 +46,66 @@ function ltjl.setting(profiler, skip_method) end do - local traverse_id = node.direct.traverse_id - local function adjust_glue(nh) - local h = to_direct(nh) - local bw = tex.baselineskip.width - for x in traverse_id(id_glue, h) do - local xs = getsubtype(x) - if (xs==1) or (xs==2) then - local p, n = node_prev(x), node_next(x) - if p then - local pid = getid(p) - while (id_glue<=pid) and (pid<=id_penalty) and node_prev(p) do - p = node_prev(p); pid = getid(p) - end - if pid==id_hlist and getid(n)==id_hlist then - local normal = bw - getfield(p, 'depth') - getfield(n, 'height') - local lmin, adj = ltj_profiler(p, n, false, bw) - ltj_skip(lmin or normal, x, adj, normal, bw) - end +local traverse_id = node.direct.traverse_id +local function adjust_glue(nh) + local h = to_direct(nh) + local bw = tex.baselineskip.width + for x in traverse_id(id_glue, h) do + local xs = getsubtype(x) + if (xs==1) or (xs==2) then + local p, n = node_prev(x), node_next(x) + if p then + local pid = getid(p) + while (id_glue<=pid) and (pid<=id_penalty) and node_prev(p) do + p = node_prev(p); pid = getid(p) + end + if pid==id_hlist and getid(n)==id_hlist then + local normal = bw - getfield(p, 'depth') - getfield(n, 'height') + local lmin, adj = ltj_profiler(p, n, false, bw) + ltj_skip(lmin or normal, x, adj, normal, bw) end end - end - return true + end end - ltjb.add_to_callback('post_linebreak_filter', - adjust_glue, 'ltj.lineskip', 10000) + return true +end +ltjb.add_to_callback('post_linebreak_filter', adjust_glue, 'ltj.lineskip', 10000) end do - local p_dummy = ltjl.p_dummy - local make_dir_whatsit = luatexja.direction.make_dir_whatsit - local get_dir_count = luatexja.direction.get_dir_count - local node_write = node.direct.write +local p_dummy = ltjl.p_dummy +local make_dir_whatsit = luatexja.direction.make_dir_whatsit +local get_dir_count = luatexja.direction.get_dir_count +local node_write = node.direct.write - local function dir_adjust_append_vlist(b, loc, prev, mirrored) - local old_b = to_direct(b) - local new_b = loc=='box' and - make_dir_whatsit(old_b, old_b, get_dir_count(), 'append_vlist') or old_b - if prev > -65536000 then - local bw = tex.baselineskip.width - local normal = bw - prev - - getfield(new_b, mirrored and 'depth' or 'height') - local lmin, adj = nil, 0 - local tail = to_direct(tex.nest[tex.nest.ptr].tail) - if p_dummy~=ltj_profiler then - while tail and (id_glue<=getid(tail)) and (getid(tail)<=id_penalty) do - tail = node_prev(tail) +local function dir_adjust_append_vlist(b, loc, prev, mirrored) + local old_b = to_direct(b) + local new_b = loc=='box' and + make_dir_whatsit(old_b, old_b, get_dir_count(), 'append_vlist') or old_b + if prev > -65536000 then + local bw = tex.baselineskip.width + local normal = bw - prev - getfield(new_b, mirrored and 'depth' or 'height') + local lmin, adj = nil, 0 + local tail = to_direct(tex.nest[tex.nest.ptr].tail) + if p_dummy~=ltj_profiler then + while tail and (id_glue<=getid(tail)) and (getid(tail)<=id_penalty) do + tail = node_prev(tail) + end + end + if tail then + if getid(tail)==id_hlist and getid(new_b)==id_hlist then + if getfield(tail, 'depth')==prev then + lmin, adj = ltj_profiler(tail, new_b, mirrored, bw) end end - if tail then - if getid(tail)==id_hlist and getid(new_b)==id_hlist then - if getfield(tail, 'depth')==prev then - lmin, adj = ltj_profiler(tail, new_b, mirrored, bw) - end - end - end - local g = node_new(id_glue) - ltj_skip(lmin or normal, g, adj, normal, bw, loc) - node_write(g) end - node_write(new_b) - tex.prevdepth = getfield(new_b, mirrored and 'height' or 'depth') - return nil -- do nothing on tex side + local g = node_new(id_glue) + ltj_skip(lmin or normal, g, adj, normal, bw, loc); node_write(g) end - ltjb.add_to_callback('append_to_vlist_filter', - dir_adjust_append_vlist, - 'ltj.lineskip', 10000) + node_write(new_b) + tex.prevdepth = getfield(new_b, mirrored and 'height' or 'depth') + return nil -- do nothing on tex side +end +ltjb.add_to_callback('append_to_vlist_filter', dir_adjust_append_vlist, 'ltj.lineskip', 10000) end diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-lotf_aux.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-lotf_aux.lua index 2efafc06ed1..bd3a602e648 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-lotf_aux.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-lotf_aux.lua @@ -102,8 +102,11 @@ local function get_vmet_table(tfmdata, dest) if v.vheight~=default_vheight then t_vheight[i] = v.vheight / units end end end - setmetatable(t_vheight, {__index = function () return default_vheight / units end } ) - setmetatable(t_vorigin, {__index = function () return ascender / units end } ) + local vhd, vod = default_vheight / units, ascender/units + t_vheight.default = vhd + t_vorigin.default = vod + setmetatable(t_vheight, {__index = function () return vhd end } ) + setmetatable(t_vorigin, {__index = function () return vod end } ) dest = dest or {} dest.ind_to_uni = t_ind_to_uni dest.vorigin = t_vorigin -- designed size = 1.0 diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-math.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-math.lua index b6ef1a9dd37..2a7c0444c74 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-math.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-math.lua @@ -2,12 +2,12 @@ -- ltj-math.lua -- -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('direction'); local ltjd = luatexja.direction -luatexja.load_module('charrange'); local ltjc = luatexja.charrange -luatexja.load_module('jfont'); local ltjf = luatexja.jfont -luatexja.load_module('stack'); local ltjs = luatexja.stack -luatexja.load_module('setwidth'); local ltjw = luatexja.setwidth +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'direction'; local ltjd = luatexja.direction +luatexja.load_module 'charrange'; local ltjc = luatexja.charrange +luatexja.load_module 'jfont'; local ltjf = luatexja.jfont +luatexja.load_module 'stack'; local ltjs = luatexja.stack +luatexja.load_module 'setwidth'; local ltjw = luatexja.setwidth local setfield = node.direct.setfield local getfield = node.direct.getfield @@ -36,20 +36,20 @@ local attr_curjfnt = luatexbase.attributes['ltj@curjfnt'] local attr_jfam = luatexbase.attributes['jfam'] local attr_yablshift = luatexbase.attributes['ltj@yablshift'] -local id_glyph = node.id('glyph') -local id_hlist = node.id('hlist') -local id_vlist = node.id('vlist') -local id_mchar = node.id('math_char') -local id_sub_box = node.id('sub_box') -local id_radical = node.id('radical') -local id_choice = node.id('choice') -local id_accent = node.id('accent') -local id_style = node.id('style') -local id_frac = node.id('fraction') -local id_simple = node.id('noad') -local id_sub_mlist = node.id('sub_mlist') -local id_whatsit = node.id('whatsit') -local sid_user = node.subtype('user_defined') +local id_glyph = node.id 'glyph' +local id_hlist = node.id 'hlist' +local id_vlist = node.id 'vlist' +local id_mchar = node.id 'math_char' +local id_sub_box = node.id 'sub_box' +local id_radical = node.id 'radical' +local id_choice = node.id 'choice' +local id_accent = node.id 'accent' +local id_style = node.id 'style' +local id_frac = node.id 'fraction' +local id_simple = node.id 'noad' +local id_sub_mlist = node.id 'sub_mlist' +local id_whatsit = node.id 'whatsit' +local sid_user = node.subtype 'user_defined' local DIR = luatexja.userid_table.DIR local dir_node_auto = luatexja.dir_table.dir_node_auto @@ -66,56 +66,54 @@ local list_dir -- vcenter noad は軸に揃えるため,欧文ベースライン補正がかかる local function conv_vcenter(sb) - local h = getfield(sb, 'head');local hd = getlist(h) - if getid(hd)==id_whatsit and - getsubtype(hd)==sid_user and getfield(hd, 'user_id')==DIR then + local h = getfield(sb, 'head'); local hd = getlist(h) + if getid(hd)==id_whatsit and getsubtype(hd)==sid_user + and getfield(hd, 'user_id')==DIR then local d = node_next(hd) if getid(d)==id_vlist and has_attr(d, attr_dir)>=dir_node_auto then - node_free(hd); setfield(h, 'head', nil); node_free(h) - setfield(sb, 'head', d); set_attr(d, attr_icflag, 0) + node_free(hd); setfield(h, 'head', nil); node_free(h) + setfield(sb, 'head', d); set_attr(d, attr_icflag, 0) end end return sb end -local conv_jchar_to_hbox_A - +local cjhh_A -- sty : 0 (display or text), 1 (script), >=2 (scriptscript) local function conv_jchar_to_hbox(head, sty) for p in node_traverse(head) do local pid = getid(p) if pid == id_simple or pid == id_accent then - if getsubtype(p)==12 then - conv_vcenter(getfield(p, 'nucleus')) - else - setfield(p, 'nucleus', conv_jchar_to_hbox_A(getfield(p, 'nucleus'), sty)) - end - setfield(p, 'sub', conv_jchar_to_hbox_A(getfield(p, 'sub'), sty+1)) - setfield(p, 'sup', conv_jchar_to_hbox_A(getfield(p, 'sup'), sty+1)) + if getsubtype(p)==12 then + conv_vcenter(getfield(p, 'nucleus')) + else + setfield(p, 'nucleus', cjh_A(getfield(p, 'nucleus'), sty)) + end + setfield(p, 'sub', cjh_A(getfield(p, 'sub'), sty+1)) + setfield(p, 'sup', cjh_A(getfield(p, 'sup'), sty+1)) elseif pid == id_choice then - setfield(p, 'display', conv_jchar_to_hbox_A(getfield(p, 'display'), 0)) - setfield(p, 'text', conv_jchar_to_hbox_A(getfield(p, 'text'), 0)) - setfield(p, 'script', conv_jchar_to_hbox_A(getfield(p, 'script'), 1)) - setfield(p, 'scriptscript', conv_jchar_to_hbox_A(getfield(p, 'scriptscript'), 2)) + setfield(p, 'display', cjh_A(getfield(p, 'display'), 0)) + setfield(p, 'text', cjh_A(getfield(p, 'text'), 0)) + setfield(p, 'script', cjh_A(getfield(p, 'script'), 1)) + setfield(p, 'scriptscript', cjh_A(getfield(p, 'scriptscript'), 2)) elseif pid == id_frac then - setfield(p, 'num', conv_jchar_to_hbox_A(getfield(p, 'num'), sty+1)) - setfield(p, 'denom', conv_jchar_to_hbox_A(getfield(p, 'denom'), sty+1)) + setfield(p, 'num', cjh_A(getfield(p, 'num'), sty+1)) + setfield(p, 'denom', cjh_A(getfield(p, 'denom'), sty+1)) elseif pid == id_radical then - setfield(p, 'nucleus', conv_jchar_to_hbox_A(getfield(p, 'nucleus'), sty)) - setfield(p, 'sub', conv_jchar_to_hbox_A(getfield(p, 'sub'), sty+1)) - setfield(p, 'sup', conv_jchar_to_hbox_A(getfield(p, 'sup'), sty+1)) - if getfield(p, 'degree') then - setfield(p, 'degree', conv_jchar_to_hbox_A(getfield(p, 'degree'), sty + 1)) - end + setfield(p, 'nucleus', cjh_A(getfield(p, 'nucleus'), sty)) + setfield(p, 'sub', cjh_A(getfield(p, 'sub'), sty+1)) + setfield(p, 'sup', cjh_A(getfield(p, 'sup'), sty+1)) + if getfield(p, 'degree') then + setfield(p, 'degree', cjh_A(getfield(p, 'degree'), sty + 1)) + end elseif pid == id_style then - local ps = getfield(p, 'style') - if ps == "display'" or ps == 'display' - or ps == "text'" or ps == 'text' then - sty = 0 - elseif ps == "script'" or ps == 'script' then - sty = 1 - else sty = 2 - end + local ps = getfield(p, 'style') + if ps == "display'" or ps == 'display' or ps == "text'" or ps == 'text' then + sty = 0 + elseif ps == "script'" or ps == 'script' then + sty = 1 + else sty = 2 + end end end return head @@ -127,8 +125,7 @@ local MJSS = luatexja.stack_table_index.MJSS local capsule_glyph_math = ltjw.capsule_glyph_math local is_ucs_in_japanese_char = ltjc.is_ucs_in_japanese_char_direct -conv_jchar_to_hbox_A = -function (p, sty) +cjh_A = function (p, sty) if not p then return nil else local pid = getid(p) @@ -137,29 +134,24 @@ function (p, sty) setfield(p, 'head', conv_jchar_to_hbox(getfield(p, 'head'), sty)) end elseif pid == id_mchar then - local fam = has_attr(p, attr_jfam) or -1 - local pc = getchar(p) + local pc, fam = getchar (p), has_attr(p, attr_jfam) or -1 if (not is_math_letters[pc]) and is_ucs_in_japanese_char(p) and fam>=0 then local f = ltjs.get_stack_table(MJT + 0x100 * sty + fam, -1, tex_getcount('ltj@@stack')) if f ~= -1 then local q = node_new(id_sub_box) local r = node_new(id_glyph); setfield(r, 'next', nil) setfield(r, 'char', pc); setfield(r, 'font', f); setfield(r, 'subtype', 256) - local k = has_attr(r,attr_ykblshift) or 0 - set_attr(r, attr_ykblshift, 0) + local k = has_attr(r,attr_ykblshift) or 0; set_attr(r, attr_ykblshift, 0) -- ltj-setwidth 内で実際の位置補正はおこなうので,補正量を退避 local met = ltjf_font_metric_table[f] r = capsule_glyph_math(r, met, met.char_type[ltjf_find_char_class(pc, met)]); - setfield(q, 'head', r); node_free(p); p=q; - set_attr(r, attr_yablshift, k) + setfield(q, 'head', r); node_free(p); p=q; set_attr(r, attr_yablshift, k) end end elseif pid == id_sub_box and getfield(p, 'head') then -- \hbox で直に与えられた内容は上下位置を補正する必要はない - local h = getfield(p, 'head') - h = ltjd_make_dir_whatsit(h, h, list_dir, 'math') - setfield(p, 'head', h) - set_attr(h, attr_icflag, PROCESSED) + local h = getfield(p, 'head'); h = ltjd_make_dir_whatsit(h, h, list_dir, 'math') + setfield(p, 'head', h); set_attr(h, attr_icflag, PROCESSED) end end return p @@ -168,8 +160,7 @@ end do local function mlist_callback_ltja(n) local n = to_direct(n); list_dir = ltjd_get_dir_count() - if getid(n)==id_whatsit and getsubtype(n)==sid_user and - getfield(n, 'user_id') == DIR then + if getid(n)==id_whatsit and getsubtype(n)==sid_user and getfield(n, 'user_id') == DIR then local old_n = n; n = node_remove(n, n) node_free(old_n); if not n then return nil end end diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-otf.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-otf.lua index f0088944c2c..56c0154e34c 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-otf.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-otf.lua @@ -1,20 +1,20 @@ -- -- ltj-otf.lua -- -require('unicode') -require('lualibs') +require 'unicode' +require 'lualibs' -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('jfont'); local ltjf = luatexja.jfont -luatexja.load_module('rmlgbm'); local ltjr = luatexja.rmlgbm -luatexja.load_module('charrange'); local ltjc = luatexja.charrange -luatexja.load_module('direction'); local ltjd = luatexja.direction -luatexja.load_module('stack'); local ltjs = luatexja.stack -luatexja.load_module('lotf_aux'); local ltju = luatexja.lotf_aux +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'jfont'; local ltjf = luatexja.jfont +luatexja.load_module 'rmlgbm'; local ltjr = luatexja.rmlgbm +luatexja.load_module 'charrange'; local ltjc = luatexja.charrange +luatexja.load_module 'direction'; local ltjd = luatexja.direction +luatexja.load_module 'stack'; local ltjs = luatexja.stack +luatexja.load_module 'lotf_aux'; local ltju = luatexja.lotf_aux -local id_glyph = node.id('glyph') -local id_whatsit = node.id('whatsit') -local sid_user = node.subtype('user_defined') +local id_glyph = node.id 'glyph' +local id_whatsit = node.id 'whatsit' +local sid_user = node.subtype 'user_defined' local setfield = node.direct.setfield local getfield = node.direct.getfield @@ -22,10 +22,8 @@ local getid = node.direct.getid local getfont = node.direct.getfont local getchar = node.direct.getchar local getsubtype = node.direct.getsubtype - local to_node = node.direct.tonode local to_direct = node.direct.todirect - local node_new = node.direct.new local node_remove = node.direct.remove local node_next = node.direct.getnext @@ -37,7 +35,6 @@ local node_insert_after = node.direct.insert_after local node_write = node.direct.write local node_traverse_id = node.direct.traverse_id - local attr_curjfnt = luatexbase.attributes['ltj@curjfnt'] local attr_curtfnt = luatexbase.attributes['ltj@curtfnt'] local attr_yablshift = luatexbase.attributes['ltj@yablshift'] @@ -59,9 +56,9 @@ luatexja.userid_table.OTF = luatexbase.newuserwhatsitid('char_by_cid', 'luatexj local OTF = luatexja.userid_table.OTF local tex_get_attr = tex.getattribute -local cache_var = 2 -local cache_outdate_fn = function (t) return t.version~=cache_ver end -local ivd_aj1 = ltjb.load_cache('ltj-ivd_aj1',cache_outdate_fn) +local cache_ver = 3 +local ivd_aj1 = ltjb.load_cache('ltj-ivd_aj1', + function (t) return t.version~=cache_ver end) if not ivd_aj1 then -- make cache ivd_aj1 = require('ltj-ivd_aj1.lua') ltjb.save_cache_luc('ltj-ivd_aj1', ivd_aj1) @@ -73,13 +70,12 @@ local function get_ucs_from_rmlgbm(c) or ltjr_cidfont_data["Adobe-Japan1"].resources.unicodes["Japan1." .. tostring(c)]) or 0 if v>=0x200000 then -- table - local curjfnt = tex_get_attr((ltjd_get_dir_count()==dir_tate) - and attr_curtfnt or attr_curjfnt) + local curjfnt = tex_get_attr( + (ltjd_get_dir_count()==dir_tate) and attr_curtfnt or attr_curjfnt) local tfmdata = font_getfont(curjfnt) if tfmdata and tfmdata.resources then local base, ivs = v % 0x200000, 0xE00FF + math.floor(v/0x200000) - curjfnt = tfmdata.resources.variants - curjfnt = curjfnt and curjfnt[ivs] + curjfnt = tfmdata.resources.variants; curjfnt = curjfnt and curjfnt[ivs] return curjfnt and curjfnt[base] or base else return base end @@ -110,7 +106,7 @@ local function get_ucs_from_rmlgbm(c) -- CID が縦組用字形だった場合 return ltju.replace_vert_variant( tex_get_attr((ltjd_get_dir_count()==dir_tate) and attr_curtfnt or attr_curjfnt), - r) + r) end return r end @@ -120,10 +116,8 @@ end -- This whatsit node will be extracted to a glyph_node local function append_jglyph(char) local p = node_new(id_whatsit,sid_user) - setfield(p, 'user_id', OTF) - setfield(p, 'type', 100) - setfield(p, 'value', char) - node_write(p) + setfield(p, 'user_id', OTF); setfield(p, 'type', 100) + setfield(p, 'value', char); node_write(p) end local utf @@ -132,7 +126,7 @@ do if ltjd_get_dir_count()==dir_tate then ucs = ltju.replace_vert_variant( tex_get_attr((ltjd_get_dir_count()==dir_tate) and attr_curtfnt or attr_curjfnt), - ucs) + ucs) end return append_jglyph(ucs) end @@ -140,21 +134,19 @@ end local cid do + local ord = { + ['Japan1']=true, ['GB1']=true, ['CNS1']=true, ['Korea1']=true, ['KR']=true + } cid = function (key) if key==0 then return append_jglyph(0) end - local curjfnt = tex_get_attr((ltjd_get_dir_count()==dir_tate) - and attr_curtfnt or attr_curjfnt) + local curjfnt = tex_get_attr( + (ltjd_get_dir_count()==dir_tate) and attr_curtfnt or attr_curjfnt) local cidinfo = ltju.get_cidinfo(curjfnt) - if type(cidinfo)~="table" or - cidinfo.ordering ~= "Japan1" and - cidinfo.ordering ~= "GB1" and - cidinfo.ordering ~= "CNS1" and - cidinfo.ordering ~= "Korea1" and - cidinfo.ordering ~= "KR" then + if type(cidinfo)~="table" or not ord[cidinfo.ordering] then return append_jglyph(get_ucs_from_rmlgbm(key)) else - local char = ltjf_font_extra_info[curjfnt].ind_to_uni[key] or 0 - return append_jglyph(char) + local char = ltjf_font_extra_info[curjfnt].ind_to_uni[key] or 0 + return append_jglyph(char) end end end @@ -171,17 +163,12 @@ local function extract(head) if getsubtype(p)==sid_user then local puid = getfield(p, 'user_id') if puid==OTF then - --if puid==OTF or puid==VSR then local g = node_new(id_glyph) setfield(g, 'subtype', 0) - setfield(g, 'char', getfield(p, 'value')) - local v = has_attr(p, attr_curfnt); setfield(g, 'font',v) - --if puid==OTF then - setfield(g, 'lang', lang_ja) - set_attr(g, attr_kblshift, has_attr(p, attr_kblshift)) - --else - -- set_attr(g, attr_ablshift, has_attr(p, attr_ablshift)) - --end + setfield(g, 'char', getfield(p, 'value')) + local v = has_attr(p, attr_curfnt); setfield(g, 'font', v) + setfield(g, 'lang', lang_ja) + set_attr(g, attr_kblshift, has_attr(p, attr_kblshift)) head = node_insert_after(head, p, g) head = node_remove(head, p) node_free(p); p = g @@ -208,20 +195,20 @@ local function ind_to_uni(fmtable, fn) local t = ltjf_font_extra_info[fn]; t = t and t.ind_to_uni if t and cid.ordering == "Japan1" then for i, v in pairs(fmtable.chars) do - local j = string.match(i, "^AJ1%-([0-9]*)") - if j then - j = t[i] - if j then - fmtable.cid_char_type = fmtable.cid_char_type or {} - fmtable.cid_char_type[j] = v - end - end + local j = string.match(i, "^AJ1%-([0-9]*)") + if j then + j = t[i] + if j then + fmtable.cid_char_type = fmtable.cid_char_type or {} + fmtable.cid_char_type[j] = v + end + end end end return fmtable end luatexbase.add_to_callback("luatexja.define_jfont", - ind_to_uni, "ltj.otf.define_jfont", 1) + ind_to_uni, "ltj.otf.define_jfont", 1) -- 既に読み込まれているフォントに対しても,同じことをやらないといけない for fn, v in pairs(ltjf_font_metric_table) do ltjf_font_metric_table[fn] = ind_to_uni(v, fn) @@ -236,19 +223,18 @@ local function cid_set_char_class(arg, fmtable, char) end end luatexbase.add_to_callback("luatexja.find_char_class", - cid_set_char_class, "ltj.otf.find_char_class", 1) + cid_set_char_class, "ltj.otf.find_char_class", 1) --IVS local function enable_ivs() ltjb.package_warning('luatexja-otf', - 'luatexja.otf.enable_ivs() has now no effect.') + 'luatexja.otf.enable_ivs() has now no effect.') end local disable_ivs = enable_ivs luatexja.otf = { append_jglyph = append_jglyph, - enable_ivs = enable_ivs, -- 隠し機能: IVS - disable_ivs = disable_ivs, -- 隠し機能: IVS + enable_ivs = enable_ivs, disable_ivs = disable_ivs, cid = cid, utf = utf, } diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-pretreat.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-pretreat.lua index 695749ddf6d..073cc1ee398 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-pretreat.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-pretreat.lua @@ -2,11 +2,11 @@ -- ltj-pretreat.lua -- -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('charrange'); local ltjc = luatexja.charrange -luatexja.load_module('stack'); local ltjs = luatexja.stack -luatexja.load_module('jfont'); local ltjf = luatexja.jfont -luatexja.load_module('direction'); local ltjd = luatexja.direction +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'charrange'; local ltjc = luatexja.charrange +luatexja.load_module 'stack'; local ltjs = luatexja.stack +luatexja.load_module 'jfont'; local ltjf = luatexja.jfont +luatexja.load_module 'direction'; local ltjd = luatexja.direction local to_node = node.direct.tonode local to_direct = node.direct.todirect @@ -67,25 +67,23 @@ do local suppress_hyphenate_ja_aux = { [id_math] = function(p) return node_next(node_end_of_math(node_next(p))) end, [id_whatsit] = function(p) - if getsubtype(p)==sid_user then - local uid = getfield(p, 'user_id') - if uid==STCK then - wt[#wt+1] = p; node_remove(head, p) - elseif uid==DIR then - if has_attr(p, attr_icflag)<PROCESSED_BEGIN_FLAG then - ltjs.list_dir = has_attr(p, attr_dir) - else -- こっちのケースは通常使用では起こらない - wtd[#wtd+1] = p; node_remove(head, p) - end - end - end - return node_next(p) + if getsubtype(p)==sid_user then + local uid = getfield(p, 'user_id') + if uid==STCK then + wt[#wt+1] = p; node_remove(head, p) + elseif uid==DIR then + if has_attr(p, attr_icflag)<PROCESSED_BEGIN_FLAG then + ltjs.list_dir = has_attr(p, attr_dir) + else -- こっちのケースは通常使用では起こらない + wtd[#wtd+1] = p; node_remove(head, p) + end + end + end + return node_next(p) end, } setmetatable(suppress_hyphenate_ja_aux, - { - __index = function() return node_next end, - }) + { __index = function() return node_next end, }) local id_boundary = node.id('boundary') local node_new, insert_before = node.direct.new, node.direct.insert_before local setsubtype = node.direct.setsubtype or function(n,l) setfield(n,'subtype',l) end @@ -95,37 +93,37 @@ do for i = 1,#wt do wt[i]=nil end for i = 1,#wtd do wtd[i]=nil end for i,_ in pairs(ltjs_orig_char_table) do - ltjs_orig_char_table[i] = nil + ltjs_orig_char_table[i] = nil end ltjs.list_dir=ltjd_get_dir_count() do - local p = head - while p do - local pid, prev_chartype = getid(p), 0 - -- prev_chartype: 0: not char 1: ALchar 2: JAchar - while pid==id_glyph do - local pc = getchar(p) - if has_attr(p, attr_icflag, 0) and is_ucs_in_japanese_char(p, pc) then - if prev_chartype==1 then + local p = head + while p do + local pid, prev_chartype = getid(p), 0 + -- prev_chartype: 0: not char 1: ALchar 2: JAchar + while pid==id_glyph do + local pc = getchar(p) + if has_attr(p, attr_icflag, 0) and is_ucs_in_japanese_char(p, pc) then + if prev_chartype==1 then local b = node_new(id_whatsit,sid_user); - setfield(b, 'type', 100); setfield(b, 'user_id', JA_AL_BDD); - insert_before(head, p, b) - end + setfield(b, 'type', 100); setfield(b, 'user_id', JA_AL_BDD); + insert_before(head, p, b) + end local pf = has_attr(p, attr_curjfnt) pf = (pf and pf>0 and pf) or getfont(p) - setfont(p, ltjf_replace_altfont(pf, pc)) - setlang(p, lang_ja) - ltjs_orig_char_table[p], prev_chartype = pc, 2 + setfont(p, ltjf_replace_altfont(pf, pc)) + setlang(p, lang_ja) + ltjs_orig_char_table[p], prev_chartype = pc, 2 elseif prev_chartype==2 then - local b = node_new(id_whatsit,sid_user); - setfield(b, 'type', 100); setfield(b, 'user_id', JA_AL_BDD); - insert_before(head, p, b); prev_chartype = 1 + local b = node_new(id_whatsit,sid_user); + setfield(b, 'type', 100); setfield(b, 'user_id', JA_AL_BDD); + insert_before(head, p, b); prev_chartype = 1 else prev_chartype = 1 - end - p = node_next(p); pid = getid(p) - end - p = (suppress_hyphenate_ja_aux[pid])(p) - end + end + p = node_next(p); pid = getid(p) + end + p = (suppress_hyphenate_ja_aux[pid])(p) + end end stop_time_measure('ltj_hyphenate'); start_time_measure('tex_hyphenate') lang.hyphenate(h, nil) @@ -133,10 +131,7 @@ do return h end - ltjb.add_to_callback('hyphenate', - function (head,tail) - return suppress_hyphenate_ja(head) - end,'ltj.hyphenate') + ltjb.add_to_callback('hyphenate', suppress_hyphenate_ja, 'ltj.hyphenate') end -- mode: true iff this function is called from hpack_filter @@ -153,20 +148,17 @@ local function set_box_stack_level(head, mode) for _,p in pairs(wt) do node_free(p) end end ltjs_report_stack_level(tex_getcount('ltj@@stack') + box_set) - for _,p in pairs(wtd) do - node_free(p) - end + for _,p in pairs(wtd) do node_free(p) end if ltjs.list_dir == dir_tate then for p in node.direct.traverse_id(id_glyph,to_direct(head)) do if has_attr(p, attr_icflag, 0) and getlang(p)==lang_ja then - local nf = ltjf_replace_altfont( has_attr(p, attr_curtfnt) or getfont(p) , ltjs_orig_char_table[p]) - setfont(p, nf) - if ltjf_font_metric_table[nf].vert_activated then - local pc = getchar(p) - pc = ltjf_font_metric_table[nf].vform[pc] + local nf = ltjf_replace_altfont( has_attr(p, attr_curtfnt) or getfont(p) , ltjs_orig_char_table[p]) + setfont(p, nf) + if ltjf_font_metric_table[nf].vert_activated then + local pc = getchar(p); pc = ltjf_font_metric_table[nf].vform[pc] if pc then setchar(p, pc) end - end - end + end + end end end return head @@ -176,11 +168,11 @@ end ltjb.add_to_callback('hpack_filter', function (head) return set_box_stack_level(head, true) - end,'ltj.set_stack_level',1) + end, 'ltj.set_stack_level', 1) ltjb.add_to_callback('pre_linebreak_filter', - function (head) - return set_box_stack_level(head, false) - end,'ltj.set_stack_level',1) + function (head) + return set_box_stack_level(head, false) + end, 'ltj.set_stack_level', 1) luatexja.pretreat = { set_box_stack_level = set_box_stack_level, diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-rmlgbm.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-rmlgbm.lua index bd3110fd7fa..53f5b0136ac 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-rmlgbm.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-rmlgbm.lua @@ -5,52 +5,52 @@ luatexja.load_module('base'); local ltjb = luatexja.base local cidfont_data = {} local cache_chars = {} -local cache_ver = 9 +local cache_ver = 10 local identifiers = fonts.hashes.identifiers local cid_reg, cid_order, cid_supp, cid_name local cid_replace = { ["Adobe-Japan1"] = {"UniJIS2004-UTF32", 23059, 7, - function (i) - if (231<=i and i<=632) or (8718<=i and i<=8719) - or (12063<=i and i<=12087) then - return 327680 -- 655360/2 - elseif 9758<=i and i<=9778 then - return 218453 -- 655360/3 - elseif 9738<=i and i<=9757 then - return 163840 -- 655360/4 - end - end}, + function (i) + if (231<=i and i<=632) or (8718<=i and i<=8719) + or (12063<=i and i<=12087) then + return 327680 -- 655360/2 + elseif 9758<=i and i<=9778 then + return 218453 -- 655360/3 + elseif 9738<=i and i<=9757 then + return 163840 -- 655360/4 + end + end}, -- 基本的には JIS X 0213:2004 に沿ったマッピング ["Adobe-Korea1"] = {"UniKS-UTF32", 18351, 2, - function (i) - if 8094<=i and i<=8100 then - return 327680 -- 655360/2 - end - end}, + function (i) + if 8094<=i and i<=8100 then + return 327680 -- 655360/2 + end + end}, ["Adobe-GB1"] = {"UniGB-UTF32", 30283, 5, - function (i) - if (814<=i and i<=939) or (i==7716) - or (22355<=i and i<=22357) then - return 327680 -- 655360/2 - end - end}, + function (i) + if (814<=i and i<=939) or (i==7716) + or (22355<=i and i<=22357) then + return 327680 -- 655360/2 + end + end}, ["Adobe-CNS1"] = {"UniCNS-UTF32", 19178, 7, - function (i) - if (13648<=i and i<=13742) or (i==17603) then - return 327680 -- 655360/2 - end - end}, + function (i) + if (13648<=i and i<=13742) or (i==17603) then + return 327680 -- 655360/2 + end + end}, ["Adobe-KR"] = {"UniAKR-UTF32", 22896, 9, - function (i) - if i==3057 then - return 655360*2 - elseif i==3058 then - return 655360*3 - elseif i==12235 or i==12236 then - return 163840 -- 655360/4 - end - end}, + function (i) + if i==3057 then + return 655360*2 + elseif i==3058 then + return 655360*3 + elseif i==12235 or i==12236 then + return 163840 -- 655360/4 + end + end}, } -- reading CID maps @@ -85,7 +85,7 @@ do else -- WMA l is in the form "<%x+>%s+<%x+>" bucs, eucs, cid = string.match(line, "<(%x+)>%s+<(%x+)>%s+<?(%x+)>?") cid = cid_dec(cid); - bucs = tonumber(bucs, 16); eucs = tonumber(eucs, 16) + bucs = tonumber(bucs, 16); eucs = tonumber(eucs, 16) for ucs = bucs, eucs do if not tt[ucs] then tt[ucs] = mke(cid); cidm[cid]=ucs @@ -133,12 +133,12 @@ do cidinfo = { ordering=cid_order, registry=cid_reg, supplement=kx[3] }, encodingbytes = 2, extend=1000, format = 'opentype', direction = 0, characters = {}, parameters = { - ascender = 655360*0.88, - descender = 655360*0.12, - }, - embedding = "no", cache = "yes", factor = 0, hfactor = 0, vfactor = 0, - tounicode = 1, - properties = { language = "dflt", script = "dflt" }, + ascender = 655360*0.88, + descender = 655360*0.12, + }, + embedding = "no", cache = "yes", factor = 0, hfactor = 0, vfactor = 0, + tounicode = 1, + properties = { language = "dflt", script = "dflt" }, } cidfont_data[cid_name] = k @@ -155,7 +155,7 @@ do for i,v in ipairs(cidmo) do if v==-1 then tth[pricode], cidmo[i], pricode - = { index = i }, pricode, pricode+1; + = { index = i }, pricode, pricode+1; end ttu[cid_order .. '.' .. i] = cidmo[i] end @@ -171,12 +171,10 @@ do } k.resources = { unicodes = ttu, - features = feat_dummy_vert, - sequences = seq_dummy_vert, + features = feat_dummy_vert, + sequences = seq_dummy_vert, } k.descriptions = {} - k.shared.rawdata.resources=k.resources - k.shared.rawdata.descriptions=k.descriptions cache_chars[cid_name] = { [655360] = k.characters } -- 縦書用字形 @@ -185,39 +183,38 @@ do for i = 0,kx[2] do cidm[i] = -1 end open_cmap_file(kx[1] .. "-V", increment, tonumber, entry) for i,v in pairs(tt) do - ttv[i] = cidmo[v.index] -- "unicode" of vertical variant + ttv[i] = cidmo[v.index] -- "unicode" of vertical variant end -- tounicode エントリ local cidp = {nil, nil}; tt, ttu, cidm = {}, {}, {} open_cmap_file(cid_name .. "-UCS2", - function(a) - a[2] = a[2] +1 ; return a - end, - function(a) - cidp[1] = string.upper(string.sub(a,1,string.len(a)-4)) - cidp[2] = tonumber(string.sub(a,-4),16) - return cidp - end, - function(a) return a[1] ..string.format('%04X',a[2]) end) + function(a) + a[2] = a[2] +1 ; return a + end, + function(a) + cidp[1] = string.upper(string.sub(a,1,string.len(a)-4)) + cidp[2] = tonumber(string.sub(a,-4),16) + return cidp + end, + function(a) return a[1] ..string.format('%04X',a[2]) end) -- tt は cid -> tounicode になっているので cidm -> tounicode に変換 local kxf = kx[4] for i,v in ipairs(cidmo) do - k.characters[v].width = kxf(i) - if v>=0xF0000 then - k.characters[v].tounicode = tt[i] - end + k.characters[v].width = kxf(i) + if v>=0xF0000 then + k.characters[v].tounicode = tt[i] + end end -- Save if k and k.characters and k.characters[46] then k.characters[46].width = math.floor(655360/14); end - ltjb.save_cache( "ltj-cid-auto-" .. string.lower(cid_name), - { - version = cache_ver, - k, - }) + ltjb.save_cache("ltj-cid-auto-" .. string.lower(cid_name), + {version = cache_ver, k}) + k.shared.rawdata.resources=k.resources + k.shared.rawdata.descriptions=k.descriptions end end @@ -235,11 +232,11 @@ do function (head, fnum) local fontdata = font_getfont(fnum) if head and luatexja.jfont.font_metric_table[fnum].vert_activated then - local vt = fontdata.ltj_vert_table - local nh = is_node(head) and to_direct(head) or head + local vt = fontdata.ltj_vert_table + local nh = is_node(head) and to_direct(head) or head for n in traverse_id(id_glyph, head) do if getfont(n)==fnum then - local c = getchar(n); setchar(n, vt[c] or c) + local c = getchar(n); setchar(n, vt[c] or c) end end return head, false @@ -251,8 +248,10 @@ end local function cid_cache_outdated(t) return t.version~=cache_ver end local function read_cid_font() local dat = ltjb.load_cache("ltj-cid-auto-" .. string.lower(cid_name), - cid_cache_outdated ) + cid_cache_outdated) if dat then + dat[1].shared.rawdata.resources=dat[1].resources + dat[1].shared.rawdata.descriptions=dat[1].descriptions cidfont_data[cid_name] = dat[1] cache_chars[cid_name] = { [655360] = cidfont_data[cid_name].characters } else @@ -305,7 +304,7 @@ local function mk_rml(name, size, id) cachedata.shared = {} local shared = cachedata.shared for k, v in pairs(s.shared) do - shared[k] = v + shared[k] = v end end @@ -318,13 +317,13 @@ local function mk_rml(name, size, id) -- character's default height (optimized for jfm-ujis.lua) local def_depth = 0.12 * size -- and depth. if not cache_chars[cid_name][size] then - cache_chars[cid_name][size] = {} - for k, v in pairs(cache_chars[cid_name][655360]) do - cache_chars[cid_name][size][k] = { - index = v.index, width = v.width * scale, - height = def_height, depth = def_depth, tounicode = v.tounicode, - } - end + cache_chars[cid_name][size] = {} + for k, v in pairs(cache_chars[cid_name][655360]) do + cache_chars[cid_name][size][k] = { + index = v.index, width = v.width * scale, + height = def_height, depth = def_depth, tounicode = v.tounicode, + } + end end fontdata.characters = cache_chars[cid_name][size] cachedata.characters = cache_chars[cid_name][size] @@ -333,15 +332,9 @@ local function mk_rml(name, size, id) -- other parameters do local parameters = {} - for k, v in pairs(s.parameters) do - parameters[k] = v * scale - end - fontdata.parameters = parameters - fontdata.size = size - fontdata.resources = s.resources - cachedata.parameters = parameters - cachedata.size = size - cachedata.resources = s.resources + for k, v in pairs(s.parameters) do parameters[k] = v * scale end + fontdata.parameters = parameters; fontdata.size = size; fontdata.resources = s.resources + cachedata.parameters = parameters; cachedata.size = size; cachedata.resources = s.resources end -- no embedding @@ -373,31 +366,31 @@ local function font_callback(name, size, id, fallback) local p = basename:find(":") local q = basename:find("/[BI][BI]?") if q and p and q<=p then - basename = basename:gsub('/[BI][BI]?', '', 1) - p = basename:find(":") + basename = basename:gsub('/[BI][BI]?', '', 1) + p = basename:find(":") end if p then - local xname = basename:sub(p+1) - p = 1 - while p do - local q = xname:find(";", p+1) or xname:len()+1 - if xname:sub(p, p+3)=='cid=' and q>p+4 then - s = xname:sub(p+4, q-1) - end - if xname:len()+1==q then p = nil else p = q + 1 end - end + local xname = basename:sub(p+1) + p = 1 + while p do + local q = xname:find(";", p+1) or xname:len()+1 + if xname:sub(p, p+3)=='cid=' and q>p+4 then + s = xname:sub(p+4, q-1) + end + if xname:len()+1==q then p = nil else p = q + 1 end + end end cid_reg, cid_order = string.match(s, "^(.-)%-(.-)%-(%d-)$") if not cid_reg then cid_reg, cid_order = string.match(s, "^(.-)%-(.-)$") end if not prepare_cid_font(cid_reg, cid_order) then - ltjb.package_error('luatexja', - "bad cid key `" .. s .. "'", - "I couldn't find any non-embedded font information for the CID\n" .. - '`' .. s .. "'. For now, I'll use `Adobe-Japan1-6'.\n".. - 'Please contact the LuaTeX-ja project team.') - cid_name = "Adobe-Japan1" + ltjb.package_error('luatexja', + "bad cid key `" .. s .. "'", + "I couldn't find any non-embedded font information for the CID\n" .. + '`' .. s .. "'. For now, I'll use `Adobe-Japan1-6'.\n".. + 'Please contact the LuaTeX-ja project team.') + cid_name = "Adobe-Japan1" end return mk_rml(basename, size, id) else diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua index 060b3226ad3..865e301f30b 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua @@ -3,12 +3,12 @@ -- luatexbase.provides_module({ name = 'luatexja.ruby', - date = '2018/09/29', + date = '2020-07-30', description = 'Ruby annotation', }) luatexja.ruby = {} -luatexja.load_module('stack'); local ltjs = luatexja.stack -luatexja.load_module('base'); local ltjb = luatexja.base +luatexja.load_module 'stack'; local ltjs = luatexja.stack +luatexja.load_module 'base'; local ltjb = luatexja.base local to_node = node.direct.tonode local to_direct = node.direct.todirect @@ -29,14 +29,14 @@ local node_copy, node_free, node_tail = node.direct.copy, node.direct.free, node local has_attr, set_attr = node.direct.has_attribute, node.direct.set_attribute local insert_before, insert_after = node.direct.insert_before, node.direct.insert_after -local id_hlist = node.id('hlist') -local id_vlist = node.id('vlist') -local id_rule = node.id('rule') -local id_whatsit = node.id('whatsit') -local id_glue = node.id('glue') -local id_kern = node.id('kern') -local id_penalty = node.id('penalty') -local sid_user = node.subtype('user_defined') +local id_hlist = node.id 'hlist' +local id_vlist = node.id 'vlist' +local id_rule = node.id 'rule' +local id_whatsit= node.id 'whatsit' +local id_glue = node.id 'glue' +local id_kern = node.id 'kern' +local id_penalty= node.id 'penalty' +local sid_user = node.subtype 'user_defined' local ltjs_get_stack_table = luatexja.stack.get_stack_table local id_pbox_w = 258 -- cluster which consists of a whatsit @@ -86,20 +86,20 @@ local function gauss(coef) local deg = #coef for i = 1, deg do if coef[i][i]==0 then - for j = i+1, deg do - if coef[j][i]~=0 then + for j = i+1, deg do + if coef[j][i]~=0 then coef[i], coef[j] = coef[j], coef[i]; break - end - end + end + end end for j = 1,deg do - local d = coef[i][i]; - if j~=i then - local e = coef[j][i] - for k = 1, deg+1 do coef[j][k] = coef[j][k] - e*coef[i][k]/d end - else - for k = 1, deg+1 do coef[i][k] = coef[i][k]/d end - end + local d = coef[i][i]; + if j~=i then + local e = coef[j][i] + for k = 1, deg+1 do coef[j][k] = coef[j][k] - e*coef[i][k]/d end + else + for k = 1, deg+1 do coef[i][k] = coef[i][k]/d end + end end end end @@ -150,33 +150,33 @@ do end function concat(f, b) if f then - if b then - local h, nh = getlist(f), getlist(b) - if getid(nh)==id_whatsit and getsubtype(nh)==sid_user then - nh=node_next(nh); node_free(node_prev(nh)) - end + if b then + local h, nh = getlist(f), getlist(b) + if getid(nh)==id_whatsit and getsubtype(nh)==sid_user then + nh=node_next(nh); node_free(node_prev(nh)) + end set_attr(nh, attr_icflag, - get_attr_icflag(nh) + PROCESSED_BEGIN_FLAG) - setfield(node_tail(h), 'next', nh) - setfield(f, 'head', nil); node_free(f) - setfield(b, 'head', nil); node_free(b) - local g = luatexja.jfmglue.main(h,false) - return node.direct.hpack(g) - else - return f - end + get_attr_icflag(nh) + PROCESSED_BEGIN_FLAG) + setfield(node_tail(h), 'next', nh) + setfield(f, 'head', nil); node_free(f) + setfield(b, 'head', nil); node_free(b) + local g = luatexja.jfmglue.main(h,false) + return node.direct.hpack(g) + else + return f + end elseif b then - return b + return b else - local h = node_new(id_hlist) - setfield(h, 'subtype', 0) - setfield(h, 'width', 0) - setfield(h, 'height', 0) - setfield(h, 'depth', 0) - setfield(h, 'glue_set', 0) - setfield(h, 'glue_order', 0) - setfield(h, 'head', nil) - return h + local h = node_new(id_hlist) + setfield(h, 'subtype', 0) + setfield(h, 'width', 0) + setfield(h, 'height', 0) + setfield(h, 'depth', 0) + setfield(h, 'glue_set', 0) + setfield(h, 'glue_order', 0) + setfield(h, 'head', nil) + return h end end end @@ -208,24 +208,24 @@ do local hh, hd = getfield(box, 'height'), getfield(box, 'depth') local hx = h while hx do - local hic = has_attr(hx, attr_icflag) or 0 - if (hic == KANJI_SKIP) or (hic == KANJI_SKIP_JFM) + local hic = has_attr(hx, attr_icflag) or 0 + if (hic == KANJI_SKIP) or (hic == KANJI_SKIP_JFM) or (hic == XKANJI_SKIP) or (hic == XKANJI_SKIP_JFM) or ((hic<=FROM_JFM+63) and (hic>=FROM_JFM)) then - -- この 5 種類の空白をのばす - if getid(hx) == id_kern then - local k = node_new(id_glue) - setglue(k, getfield(hx, 'kern'), round(middle*65536), 0, - 2, 0) - setfield(k, 'subtype', 0); - h = insert_after(h, hx, k); - h = node_remove(h, hx); node_free(hx); hx = k - else -- glue + -- この 5 種類の空白をのばす + if getid(hx) == id_kern then + local k = node_new(id_glue) + setglue(k, getfield(hx, 'kern'), round(middle*65536), 0, + 2, 0) + setfield(k, 'subtype', 0); + h = insert_after(h, hx, k); + h = node_remove(h, hx); node_free(hx); hx = k + else -- glue setglue(hx, getfield(hx, 'width'), round(middle*65536), 0, - 2, 0) - end - end - hx = node_next(hx) + 2, 0) + end + end + hx = node_next(hx) end -- 先頭の空白を挿入 local k = node_new(id_glue); @@ -281,25 +281,25 @@ function luatexja.ruby.texiface(rst, rtlr, rtlp) for i=1, #rtlr do node_free(rtlr[i]) end for i=1, #rtlp do node_free(rtlp[i]) end ltjb.package_error('luatexja-ruby', - 'Group count mismatch between the ruby and\n' .. - 'the body (' .. #rtlr .. ' != ' .. #rtlp .. ').', - '') + 'Group count mismatch between the ruby and\n' .. + 'the body (' .. #rtlr .. ' != ' .. #rtlp .. ').', + '') else local f = true for i = 1,#rtlr do - if getfield(rtlr[i], 'width') > getfield(rtlp[i], 'width') then - f = false; break - end + if getfield(rtlr[i], 'width') > getfield(rtlp[i], 'width') then + f = false; break + end end if f then -- モノルビ * n - local r,p = {true}, {true} - for i = 1,#rtlr do - r[1] = rtlr[i]; p[1] = rtlp[i]; texiface_low(rst, r, p) - end + local r,p = {true}, {true} + for i = 1,#rtlr do + r[1] = rtlr[i]; p[1] = rtlp[i]; texiface_low(rst, r, p) + end else - local w, wv = texiface_low(rst, rtlr, rtlp) - local id = make_uniq_id(w) - set_attr(wv, attr_ruby_id, id) + local w, wv = texiface_low(rst, rtlr, rtlp) + local id = make_uniq_id(w) + set_attr(wv, attr_ruby_id, id) end end end @@ -329,9 +329,9 @@ local function enlarge_parent(r, p, ppre, pmid, ppost, mapre, mapost, intmode) else -- intmode == 3 local n = min(mapre, mapost)*2 if n < sumprot then - pre_intrusion = n/2; post_intrusion = n/2 + pre_intrusion = n/2; post_intrusion = n/2 else - pre_intrusion = floor(sumprot/2); post_intrusion = sumprot - pre_intrusion + pre_intrusion = floor(sumprot/2); post_intrusion = sumprot - pre_intrusion end p = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion) pre_intrusion = min(mapre, pre_intrusion + round(ppre*getfield(p, 'glue_set')*65536)) @@ -350,7 +350,7 @@ end -- returned value: <new box>, <ruby width>, <post_intrusion> local max_margin local function new_ruby_box(r, p, ppre, pmid, ppost, - mapre, mapost, imode, rgap) + mapre, mapost, imode, rgap) local post_intrusion = 0 local intmode = imode%4 local rpre, rmid, rpost, rsmash @@ -366,19 +366,19 @@ local function new_ruby_box(r, p, ppre, pmid, ppost, local need_repack = false -- margin が大きくなりすぎた時の処理 if round(rpre*getfield(r, 'glue_set')*65536) > max_margin then - local ps = getlist(r); need_repack = true - setfield(ps, 'width', max_margin) + local ps = getlist(r); need_repack = true + setfield(ps, 'width', max_margin) setfield(ps, 'stretch', 1) -- 全く伸縮しないのも困る end if round(rpost*getfield(r, 'glue_set')*65536) > max_margin then - local ps = node_tail(getlist(r)); need_repack = true - setfield(ps, 'width', max_margin) + local ps = node_tail(getlist(r)); need_repack = true + setfield(ps, 'width', max_margin) setfield(ps, 'stretch', 1) -- 全く伸縮しないのも困る end if need_repack then - local rt = r - r = node.direct.hpack(getlist(r), getfield(r, 'width'), 'exactly') - setfield(rt, 'head', nil); node_free(rt); + local rt = r + r = node.direct.hpack(getlist(r), getfield(r, 'width'), 'exactly') + setfield(rt, 'head', nil); node_free(rt); end end local a, k = node_new(id_rule), node_new(id_kern, 1) @@ -429,8 +429,8 @@ local function pre_low_cal_box(w, cmp) for j = 1, 2*i do coef[i][j] = 1 end for j = 2*i+1, 2*cmp+1 do coef[i][j] = 0 end kf[i], coef[i][2*cmp+2] - = new_ruby_box(node_copy(nta), node_copy(ntb), - rtb[6], rtb[5], rtb[4], max_allow_pre, 0, intmode, rgap) + = new_ruby_box(node_copy(nta), node_copy(ntb), + rtb[6], rtb[5], rtb[4], max_allow_pre, 0, intmode, rgap) end node_free(nta); node_free(ntb) @@ -442,8 +442,8 @@ local function pre_low_cal_box(w, cmp) for j = 2*i, 2*cmp+1 do coef[cmp+i][j] = 1 end nta = concat(node_copy(rb[i]), nta); ntb = concat(node_copy(pb[i]), ntb) kf[cmp+i], coef[cmp+i][2*cmp+2] - = new_ruby_box(node_copy(nta), node_copy(ntb), - rtb[9], rtb[8], rtb[7], 0, max_allow_post, intmode, rgap) + = new_ruby_box(node_copy(nta), node_copy(ntb), + rtb[9], rtb[8], rtb[7], 0, max_allow_post, intmode, rgap) end -- ここで,nta, ntb には全 container を連結した box が入っているので @@ -497,9 +497,9 @@ local function pre_low_app_node(head, w, cmp, coef, ht, dp) set_attr(nta, attr_ruby, 2*i+1) -- glue if i~=cmp or not next_cluster_array[w] then - nt = node_new(id_glue); insert_after(head, nta, nt) + nt = node_new(id_glue); insert_after(head, nta, nt) else - nt = next_cluster_array[w] + nt = next_cluster_array[w] end setglue(nt, coef[i*2+1][2*cmp+2], 0, 0, 0, 0) set_attr(nt, attr_ruby, 2*i+2) @@ -557,10 +557,10 @@ do local function write_aux(wv, num) local id = has_attr(wv, attr_ruby_id) if id>0 and cache_handle then - cache_handle:write( - 'luatexja.ruby.old_break_info[' - .. tostring(id) .. ']=' .. num - .. '\n') + cache_handle:write( + 'luatexja.ruby.old_break_info[' + .. tostring(id) .. ']=' .. num + .. '\n') end end @@ -571,36 +571,36 @@ do local fn = has_attr(rs[#rs], attr_ruby) local wv = getfield(rw, 'value') if hn==1 then - if fn==2*cmp+2 then - local hn = node_tail(wv) - node_remove(wv, hn) - insert_after(ch, rs[1], hn) - set_attr(hn, attr_icflag, PROCESSED) - write_aux(wv, has_attr(hn, attr_ruby))-- 行中形 - else - local deg, hn = (fn-1)/2, wv - for i = 1, deg do hn = node_next(hn) end; - node_remove(wv, hn) - setfield(hn, 'next', nil) - insert_after(ch, rs[1], hn) - set_attr(hn, attr_icflag, PROCESSED) - write_aux(wv, has_attr(hn, attr_ruby)) - end + if fn==2*cmp+2 then + local hn = node_tail(wv) + node_remove(wv, hn) + insert_after(ch, rs[1], hn) + set_attr(hn, attr_icflag, PROCESSED) + write_aux(wv, has_attr(hn, attr_ruby))-- 行中形 + else + local deg, hn = (fn-1)/2, wv + for i = 1, deg do hn = node_next(hn) end; + node_remove(wv, hn) + setfield(hn, 'next', nil) + insert_after(ch, rs[1], hn) + set_attr(hn, attr_icflag, PROCESSED) + write_aux(wv, has_attr(hn, attr_ruby)) + end else - local deg, hn = max((hn-1)/2,2), wv - for i = 1, cmp+deg-1 do hn = node_next(hn) end - -- -1 is needed except the case hn = 3, - -- because a ending-line form is removed already from the list - node_remove(wv, hn); setfield(hn, 'next', nil) - insert_after(ch, rs[1], hn) - set_attr(hn, attr_icflag, PROCESSED) - if fn == 2*cmp-1 then - write_aux(wv, has_attr(hn, attr_ruby)) - end + local deg, hn = max((hn-1)/2,2), wv + for i = 1, cmp+deg-1 do hn = node_next(hn) end + -- -1 is needed except the case hn = 3, + -- because a ending-line form is removed already from the list + node_remove(wv, hn); setfield(hn, 'next', nil) + insert_after(ch, rs[1], hn) + set_attr(hn, attr_icflag, PROCESSED) + if fn == 2*cmp-1 then + write_aux(wv, has_attr(hn, attr_ruby)) + end end for i = 1,#rs do - local ri = rs[i] - ch = node_remove(ch, ri); node_free(ri); + local ri = rs[i] + ch = node_remove(ch, ri); node_free(ri); end -- cleanup if fn >= 2*cmp+1 then node_free(rw) end @@ -616,26 +616,26 @@ local function post_high_break(head) for i = 1, #rs do rs[i] = nil end local ha = getlist(h) while ha do - local hai = getid(ha) - local i = ((hai == id_glue and getsubtype(ha)==0) + local hai = getid(ha) + local i = ((hai == id_glue and getsubtype(ha)==0) or (hai == id_rule and getsubtype(ha)==0) or (hai == id_whatsit and getsubtype(ha)==sid_user and getfield(ha, 'user_id', RUBY_POST))) and has_attr(ha, attr_ruby) or 0 - if i==0 then + if i==0 then ha = node_next(ha) elseif i==1 then - setfield(h, 'head', post_lown(rs, rw, cmp, getlist(h))) - for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement - rs[1], rw = ha, nil; ha = node_next(ha) - elseif i==2 then - rw = ha - cmp = getfield(getfield(rw, 'value'), 'value') - local hb, hc = node_remove(getlist(h), rw) - setfield(h, 'head', hb); ha = hc - else -- i>=3 - rs[#rs+1] = ha; ha = node_next(ha) - end + setfield(h, 'head', post_lown(rs, rw, cmp, getlist(h))) + for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement + rs[1], rw = ha, nil; ha = node_next(ha) + elseif i==2 then + rw = ha + cmp = getfield(getfield(rw, 'value'), 'value') + local hb, hc = node_remove(getlist(h), rw) + setfield(h, 'head', hb); ha = hc + else -- i>=3 + rs[#rs+1] = ha; ha = node_next(ha) + end end setfield(h, 'head', post_lown(rs, rw, cmp, getlist(h))) end @@ -659,11 +659,11 @@ local function post_high_hbox(ahead) elseif i==1 then head = post_lown(rs, rw, cmp, head) for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement - rs[1], rw = ha, nil; ha = node_next(ha) + rs[1], rw = ha, nil; ha = node_next(ha) elseif i==2 then rw = ha - cmp = getfield(getfield(rw, 'value'), 'value') - head, ha = node_remove(head, rw) + cmp = getfield(getfield(rw, 'value'), 'value') + head, ha = node_remove(head, rw) else -- i >= 3 rs[#rs+1] = ha; ha = node_next(ha) end @@ -730,21 +730,21 @@ do local RIPOST = luatexja.stack_table_index.RIPOST local function whatsit_after_callback(s, Nq, Np) if not s and getfield(Nq.nuc, 'user_id') == RUBY_PRE then - if Np then - local last_glue = node_new(id_glue) - set_attr(last_glue, attr_icflag, 0) - insert_before(Nq.nuc, Np.first, last_glue) - Np.first = last_glue - next_cluster_array[Nq.nuc] = last_glue -- ルビ処理用のグルー - end + if Np then + local last_glue = node_new(id_glue) + set_attr(last_glue, attr_icflag, 0) + insert_before(Nq.nuc, Np.first, last_glue) + Np.first = last_glue + next_cluster_array[Nq.nuc] = last_glue -- ルビ処理用のグルー + end local nqnv = getfield(Nq.nuc, 'value') local x = node_next(node_next(nqnv)) for i = 2, getfield(nqnv, 'value') do x = node_next(node_next(x)) end Nq.last_char = luatexja.jfmglue.check_box_high(Nq, getlist(x), nil) luatexja.jfmglue.after_hlist(Nq) if Np and Np.id ~=id_pbox_w and type(Np.char)=='number' then - -- Np is a JAchar - local rm = has_attr(nqnv, attr_ruby_mode) + -- Np is a JAchar + local rm = has_attr(nqnv, attr_ruby_mode) if has_attr(nqnv, attr_ruby_maxpostp) < 0 then -- auto local p = round((ltjs.table_current_stack[RIPOST + Np.char] or 0) *has_attr(nqnv, attr_ruby)) @@ -761,19 +761,19 @@ do set_attr(nqnv, attr_ruby_maxpostp, p) end Np.prev_ruby = has_attr(getfield(Nq.nuc, 'value'), attr_ruby_id) - -- 前のクラスタがルビであったことのフラグ + -- 前のクラスタがルビであったことのフラグ else -- 直前が文字以外 - local nqnv = getfield(Nq.nuc, 'value') + local nqnv = getfield(Nq.nuc, 'value') if has_attr(nqnv, attr_ruby_maxpostp) < 0 then -- auto - set_attr(nqnv, attr_ruby_maxpostp, 0) - if has_attr(nqnv, attr_ruby_mode)%4 >= 2 then - set_attr(nqnv, attr_ruby_maxprep, 0) - end - end + set_attr(nqnv, attr_ruby_maxpostp, 0) + if has_attr(nqnv, attr_ruby_mode)%4 >= 2 then + set_attr(nqnv, attr_ruby_maxprep, 0) + end + end end - return true + return true else - return s + return s end end luatexbase.add_to_callback("luatexja.jfmglue.whatsit_after", whatsit_after_callback, diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua index 964d49e0635..372a0e04128 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua @@ -2,11 +2,11 @@ -- ltj-setwidth.lua -- -luatexja.load_module('base'); local ltjb = luatexja.base -luatexja.load_module('stack'); local ltjs = luatexja.stack -luatexja.load_module('jfont'); local ltjf = luatexja.jfont -luatexja.load_module('direction'); local ltjd = luatexja.direction -luatexja.load_module('lotf_aux'); local ltju = luatexja.lotf_aux +luatexja.load_module 'base'; local ltjb = luatexja.base +luatexja.load_module 'stack'; local ltjs = luatexja.stack +luatexja.load_module 'jfont'; local ltjf = luatexja.jfont +luatexja.load_module 'direction'; local ltjd = luatexja.direction +luatexja.load_module 'lotf_aux'; local ltju = luatexja.lotf_aux local setfield = node.direct.setfield local getfield = node.direct.getfield @@ -44,16 +44,16 @@ local node_insert_before = node.direct.insert_before local node_insert_after = node.direct.insert_after local round = tex.round -local id_glyph = node.id('glyph') -local id_kern = node.id('kern') -local id_hlist = node.id('hlist') -local id_vlist = node.id('vlist') -local id_rule = node.id('rule') -local id_math = node.id('math') -local id_whatsit = node.id('whatsit') -local sid_save = node.subtype('pdf_save') -local sid_restore = node.subtype('pdf_restore') -local sid_matrix = node.subtype('pdf_setmatrix') +local id_glyph = node.id 'glyph' +local id_kern = node.id 'kern' +local id_hlist = node.id 'hlist' +local id_vlist = node.id 'vlist' +local id_rule = node.id 'rule' +local id_math = node.id 'math' +local id_whatsit= node.id 'whatsit' +local sid_save = node.subtype 'pdf_save' +local sid_restore = node.subtype 'pdf_restore' +local sid_matrix = node.subtype 'pdf_setmatrix' local dir_tate = luatexja.dir_table.dir_tate local attr_ykblshift = luatexbase.attributes['ltj@ykblshift'] @@ -80,9 +80,9 @@ local ltjw = {} --export luatexja.setwidth = ltjw luatexbase.create_callback("luatexja.set_width", "data", - function (fstable, fmtable, char_data) - return fstable - end) + function (fstable, fmtable, char_data) + return fstable + end) local call_callback = luatexbase.call_callback local fshift = { down = 0, left = 0 } @@ -111,19 +111,19 @@ local function capsule_glyph_yoko(p, met, char_data, head, dir) if ht_diff == 0 and dp_diff ==0 then -- offset only set_attr(p, attr_icflag, PROCESSED) local xo, yo = getoffsets(p) - setoffsets(p, xo - fshift.left, yo - kbl - fshift.down) - return node_next(p), head, p + setoffsets(p, xo - fshift.left, yo - kbl - fshift.down) + return node_next(p), head, p elseif ht_diff >= 0 and dp_diff >=0 then -- rule - local box = node_new(id_rule,rule_subtype) + local box = node_new(id_rule,rule_subtype) local xo, yo = getoffsets(p) - setoffsets(p, xo, yo - kbl - fshift.down) - setwhd(box, 0, fheight - kbl, fdepth + kbl) - setdir(box, dir) - set_attr(box, attr_icflag, PACKED) - set_attr(p, attr_icflag, PROCESSED) - head = p and node_insert_before(head, p, box) - or node_insert_after(head, node_tail(head), box) - return node_next(p), head, p, box + setoffsets(p, xo, yo - kbl - fshift.down) + setwhd(box, 0, fheight - kbl, fdepth + kbl) + setdir(box, dir) + set_attr(box, attr_icflag, PACKED) + set_attr(p, attr_icflag, PROCESSED) + head = p and node_insert_before(head, p, box) + or node_insert_after(head, node_tail(head), box) + return node_next(p), head, p, box end end @@ -133,7 +133,7 @@ local function capsule_glyph_yoko(p, met, char_data, head, dir) if char_data.round_threshold then local frac = pwidth / fwidth local quot = floor(frac+0.5) - if abs(frac-quot) <char_data.round_threshold then fwidth = fwidth * quot end + if abs(frac-quot) <char_data.round_threshold then fwidth = fwidth * quot end end end local xo, yo = getoffsets(p) @@ -190,12 +190,12 @@ local function capsule_glyph_tate(p, met, char_data, head, dir) local pf, pc = getfont(p), getchar(p) local feir = ltjf_font_extra_info[pf] if feir and feir.rotation and met.vert_activated then - if feir.rotation[pc] and (has_attr(p, attr_vert_ori) or 0)<=0 then - return capsule_glyph_tate_rot(p, met, char_data, head, dir, + if feir.rotation[pc] and (has_attr(p, attr_vert_ori) or 0)<=0 then + return capsule_glyph_tate_rot(p, met, char_data, head, dir, 0.5*(get_ascender(pf)-get_descender(pf))) - end - end - pwidth, ascender = feir.vheight[pc]*met.size, feir.vorigin[pc]*met.size + end + end + pwidth, ascender = feir.vheight[pc]*met.size, feir.vorigin[pc]*met.size end fwidth = fwidth or pwidth if pwidth>fwidth and char_data.round_threshold then @@ -263,21 +263,21 @@ function luatexja.setwidth.apply_ashift_math(head, last, attr_ablshift) for p in node_traverse(head) do local pid = getid(p) if p==last then - return + return elseif (has_attr(p, attr_icflag) or 0) ~= PROCESSED then - if pid==id_hlist or pid==id_vlist then - setfield(p, 'shift', getfield(p, 'shift') + (has_attr(p,attr_ablshift) or 0)) - elseif pid==id_rule then - local v = has_attr(p,attr_ablshift) or 0 - setfield(p, 'height', getfield(p, 'height')-v) - setfield(p, 'depth', getdepth(p)+v) - set_attr(p, attr_icflag, PROCESSED) - elseif pid==id_glyph then - -- 欧文文字; 和文文字は pid == id_hlist の場合で処理される - -- (see conv_jchar_to_hbox_A in ltj-math.lua) - setfield(p, 'yoffset', - getfield(p, 'yoffset') - (has_attr(p,attr_ablshift) or 0)) - end + if pid==id_hlist or pid==id_vlist then + setfield(p, 'shift', getfield(p, 'shift') + (has_attr(p,attr_ablshift) or 0)) + elseif pid==id_rule then + local v = has_attr(p,attr_ablshift) or 0 + setfield(p, 'height', getfield(p, 'height')-v) + setfield(p, 'depth', getdepth(p)+v) + set_attr(p, attr_icflag, PROCESSED) + elseif pid==id_glyph then + -- 欧文文字; 和文文字は pid == id_hlist の場合で処理される + -- (see conv_jchar_to_hbox_A in ltj-math.lua) + setfield(p, 'yoffset', + getfield(p, 'yoffset') - (has_attr(p,attr_ablshift) or 0)) + end set_attr(p, attr_icflag, PROCESSED) end end @@ -294,28 +294,28 @@ do if not head then return end local y_adjust, node_depth, adj_depth = 0, 0, 0 for lp in node_traverse_id(id_glyph, head) do - y_adjust = has_attr(lp,attr_ablshift) or 0 - local ld = getdepth(lp) - node_depth = max(ld + min(y_adjust, 0), node_depth) - adj_depth = (y_adjust>0) and max(ld + y_adjust, adj_depth) or adj_depth - setfield(lp, 'yoffset', getfield(lp, 'yoffset') - y_adjust) + y_adjust = has_attr(lp,attr_ablshift) or 0 + local ld = getdepth(lp) + node_depth = max(ld + min(y_adjust, 0), node_depth) + adj_depth = (y_adjust>0) and max(ld + y_adjust, adj_depth) or adj_depth + setfield(lp, 'yoffset', getfield(lp, 'yoffset') - y_adjust) end if adj_depth>node_depth then - local r = node_new(id_rule,rule_subtype) - setwhd(r, 0, 0, adj_depth); setdir(r, tex_dir) - set_attr(r, attr_icflag, PROCESSED) - if field=='post' then - node_insert_after(head, head, r) - else - setfield(disc, field, (node_insert_before(head, head, r))) - end + local r = node_new(id_rule,rule_subtype) + setwhd(r, 0, 0, adj_depth); setdir(r, tex_dir) + set_attr(r, attr_icflag, PROCESSED) + if field=='post' then + node_insert_after(head, head, r) + else + setfield(disc, field, (node_insert_before(head, head, r))) + end end end function luatexja.setwidth.apply_ashift_disc(d, is_dir_tate, dir) attr_ablshift = is_dir_tate and attr_tablshift or attr_yablshift disc, tex_dir = d, dir - ashift_disc_inner('pre') - ashift_disc_inner('post') - ashift_disc_inner('replace') + ashift_disc_inner 'pre' + ashift_disc_inner 'post' + ashift_disc_inner 'replace' end end diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua index abbc8e95c22..a0cd2e286ec 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua @@ -3,19 +3,19 @@ -- luatexbase.provides_module({ name = 'luatexja.stack', - date = '2019/09/26', + date = '2020-07-30', description = 'LuaTeX-ja stack system', }) luatexja.stack = {} local ltjs=luatexja.stack -luatexja.load_module('base'); local ltjb = luatexja.base +luatexja.load_module 'base'; local ltjb = luatexja.base -------------------------------------------------------------------------------- -- stack table (obeys TeX's grouping) -------------------------------------------------------------------------------- local node_new = node.new -local id_whatsit = node.id('whatsit') -local sid_user = node.subtype('user_defined') +local id_whatsit = node.id 'whatsit' +local sid_user = node.subtype 'user_defined' local STCK = luatexja.userid_table.STCK local fastcopy = table.fastcopy local setcount, getcount = tex.setcount, tex.getcount @@ -27,23 +27,23 @@ ltjs.charprop_stack_table = charprop_stack_table charprop_stack_table[0]={} local function get_stack_level() - local i = getcount('ltj@@stack') + local i = getcount 'ltj@@stack' local j = tex.currentgrouplevel - if j > getcount('ltj@@group@level') then + if j > getcount 'ltj@@group@level' then i = i+1 -- new stack level local gd = tex.globaldefs if gd~=0 then tex.globaldefs = 0 end -- 'tex.globaldefs = 0' is local even if \globaldefs > 0. setcount('ltj@@group@level', j) for k,v in pairs(charprop_stack_table) do -- clear the stack above i - if k>=i then charprop_stack_table[k]=nil end + if k>=i then charprop_stack_table[k]=nil end end charprop_stack_table[i] = fastcopy(charprop_stack_table[i-1]) setcount('ltj@@stack', i) if gd~=0 then tex.globaldefs = gd end if tex.nest[tex.nest.ptr].mode == -ltjs.hmode then -- rest. hmode のみ - local g = node_new(id_whatsit, sid_user) - g.user_id=STCK; g.type=100; g.value=j; node.write(g) + local g = node_new(id_whatsit, sid_user) + g.user_id=STCK; g.type=100; g.value=j; node.write(g) end end return i @@ -68,10 +68,10 @@ function ltjs.set_stack_perchar(m,lb,ub, getter) local p = tonumber((getter or scan_int)()) if p<lb or p>ub then ltjb.package_error('luatexja', - "invalid code (".. tostring(p) .. ")", - "The code should in the range "..tostring(lb) .. '..' .. - tostring(ub) .. ".\n" .. - "I'm going to use 0 instead of that illegal code value.") + "invalid code (".. tostring(p) .. ")", + "The code should in the range "..tostring(lb) .. '..' .. + tostring(ub) .. ".\n" .. + "I'm going to use 0 instead of that illegal code value.") p=0 end set_stack_table(m+ltjb.in_unicode(c, true), p) @@ -81,9 +81,9 @@ end function ltjs.set_stack_font(m,c,p) if type(c)~='number' or c<0 or c>255 then ltjb.package_error('luatexja', - "invalid family number (".. tostring(c) .. ")", - "The family number should in the range 0 .. 255.\n" .. - "I'm going to use 0 instead of that illegal family number.") + "invalid family number (".. tostring(c) .. ")", + "The family number should in the range 0 .. 255.\n" .. + "I'm going to use 0 instead of that illegal family number.") c=0 end set_stack_table(m+c, p) @@ -103,12 +103,12 @@ function ltjs.set_stack_skip(m,sp) charprop_stack_table[i][m].shrink_order = sp.shrink_order if luatexja.isglobal=='global' then for j,v in pairs(charprop_stack_table) do - if not charprop_stack_table[j][m] then charprop_stack_table[j][m] = {} end - charprop_stack_table[j][m].width = sp.width - charprop_stack_table[j][m].stretch = sp.stretch - charprop_stack_table[j][m].shrink = sp.shrink - charprop_stack_table[j][m].stretch_order = sp.stretch_order - charprop_stack_table[j][m].shrink_order = sp.shrink_order + if not charprop_stack_table[j][m] then charprop_stack_table[j][m] = {} end + charprop_stack_table[j][m].width = sp.width + charprop_stack_table[j][m].stretch = sp.stretch + charprop_stack_table[j][m].shrink = sp.shrink + charprop_stack_table[j][m].stretch_order = sp.stretch_order + charprop_stack_table[j][m].shrink_order = sp.shrink_order end end end diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-unicode-ccfix.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-unicode-ccfix.lua index 47f41f359ec..1e2234a8e68 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-unicode-ccfix.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-unicode-ccfix.lua @@ -1,5 +1,5 @@ -- Do not edit this file! --- Created from LineBreak.txt by ltj-unicode-ccfix_make.pl on 2019年 7月 8日 月曜日 06:15:17 JST. +-- Created from LineBreak.txt by ltj-unicode-ccfix_make.pl on 2020年 7月 4日 土曜日 11:27:40 JST. -- In case of errors, fix the Perl script instead. local tex_catcode = tex.setcatcode local tex_getcc = tex.getcatcode @@ -78,7 +78,7 @@ set_letter(0x3131,0x318E) set_letter(0x3190,0x3191) set_letter(0x3192,0x3195) set_letter(0x3196,0x319F) -set_letter(0x31A0,0x31BA) +set_letter(0x31A0,0x31BF) set_letter(0x31C0,0x31E3) set_letter(0x3200,0x321E) set_letter(0x3220,0x3229) @@ -91,10 +91,9 @@ set_letter(0x328A,0x32B0) set_letter(0x32B1,0x32BF) set_letter(0x32C0,0x32FF) set_letter(0x3300,0x33FF) -set_letter(0x3400,0x4DB5) -set_letter(0x4DB6,0x4DBF) -set_letter(0x4E00,0x9FEF) -set_letter(0x9FF0,0x9FFF) +set_letter(0x3400,0x4DBF) +set_letter(0x4E00,0x9FFC) +set_letter(0x9FFD,0x9FFF) set_letter(0xA000,0xA014) set_letter(0xA016,0xA48C) set_letter(0xA490,0xA4C6) @@ -144,7 +143,8 @@ set_letter(0xFFE2,0xFFE2) set_letter(0xFFE3,0xFFE3) set_letter(0xFFE4,0xFFE4) set_letter(0x17000,0x187F7) -set_letter(0x18800,0x18AF2) +set_letter(0x18800,0x18AFF) +set_letter(0x18D00,0x18D08) set_letter(0x1B000,0x1B0FF) set_letter(0x1B100,0x1B11E) set_letter(0x1B170,0x1B2FB) @@ -162,7 +162,8 @@ set_letter(0x1F0D1,0x1F0F5) set_letter(0x1F0F6,0x1F0FF) set_letter(0x1F10D,0x1F10F) set_letter(0x1F16D,0x1F16F) -set_letter(0x1F1AD,0x1F1E5) +set_letter(0x1F1AD,0x1F1AD) +set_letter(0x1F1AE,0x1F1E5) set_letter(0x1F200,0x1F202) set_letter(0x1F203,0x1F20F) set_letter(0x1F210,0x1F23B) @@ -211,12 +212,12 @@ set_letter(0x1F680,0x1F6A2) set_letter(0x1F6A4,0x1F6B3) set_letter(0x1F6B7,0x1F6BF) set_letter(0x1F6C1,0x1F6CB) -set_letter(0x1F6CD,0x1F6D5) -set_letter(0x1F6D6,0x1F6DF) +set_letter(0x1F6CD,0x1F6D7) +set_letter(0x1F6D8,0x1F6DF) set_letter(0x1F6E0,0x1F6EC) set_letter(0x1F6ED,0x1F6EF) -set_letter(0x1F6F0,0x1F6FA) -set_letter(0x1F6FB,0x1F6FF) +set_letter(0x1F6F0,0x1F6FC) +set_letter(0x1F6FD,0x1F6FF) set_letter(0x1F774,0x1F77F) set_letter(0x1F7D5,0x1F7D8) set_letter(0x1F7D9,0x1F7DF) @@ -226,42 +227,44 @@ set_letter(0x1F80C,0x1F80F) set_letter(0x1F848,0x1F84F) set_letter(0x1F85A,0x1F85F) set_letter(0x1F888,0x1F88F) -set_letter(0x1F8AE,0x1F8FF) -set_letter(0x1F90C,0x1F90C) +set_letter(0x1F8AE,0x1F8AF) +set_letter(0x1F8B0,0x1F8B1) +set_letter(0x1F8B2,0x1F8FF) set_letter(0x1F90D,0x1F90E) set_letter(0x1F910,0x1F917) set_letter(0x1F920,0x1F925) set_letter(0x1F927,0x1F92F) set_letter(0x1F93A,0x1F93B) -set_letter(0x1F93F,0x1F971) -set_letter(0x1F972,0x1F972) -set_letter(0x1F973,0x1F976) -set_letter(0x1F977,0x1F979) -set_letter(0x1F97A,0x1F9A2) -set_letter(0x1F9A3,0x1F9A4) -set_letter(0x1F9A5,0x1F9AA) -set_letter(0x1F9AB,0x1F9AD) -set_letter(0x1F9AE,0x1F9B4) +set_letter(0x1F93F,0x1F976) +set_letter(0x1F978,0x1F978) +set_letter(0x1F979,0x1F979) +set_letter(0x1F97A,0x1F9B4) set_letter(0x1F9B7,0x1F9B7) set_letter(0x1F9BA,0x1F9BA) -set_letter(0x1F9BC,0x1F9CA) -set_letter(0x1F9CB,0x1F9CC) +set_letter(0x1F9BC,0x1F9CB) +set_letter(0x1F9CC,0x1F9CC) set_letter(0x1F9D0,0x1F9D0) set_letter(0x1F9DE,0x1F9FF) set_letter(0x1FA54,0x1FA5F) set_letter(0x1FA60,0x1FA6D) set_letter(0x1FA6E,0x1FA6F) -set_letter(0x1FA70,0x1FA73) -set_letter(0x1FA74,0x1FA77) +set_letter(0x1FA70,0x1FA74) +set_letter(0x1FA75,0x1FA77) set_letter(0x1FA78,0x1FA7A) set_letter(0x1FA7B,0x1FA7F) -set_letter(0x1FA80,0x1FA82) -set_letter(0x1FA83,0x1FA8F) -set_letter(0x1FA90,0x1FA95) -set_letter(0x1FA96,0x1FAFF) -set_letter(0x1FB00,0x1FFFD) -set_letter(0x20000,0x2A6D6) -set_letter(0x2A6D7,0x2A6FF) +set_letter(0x1FA80,0x1FA86) +set_letter(0x1FA87,0x1FA8F) +set_letter(0x1FA90,0x1FAA8) +set_letter(0x1FAA9,0x1FAAF) +set_letter(0x1FAB0,0x1FAB6) +set_letter(0x1FAB7,0x1FABF) +set_letter(0x1FAC0,0x1FAC2) +set_letter(0x1FAC3,0x1FACF) +set_letter(0x1FAD0,0x1FAD6) +set_letter(0x1FAD7,0x1FAFF) +set_letter(0x1FC00,0x1FFFD) +set_letter(0x20000,0x2A6DD) +set_letter(0x2A6DE,0x2A6FF) set_letter(0x2A700,0x2B734) set_letter(0x2B735,0x2B73F) set_letter(0x2B740,0x2B81D) @@ -273,4 +276,5 @@ set_letter(0x2EBE1,0x2F7FF) set_letter(0x2F800,0x2FA1D) set_letter(0x2FA1E,0x2FA1F) set_letter(0x2FA20,0x2FFFD) -set_letter(0x30000,0x3FFFD) +set_letter(0x30000,0x3134A) +set_letter(0x3134B,0x3FFFD) diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjarticle.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjarticle.cls index f7c13345312..5cc447f5d64 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjarticle.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjarticle.cls @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjarticle} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja class] \RequirePackage{luatexja} \newcounter{@paper} @@ -126,6 +126,12 @@ \fi \DeclareOption{draft}{\setlength\overfullrule{5pt}} \DeclareOption{final}{\setlength\overfullrule{0pt}} +\newif\ifptexmin +\DeclareOption{ptexmin}{\ptexmintrue}% +\DeclareOption{disablejfam}{} +\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final} +\ProcessOptions\relax +\ifptexmin \directlua{luatexbase.add_to_callback('luatexja.load_jfm', function (ji, jn) ji.chars['parbdd'] = 0; return ji end, 'ltj.jclasses_load_jfm', 1)} @@ -135,10 +141,9 @@ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.962216] \ltj@stdgtfont:jfm=min;jfmvar=goth}{} \ltjglobalsetparameter{differentjfm=both} \directlua{luatexbase.remove_from_callback('luatexja.load_jfm', 'ltj.jclasses_load_jfm')} -\DeclareOption{disablejfam}{} -\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final} -\ProcessOptions\relax +\fi \input{ltjsize1\@ptsize.clo} + \def\Cjascale{0.962216} \if@stysize \setlength\columnsep{2\Cwd} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjbk10.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjbk10.clo index 64c2c8fc462..f4dbe032dc8 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjbk10.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjbk10.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjbk10.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xpt{15}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjbk11.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjbk11.clo index 76611c50ab5..748bd751879 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjbk11.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjbk11.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjbk11.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xipt{15.5}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjbk12.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjbk12.clo index c07a399c679..9e70985ccd5 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjbk12.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjbk12.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjbk12.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xiipt{16.5}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjbook.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjbook.cls index 02a58a4699f..21390be6a03 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjbook.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjbook.cls @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjbook} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja class] \RequirePackage{luatexja} \newcounter{@paper} @@ -136,6 +136,12 @@ \fi \DeclareOption{draft}{\setlength\overfullrule{5pt}} \DeclareOption{final}{\setlength\overfullrule{0pt}} +\newif\ifptexmin +\DeclareOption{ptexmin}{\ptexmintrue}% +\DeclareOption{disablejfam}{} +\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright} +\ProcessOptions\relax +\ifptexmin \directlua{luatexbase.add_to_callback('luatexja.load_jfm', function (ji, jn) ji.chars['parbdd'] = 0; return ji end, 'ltj.jclasses_load_jfm', 1)} @@ -145,10 +151,9 @@ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.962216] \ltj@stdgtfont:jfm=min;jfmvar=goth}{} \ltjglobalsetparameter{differentjfm=both} \directlua{luatexbase.remove_from_callback('luatexja.load_jfm', 'ltj.jclasses_load_jfm')} -\DeclareOption{disablejfam}{} -\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright} -\ProcessOptions\relax +\fi \input{ltjbk1\@ptsize.clo} + \def\Cjascale{0.962216} \if@stysize \setlength\columnsep{2\Cwd} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjreport.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjreport.cls index 94a61e3b390..109758df807 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjreport.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjreport.cls @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjreport} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja class] \RequirePackage{luatexja} \newcounter{@paper} @@ -134,6 +134,12 @@ \fi \DeclareOption{draft}{\setlength\overfullrule{5pt}} \DeclareOption{final}{\setlength\overfullrule{0pt}} +\newif\ifptexmin +\DeclareOption{ptexmin}{\ptexmintrue}% +\DeclareOption{disablejfam}{} +\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany} +\ProcessOptions\relax +\ifptexmin \directlua{luatexbase.add_to_callback('luatexja.load_jfm', function (ji, jn) ji.chars['parbdd'] = 0; return ji end, 'ltj.jclasses_load_jfm', 1)} @@ -143,10 +149,9 @@ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.962216] \ltj@stdgtfont:jfm=min;jfmvar=goth}{} \ltjglobalsetparameter{differentjfm=both} \directlua{luatexbase.remove_from_callback('luatexja.load_jfm', 'ltj.jclasses_load_jfm')} -\DeclareOption{disablejfam}{} -\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany} -\ProcessOptions\relax +\fi \input{ltjsize1\@ptsize.clo} + \def\Cjascale{0.962216} \if@stysize \setlength\columnsep{2\Cwd} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls index a5940f3f334..d8c4634397a 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls @@ -38,7 +38,7 @@ %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjsarticle} - [2019/11/23 ltjsclasses ] + [2020/05/30 ltjsclasses ] \def\jsc@clsname{ltjsarticle} \def\Cjascale{0.924715} \RequirePackage{luatexja} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjsbook.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjsbook.cls index 760c4d1b72a..5c8a3f2c76f 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjsbook.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjsbook.cls @@ -38,7 +38,7 @@ %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjsbook} - [2019/11/23 ltjsclasses ] + [2020/05/30 ltjsclasses ] \def\jsc@clsname{ltjsbook} \def\Cjascale{0.924715} \RequirePackage{luatexja} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjsize10.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjsize10.clo index a43efa4c6f7..549d1e0daf1 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjsize10.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjsize10.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjsize10.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xpt{15}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjsize11.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjsize11.clo index 05e1877bbc0..ef22a16c7a4 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjsize11.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjsize11.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjsize11.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xipt{15.5}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjsize12.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjsize12.clo index cff0eb1f4a5..e532731aebe 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjsize12.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjsize12.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjsize12.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xiipt{16.5}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjskiyou.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjskiyou.cls index b1af46b3d02..89d302864f9 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjskiyou.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjskiyou.cls @@ -38,7 +38,7 @@ %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjskiyou} - [2019/11/23 ltjsclasses ] + [2020/05/30 ltjsclasses ] \def\jsc@clsname{ltjskiyou} \def\Cjascale{0.924715} \RequirePackage{luatexja} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjspf.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjspf.cls index 8a78039e13f..d79d1b93305 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjspf.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjspf.cls @@ -38,7 +38,7 @@ %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjspf} - [2019/11/23 ltjsclasses ] + [2020/05/30 ltjsclasses ] \def\jsc@clsname{ltjspf} \def\Cjascale{0.903375} \RequirePackage{luatexja} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjsreport.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjsreport.cls index 1f0044376e3..1771f91a936 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjsreport.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjsreport.cls @@ -38,7 +38,7 @@ %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjsreport} - [2019/11/23 ltjsclasses ] + [2020/05/30 ltjsclasses ] \def\jsc@clsname{ltjsreport} \def\Cjascale{0.924715} \RequirePackage{luatexja} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjtarticle.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjtarticle.cls index e482ac49b4c..960a4832776 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjtarticle.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjtarticle.cls @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjtarticle} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja class] \RequirePackage{luatexja} \newcounter{@paper} @@ -102,17 +102,6 @@ \DeclareOption{tate}{% \tate\AtBeginDocument{\message{《縦組モード》}\adjustbaseline}% } -\AtEndOfPackageFile{everyshi}{% - \def\@EveryShipout@Output{% - \setbox8\vbox{% - \yoko - \@EveryShipout@Hook - \@EveryShipout@AtNextHook - \global\setbox\luatexoutputbox=\box\luatexoutputbox - }% - \gdef\@EveryShipout@AtNextHook{}% - \@EveryShipout@Org@Shipout\box\luatexoutputbox - }} \DeclareOption{oneside}{\@twosidefalse} \DeclareOption{twoside}{\@twosidetrue} \DeclareOption{onecolumn}{\@twocolumnfalse} @@ -137,6 +126,12 @@ \fi \DeclareOption{draft}{\setlength\overfullrule{5pt}} \DeclareOption{final}{\setlength\overfullrule{0pt}} +\newif\ifptexmin +\DeclareOption{ptexmin}{\ptexmintrue}% +\DeclareOption{disablejfam}{} +\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,tate} +\ProcessOptions\relax +\ifptexmin \directlua{luatexbase.add_to_callback('luatexja.load_jfm', function (ji, jn) ji.chars['parbdd'] = 0; return ji end, 'ltj.jclasses_load_jfm', 1)} @@ -146,10 +141,9 @@ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.962216] \ltj@stdgtfont:jfm=min;jfmvar=goth}{} \ltjglobalsetparameter{differentjfm=both} \directlua{luatexbase.remove_from_callback('luatexja.load_jfm', 'ltj.jclasses_load_jfm')} -\DeclareOption{disablejfam}{} -\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,tate} -\ProcessOptions\relax +\fi \input{ltjtsize1\@ptsize.clo} + \RequirePackage{lltjext} \def\Cjascale{0.962216} \if@stysize diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjtbk10.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjtbk10.clo index ddb2614341b..d1b2d818b47 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjtbk10.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjtbk10.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjtbk10.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xpt{17}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjtbk11.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjtbk11.clo index 43f937ad894..ff40594149c 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjtbk11.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjtbk11.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjtbk11.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xipt{17}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjtbk12.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjtbk12.clo index 36357c9428b..f07832ee7cd 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjtbk12.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjtbk12.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjtbk12.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xiipt{18}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjtbook.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjtbook.cls index 8bf5266fb84..386d2c2342b 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjtbook.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjtbook.cls @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjtbook} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja class] \RequirePackage{luatexja} \newcounter{@paper} @@ -105,17 +105,6 @@ \DeclareOption{tate}{% \tate\AtBeginDocument{\message{《縦組モード》}\adjustbaseline}% } -\AtEndOfPackageFile{everyshi}{% - \def\@EveryShipout@Output{% - \setbox8\vbox{% - \yoko - \@EveryShipout@Hook - \@EveryShipout@AtNextHook - \global\setbox\luatexoutputbox=\box\luatexoutputbox - }% - \gdef\@EveryShipout@AtNextHook{}% - \@EveryShipout@Org@Shipout\box\luatexoutputbox - }} \DeclareOption{oneside}{\@twosidefalse} \DeclareOption{twoside}{\@twosidetrue} \DeclareOption{onecolumn}{\@twocolumnfalse} @@ -147,6 +136,12 @@ \fi \DeclareOption{draft}{\setlength\overfullrule{5pt}} \DeclareOption{final}{\setlength\overfullrule{0pt}} +\newif\ifptexmin +\DeclareOption{ptexmin}{\ptexmintrue}% +\DeclareOption{disablejfam}{} +\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright,tate} +\ProcessOptions\relax +\ifptexmin \directlua{luatexbase.add_to_callback('luatexja.load_jfm', function (ji, jn) ji.chars['parbdd'] = 0; return ji end, 'ltj.jclasses_load_jfm', 1)} @@ -156,10 +151,9 @@ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.962216] \ltj@stdgtfont:jfm=min;jfmvar=goth}{} \ltjglobalsetparameter{differentjfm=both} \directlua{luatexbase.remove_from_callback('luatexja.load_jfm', 'ltj.jclasses_load_jfm')} -\DeclareOption{disablejfam}{} -\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright,tate} -\ProcessOptions\relax +\fi \input{ltjtbk1\@ptsize.clo} + \RequirePackage{lltjext} \def\Cjascale{0.962216} \if@stysize diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjtreport.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjtreport.cls index 0db8d980ee5..cd111927050 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjtreport.cls +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjtreport.cls @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesClass{ltjtreport} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja class] \RequirePackage{luatexja} \newcounter{@paper} @@ -104,17 +104,6 @@ \DeclareOption{tate}{% \tate\AtBeginDocument{\message{《縦組モード》}\adjustbaseline}% } -\AtEndOfPackageFile{everyshi}{% - \def\@EveryShipout@Output{% - \setbox8\vbox{% - \yoko - \@EveryShipout@Hook - \@EveryShipout@AtNextHook - \global\setbox\luatexoutputbox=\box\luatexoutputbox - }% - \gdef\@EveryShipout@AtNextHook{}% - \@EveryShipout@Org@Shipout\box\luatexoutputbox - }} \DeclareOption{oneside}{\@twosidefalse} \DeclareOption{twoside}{\@twosidetrue} \DeclareOption{onecolumn}{\@twocolumnfalse} @@ -145,6 +134,12 @@ \fi \DeclareOption{draft}{\setlength\overfullrule{5pt}} \DeclareOption{final}{\setlength\overfullrule{0pt}} +\newif\ifptexmin +\DeclareOption{ptexmin}{\ptexmintrue}% +\DeclareOption{disablejfam}{} +\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany,tate} +\ProcessOptions\relax +\ifptexmin \directlua{luatexbase.add_to_callback('luatexja.load_jfm', function (ji, jn) ji.chars['parbdd'] = 0; return ji end, 'ltj.jclasses_load_jfm', 1)} @@ -154,10 +149,9 @@ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.962216] \ltj@stdgtfont:jfm=min;jfmvar=goth}{} \ltjglobalsetparameter{differentjfm=both} \directlua{luatexbase.remove_from_callback('luatexja.load_jfm', 'ltj.jclasses_load_jfm')} -\DeclareOption{disablejfam}{} -\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany,tate} -\ProcessOptions\relax +\fi \input{ltjtsize1\@ptsize.clo} + \RequirePackage{lltjext} \def\Cjascale{0.962216} \if@stysize diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjtsize10.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjtsize10.clo index dbd375aed40..e07c73f0e7e 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjtsize10.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjtsize10.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjtsize10.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xpt{17}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjtsize11.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjtsize11.clo index 1e9e4543124..8396638d316 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjtsize11.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjtsize11.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjtsize11.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xipt{17}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjtsize12.clo b/Master/texmf-dist/tex/luatex/luatexja/ltjtsize12.clo index 83c23583cd8..db3bbc4c209 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltjtsize12.clo +++ b/Master/texmf-dist/tex/luatex/luatexja/ltjtsize12.clo @@ -23,7 +23,7 @@ %% File: ltjclasses.dtx \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltjtsize12.clo} - [2020/01/13 v1.8e-ltj-17 + [2020/07/27 v1.8e-ltj-19 Standard LuaLaTeX-ja file (size option)] \renewcommand{\normalsize}{% \@setfontsize\normalsize\@xiipt{18}% diff --git a/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty b/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty index c8e5449c9bb..4acc74cb327 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty @@ -65,7 +65,7 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-core}[2017/11/12 Core of LuaTeX-ja] + \ProvidesPackage{luatexja-core}[2020-07-27 Core of LuaTeX-ja] \fi %</LaTeX> %% Load prerequisite packages. @@ -78,8 +78,8 @@ \RequirePackage{ltxcmds} [2011/11/09] % v1.22 \RequirePackage{pdftexcmds} [2011/11/29] % v0.20 \RequirePackage{xkeyval} [2012/10/14] % v2.6b - \RequirePackage{atbegshi} \RequirePackage{etoolbox} + \RequirePackage{lltjp-atbegshi} \AtBeginShipoutInit \IfFileExists{everyhook.sty}{\RequirePackage{everyhook}\ltj@everyhook@availtrue}{} \else %<*!LaTeX> @@ -88,7 +88,7 @@ \input ltxcmds.sty \input pdftexcmds.sty \input xkeyval - \input atbegshi.sty + \input lltjp-atbegshi.sty \AtBeginShipoutInit \fi %</LaTeX> \endlinechar=-1 % @@ -426,7 +426,7 @@ \directlua{luatexja.jfmglue.diffmet_rule = math.two_paverage}\or \directlua{luatexja.jfmglue.diffmet_rule = math.two_add} \fi -}{\ltj@PackageError{luatexja}{invalid argument `#1' for `differentjfm'}{% +}{\@PackageError{luatexja}{invalid argument `#1' for `differentjfm'}{% Argument for `differentjfm' must be one of `large', `small', `average',^^J% `pleft', `pright', 'paverage' or `both'. }} % large, small, average, pleft, pright, paverage, both diff --git a/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua b/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua index 1b3bd81612b..988f51955e4 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua @@ -1,40 +1,30 @@ - -require('lualibs') - +require 'lualibs' ------------------------------------------------------------------------ local function load_lua(fn) local found = kpse.find_file(fn, 'tex') if not found then tex.error("LuaTeX-ja error: File `" .. fn .. "' not found") else - texio.write_nl('(' .. found .. ')') - dofile(found) + texio.write_nl('(' .. found .. ')'); dofile(found) end end luatexja.load_lua = load_lua -function luatexja.load_module(name) - require('ltj-' .. name.. '.lua') -end +function luatexja.load_module(name) require('ltj-' .. name.. '.lua') end do - local setfield = node.direct.setfield - luatexja.setglue = node.direct.setglue or - function(g,w,st,sh,sto,sho) - setfield(g,'width', w or 0) - setfield(g,'stretch',st or 0) - setfield(g,'shrink', sh or 0) - setfield(g,'stretch_order',sto or 0) - setfield(g,'shrink_order', sho or 0) - end - local getfield = node.direct.getfield - luatexja.getglue = node.direct.getglue or - function(g) - return getfield(g,'width'), - getfield(g,'stretch'), - getfield(g,'shrink'), - getfield(g,'stretch_order'), - getfield(g,'shrink_order') - end + local setfield = node.direct.setfield + luatexja.setglue = node.direct.setglue or + function(g,w,st,sh,sto,sho) + setfield(g,'width', w or 0); setfield(g,'stretch',st or 0); setfield(g,'shrink', sh or 0) + setfield(g,'stretch_order',sto or 0) + setfield(g,'shrink_order', sho or 0) + end + local getfield = node.direct.getfield + luatexja.getglue = node.direct.getglue or + function(g) + return getfield(g,'width'), getfield(g,'stretch'), getfield(g,'shrink'), + getfield(g,'stretch_order'), getfield(g,'shrink_order') + end end --- 以下は全ファイルで共有される定数 @@ -44,8 +34,6 @@ icflag_table.ITALIC = 1 icflag_table.PACKED = 2 icflag_table.KINSOKU = 3 icflag_table.FROM_JFM = 4 --- FROM_JFM: 4, 5, 6, 7, 8 →優先度高(伸びやすく,縮みやすい) --- 6 が標準 icflag_table.KANJI_SKIP = 68 -- = 4+64 icflag_table.KANJI_SKIP_JFM = 69 icflag_table.XKANJI_SKIP = 70 @@ -56,30 +44,30 @@ icflag_table.IC_PROCESSED = 74 icflag_table.BOXBDD = 75 icflag_table.PROCESSED_BEGIN_FLAG = 4096 -- sufficiently large power of 2 -local stack_table_index = {} -luatexja.stack_table_index = stack_table_index -stack_table_index.PRE = 0x200000 -- characterごと -stack_table_index.POST = 0x400000 -- characterごと -stack_table_index.KCAT = 0x600000 -- characterごと -stack_table_index.XSP = 0x800000 -- characterごと -stack_table_index.RIPRE = 0xA00000 -- characterごと,ruby pre -stack_table_index.RIPOST = 0xC00000 -- characterごと,ruby post -stack_table_index.JWP = 0 -- これだけ -stack_table_index.KSK = 1 -- これだけ -stack_table_index.XSK = 2 -- これだけ -stack_table_index.MJT = 0x100 -- 0--255 -stack_table_index.MJS = 0x200 -- 0--255 -stack_table_index.MJSS = 0x300 -- 0--255 -stack_table_index.KSJ = 0x400 -- 0--9 - -local userid_table = {} -luatexja.userid_table = userid_table -userid_table.IHB = luatexbase.newuserwhatsitid('inhibitglue', 'luatexja') -- \inhibitglue -userid_table.STCK = luatexbase.newuserwhatsitid('stack_marker', 'luatexja') -- スタック管理 -userid_table.BPAR = luatexbase.newuserwhatsitid('begin_par', 'luatexja') -- 「段落始め」 -userid_table.DIR = luatexbase.newuserwhatsitid('direction', 'luatexja') -- 組方向 -userid_table.BOXB = luatexbase.newuserwhatsitid('box_boundary', 'luatexja') -- 「ボックス始め・終わり」 -userid_table.JA_AL_BDD = luatexbase.newuserwhatsitid('ja_al_boundary', 'luatexja') +local stack_ind = {} +luatexja.stack_table_index = stack_ind +stack_ind.PRE = 0x200000 -- characterごと +stack_ind.POST = 0x400000 -- characterごと +stack_ind.KCAT = 0x600000 -- characterごと +stack_ind.XSP = 0x800000 -- characterごと +stack_ind.RIPRE = 0xA00000 -- characterごと,ruby pre +stack_ind.RIPOST = 0xC00000 -- characterごと,ruby post +stack_ind.JWP = 0 -- これだけ +stack_ind.KSK = 1 -- これだけ +stack_ind.XSK = 2 -- これだけ +stack_ind.MJT = 0x100 -- 0--255 +stack_ind.MJS = 0x200 -- 0--255 +stack_ind.MJSS = 0x300 -- 0--255 +stack_ind.KSJ = 0x400 -- 0--9 + +local uid_table = {} +luatexja.userid_table = uid_table +uid_table.IHB = luatexbase.newuserwhatsitid('inhibitglue', 'luatexja') -- \inhibitglue +uid_table.STCK = luatexbase.newuserwhatsitid('stack_marker', 'luatexja') -- スタック管理 +uid_table.BPAR = luatexbase.newuserwhatsitid('begin_par', 'luatexja') -- 「段落始め」 +uid_table.DIR = luatexbase.newuserwhatsitid('direction', 'luatexja') -- 組方向 +uid_table.BOXB = luatexbase.newuserwhatsitid('box_boundary', 'luatexja') -- 「ボックス始め・終わり」 +uid_table.JA_AL_BDD = luatexbase.newuserwhatsitid('ja_al_boundary', 'luatexja') local dir_table = {} luatexja.dir_table = dir_table @@ -90,28 +78,25 @@ dir_table.dir_math_mod = 8 dir_table.dir_node_auto = 128 -- 組方向を合わせるために自動で作られたもの dir_table.dir_node_manual = 256 -- 寸法代入によって作られたもの dir_table.dir_utod = dir_table.dir_tate + dir_table.dir_math_mod - -- 「縦数式ディレクション」 in pTeX + -- 「縦数式ディレクション」 in pTeX --- 定義終わり local load_module = luatexja.load_module -load_module('base'); local ltjb = luatexja.base -load_module('rmlgbm'); local ltjr = luatexja.rmlgbm -- must be 1st - +load_module 'base'; local ltjb = luatexja.base +load_module 'rmlgbm'; local ltjr = luatexja.rmlgbm -- must be 1st if luatexja_debug then load_module('debug') end - -load_module('lotf_aux'); local ltju = luatexja.lotf_aux -load_module('charrange'); local ltjc = luatexja.charrange -load_module('stack'); local ltjs = luatexja.stack -load_module('direction'); local ltjd = luatexja.direction -- +1 hlist +1 attr_list -load_module('lineskip'); local ltjl = luatexja.lineskip -- +1 hlist +1 attr_list -load_module('jfont'); local ltjf = luatexja.jfont -load_module('inputbuf'); local ltji = luatexja.inputbuf -load_module('pretreat'); local ltjp = luatexja.pretreat -load_module('setwidth'); local ltjw = luatexja.setwidth -load_module('jfmglue'); local ltjj = luatexja.jfmglue -- +1 glue +1 gs +1 attr_list -load_module('math'); local ltjm = luatexja.math -load_module('base'); local ltjb = luatexja.base - +load_module 'lotf_aux'; local ltju = luatexja.lotf_aux +load_module 'charrange'; local ltjc = luatexja.charrange +load_module 'stack'; local ltjs = luatexja.stack +load_module 'direction'; local ltjd = luatexja.direction -- +1 hlist +1 attr_list +load_module 'lineskip'; local ltjl = luatexja.lineskip -- +1 hlist +1 attr_list +load_module 'jfont'; local ltjf = luatexja.jfont +load_module 'inputbuf'; local ltji = luatexja.inputbuf +load_module 'pretreat'; local ltjp = luatexja.pretreat +load_module 'setwidth'; local ltjw = luatexja.setwidth +load_module 'jfmglue'; local ltjj = luatexja.jfmglue -- +1 glue +1 gs +1 attr_list +load_module 'math'; local ltjm = luatexja.math +load_module 'base'; local ltjb = luatexja.base local attr_jchar_class = luatexbase.attributes['ltj@charclass'] local attr_jchar_code = luatexbase.attributes['ltj@charcode'] @@ -122,24 +107,18 @@ local attr_uniqid = luatexbase.attributes['ltj@uniqid'] local attr_dir = luatexbase.attributes['ltj@dir'] local cat_lp = luatexbase.catcodetables['latex-package'] --- Three aux. functions, bollowed from tex.web +-- Three aux. functions, borrowed from tex.web -local unity=65536 local floor = math.floor - local function print_scaled(s) - local out='' - local delta=10 - if s<0 then - out=out..'-'; s=-s - end - out=out..tostring(floor(s/unity)) .. '.' - s=10*(s%unity)+5 + local out, delta = '', 10 + if s<0 then s, out = -s, out..'-' end + out=out..tostring(floor(s/65536)) .. '.' + s=10*(s%65536)+5 repeat - if delta>unity then s=s+32768-50000 end - out=out .. tostring(floor(s/unity)) - s=10*(s%unity) - delta=delta*10 + if delta>65536 then s=s+32768-50000 end + out=out .. tostring(floor(s/65536)) + s=10*(s%65536); delta=delta*10 until s<=delta return out end @@ -149,11 +128,8 @@ local function print_glue(d,order) local out=print_scaled(d) if order>0 then out=out..'fi' - while order>1 do - out=out..'l'; order=order-1 - end - else - out=out..'pt' + while order>1 do out=out..'l'; order=order-1 end + else out=out..'pt' end return out end @@ -178,55 +154,55 @@ end do local tex_getattr = tex.getattribute local function getattr(a) - local r = tex.getattribute(a) + local r = tex_getattr(a) return (r==-0x7FFFFFFF) and 0 or r end luatexja.unary_pars = { yalbaselineshift = function(t) - return print_scaled(getattr('ltj@yablshift'))..'pt' + return print_scaled(getattr('ltj@yablshift'))..'pt' end, yjabaselineshift = function(t) - return print_scaled(getattr('ltj@ykblshift'))..'pt' + return print_scaled(getattr('ltj@ykblshift'))..'pt' end, talbaselineshift = function(t) - return print_scaled(getattr('ltj@tablshift'))..'pt' + return print_scaled(getattr('ltj@tablshift'))..'pt' end, tjabaselineshift = function(t) - return print_scaled(getattr('ltj@tkblshift'))..'pt' + return print_scaled(getattr('ltj@tkblshift'))..'pt' end, kanjiskip = function(t) - return print_spec(ltjs.get_stack_skip(stack_table_index.KSK, t)) + return print_spec(ltjs.get_stack_skip(stack_ind.KSK, t)) end, xkanjiskip = function(t) - return print_spec(ltjs.get_stack_skip(stack_table_index.XSK, t)) + return print_spec(ltjs.get_stack_skip(stack_ind.XSK, t)) end, jcharwidowpenalty = function(t) - return ltjs.get_stack_table(stack_table_index.JWP, 0, t) + return ltjs.get_stack_table(stack_ind.JWP, 0, t) end, autospacing = function(t) - return getattr('ltj@autospc') + return getattr('ltj@autospc') end, autoxspacing = function(t) - return getattr('ltj@autoxspc') + return getattr('ltj@autoxspc') end, differentjfm = function(t) - local f, r = luatexja.jfmglue.diffmet_rule, '???' - if f == math.max then r = 'large' - elseif f == math.min then r = 'small' - elseif f == math.two_average then r = 'average' - elseif f == math.two_paverage then r = 'paverage' - elseif f == math.two_pleft then r = 'pleft' - elseif f == math.two_pright then r = 'pright' - elseif f == math.two_add then r = 'both' - end - return r + local f, r = luatexja.jfmglue.diffmet_rule, '???' + if f == math.max then r = 'large' + elseif f == math.min then r = 'small' + elseif f == math.two_average then r = 'average' + elseif f == math.two_paverage then r = 'paverage' + elseif f == math.two_pleft then r = 'pleft' + elseif f == math.two_pright then r = 'pright' + elseif f == math.two_add then r = 'both' + end + return r end, direction = function() - local v = ltjd.get_dir_count() - if math.abs(tex.nest[tex.nest.ptr].mode) == ltjs.mmode and v == dir_table.dir_tate then - v = dir_table.dir_utod - end - return v + local v = ltjd.get_dir_count() + if math.abs(tex.nest[tex.nest.ptr].mode) == ltjs.mmode and v == dir_table.dir_tate then + v = dir_table.dir_utod + end + return v end, adjustdir = ltjd.get_adjust_dir_count, } @@ -236,7 +212,7 @@ do function luatexja.ext_get_parameter_unary() local k= scan_arg() if unary_pars[k] then - tex.write(tostring(unary_pars[k](tex.getcount('ltj@@stack')))) + tex.write(tostring(unary_pars[k](tex.getcount('ltj@@stack')))) end ltjb.stop_time_measure('get_par') end @@ -247,44 +223,40 @@ end do luatexja.binary_pars = { jacharrange = function(c, t) - if type(c)~='number' or c<-1 or c>31*ltjc.ATTR_RANGE then - -- 0, -1 はエラーにしない(隠し) - ltjb.package_error('luatexja', - 'invalid character range number (' .. tostring(c) .. ')', - 'A character range number should be in the range 1..' - .. 31*ltjc.ATTR_RANGE .. ",\n".. - 'So I changed this one to ' .. 31*ltjc.ATTR_RANGE .. ".") - c=0 -- external range 217 == internal range 0 - elseif c==31*ltjc.ATTR_RANGE then c=0 - end + if type(c)~='number' or c<-1 or c>31*ltjc.ATTR_RANGE then + -- 0, -1 はエラーにしない(隠し) + ltjb.package_error('luatexja', + 'invalid character range number (' .. tostring(c) .. ')', + 'A character range number should be in the range 1..' + .. 31*ltjc.ATTR_RANGE .. ",\n".. + 'So I changed this one to ' .. 31*ltjc.ATTR_RANGE .. ".") + c=0 -- external range 217 == internal range 0 + elseif c==31*ltjc.ATTR_RANGE then c=0 + end -- 負の値は <U+0080 の文字の文字範囲,として出てくる.この時はいつも欧文文字なので 1 を返す - return (c<0) and 1 or ltjc.get_range_setting(c) + return (c<0) and 1 or ltjc.get_range_setting(c) end, prebreakpenalty = function(c, t) - return ltjs.get_stack_table(stack_table_index.PRE - + ltjb.in_unicode(c, true), 0, t) + return ltjs.get_stack_table(stack_ind.PRE + ltjb.in_unicode(c, true), 0, t) end, postbreakpenalty = function(c, t) - return ltjs.get_stack_table(stack_table_index.POST - + ltjb.in_unicode(c, true), 0, t) + return ltjs.get_stack_table(stack_ind.POST + ltjb.in_unicode(c, true), 0, t) end, kcatcode = function(c, t) - return ltjs.get_stack_table(stack_table_index.KCAT - + ltjb.in_unicode(c, false), 0, t) + return ltjs.get_stack_table(stack_ind.KCAT + ltjb.in_unicode(c, false), 0, t) end, chartorange = function(c, t) - return ltjc.char_to_range(ltjb.in_unicode(c, false)) + return ltjc.char_to_range(ltjb.in_unicode(c, false)) end, jaxspmode = function(c, t) - return ltjs.get_stack_table(stack_table_index.XSP - + ltjb.in_unicode(c, true), 3, t) + return ltjs.get_stack_table(stack_ind.XSP + ltjb.in_unicode(c, true), 3, t) end, boxdir = function(c, t) - if type(c)~='number' or c<0 or c>65535 then + if type(c)~='number' or c<0 or c>65535 then ltjb.package_error('luatexja', 'Bad register code (' .. tostring(c) .. ')', 'A register must be between 0 and 65535.\n'.. - 'I changed this one to zero.') + 'I changed this one to zero.') c=0 end return ltjd.get_register_dir(c) @@ -295,7 +267,7 @@ do binary_pars.alxspmode = binary_pars.jaxspmode function luatexja.ext_get_parameter_binary(k, c) if binary_pars[k] then - tex.write(tostring(binary_pars[k](c,tex.getcount('ltj@@stack')))) + tex.write(tostring(binary_pars[k](c,tex.getcount('ltj@@stack')))) end ltjb.stop_time_measure('get_par') end @@ -321,11 +293,10 @@ do ensure_tex_attr(attr_icflag, 0) if gc == 'fin_row' then return head else - --luatexja.ext_show_node_list(head, 'T> ', print) - start_time_measure('jfmglue') - local p = ltjj.main(to_direct(head),mode, dir) - stop_time_measure('jfmglue') - return to_node(p) + start_time_measure('jfmglue') + local p = ltjj.main(to_direct(head),mode, dir) + stop_time_measure('jfmglue') + return to_node(p) end end @@ -340,27 +311,24 @@ do ltjb.add_to_callback( 'pre_linebreak_filter', function (head,groupcode) - return main_process(head, true, tex.textdir, groupcode) + return main_process(head, true, tex.textdir, groupcode) end,'ltj.main', luatexbase.priority_in_callback('pre_linebreak_filter', 'luaotfload.node_processor')+1) ltjb.add_to_callback( 'hpack_filter', function (head,groupcode,size,packtype, dir) - return main_process(head, false, dir, groupcode) + return main_process(head, false, dir, groupcode) end,'ltj.main', luatexbase.priority_in_callback('hpack_filter', 'luaotfload.node_processor')+1) ltjb.add_to_callback('pre_linebreak_filter', adjust_icflag, 'ltj.adjust_icflag', 1) ltjb.add_to_callback('hpack_filter', adjust_icflag, 'ltj.adjust_icflag', 1) - end -- cleanup process function luatexja.ext_cleanup() - ltjf.cleanup_size_cache() - ltjd.remove_end_whatsit() + ltjf.cleanup_size_cache(); ltjd.remove_end_whatsit() end - -- lastnodechar do local id_glyph = node.id('glyph') @@ -368,12 +336,12 @@ do local n = tex.nest[tex.nest.ptr].tail local r = '-1' if n then - if n.id==id_glyph then - while n.componetns and n.subtype and n.subtype%4 >= 2 do - n = node.tail(n) - end - r = tostring(n.char) - end + if n.id==id_glyph then + while n.componetns and n.subtype and n.subtype%4 >= 2 do + n = node.tail(n) + end + r = tostring(n.char) + end end tex.sprint(r) end @@ -398,24 +366,20 @@ local id_math = node.id('math') local id_whatsit = node.id('whatsit') local sid_user = node.subtype('user_defined') -local function get_attr_icflag(p) - return (has_attr(p, attr_icflag) or 0) % icflag_table.PROCESSED_BEGIN_FLAG -end - local prefix, inner_depth local utfchar = utf.char local function debug_show_node_X(p,print_fn, limit, inner_depth) local k = prefix local s - local pt=node_type(p.id) - local base = prefix .. string.format('%X', get_attr_icflag(p)) + local pt, pic = node_type(p.id), (has_attr(p, attr_icflag) or 0) % icflag_table.PROCESSED_BEGIN_FLAG + local base = prefix .. string.format('%X', pic) .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' ' if pt == 'glyph' then - s = base .. ' ' .. - (p.char<0xF0000 and utfchar(p.char) or '') - .. string.format(' (U+%X) ', p.char) - .. tostring(p.font) .. ' (' .. print_scaled(p.height) .. '+' - .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width) + s = base .. ' ' + .. (p.char<0xF0000 and utfchar(p.char) or '') + .. string.format(' (U+%X) ', p.char) + .. tostring(p.font) .. ' (' .. print_scaled(p.height) .. '+' + .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width) if p.xoffset~=0 or p.yoffset~=0 then s = s .. ' off: (' .. print_scaled(p.xoffset) .. ',' .. print_scaled(p.yoffset) .. ')' @@ -423,13 +387,13 @@ local function debug_show_node_X(p,print_fn, limit, inner_depth) print_fn(s) elseif pt=='hlist' or pt=='vlist' or pt=='unset'or pt=='ins' then if pt=='ins' then - s = base .. '(' .. print_scaled(p.height) .. '+' - .. print_scaled(p.depth) .. ')' - .. ', dir=' .. tostring(node.has_attribute(p, attr_dir)) + s = base .. '(' .. print_scaled(p.height) .. '+' + .. print_scaled(p.depth) .. ')' + .. ', dir=' .. tostring(node.has_attribute(p, attr_dir)) else - s = base .. '(' .. print_scaled(p.height) .. '+' - .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width) - .. ', dir=' .. tostring(node.has_attribute(p, attr_dir)) + s = base .. '(' .. print_scaled(p.height) .. '+' + .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width) + .. ', dir=' .. tostring(node.has_attribute(p, attr_dir)) end if (p.shift or 0)~=0 then s = s .. ', shifted ' .. print_scaled(p.shift) @@ -438,125 +402,116 @@ local function debug_show_node_X(p,print_fn, limit, inner_depth) s = s .. ' glue set ' if p.glue_sign == 2 then s = s .. '-' end s = s .. tostring(floor(p.glue_set*10000)/10000) - if p.glue_order == 0 then - s = s .. 'pt' + if p.glue_order == 0 then s = s .. 'pt' else s = s .. 'fi' - for i = 2, p.glue_order do s = s .. 'l' end + for i = 2, p.glue_order do s = s .. 'l' end end end - if get_attr_icflag(p) == icflag_table.PACKED then - s = s .. ' (packed)' - end + if pic == icflag_table.PACKED then s = s .. ' (packed)' end print_fn(s); local bid = inner_depth prefix, inner_depth = prefix.. '.', inner_depth + 1 if inner_depth < limit then - for q in node.traverse(p.head) do - debug_show_node_X(q, print_fn, limit, inner_depth) - end + for q in node.traverse(p.head) do + debug_show_node_X(q, print_fn, limit, inner_depth) + end end prefix=k elseif pt=='rule' then s = base .. '(' .. print_scaled(p.height) .. '+' .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width) - .. ', dir=' .. tostring(node.has_attribute(p, attr_dir)) + .. ', dir=' .. tostring(node.has_attribute(p, attr_dir)) print_fn(s) elseif pt=='disc' then print_fn(s) local bid = inner_depth if inner_depth < limit then prefix, inner_depth = k.. 'p.', inner_depth + 1 - for q in node.traverse(p.pre) do - debug_show_node_X(q, print_fn, limit, inner_depth) - end + for q in node.traverse(p.pre) do + debug_show_node_X(q, print_fn, limit, inner_depth) + end prefix = k.. 'P.' - for q in node.traverse(p.post) do - debug_show_node_X(q, print_fn, limit, inner_depth) - end + for q in node.traverse(p.post) do + debug_show_node_X(q, print_fn, limit, inner_depth) + end prefix = k.. 'R.' - for q in node.traverse(p.replace) do - debug_show_node_X(q, print_fn, limit, inner_depth) - end + for q in node.traverse(p.replace) do + debug_show_node_X(q, print_fn, limit, inner_depth) + end end prefix=k elseif pt == 'glue' then s = base .. ' ' .. print_spec(p) - if get_attr_icflag(p)>icflag_table.KINSOKU - and get_attr_icflag(p)<icflag_table.KANJI_SKIP then - s = s .. ' (from JFM: priority ' .. get_attr_icflag(p)-icflag_table.FROM_JFM .. ')' - elseif get_attr_icflag(p)==icflag_table.KANJI_SKIP then - s = s .. ' (kanjiskip)' - elseif get_attr_icflag(p)==icflag_table.KANJI_SKIP_JFM then - s = s .. ' (kanjiskip, JFM specified)' - elseif get_attr_icflag(p)==icflag_table.XKANJI_SKIP then - s = s .. ' (xkanjiskip)' - elseif get_attr_icflag(p)==icflag_table.XKANJI_SKIP_JFM then - s = s .. ' (xkanjiskip, JFM specified)' + if pic>icflag_table.KINSOKU and pic<icflag_table.KANJI_SKIP then + s = s .. ' (from JFM: priority ' .. pic-icflag_table.FROM_JFM .. ')' + elseif pic==icflag_table.KANJI_SKIP then + s = s .. ' (kanjiskip)' + elseif pic==icflag_table.KANJI_SKIP_JFM then + s = s .. ' (kanjiskip, JFM specified)' + elseif pic==icflag_table.XKANJI_SKIP then + s = s .. ' (xkanjiskip)' + elseif pic==icflag_table.XKANJI_SKIP_JFM then + s = s .. ' (xkanjiskip, JFM specified)' end print_fn(s) elseif pt == 'kern' then s = base .. ' ' .. print_scaled(p.kern) .. 'pt' if p.subtype==2 then - s = s .. ' (for accent)' - elseif get_attr_icflag(p)==icflag_table.IC_PROCESSED then - s = s .. ' (italic correction)' - elseif get_attr_icflag(p)==icflag_table.LINEEND then - s = s .. ' (end-of-line)' - -- elseif get_attr_icflag(p)==ITALIC then - -- s = s .. ' (italic correction)' - elseif get_attr_icflag(p)>icflag_table.KINSOKU - and get_attr_icflag(p)<icflag_table.KANJI_SKIP then - s = s .. ' (from JFM: priority ' .. get_attr_icflag(p)-icflag_table.FROM_JFM .. ')' + s = s .. ' (for accent)' + elseif pic==icflag_table.IC_PROCESSED then + s = s .. ' (italic correction)' + elseif pic==icflag_table.LINEEND then + s = s .. ' (end-of-line)' + elseif pic>icflag_table.KINSOKU + and pic<icflag_table.KANJI_SKIP then + s = s .. ' (from JFM: priority ' .. pic-icflag_table.FROM_JFM .. ')' end print_fn(s) elseif pt == 'penalty' then s = base .. ' ' .. tostring(p.penalty) - if get_attr_icflag(p)==icflag_table.KINSOKU then - s = s .. ' (for kinsoku)' - end + if pic==icflag_table.KINSOKU then s = s .. ' (for kinsoku)' end print_fn(s) elseif pt == 'dir' then - s = base .. ' ' .. tostring(p.dir) .. ' (level ' .. tostring(p.level) .. ')' - print_fn(s) + print_fn(base .. ' ' .. tostring(p.dir) .. ' (level ' .. tostring(p.level) .. ')') elseif pt == 'whatsit' then s = base if p.subtype==sid_user then - local t = tostring(p.user_id) .. ' (' .. - luatexbase.get_user_whatsit_name(p.user_id) .. ') ' + local t = tostring(p.user_id) .. ' (' .. + luatexbase.get_user_whatsit_name(p.user_id) .. ') ' if p.type ~= 110 then s = s .. ' userid:' .. t .. p.value print_fn(s) else s = s .. ' userid:' .. t .. '(node list)' - if p.user_id==userid_table.DIR then - s = s .. ' dir: ' .. tostring(node.has_attribute(p, attr_dir)) - end + if p.user_id==uid_table.DIR then + s = s .. ' dir: ' .. tostring(node.has_attribute(p, attr_dir)) + end print_fn(s) - local bid = inner_depth - prefix, inner_depth =prefix.. '.', inner_depth + 1 + local bid = inner_depth + prefix, inner_depth = prefix.. '.', inner_depth + 1 if inner_depth < limit then - for q in node.traverse(p.value) do - debug_show_node_X(q, print_fn, limit, inner_depth) - end - end + for q in node.traverse(p.value) do + debug_show_node_X(q, print_fn, limit, inner_depth) + end + end prefix, inner_depth = k, bid end else s = s .. (node.subtype(p.subtype) or '') - if p.subtype==1 then - s = s .. ' stream=' .. p.stream - print_fn(s) - for i=1,#p.data do - print_fn(s .. ' [' .. i .. '] = ' .. tostring(p.data[i].csname)) - end - else - print_fn(s) - end + if p.subtype==1 then + s = s .. ' stream=' .. p.stream + print_fn(s) + for i=1,#p.data do + print_fn(s .. ' [' .. i .. '] = ' .. tostring(p.data[i].csname)) + end + else + print_fn(s) + end end -------- math node -------- elseif pt=='noad' then - s = base ; print_fn(s) + print_fn(base) if p.nucleus then prefix = k .. 'N'; debug_show_node_X(p.nucleus, print_fn, limit, inner_depth); end @@ -574,9 +529,9 @@ local function debug_show_node_X(p,print_fn, limit, inner_depth) print_fn(base) if p.head then prefix = k .. '.'; - for q in node.traverse(p.head) do - debug_show_node_X(q, print_fn, limit, inner_depth) - end + for q in node.traverse(p.head) do + debug_show_node_X(q, print_fn, limit, inner_depth) + end end else print_fn(base) diff --git a/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty b/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty index da8ecf7c89d..d51b575f762 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty @@ -35,13 +35,13 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja}[2020-04-12 Japanese Typesetting with Lua(La)TeX] + \ProvidesPackage{luatexja}[2020-08-02 Japanese Typesetting with Lua(La)TeX] \DeclareOption{disablejfam}{\ltj@disablejfamtrue} \DeclareOption*{} \ProcessOptions\relax \fi %</LaTeX> %%%% VERSION -\def\LuaTeXjaversion{20200518.0} +\def\LuaTeXjaversion{20200802.0} \directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty index 29f38b367ad..e0dba375471 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty @@ -101,15 +101,15 @@ \def\@ltj@hook@family#1#2{ % #1: csname #2: contents \ifcsname @#1hook\endcsname % LaTeX 2020-02-02 - \csappto{@#1hook}{#2}% + \csappto{@#1hook}{#2}% \else % LaTeX 2019-10-01 - \ifcsname #1 \endcsname - \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}% - \else - \PackageWarningNoLine{luatexja}{% - Patching to \expandafter\string\csname #1\endcsname\space failed% - }% - \fi + \ifcsname #1 \endcsname + \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}% + \else + \PackageWarningNoLine{luatexja}{% + Patching to \expandafter\string\csname #1\endcsname\space failed% + }% + \fi \fi } \@ltj@hook@family{rmfamily}{% diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty index 9be20e440c6..3578a84396c 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty @@ -287,16 +287,16 @@ \every@math@size{}% \fontsize{#6}\z@ \ltj@@is@kyenc{#2}\ifin@% - \ltjselectfont@force@definetrue + \ltjselectfont@force@definetrue \usekanji{#2}{#3}{#4}{#5}% \global\let#1\getjfont - \ltjselectfont@force@definefalse + \ltjselectfont@force@definefalse \else \ltj@@is@ktenc{#2}\ifin@% - \ltjselectfont@force@definetrue + \ltjselectfont@force@definetrue \usekanji{#2}{#3}{#4}{#5}% \global\let#1\gettfont - \ltjselectfont@force@definefalse + \ltjselectfont@force@definefalse \else \useroman{#2}{#3}{#4}{#5}% \global\expandafter\let\expandafter#1\the\font @@ -379,7 +379,7 @@ \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}% \pickup@jfont \unless\ifnum\ltjgetparameter{direction}=3 \font@name - \ltj@@does@alt@set{\curr@kfontshape}{% + \ltj@@does@alt@set{\curr@kfontshape}{% % alt fonts の定義 \directlua{luatexja.jfont.output_alt_font_cmd('y', '\luatexluaescapestring{\curr@kfontshape}')}% % 定義した alt fonts のデータを \ltjdeclarealtfont に渡すのと同等の処理をする @@ -432,14 +432,14 @@ \bgroup \def\ltj@@dir@patch#1#2#3{% \global\csletcs{ltj@@orig@#1}{#1}% - \protected\expandafter\xdef\csname #1\endcsname{% - \csname ltj@@orig@#1\endcsname + \protected\expandafter\xdef\csname #1\endcsname{% + \csname ltj@@orig@#1\endcsname \unexpanded{\ifnum#3<\z@\let\ltj@@protect\protect\set@typeset@protect}% \unexpanded{\global\let\ltj@afont@name=\font@name}% - \expandonce{\csname ltj@selectfont@#2\endcsname}% + \expandonce{\csname ltj@selectfont@#2\endcsname}% \unexpanded{\global\let\font@name=\ltj@afont@name}% \unexpanded{\let\protect\ltj@@protect\fi}% - }% + }% } \ltj@@dir@patch{yoko}{yoko}{\ltj@curjfnt} \ltj@@dir@patch{tate}{tate}{\ltj@curtfnt} @@ -601,7 +601,7 @@ \else \@tempswafalse \def\cdp@elt##1{\ifcsname ##1+#1\endcsname% - \@tempswatrue\def\cdp@elt####1\relax{}% + \@tempswatrue\def\cdp@elt####1\relax{}% \fi}% \directlua{luatexja.jfont.search_ffam_declared()}\relax% \if@tempswz @@ -659,8 +659,8 @@ } \else % !!! pl 3, 4 \def\set@target@series@kanji#1{% - \edef\k@series{#1}% - \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}% + \edef\k@series{#1}% + \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}% } \fi\fi @@ -670,7 +670,7 @@ \set@target@series@kanji{#2}% \else \begingroup\let\f@encoding\k@encoding\let\f@family\k@family - \maybe@load@fontshape\endgroup + \maybe@load@fontshape\endgroup \edef\reserved@a{\k@encoding /\k@family /#1/\k@shape}% \ifcsname \reserved@a \endcsname \set@target@series@kanji{#1}% @@ -702,7 +702,7 @@ \fi \else \begingroup\let\f@encoding\k@encoding\let\f@family\k@family - \maybe@load@fontshape\endgroup + \maybe@load@fontshape\endgroup \edef\reserved@a{\k@encoding /\k@family /\k@series/#1}% \ifcsname \reserved@a\endcsname \edef\k@shape{#1}% @@ -965,8 +965,8 @@ \let\extract@afont\extract@font \def\pickup@jfont{% \ifnum - \unless\ifnum\ltjgetparameter{direction}=3 1\else - \ifltjselectfont@force@define 1\else 0\fi\fi =1 % + \unless\ifnum\ltjgetparameter{direction}=3 1\else + \ifltjselectfont@force@define 1\else 0\fi\fi =1 % \expandafter \ifx \font@name \relax \let\extract@font\extract@jfont \define@newfont @@ -974,20 +974,20 @@ \fi \let\getjfont\font@name \else - \begingroup\escapechar\m@ne - \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else - \let\extract@font\extract@jfont@onlyjfm - \define@newfont - \let\extract@font\extract@afont - \fi - \endgroup - \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname + \begingroup\escapechar\m@ne + \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else + \let\extract@font\extract@jfont@onlyjfm + \define@newfont + \let\extract@font\extract@afont + \fi + \endgroup + \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname \fi } \def\pickup@tfont{% \ifnum - \ifnum\ltjgetparameter{direction}=3 1\else - \ifltjselectfont@force@define 1\else 0\fi\fi =1 % + \ifnum\ltjgetparameter{direction}=3 1\else + \ifltjselectfont@force@define 1\else 0\fi\fi =1 % \expandafter \ifx \font@name \relax \let\extract@font\extract@tfont \define@newfont @@ -995,14 +995,14 @@ \fi \let\gettfont\font@name \else - \begingroup\escapechar\m@ne - \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else - \let\extract@font\extract@tfont@onlyjfm - \define@newfont - \let\extract@font\extract@afont - \fi - \endgroup - \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname + \begingroup\escapechar\m@ne + \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else + \let\extract@font\extract@tfont@onlyjfm + \define@newfont + \let\extract@font\extract@afont + \fi + \endgroup + \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname \fi } @@ -1010,18 +1010,18 @@ % わざと「ゴミをつける」 \def\ltj@@patch@external@font#1 at{% \directlua{ - local s = '\luatexluaescapestring{#1}' - local is_braced, is_quoted - if s:sub(1,1)=='{' and s:sub(-1)=='}' then is_braced=true; s=s:sub(2,-2) end - if s:sub(1,1)=='"' and s:sub(-1)=='"' then is_quoted=true; s=s:sub(2,-2) end - s=s..luatexja.jfont.print_aftl_address() - if is_braced then s='{'..s..'}' elseif is_quoted then s='"'..s..'"' end - %print(s, is_quoted, is_braced) + local s = '\luatexluaescapestring{#1}' + local is_braced, is_quoted + if s:sub(1,1)=='{' and s:sub(-1)=='}' then is_braced=true; s=s:sub(2,-2) end + if s:sub(1,1)=='"' and s:sub(-1)=='"' then is_quoted=true; s=s:sub(2,-2) end + s=s..luatexja.jfont.print_aftl_address() + if is_braced then s='{'..s..'}' elseif is_quoted then s='"'..s..'"' end + %print(s, is_quoted, is_braced) tex.sprint(-2, s)}% \space at% } \def\extract@jfont{% - \get@external@font + \get@external@font \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{% \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}% }% @@ -1029,7 +1029,7 @@ \csname \f@encoding+\f@family\endcsname \csname\curr@fontshape\endcsname} \def\extract@tfont{% - \get@external@font + \get@external@font \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{% \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}% }% @@ -1044,15 +1044,15 @@ } \luadef\ltj@@jfont@@jfmonly \ltj@@jfont@@jfmonly@@inner \def\extract@jfont@onlyjfm{% - \get@external@font - \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{% - \ltj@@jfont@@jfmonly{\external@font}{yoko}% - }} + \get@external@font + \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{% + \ltj@@jfont@@jfmonly{\external@font}{yoko}% +}} \def\extract@tfont@onlyjfm{% - \get@external@font - \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{% - \ltj@@jfont@@jfmonly{\external@font}{tate}% - }} + \get@external@font + \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{% + \ltj@@jfont@@jfmonly{\external@font}{tate}% +}} \let\ltj@@al@do@subst@correction=\do@subst@correction \def\ltj@@ja@do@subst@correction{% @@ -1106,7 +1106,7 @@ \math@bgroup \expandafter\ifx\csname M@\f@encoding\endcsname#1\else #1\fi\ltj@tempcnta=#2 - \expandafter\ltj@@mathJapaneseFonts\string#1/\relax% + \expandafter\ltj@@mathJapaneseFonts\string#1/\relax% \ifin@\jfam#2\relax\else\mathgroup#2\relax\fi \expandafter\math@egroup\fi}% @@ -1138,7 +1138,7 @@ \the\ltj@tempcnta,\the\ltj@tempcntb, '\luatexluaescapestring{\ltj@temp@afont}', '\luatexluaescapestring{\ltj@temp@bfont}')}% - } +} %%%% \ClearAlternateKanjiFont<Benc><Bfam><Bser><Bshape> % いつも global @@ -1161,59 +1161,4 @@ \ltj@@getjfontnumber#1% \directlua{luatexja.jfont.pickup_alt_font_b(\the\ltj@tempcntc,'\luatexluaescapestring{#2}')}% } - -%%%% patch \@text@composite because of {y,t}albaselineshift - -% %% \pltx@isletter from plfonts.dtx -% \def\pltx@mark{\pltx@mark@} -% \let\pltx@scanstop\relax -% \long\def\pltx@cond#1\fi{% -% #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} -% \long\def\pltx@isletter#1{% -% \expandafter\pltx@isletter@i#1\pltx@scanstop} -% \long\def\pltx@isletter@i#1\pltx@scanstop{% -% \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi{\@firstoftwo}% -% {\pltx@isletter@ii\pltx@scanstop#1\pltx@scanstop{}#1\pltx@mark}} -% \long\def\pltx@isletter@ii#1\pltx@scanstop#{% -% \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi% -% {\pltx@isletter@iii}{\pltx@isletter@iv}} -% \long\def\pltx@isletter@iii#1\pltx@mark{\@secondoftwo} -% \long\def\pltx@isletter@iv#1#2#3\pltx@mark{% -% \pltx@cond\ifx\pltx@mark#3\pltx@mark\fi{% -% \pltx@cond{\ifnum0\ifcat A\noexpand#21\fi\ifcat=\noexpand#21\fi>\z@}\fi -% {\@firstoftwo}{\@secondoftwo}% -% }{\@secondoftwo}} -% -% \def\@text@composite@x#1#2{% -% \ifx#1\relax -% #2% -% \else\pltx@isletter{#1}{#1}{% -% \begingroup -% \setbox\z@\hbox\bgroup% -% \ltj@yablshift\z@ \ltj@tablshift\z@ -% #1% -% \@tempcntb\directlua{luatexja.pltx_composite_last_node_char()}%) -% \xdef\pltx@composite@temp{\noexpand\@tempcntb=\the\@tempcntb\relax}% -% \aftergroup\pltx@composite@temp -% \egroup -% \ifnum\ltjgetparameter{direction}=3 % -% \@tempdima=\ltj@tablshift sp\else\@tempdima=\ltj@yablshift sp\fi -% \ifnum\@tempcntb<\z@\@tempcnta\z@\else -% \@tempcnta=\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{\@tempcntb}}\relax -% \ifnum\@tempcnta=\z@\@tempdima\z@\fi -% \fi -% \ifnum\@tempcnta>\z@ -% \ifodd\ltjgetparameter{alxspmode}{\@tempcntb}\else\leavevmode\hbox{}\fi -% \begingroup\mathsurround\z@$% -% \hbox{\lower\@tempdima\box\z@} -% $\endgroup% -% \ifnum\ltjgetparameter{alxspmode}{\@tempcntb}<2\hbox{}\fi -% \else -% \ifdim\@tempdima=\z@{\ltj@yablshift\z@ \ltj@tablshift\z@#1}% -% \else\lower\@tempdima\box\z@\fi -% \fi -% \endgroup}% -% \fi -% } - \endinput diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-atbegshi.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-atbegshi.sty new file mode 100644 index 00000000000..ecdfd48c225 --- /dev/null +++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-atbegshi.sty @@ -0,0 +1,79 @@ +% +% lltjp-atbegshi.sty +% + +\ifdefined\NeedsTeXFormat + \NeedsTeXFormat{LaTeX2e} + \ProvidesPackage{lltjp-atbegshi}[2020-07-30 Patch to atbegshi for LuaTeX-ja] + \RequirePackage{atbegshi} +\else + \input atbegshi.sty +\fi + +%-------------------------------------- +% following codes are almost copied from +% pxatbegshi.sty 2019/09/07 v0.5 (in platex-tools bundle, by H. Yamashita). + +%% internal macros are locally effective +\begingroup + +%--------------------------------------- helpers + +%% unique tokens +\def\pxabgs@mark{\pxabgs@mark@} +\def\pxabgs@fin{\pxabgs@fin@} + +%% \pxabgs@patch@cmd\CMD{<orig>}{<new>} +\def\pxabgs@patch@cmd#1#2#3{% + \ifx#1\relax\else + \def\pxabgs@next##1#2##2\pxabgs@mark##3\pxabgs@fin{% + \ifx\pxabgs@mark##3\pxabgs@mark + \let#1\relax + \else + \def\pxabgs@fragment{##2}% + \def#1{##1#3##2}% + \fi}% + \expandafter\pxabgs@next#1\pxabgs@mark#2\pxabgs@mark\pxabgs@fin + \fi +} + +%--------------------------------------- + +% concept: execute all hooks inside yoko direction \vbox + +% prepare +\let\pxabgs@AtBegShi@Output\AtBegShi@Output +% try first patch +\pxabgs@patch@cmd\pxabgs@AtBegShi@Output + {\let\AtBegShi@OrgProtect\protect}% + {\setbox8\vbox\bgroup\yoko\let\AtBegShi@OrgProtect\protect} +\pxabgs@patch@cmd\pxabgs@AtBegShi@Output + {\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox}% + {\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox\egroup} +\pxabgs@patch@cmd\pxabgs@AtBegShi@Output + {% + \begingroup + \setbox\AtBeginShipoutBox\box\AtBeginShipoutBox + \endgroup + \let\protect\AtBegShi@OrgProtect + }{% + \begingroup + \setbox\AtBeginShipoutBox\box\AtBeginShipoutBox + \endgroup + \let\protect\AtBegShi@OrgProtect + \egroup + } +% commit the change only when successful +\ifx\pxabgs@AtBegShi@Output\relax + \@PackageWarningNoLine{lltjp-atbegshi}{% + Failed in patching \string\AtBegShi@Output.\MessageBreak + This may cause error in tate direction% + } +\else + \global\let\AtBegShi@Output\pxabgs@AtBegShi@Output +\fi + +\endgroup +%% internal macros are no longer effective + +\endinput diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-everyshi.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-everyshi.sty new file mode 100644 index 00000000000..e9510e24870 --- /dev/null +++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-everyshi.sty @@ -0,0 +1,21 @@ +% +% lltjp-everyshi.sty 2020-07-27 +% almost the same as pxeveryshi package by ZR +% + +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{everyshi} + +\def\@EveryShipout@Output{% + \setbox8\vbox{% + \yoko + \@EveryShipout@Hook + \@EveryShipout@AtNextHook + \global\setbox\luatexoutputbox=\box\luatexoutputbox + }% + \gdef\@EveryShipout@AtNextHook{}% + \@EveryShipout@Org@Shipout\box\luatexoutputbox +} + + +\endinput |