From 9c8c35af0c8f157fc8f40c07e0b916d3edde8566 Mon Sep 17 00:00:00 2001 From: Vicente Ferrari Smith Date: Sat, 5 Jul 2025 20:16:25 +0200 Subject: [PATCH] added modules --- .../.build/.added_strings_w2.jai | 51 + .../kb_text_shape/android/x64/kb_text_shape.a | Bin 0 -> 749712 bytes .../android/x64/kb_text_shape.so | Bin 0 -> 684952 bytes modules/kb_text_shape/bindings.jai | 3715 +++ modules/kb_text_shape/generate.jai | 155 + modules/kb_text_shape/kb_text_shape.c | 13 + modules/kb_text_shape/kb_text_shape.h | 23192 ++++++++++++++++ modules/kb_text_shape/macos.jai | 3694 +++ modules/kb_text_shape/macos/kb_text_shape.a | Bin 0 -> 1048600 bytes .../kb_text_shape/macos/kb_text_shape.dylib | Bin 0 -> 689072 bytes .../Contents/Info.plist | 20 + .../Resources/DWARF/kb_text_shape.dylib | Bin 0 -> 364463 bytes .../aarch64/kb_text_shape.dylib.yml | 133 + .../kb_text_shape/macos/kb_text_shape_arm64.a | Bin 0 -> 1048600 bytes .../macos/kb_text_shape_arm64.dylib | Bin 0 -> 689080 bytes .../Contents/Info.plist | 20 + .../Resources/DWARF/kb_text_shape_arm64.dylib | Bin 0 -> 364463 bytes .../aarch64/kb_text_shape_arm64.dylib.yml | 133 + modules/kb_text_shape/module.jai | 5 + .../kb_text_shape/windows/kb_text_shape.dll | Bin 0 -> 866304 bytes .../kb_text_shape/windows/kb_text_shape.lib | Bin 0 -> 953302 bytes src/main.jai | 27 +- src/math/colourspace.jai | 39 + src/math/math.jai | 101 + src/platform/input.jai | 19 + src/platform/opengl.jai | 142 + src/platform/shader.jai | 488 + src/platform/texture.jai | 71 + src/stb_textedit.jai | 1641 ++ src/text.jai | 6 +- src/ui.jai | 78 +- 31 files changed, 33699 insertions(+), 44 deletions(-) create mode 100644 modules/kb_text_shape/.build/.added_strings_w2.jai create mode 100644 modules/kb_text_shape/android/x64/kb_text_shape.a create mode 100644 modules/kb_text_shape/android/x64/kb_text_shape.so create mode 100644 modules/kb_text_shape/bindings.jai create mode 100644 modules/kb_text_shape/generate.jai create mode 100644 modules/kb_text_shape/kb_text_shape.c create mode 100644 modules/kb_text_shape/kb_text_shape.h create mode 100644 modules/kb_text_shape/macos.jai create mode 100644 modules/kb_text_shape/macos/kb_text_shape.a create mode 100755 modules/kb_text_shape/macos/kb_text_shape.dylib create mode 100644 modules/kb_text_shape/macos/kb_text_shape.dylib.dSYM/Contents/Info.plist create mode 100644 modules/kb_text_shape/macos/kb_text_shape.dylib.dSYM/Contents/Resources/DWARF/kb_text_shape.dylib create mode 100644 modules/kb_text_shape/macos/kb_text_shape.dylib.dSYM/Contents/Resources/Relocations/aarch64/kb_text_shape.dylib.yml create mode 100644 modules/kb_text_shape/macos/kb_text_shape_arm64.a create mode 100755 modules/kb_text_shape/macos/kb_text_shape_arm64.dylib create mode 100644 modules/kb_text_shape/macos/kb_text_shape_arm64.dylib.dSYM/Contents/Info.plist create mode 100644 modules/kb_text_shape/macos/kb_text_shape_arm64.dylib.dSYM/Contents/Resources/DWARF/kb_text_shape_arm64.dylib create mode 100644 modules/kb_text_shape/macos/kb_text_shape_arm64.dylib.dSYM/Contents/Resources/Relocations/aarch64/kb_text_shape_arm64.dylib.yml create mode 100644 modules/kb_text_shape/module.jai create mode 100644 modules/kb_text_shape/windows/kb_text_shape.dll create mode 100644 modules/kb_text_shape/windows/kb_text_shape.lib create mode 100644 src/math/colourspace.jai create mode 100644 src/math/math.jai create mode 100644 src/platform/input.jai create mode 100644 src/platform/opengl.jai create mode 100644 src/platform/shader.jai create mode 100644 src/platform/texture.jai create mode 100644 src/stb_textedit.jai diff --git a/modules/kb_text_shape/.build/.added_strings_w2.jai b/modules/kb_text_shape/.build/.added_strings_w2.jai new file mode 100644 index 0000000..8b2f9ca --- /dev/null +++ b/modules/kb_text_shape/.build/.added_strings_w2.jai @@ -0,0 +1,51 @@ +// Workspace: Target Program + +// +// #insert text. Generated from /opt/jai/modules/Bindings_Generator/module.jai:326. +// + ([2] string).[ + .["FLT_MIN", "FLOAT32_MIN"], + .["FLT_MAX", "FLOAT32_MAX"], + .["DBL_MIN", "FLOAT64_MIN"], + .["DBL_MAX", "FLOAT64_MAX"], + + .["SCHAR_MIN", "S8_MIN"], + .["SCHAR_MAX", "S8_MAX"], + .["UCHAR_MIN", "0"], + .["UCHAR_MAX", "U8_MAX"], + + .["SHRT_MIN", "S16_MIN"], + .["SHRT_MAX", "S16_MAX"], + .["USHRT_MIN", "0"], + .["USHRT_MAX", "U16_MAX"], + + .["INT_MIN", "S32_MIN"], + .["INT_MAX", "S32_MAX"], + .["UINT_MIN", "0"], + .["UINT_MAX", "U32_MAX"], + + .["LLONG_MIN", "S64_MIN"], + .["LLONG_MAX", "S64_MAX"], + .["ULLONG_MIN", "0"], + .["ULLONG_MAX", "U64_MAX"], + + .["INT8_MIN", "S8_MIN"], + .["INT8_MAX", "S8_MAX"], + .["UINT8_MAX", "U8_MAX"], + + .["INT16_MIN", "S16_MIN"], + .["INT16_MAX", "S16_MAX"], + .["UINT16_MAX", "U16_MAX"], + + .["INT32_MIN", "S32_MIN"], + .["INT32_MAX", "S32_MAX"], + .["UINT32_MAX", "U32_MAX"], + + .["INT64_MIN", "S64_MIN"], + .["INT64_MAX", "S64_MAX"], + .["UINT64_MAX", "U64_MAX"], + .["LONG_MIN", "S64_MIN"], + .["LONG_MAX", "S64_MAX"], + .["ULONG_MIN", "0"], + .["ULONG_MAX", "U64_MAX"], +]; diff --git a/modules/kb_text_shape/android/x64/kb_text_shape.a b/modules/kb_text_shape/android/x64/kb_text_shape.a new file mode 100644 index 0000000000000000000000000000000000000000..cf87b072bf747fc342ee3572edaf66d41e185404 GIT binary patch literal 749712 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%0DqPVI+}^lL*6uK zT=KJh&P;>yoU2hy*o2YY7~nN%@FC!PJ?7sPvqry^kFanTv(6eHf*Uz^qX*+~-Uu`w z@9(MKWdX16TEHXru;q{MDY1jBHJi1@6MbDm*l;|CQ|ItDQ~7XFjo&pE&$|0K)3122 zkP%I-Dk4jlKRg`ya`w-ts{t+niAl5{e7G>^+eM|SD(In90_;;x4M+?m`SsdBN1HGH zprgcJA^UJ3xdY}GYe&M5(1)=4kQs3x+{>IXW;US(3QE14pleq6xDE7s%2s>Kj-Y+* zE*_L#?w0RX`F?xM;h=pgJ1cOm?QCsKvDlzi;??v`a9=YytXUHQ0VAFeEMx&pEh~alc)*z~ zLx+HKNv5ofiGLK>Ag)!F(Hl)XusO*C%??gZ_QfA|en@e^=E%->JpVFlCW(OXd`+$^oscGn~n9VwI^!C4cB zri?<(%1v~nHZZ1Wa<#edo4fC>A`QCx)*rGX^V&D{yWXGDl54W7iOJ8IDqZhevu~ll zR5Mt`vyrg5#?vV?e0BrN!CPv=aYi!;-ZfZ{$uTh8RJ2mnByM2}CyvCwx9ntSVAKkc zw#?LvuYv$@J;ZG?-lA>WFVEJUZO-XX>fLk*!b`5Q=dLs5=5#_(LbSc=1X?aX0l)ie zgv{3z@(I$aE)llG!-bgXVH#U#Qm={&koRSG$hV7Q0(l^}8ve)&AH9)TQHGt0-a<-i z#q~s(8F&|khe%`mC1g|UFFU3OzwE~NxG?^WoWNmM3F9Z`Fh0J5=y-xswzwECCjL8nec1@Gz08(QZ_10|ya-+ryxuD`l8-Zj6tO@>u@&P;o>})Bh;` zZFhn78TfY?Y3qL$|FBWzm=pk9{{I*JVOfRR79utFW;3NVg~RGVkNUa7?Hc4M7C~%2IN2L=7kfx* z%3p?k`#k|y7@SZ3Jh3)A@}J^c4|3;`Bx$9GPkYEEd+IMMCAb()?@2;G_Mq}kf>*3fJkE z{Mi+i%SVjPj5t>af&n~-Aj(x>_CNna{O|71EoUHL}ekTyyMtMNZ%N6|{9VJRNal;h5&^KE8c#v>CtE=BW~_)&x% z`$MXuzQ8DsU|ouA>F`uC zIiSs319$BmZha5){Sy9dKTH|QvR29*?pygs`mENSz2KkEOUdF}O?q_YsL4xZ6aLIo zvb%H0_K@#DFe`PlaFD#Nqyrd-s%FgKV7j;caS+!cd~-+1c%2vzh({8;?}l-PhmXNO z3nwtVo?7Z|%a^AV-#<|<9{v{jN47XGYqZH3{R`Z5G_>Q$yNT@@zU1C3vL;LZf)hr%`31;$A$|OkSjCdbQ;a7%y1_{@+9VZs*~-gZxi=bI3y!ho z<@L|lbDnqYInTTHoac=_=XvylZP>>T$)2;RD__89>F05Zm42RNWK%vuS5Nc>m@{Uu zqAa|;GW{-+9xz^Yk(+==xyx%>M;D^M8|(SN)z~D)m67D{3?4Ug6VrAUrYw@tj4sTz zGq%vURjn~~I0~ky8aMLdx?Awv`x9k7o#UB&bp8 z3`%pp@~R_j2KVBWVfS;D)C%oAP#8ZR<1cF{@e>6! zkf5Sp_D(O7S4;XP#dIk5(b&(K?(X$y@acbWzK_nYWjr6!#a(#`k;7R!)*HnvpOTV@ z{g2jN{mr6El%z-Zwc72`oC!#-(`crApw4`aaIjDi2S}I+!K&$LgHbNYs*UQnK0e4e zV4Ml58R;L3XL6d5!yg~7@cv3W2KwQ}{k-J3=?hd17az)+5CN~gm)nk3!9 z`}K+J88y)OC0r8wwct86r!c`u^)T^c1$D)v$p`F5?Ax$Km>QYV$tbwABc@h7f)BIF zv%rVr)UM6t%=h7^CLpl^y=lC*$*QP9))w|47|*BQH=^7w5BK z3_~QE*^S4a^ClCSlb?+x*>$`zre!&FH|ol@b2VXU0F%1$1r{VfpFIABUiAcj^hx87 z@J1H<*2m`P6j^jD_DsG*sicGjmv=cLbfW-XM*zJ1FDPho{V@~&7c>78|6=C9{4bjS z34byCE9UYqRG17Ln@U0c{9^!^@)2XSOG&VRNqO2}&4QT$>ESNs-?&2ih=Hgay#n_6 z{2PZr-4XR2aaRkDQc)|kEItf3Cs`T&CPm@&%H{s5If$VdFmX8=tIn;@jG^nh@LMViMzH4xOgQHs+m}g$G??)iyKbzs|zz8K2uk1ILgcN zAKB@$lbC=>OaR83Ej2hhn00 z!iWwX@mh$wm$t4Wd%3-mxC-2h`pCr-9L(!qf8#$qvA>Z3*2u4Jqv@k5pFw$-KM~98 zD1RdS1@4eQz>3%-e}N7V7B>rn8?5%OiA+V%l*Te+FhRP;79U1SqvVP9GM+$D``6=H zr6|FenlI(>K~X3I4&!&5Br{0zh>6T7y_%9ZL-kg4xCounPL|Iwdynz=Tpq`DS4@rB z80jxvL_9DqqcJ~Tvt+O^#}mawh?O@k_dV6Kk`l6w<>`Rz*{d85>kx`+zhDs0b*wWB zoF?bv#puQ>xrycwSi0mNWKv98`Tlj;sNJdDJJu`_CA@ATYd#>p=d6)_W?uf*o$~Me z*m;6Jn5ZpcKxdij6`*NJ?QIbyk=u@KdquQjt>=N1PRt=o%3NF*kCK;!coY8U;@=-# z{QIMs+ds1YU&6kfm4D}Y7tDCaiW%`=SO3#6E;s=G*u+v}?;Z(iV)cpHvB7M}o}i=r zS;QzI;s$+I*I3g@p*X$BKH#QM z*n{Fc?pcCZt6k&Gs9dp~4(1x`{J@~S&0uOv{IrO?g!Yq>sV#9jGYl686%k90B*wzp zoSm>V%4B(MJOnm4#1%>SplWtd-h4sN#Fe0DlV1?ako-}F{2_)yeDN~nKU$4L!$Ve5 zn2Z-}oicECjb9(FLpP7V@@~l=%N(WP6GyJtZO!_LxxNXfNxKT=A z3Rk?P)I(^8tXVRfa+XebO%`c+I5DOV8G1xK5XdR@ORkrWq;N0N^!8k&>1Cf0X-Z7U z9P~fPq#twh?Ue;!Pj&=#SSa ztN9#zuL(S~Pd4tXIxxv<-djT;258e>SIU5|$c^9LC%2$pp(k)`(tMl#%yHvC=D3sE zRKvKNcDM zSmep8#KYiN2pOMmrJfY4=s6$hsZYYMkXMP1d1J~RC*xM>qHiK3xFxp)(i2}Rjr!iU zH&v{FZsYQ{Ha<#;NQHTcE0Isj=2)o@5j5DM5pSva^RKD9lVZ7(wnj)NP5#j}MqQP+ zUbUT+bdh?FH_*aJ+{~x1c=>~l-TCUG#62ri8-LP_qBhp-!dvPB{{&>u9UQfkMYLQW zu2?nsW+fIA`yXpI0E+E+gLg%L_iY@TDQkksvCK9be161*-y<&k9x?EH1o(OR>4-?s zklppw1uvK*{M{~_WAeLRHW-F(aM2~JAg0wkDwhD#z67R@=6)qM$7rUm*vwr$LsdSm z;*vmmav=$$$zZYT6##%FrFT)V6)P?Co6dv0#zq{1Ov(*56xz=bCD-pa1T3_}leWIC<^=3Z6Z+AY*F7QV|Z|38m=A$iKv0mu|Ig^_C zxJK$n?a6vh34t+rv(n99|C{rJKenc)x}Y1MIUaS&9=jCEVOSrsZ*jmTa?uTTcf%`F z2nCVMHHFMa_9F0#^S_M0cm#3HYL=+XHjUkZ)x3wC*_xj-e+O5hDdvb4TbLg!`7K(( z17`;6#8Hv-WhJn+!5nB#I$76$pCo}u)t9-B`^zFsMBTs3X+LiETY3Ka&fTp2p6k<_ ziXZa;NBwI){oG#u>HRVCF8Y-FT>UQIJSXJ*_1Aa%>z_bVUHm6BeVX2|U+(Fz@7zlzl_dQW%xJ#^>e2B&-D zj}fRq?Y2DrZERQuw#MyNk;4x%7vbUKK=mUuNTglej|I>!dZu_`>Cf@wST6nfazl_R zTb6n%^mg8&F=v7K%T9L1QT}xmIM2Q;!Z&%Yg1OdYu|9vnjr~Mk+$jC|3i;MfA*#r1 zeslVB?xPhOy7cE>1jNzwcogR}AEiFmfy~|7^S7iuCy>R9#|)+?%tZbxn`t7<+NXTv zhBji#9Vd!pQp)EjQZd?0HzpljIZ-GG+burp*{wxkl1>`CO#EuV=_b}4Wv^)1zMIp{ zv@>@V;fDXC9-D6T-_wuMf2(xHgz3_M_wUwEU#`6_$==o^K3hMHOXmxs`2}&Grl1vXHj;MjQ-jUXi$Wz+&YSUFb};E1To>VPGaxbnX-Um1R!V2OGFmwi(<|)%uvPU+ zR$h5x70RR^EyND(Iy-kP?H?bdXvA+(&XI#GMm!AfS9P3qq?o`^cvW#tz(1j1;pCH| zzCGy)_mN^Bw}H#*vt+vR@K^rQF)1YRQFVP}*vvc`P8x3_=Fs#WqZke1w%VJJb9?`s z*uo+0-1XruIAnQA>zo)zf&Eej>p*K3b@eZ02L^`q#yidnl(qgu_^Z8O5hLU%2K)ZI zsFTHo#2Cf#&uI~uFe3PWee-4H5bIs(E5R^6sE@mh}G2>hpgqMkK#;%LsnLoyph<* zeG$*9ha8-9{~dgn`(xbu(2x~@lC{A(mpx5cv0KJfiC|%`tTyjg&q+K}J>%`piD&dgZT5VEMnY?>Pt`o6C9|DQ&7=~TwOz`f)QLzaAi-qU z1H3nP;NN+aRGo*YN4oDLg;wKkzGOAui9cy8B~22@oD zVWffSXb?IRH#o-RcdAZzuO_fGfH-Z0mggV`;WZzTUSNj20RxATO+x-xrjQlCC94Fl zA6w0L7gC!)Y;ccQ$seluOzE9`0)pE0iFh5e&?|8pdJ-*(5#Op=+^Yb!0>+@u!URUh z>GHj%-<^eZXIRbO3iuD#-mFqCrd*?;XRksYkXsX(l*h7fFq?+gbDM_JYWg>E>|x}v zkpE5fZ+UhtTHnN%oefL?pOmxp=t5r9-y((4_D0_~y*OJ~*`D0r@YrTncSY=>dI)l;GuyG!Hxb_VJd`+;iEpdH5 zzy7n&YBp(6YWxeT)vMGaAV*E|0^$IgxU!n>;zXR%3mEAI^lroj0{IUBveo!w9t#hY z7`l!M233-0!VTHVF5Fme&aNnkPjYl7agH7xjUU=+em;J5HJ_*n`UkKCyW6!Im0P)~ ze%jNpw95^ClEtG%Fi2fSA51ow=Zkbf?7^>5_GW4!8{xvt-JPJ>s5OvOHVl-rog{YK zqnG)(n|Avqv0DeOgT5uw_XvGA2%77_C;BzWO8p7PP@{5QX{CNblVC{nj$*PbmVi{j zl0tqZ$K zeg$soIEV%__b6OA+K;R2J460=g(pl{?S?S!6Fv?WJ6fKs8RIXz+e#%69@w%(i3Xg(l-vIyUxSJS#;rFO~`*40RI_f+F1GbS6e@Avr<2# zeFhWd!0gPKIz=E}QYf4fN=+0-k;D5XVH8X88_a5~AV89q=hRwZ?LsH$egb=e=-;@^ ztr(swR+^|$44QkwYaFuwMS#J?7zBE`2q5%gd3Fuk_*}Dt3_j(*Yt0(Vh}`!HdqeSh zL`_JMVwzZ|CRQ@k`e_Ro)0a?9GdJ#xodg>b*MtLI>7s>yqcw`uQ((vn(qxVjy%IAV z42lI7`q)68BL2>Z`V(A5p@Hm{fc4X5Rw|1xBG9>utp7!V&eU$`Tw~Uo&f)_)@P@O1 zPKki?0!@uCtX$&%)Ro7o?mo5@8^mWv+iJI4!X3cs)QSXvUy+`@8vUrQ&qBwsg6661LSWl-1eSoU)4Hgu4p%=#O~6`F%PdDa zD2w1hhs&$f*u=ztfC&&?bz$wWaOM(@PbeK7@d0I}Xkom9@0C{Sd{dtgp^emU+(86> z{B*>GFBtYo*rxA*(!Z)c2j<*qrFv5z2C378K7dXl(P%)V6Y*qV&y^(|d%|iwktbd2 z5!I%`3=REU1HE@PleY)b;5e`YG{Md`{z`H}Dajv1$W?h_Sr?J<^NNWh`Bz>Cs@zJ4 zTrDC?S_6YusYaK`POK&uYSm!aM#Kue75^KM{gy($UIQMI@KM!o)@c;=e3|#joOvj| zD91m3DF4{fV_o*~P7YUzktCK$Zys$Atr_L7x+UIMDQ*2uVh?96d)tHCa4rSO+*?B- z(K$dImjo1~(byM>$5C4)GN?%OF zJ^DoJ(XquKZNw*qszpZR3r6`-$-6;D*wFwwdTntw&=z`vUKDg!j;|9+e3hD0 zh@xwA_l1|JCEly;=e7iGoV6Wfg`NN{}^wVbHAa(y_RR$pW+ze-}5f z(Iv4OEhJVb%(Mj41||>+0mEw4iE+*^`RQIl9*Wn~k=%U2FRVtJ0_Sml+^Rj+M&l0l zJJ3oiRRSdn+9C4gyYjz)Qf(x+q22PfE5Bs{k1M|+-Xgy>bI&v=6;+Y8Oh~upm5b^^HcwNYavq`yv%fFD8lHSb%oA_%Ox)w`mmtwouh4!e zghl{)#_X56TkVqHa_{E$OL{+M@5M)3;_cL4+ApaIcfSO-87h+wy=FrCE^rk4L8-a> zn)9rC2gag|YBR|Sg47LKA%as9&>2zl`>9luoc07#^1WQTP&E4{WWOuXYZS5^zR)fI zUP~pxZ}_w)tdyL8SiaNoDJ_E5Ozf6@MRCZ4ClM8fURT9xF`_SLd`t9w&Kacdeu|z; zhJ`wqB+svi#C2~EK3o1(@LFXSgrLsEObcat3;c%kdb=|(1hQI^d$A0g4I zFH((!{1YmV)QS^i-!QE=2Gr!cWQ}rBo!+Snx2p?#Ky(mp9EYhOn0uX@peO5jV%YZ5 zaO*Y_d>)AUoGAWe=~1WSt{j$sTx?MsiW6pj%1V?h;5-TSY<(ZX(t*mhDG?My>gWhH zfez;UC!JN1u7ooE!O}3S5gEUD9B8J^q3ohxpOa%C;NQZH_dCB$_xb)bPWi zK63UG%X(`En4gQxV$@gK0}f)n$g7_#G! z{a4`QouY}|fD74Gj|pOre?G*rv(;;r@341nr`={~f~Z*Px4ag?O~G!f?06Oly1+al|C9O4vAA49-`0A??|Q{; zVxgF-NS}yT-=4h6=2HGfA%cTA1OFCoP4q5>Pgz3q8-)SlR70-Mpn)!tvh(~emL`W6(x`KVnfx+ zqF!k5#SRXAEvSPffBq7ei=OZ$PFWTl`t-;}BdHvwsJ$&X^cjta;teNe&q&Yy6=UYX zGqmtJmvg9|p4ZM**p3cur}PcCbVI;eScFena45|$EIN~lyVH;Tt17y^#5h<+-id`p zy;P~idf`vM=b^Rm!S(v{!o2zXp~)Q%Zp9JQ#de@ser|H-#ek|$AX7!Me*?vDr>jm0w|+RN zVP|LOseI&$JpbO2{%5xQoQC2t9q8NHp7=03(fbJcyo;xdqq;9>Kc=saw4Z5H-I2>u zZ6dw}qv!mp?P2}~(^H2o3M5wz3ED3RU$Uow20!1TI$Zo}i>c$bVXC&iT@osBf^(un zpR!(P{&(K6<3ryBSbti>wY9K$Eq?&Ql0dTMA6O}lv1b2 zZJ>Thakkj)mwL}v1AnR4e%^X~X~-J2x;oVnA7vT|WkQE!eyJTmKYa0H`7KP;EMnM9 zX$StllNuEF=}W#~wyosp8oDSk-kzJ;N1QjCU*jo04@2>IEc!10W_oKn=36q7Wj&DE%R-s)ISTcecd6uIyl491a)?8(6o!dX8!J`Rky#*5fOK_Kib#)t#uXZU`(Y zFBpOu^zq$Rawns=nwy`X$=02Ua+v*}TtZoja8rJ!b!$nVb`2}=mpiGr7*i(i1z+y7 zC(yB^Jbp}a`MKG_L3>$pW&iqv%w1@AVBeBL%$Dql;C-tb4)!V4$R-YL57_TbAK7rQ z$Ob@E6bYnF~tYgp33o6p>Ot*hV2MU zRO{3K*aBR$b7+C1|&>gNfN~GCESw&!cI{{g&0ZgAG^1%SGUev!2U9vK@)?Q(d3_ zP3IRhj5sqGDCBi88IX{u7kIOO&+*Rqk;dJ(VER`X-$#FEe7&rh3VPx8<4@e%+1xU_ zyFcm7-lJkut2WN%Zujz*hJ$_k^(}~BpRGy0T;!ZfA3v*q_wy;Mv|xIW2Al?FkfpOi{7Ey%)^tRo9z^s6>BEz$Ov8P;gVjiUN8O zN_AMlO*QsB5hAiV87dTocUC6Ptyq~4D7X$jOHI*F9u z?3`Bk3OcRI58!@bRwV{b?yv5yR<<6<4MDki#kVihWo5`en3V0!|M8u-fsWl zzP$q_yBVIR(VE%Yx_2`FZXPeykwL<=>!pFCk!+ zg!&MHxF*toJCct{h)M!7(#jBPw)9$2HvuNnN<+-oj+_$a`+)+Juv@*MQ`Wp@0ME@g z_>eX4Np+1Uyll-~0BNP4N*)arux5_J6G8oE6>yf6HB$yoV699b&S@G0t*`3k{L&qG zIf9=x?`Ll71HYh~%OD$S;2ksYDd&Vm4n`Ez^C~RMnt1|Wf4*RA?sgq*n$3axbcMRZ z=XUV9XGHb++|mN)Y46KhdV@2amXG}v(T+!9%-of9GJA6PID=;P$NAVa_bHxf&|fbo zn0|vU&QoWVv0OLj=w_Qis{?19rJK{iDn0pzZu)9W^lGgb#DQVfY(e5#4I*kizQURb zfi4J};6#cFoUeI^FpPKSD*J{Ss?g0pe%-w0eY0I}oo&rJpsvzNo9@r) z(FZ?$$ot;ewC{GQprF|6(ij7z){f-{E?=`|AFF;FK(z44`H~03uV}d1`{`4g^r^E9 zVw4mdZmG|W?;u^v1HrR=FYohz_NHK?`4kIE zJ>e~UO_B#KK2MdS$qU~fI7Dwg?0x@K-FR<0+r008*ZaP?=lfyzn_tw*PTjzbbDmdY zv)=fOi3>ng@+Qtl^}LDO?_!wqruRLQ+>N!wy|dO^D2UG1+>qDH<8||E?=2(t0;S)( z<8>s93TprA_Hw8yr&^e8r^&6+@rK*W(_Ff9@ngC9`~{Wrx^=zzbZf`!W&&B#<9R=C zNe|a8J@Qt#XuF5lU1bq{_9XAKtGa>HgWL_(XA8FGda;9c@_Mn^MTU-*Jvv=bpR2x; zkL6YWy{fauSDQ{VS<86tJm3vwnJGQTn%(Gj)+~);Zvg*F&Aj1Fq>7`n7KEg5L~CA} zSrkS|E*D1GeCtyf#q*c-{A*LbkvAwy-!s%ot6s~e_Uyb~cbJK7?O0*@2bFk7wOlFz z^h84Ij`g_K3LfQwT?h0y3n`;#hpC z!M*byJ$45y)`S$|v9&i%odW~Eq@L~tQ`Eo~uL1miO#^Syz<+4S49T$DonA$Fr1?^l zSMhBs)_WD%W?FMEaRKFE>oFB?_A1Ku^F5yBO<|Nr-iTODE(N>=86a=aXYq!!TFz~m z`_`=Snha5g`wnvtLiRP^Z|wj>oln%yh65u+_T~;X4-O0(si97BZ!Xf4)bZ?ksb-#} zUgU}Ml6l;!EimksNqdF@gSGHv&p+_^Hnc6*?C2G$@W0?g43K9^JG=8RlTYg^l_f@>KWOiHw{)V z=h37?R4+O$=S^=WnPM|R%M8R? zJN^dr7HV;V4s4*!v;Xv-aqm20o_)tL5AM^0WNU|$QYjcG-_Ya%mhd#5e2V|kBo0~T z&F^_la-aRSzO~hRphz^PWSAI6>ieuS=Ny$V&%0Hlu=cBb=N+!I!&QhGQH2BaaR@da zFZ9j=VVDSue|Lw{flG<%IeM9Ex84RG3LI@db3PZ(99SRESVMw=Bcr*#A`Jm=|BjC7 zq)DssQS+u&l%Zrj7MRnZx4niT(#2)jD}5cB(6#rwlEael{1w z`VC_Z{LUR#!M4rpKQ98j*6gdb2#>-P>K6|_sbI!2%}RR49of)R(WuPRi>69n zZWhxMRXeqWYGwTl*fww72iTyRhjri3x_QgKPO~pF?VUo!0eUNQU%>~Psd&+pz8v~6 z)M~t&zL@IUIvwp4sQ%RxD+^{!)y2sgz|T~gxo_hK8+fm;HS4Fa5$-qa(LIW*`*q*Y zx?%T*PRD5X)w5&xprYf=*NbW8mD~VyQw7XvV)NF6ZlAxI>+``*54#Usc)^8KT;n!z z;RSwfwrb1LaNt7!1>F2fO#oy1N-(f@Gf+2Ax;Miwpjzs2Zk%7Z@H)9SXHd>t;CAHX z-keN1ub1koBdALRytU?CfcJ?ov&@=(9j`)y`WHCgb{i?if!CVb>NYZT2siV7tA44G zLuzD7KWHi8u-XGjNl7Pr>z&l|>Wa=Zqof$zWP|3ma{dSn^@rxu2Zn3hsrL;`4-EI~ zW{Y=op>Ec4Xb@H(3-{az|C!bg`qt;Y? zN3RMI8K*(Sr3QY7hMj!k>9|`P9OPyoH_|gZ|Cwvkd}Fd{Vg)^K}Ae>#d<=L5C z*Zs5U+_jZ7HhTjvvRFniCcs#Y=1kHY+IcIq4xj9nsLlT;4BZ_?_}aHRd>Uq&oCMct zg&T1geUR_xiY~^+xx3oBe_3@4ivP^mArT|4vbnROjjK`3yn$t64@%{av9(yKiM$$2 z&ofjmxeZ;ZRzlF#OJbJbQ0ogRKzH+uG=)LmAzJvb*JJ+zcu|sS`%-|~+)7DEkJ?m; zqCQ2rDCOhw>_Fom*cL(yWb~z^PWq$XKwlalrXyarJ(M21KWu;KYDqVtB@Lk^4cWJo zD|jqt1ANu%O2~fIcEa}G1NNIidvg{}s>wb(KG2<=%J^|^Nu_1N`CQH?OqAa2Q6xPq zO_jun@5ly1eP|r$#yQq{>|qUp9tqxsMvLfaMD=N7%gOe4|8_srXj-=wjkL?H(e|wt z7g4KZw0)yhiq5UYH?N-Ng3^X^`;0W8jZGd1!;AH)PE>B;M$BX5DRzr4rdUPyx3+96 z%G^05Vk)*!G1}P9_m^V`Sjn6%PvMAh60fD3HDk%0OjuuTnZbIRfF3Ym2h81%!+0B4A@CLKCJbr!tjA7URAUmLjYyr#{@!dwhT{qd&ZO6Y=w=`+`#-+t7N1dH!$De!rW+{|D&Mb;({(Xa@S&63tI&~D~MgXRi>{c znwW4pK6G~&mFc3eJ=-XlZKG92EiLsa`e}QfRHxN*{v-=G240!BjUqKT=P}u$iG8=5 zrIU6i!`_|TTGYC$u;CCd`>daGGBmL?R%08tdBz86lkJVI&R~q>_i-KU^@0|Yi6O=9 z=bC6{4C`lkc2Lg06DL)&14WW8*c;Z=T^UM`$JTH#?yuV!v^Ry)SL_d@uV6|}57~Ep zLLN7!WIR*ieKLp`XK%*A+TIni*Jq!`r({r|PuQJ`kbT8r9NJn7WdJD1>GwwrvZGS( zPei>R98~ISuBUtM5RDH67#$ziXQged__o1A;JL$Y-?yR0o;_di2oBv^(aw$R*1mZf zp66*W#~t#V-^x&u=XR8X-9D}=!I#v5keRp;}zZ|n<&3=^&0j@u|oHlkFnQ&aV zwZw0UX2tz%Z z055`FCUBVUzs8ZD?x*dI054$g!lzD75}UG5D$<>A1o}jBPz-obo!F)8iIhwh) zv~qKRP*|q4$9bK~IHrSPmy*G3Z{3Z7^p8FX`d`v`L+Lu!?@t)-X(4+Q#eT<44=Sb;E7HvxbFcW&9j>pZXx2n`m0lSXjUTTILun7Qmi8P9KV$bcZhG^LzW}ji!rfGWt*1Pi(}LF6cCVGT1F>#i5)bvB>~PUnx1uzw?~ zft%ry{8N8}2J6PJo7LXUg}PbFjq?{aw$DqdGP2HZxpS^Yr_d!k%>22Eu8^8Rg6gNl z^aPKM#Kx{AHHZ&8x2Qyt-u|Oy(}-Jlm}K9^k=(f46XpZ=#8BaU!+Ukhr^MQR?yJ4o z)v`-b#|zz(;=zL$@f>$ty$2)Xrp#tvJBNYXNKkj)Kw)RP^eH)ep`NHNTdUL+s{5Z_ z-7TN${=K=nY#mc)s_t~R?mPQs9(FhP@9h8B+q7TLLvPc5IhWlK9m$>ZI9qi-JdB-3 z{32bPcs4n=O$irgIH$Qyw=Zo|)7H%6bgyZ=pgF+4qdZ-axg@f}qQ{H8xlv+^g zO6Mh&8<7_8edjAcr^)y$Ue3w!_*fsRT)ykC*g41}5+95|AH(SKts{B&BSAfP zz16+pnzMkA>c}4UH2QJdB;Dx?C`_<&O-rfVj z&@C11I*!KqYq%6yE&S{Sezq)Nja(fpc`MG*ykmS>&S2f|3ny2@SEl&nzLk8tg-$gb zs;8yIsXD5HGj$0$Z+*KMUpaeEu+PR&YI*!b94xZLx{fKd^Eyox-Iwe@=$7RVkz|yGkVnP@7C$FC;Mw!?Uj9k-=gfli+y*`KOqL4gn!|?D=i^x z@_?rp#8G)FN_Rc$S-+w4`;)8u(`y^<1CHZoHxMx|-S>ta*P$9o^8GQ2o?*aTsdoyy2WX zZm=3(!hEyHrs1XLYgN|VKbf!8)}4L6HCN6ADzCf%Gc^;Z>kBTh=1GOG>u+*h+sC~= zm+QA6wzRDJsh^@$*7Z3TSdG`}E21HMr8aR#oi)!kE#Lg(AO6^yx5c!4{jF0NND{%7X>{JwjCs;nrpdt;;WKo-8C6#s%Xo!b^Y-qrPUW{fpmt+eLN^16NA z+1A{s*Hu5;-~%usGX$<*J=X0WbxaNnb@lwSt;T2g%Ay~2wR)~K?;g|IO}E^Bjy1Q+ zv{qYJN%`xhH2}r+FHLJTs*`%#fO>Lm{2Z&XMy>71wRZkDQLuSnJo}s0Tv@5rpK~cs zqO>&q=lbKJYr4cET)>>WyBS;yTgc+OxAAtS4Xbq1cJn}G^37`UjnIPkA zkZPsWZ7pTHEVb2Iw@PX&CP8^w5wHb?7L{7f7^{d|K&9mWJ?D2PBqLPTx~^>}ANZZQ z?|aWZ_uO;OeVhu&Bd)p4ESk&jyWwL?TFQlNVhPQyqP#d{)oiDpb)Z;syRm3)*jk|{ z_gZe6Ccm%NoM+DBZL>QPnsa1E1^xxv#Z~ePwH z{SD0l%n#yi1kGV~dH=yy&FlQG`+lkpmqN_vX%17X+(WH9zO6Y-ts2U2IoTk+Pn_5i zQ->i#t(yBJhhjU2o5FL8tQB1~hsd1LBI}ODn!`-}eZS^VA#q~YYYx<>h-Vli2dGB} z*R+yyYeklwLj^BX-!ap!L#T+~ak~x@Cw75dhw{pDtER8yaAB$y1BX~EE;g+gGQ_%L zfoa8Hem`znL7dp9?HsBG4dHYh3fwxsokOI&Xs)&5D$SvyqyFXdJP3u~YqfF^3Y=x6X`UO- za+YL$o1N;WqEfitJ{guMZ zAD=O)+|YiFNrivx`zF;ec*a0UH7}KFFr%llNi_uCR$@}&9}}YiO1X@f z3omQMb9VmnJ9f3ktcXnIiI|r`nM@hs1y;=;X=x?4NuK!|3P#$@V&X!>eQW_F0?n-X(iYfMOaa4IIGoRx|RDbJLc16pI!Vf|7u z>97MS@}k2omzaZ6G5aG+T$ZXQ#CJ$z(qWAFb0y|8cFY-bi;!(*Ys@NP#j)2k=G<@v z>^I5py8p0aA~jW7cidpd6!sh2Z08x73T_{lmdz=5zDzAc$-YnF*&csq+A(hBKAm3=tD4H zSz3e?G(uxm3X3)^3eO6|ia#SU585$jl@A3=>oq2m7ktr{_oh`10ZV_%A?B=9JqI!@ z<-Cpx5)8{6EuG$ESZEfvK~VBrOi6X#RLsFp@A6ch{N8SU4}p@mNX+S}dLr@0 zrkhaty-t5qe^}o4B&H~P=_Be14((7d&+k2{Ji%wB#GGx%EEf4Twp2ssDrdPt8alnSjNfv)j!8CLQDW76L1M16V^+v47pv0HX+@PYteBXD1)sBS zo?+GenI5To(vDdo6ST>5R_UzP-=&c`Ov+D5%=_(_w21L&mrjfLood|>#^w(s=8RNK zgxFN+Rm1pgw+?>7=$I!lV|L6+VW1{v<-E$)-_t7R6*SDvj4Tn< zV^#P_5AwTan}qgj4Taup{y-@7_G1aXs5KOv6sFRG6S?(Om!B#Zz8bSRKhy#R$}6jN zyHla?(pV3Zb`a%WC833_p_F^VW!GvD#Pk3HJpSMGcm0NDr&~o`*^GgYplMO=QB9z7+)KHdU70|zg zBHl@8NVslnwT6Z&_+7JDLRnf!C<_hgBMqG%o=YDUNocLfxr&8MY?+24FhMh8By?md z6j3%-YC-QXzl4Ho#YPo^SL{5Kb}0ROhlI{eg(67BvQp*Jzc)$f(o`sd zRO}Ew(u0HPqiZB|q8$q7l(|6DR?aGAF1S=epRhycidY_#vwKTgic4n-|Ci8j+o4DZ zq&=Xa2&|-ihb5bcFjD8R%p+MiRD_rY24Q1^}?>{D?Ywgf-5y)co z8d_O0t=y`S<6d=}Q)yZ0$9}D$vV%y*`f44ecDlcxDDahRQIxeAJgvx`u$h^KCItW`rV}8CjFkT-@Ekt zkbZxx-#hgCZ~Fa?er2a`Q{5~2{e^yu^b7X!uhK8Ii4($jp%o~ez)oO zDgE}3*rT)(~a`-XlG>-TQ`o~z%L`h7&dJ@oq} z{eDfqKK;(r?_m92qu(j|y+yyT>$h3IZvB?%cf5W}^&8ah68%oq?|l6Z(eF6@?$YlB z{r1=ImHOSGUzV7(=#YMYrQa?3?V{fw>bI+Y|DfNm>i7TY_cHxnr{9b98`dxLD0wc| z?|h~M^-KXCx^t)5P-_`GE{obhGj{5zXejnBE3;I1rzn|CdtNJ}p zzkk&4o%;QZetYWor}}+Uzn|0ZefrJQZ?=BR^!v1aqx#*e->dXnuHTpR+o0cn(eKUr zP3m{Oet)lDcq`a=QNKUY?=SWHE%~<9x29C*dL`bsy!)dCc61+ zN8_?h&)0St#p@Z{L+)&A*^*C-H3r^IdluU)80^*~F^OyY`4R*DiCka&?qQ_Iwv0T4 z<>l!G`=0}8?TYvAXKtd<5Wzg>}KYR%ak$dbFl4LqVW zeQb8ndEDAiqc~*)K5~(HPmjAvxAw_Wb4PyX6Y^wd$8d9Vm)7?>Jn=2u^n1*7!WdUD z{#yFMAR>wjZ-2jn?_f_Gl@5gbp#!^w#V31=WDuc)@B( zcb0A8*&0(Lc%$+>;_!M7y;BTc1{}c_*lfp@*E9*rdD0=TrrwIV2&r`mF{66uQlG-1 zT9_O`G4hxzWeu33~1@PI}Pp4*H3% zU;#v))J)z1qcQ!YljTueJ$FVAvDv~~IEjaa2zV6N-tUfX?ul_DD^@N8jaTSSV9TT` z$*=4JXM@MRt?Kt4XML#P%VViCyuuRzmv+aDM_rgul znDF9dtCb;72c8d4%rKo*vQs)M`66+IX0z!q>3n~D439#2@D`8ifOMgX=IaEPg2;-?)P2&v1@8v%UVHb^ zsrTA@rN37b7?*mlMp9zjDui90P9gU=j_TT7Bbo15Z@`RG2B+}cLxQa)cuFQ#GjpwRde&t5G5|8x0o>uHQ zIVOCg^d0X*n){VL4ugHR9evn_AW;BIWba`Y&!4`Y7{NvTW1fbl>*t z;&a0?C#|=Z$+NMT6NgQ%w3ZD+5Rk(klYJO^;1RIh@={N&i_l5S{fS!}NBQHo9v+3| ztuj}md;^Wx(#)OMn8$ZYV}Fm;ZOUQ!PCT4P@Z!MXTmi1bq+jog@AQZz$Jnz-1`KXG zWbl65+Kb0c278xnzN60*rzii9@c$?;&DFIZU%tezI*HKYi{Cs7 z(<{k{*Pp=Tva2hfK-XO2b%*&gE#vJSl^n+1TVdABFUdM`MaLF46#hz)~n!v%inE9VnD z7`MJX^R>rrts0Zim(OG>8%1^lFb8Z~xQ{e8v6KY2Uc*smB zIuH;XdnfP^^=2#jGSv;%di!MaYFvO0Wj3=hSUZNs?&U4JYH#BH{$%8hzcGOK!(T!= zSUtPt%4=Gbhc-3!19Qxi7=huLvE?FI2z7cmMp3JFM@YvYueQ_LwGPIUvz@aYo~y5H z`jI5JIf>>n{QA|AYXa`3$apGLMsA#zdW(s}$9wYEuMEX2JWWPzq}xe8c70uP1Xq(dnAO&=dAPOV zYFGYS&Rv`}NqUdHkHf`e1}BkZ**2kMZ@4xib&*IWR_WG|Rle=Ykac1!u08&o5}eS7^dt`t zS{u5-d}KwyjkPh2;L3AKTzvrpQl~~zyLMb(*E-!KlLNHh&B#oj#mtP?e2&zs{RC&v zd}IXVcmTPH;f45aVox?fVGNJT1RXxd)+-gbWUdcfk0ahT6%=IzZCE03m6PALg5V96vbEqd_rA1T4ePH5_t@fq0@i^bEH;O zR@zXQq~WgJ&Cg92&!1qf|_Z2R6fpJHlSE z!IgV0e0SpJJosv0Gwj#38UL}uYrUKMCqGApDHKDgiGpgL{KjrqtxQzdBoa|DkocbR zTV!Bs*%~1;4hUaMLq#0Kl3;URdCyMX*L5;?EZmt`+y(nA(9_ZUJ)wAi#vy{@w(u9N z4OfaCiJM#@_u-120gNlT5Bsb_;#`Rd7>yL!k4 z-;-f0s}-9khvHYr-5N)4MzM^rRy4{O4(?2@LK5;ZRuKHm^tN%O^c_zPCl)T32XjZk zhrL6O1>(F{m+Ku`$7D8iE0fgF=a{61Hd)=i!DJ>#1-ab>$*!R?kqwoJY^Y3RLj}2G zeS9W-otVX>m@iq53fO1A}-YMp7VSeE;O!C_T`3*YjioltexP$3$ z;^t9O%nm7LhZM6zirGOmrflZZ+PReI+FX#x2ZR1>mM-VVYgQ^kb3I+G{F-Wh7bI@V zBgC7sGL`EYOvsCbh#cX;ChcOCEJI_WBf2}-&y~rv*3*T<%Y8huHhlasZ|6wQ5d1yi z%Z;m*A&ZMy`88|olAMSj{#@Kw;3EuBq!u90=fZkc`w^2RTQa;EH&SEYj0EHMImvg6)8IaWWd z1*Y2ebV=wf41CY$-1MG29xJ7IoL&s6Y2AQYIgl3EGnlV;Pag_$jR+y03#nL3Wr0x; ze`AT-{)R|K^LFM4$dwfbOGD)$yrnFQ;r8+Z^$=Veq$IQxY$H#E?39pxwSw~YSh7un z*?3|~tmY-_DaAYr+B$8;4>aBRBN+nlyu{ri6DMvr98O^?ns^IzFYAFRd*MUzz}{?6 z+`CthBb7ob^zH>aE9E!-=iAS?%FjGOjZ{xiBlQ!Z(Yv>gfWY3tcKsxxSD6iqWYC2? zvjwr?NuIP4mY}PAR`~RzJ@LpgGl;o&S+qoTdCBmyC%0Mr7roBS@R(+v^|qIfzhu6}{IRu6j^JY2xE~hptYza^ zXT&#q^WV_7mM6iE5MmMdg!?`t7M^N(+9q-Raz^NTj8N~}qondO-rke(_MVKl_hh`i z*I!sOWA1Gkb8jm{eLGji+}jBFf`ZrqZV$6Q?|=+)#NY784m>Pu`12dS{6hgJRUNzy zUalgj5v37v`-?n32yWx*53}hnCH9vR`>P~BNG16}$oAa=gL3)02Ejo@g7)@DS}qIp z7w*(wxKsZo?Xp32+GT^b$`W7@4P*oWN8(m!Opy;$uCo7>#jx&3t(L& zXBXx|@Q62h^Rc^|lr_kBUOzRBNP<+X?==gjop>(z$(?epVyv@btg~XQvtq0>2r2WP>k|+-_v@OVSQE?_ zRCzl~$l^d}Lb^@tOh~sWo#*=#KR;KNHU9X|J1bnWNqIKQ7xoGu*yI~f9E0GBa{_Tl zeE1buylj#Li7`2~S2-d2YtCUoxLg(lmFSt&mZ8YRy0#UicZjv0sLn$1h}ir%QIIIg zVKfMnqmO-<-+duuRpHrAwf%L-{12HzU2 zXct1{)ox#69%|+)7gqjWk(a(Xe%|oLS)Rn;|Kiz16eHl(8;|_ZdL)vUSlAPj_i{zC zPLxA;VPs{8we&9_QJhQVF$j53pEs$|u3nDs8BJ^F10N4}N2#LT%2~ThTaq zV@p%s^%awVi7pB2-y15aJ~pcAoBf_xm51MvQDmBRa@jaQ320B#zpfKbt^(6~Y9*cnAXl&2!@s^^ZC75yf$#JN-$6_;PzQi|BIMq^Sr@BNrQ zOVkP8QL#!-WTX%nOO)Y?=Ke|LFx>M>?c@{q_ zZX4{h9(k_$EL~MWdC@0)ZCC(&j z7%C&S!3p1kmR1)e%5%_99w|V8k4IJ}7Ued)n#=O+>|-G9J*m|dwSzY?XtqwM?eiXw zvDcxP%Z1x?gs&eW$%Bi(j7uI+_z|eP-06_}N^%40@+^L$9JXS8&c@XNS93m5x#V-l zzu8gc4*qI8YDYWjJ2@IvGXD*m!fc@VYp3+dws$O;H&^na9}hF455ZbC2ESCFF}WqO zx@j+QMU^20P;&yUJ&U_r=;dl(9GP15!oIldOe@BQ{|xYL3}29k+Z#5u{#u814EM^=w{-k_8=Q2DCDJ|rALqw+3v`uVj^H;ST?Kjiy?Q86$?;M@(t#Nll-4yFyEJdn71~Z zRr^^(`*ywIk7N7eMV{h6D!P0J@3CVHV=tzCc_bZ{Jdu29!nkamdDoB|(uTB>hMg^q zRR!^K@jrU~Y7E0tiS9HP`&x2|ykGnIR&6SIWTPh$+$!q7;b1E^PEscd$Z?{eY7#fy zH(Z?SkN#zpb=$)d77t?O3#Gvth(|`V7?29aUv2(OFn(MJ6;9y8t#NK8POx^SGw6Q3 zvfO%PjK^EEGqP9T&rA(bUIpHiB?DH6=r3i63gVwxBkH|yA2g#4O&w;{yH_C4kB-L{ z9zxMCtUw*I8WPL(7-~-8zu>`S6?}*L@_75v?K#n>SxbB3C(WX*JAJmn2qZ(qXin^~ z*PynlyK>v-NV0}H+xtWD?X0hv=p&HFLQwm_&$h4ZlV%GY)QbK_Nns(Ox+}cPCI}P;jpwjS`*n#>J2401 zP`kqhBWORbBqU{dV?AoO3$P1|jk#{vA4N7&i4I%F!)+B&?DI-JwoTx;hC(e~PZopT z$--|0a&ln4ShcuyzW6PmZp9QpP#1oSIZMW)-;Gk`PV_!OmLI=HC}3g+-S$qV6%}10 zhKz2MDr1F%&0T-XGelmG1xn@9PoaleZbdiKZ{ihwtPNoX;xpEy?mHR!vudh|(2fQx z+R@;2e;iXVHW~WvRWcmXmJH!~LVPpI+fd>RAxp;4NjeNZ*le|RiS9TtV+|4rG)VIp zDXk5t{FDqDaW1`9nu$#0$$1j>8Ou3sI4lXaatl4LyPAR$6z<6B-=`@9>d}(Q(VR4W zdfUQqE4PABl_rE$~)H#RCVi6MTC1* zhiaeiDUMdc6k+dznuw4rO2^~^S`$AOeUU-LQ}D7C*P&X>%T0x5yceC-yXsg)c_WAcI2`c5GX;(!++qqeFv!UZCUaEd({6 zdrRasq4%0@^rl#|6!st|aFjiq4Wf4^g?M~%EKa<5i0$3^z79HoPS>6aZ4c+I-~3iY zNQ58XjX1y#1I{flE2ftM zrAlYh0NCLu+2VFB3V8>)=6la>RFhQiM4Cf2yHj+*q8Y6s)>kls`zff27v6I#rP1i% zX*7lnXfsRPulZ_gPtX=Ie9Q9oW>&lN6}y{#&cmZ?2bU0;7d7lYmKJZb_uHj^-HH!H zy|U?-9U|x;cz6O=_seiRivyOsg$_Ou*@fc_7$znY(FrWvX~nKVLlTI;=F4wHRHBZq zLeMfl&_P+6-+9Pa`|umo+UGoE>@`BKBg#XAMwFjTM{gFQ`ctwinOGafAwCT5B$JzH z!C_XN5K0lU>SU&kiL5Q>7-}Bihi#9MCziz?<5nwrkNSBFF_ki!V>!n`WKvEcf&81v ziK&~Mna~k|5J^l4uti~Stp%y(&|WHI`WNws;zWe2`7FQFOFT>cC^7jL1WsS=c+n?T zVZjdbVGBcUr|e*R*ujoc6)__t)tbR?j*l>4sfg@QPsGE>5j?e(y~jzF`=rU#Wj3cDa%wrmaz zk05*OzyVHnGCu^$MXuq=mJJu@U{ti?DrR$}3T)&dOH@29v4p3kP36ZrlR@+y7~_}V zhdQ0F6UM0Xxsgv)HhHS@p_E+m)0ABDLc2L(SGzf3Q))sOx>}jtHSy=ZT(J7ol1U<1 z54i~UMH+lCJc7;>(a@fEWaSANVEYD|fzI4pE9Xi#WH--jC&mOHOiq9#1ozek1X$)f z1VwVaKDVO3xSG4A@STz&KWod7r@}W>06}`PDs!O#k)nj>CEwsOhkV z!D<^(2js;dV24A-@Be|k^II9TZK+yDLi9IOs10#H+)0RANjflE>?U?X{s~y#hS2cQ z4CEjq^CqGMh1QGt!Ptk3*Bk=_HvQuV`uxtlz7EW~@r7&r+@L0ga5e-VQRUkzb3G@Q zIzCrhC~^7`=&v1xV5J*M{6wy*5e*qXB|;uQg&5f?wD*^rXCt4c`p=9P6uv||)tK4C znAy#|B<+BH$mEC>8_#O4y*y7fRq#{!Oj>5e77~d?+uTuEoJ1SZkMmz1D|#oMsA>A4 z>$!DN7IFlBa%GN+O8P)tk7BVhT||pTcyrBXE;xq#ze-~*mrqV?uF^;%+w9<_X#@j!-4o4*sFd5txl>&)>1jTgxiXW((`{H z=lJ7)=2%=x+8OdKWdI3V+Mzvb)YRz7@qP*C0x7 zj#wM6Wpvjnouvl&*Ng|&655_WH2n39#(Py)+0#ep)5f{9kPWCXOH@n~%(xh8$D;!4_#vr&`gklBe`>w6A1t)_(ij z@z|%^@z}?iVG;Xn!TXsz70m%z>e-s)wmkLfR_s2g*wqOWn`+D%4Zi$c`~t_jAaz2S zOU7p>Z|7G!oyb@c2`V`nf&k?*$Zck;!fGqO9c84~=3X-3TJ2k<#_t*RM`{*spdJIZ z!EO=mL&G1IXf#cIG3a%!>G;T$L-dvmR_vP3ULVMhaG z^R6{<1@xrb-kcQ7su*k>&E3+^zhO=4C^jMkwJCdT-q!PPA$L~Qg`8Po{?h!Lpa34( zkfMIiPdU$+97au%CS;RQBUwx9HRx(r@)!K@irilg=6VtjBaz5=h|eMorszfHldDu7 zybAAcDKYZnyOY|>`;ExQJI_=;MjS-m*IhFt{r3D3olSdr-*4po6e0WK?1((V#*uQW zmaQnG=q*1|O!SyY!rKu4m*68r7JcauX9*YLLi76?s{mp5+D2W~h`cTBJ45;Ztut*O z^8Z#@&nSy#Uk(<%*=6*PaQN})3xXo_pZ%_$=h`ak8T#$yyiv1<4J%)CVV%Q@b%u#b z>sVE@Tbz>h@1{xGa}oG__aQ!neHrhyU2dYmBJ4{`0~o$^9)5p&Z_@s}iKb7lXeZyx z63EE+_JZe3<$K@of;#S}9g|*}REKmA6(WYR=5ZB*00jK|WqS2H|LjA+mzvrF{wSH_ zZ;d$G3HYxkAC`!i>TMtfaf`>fg{c$)jZRF; zLr_vJ(IDRTGaMnekI4FdW^JL&uEIa$0GkU9!5S5cS@kg`LX=IS`18iMwrmYz3%0G! zRz@sm*gV&^M7HvnUDJiKZqP$)1zY{mCplwQurq*CM-n9>x!(A@C@(l(BU;`TWm(rW zy(ujvjX(Y*cMjyJQLSq~%@pN+gNJj(ZPT*Cl>PI1TTOgr(?ce)66WyWgI0}*bGpe_ z!fwYF9CSN}`;00Fp)^=e#y%CnQn(Z?uBej#UvAQ#V<+wOb(pjj#1|7!?2ro1S!*#X zv_tq`vMO$@vyuIzAiG3HOfxHJq?v?Xw4f}H2skDW`c1@`w%O3->xFhIdT370M)H{? zohEvOxF>gurzeecu!kty0Btr5WSW&lSk=qPn|W+XoJlXwJDqy(@R3nw@9@;Y8~%E5 z-Cqw*e(kSjKJ!u&e9HZe=~<9;7D)e&ukAhzz7TZL z?-Pe*@f|#jS(3x$gw{)i!rN&&(bwHGQnjAHLFEsL=Y*=*e92@p&%!co9qB(rAiTx%3)H{ya{~AWmWi~Cx%a(gvs5I zuFNmOpE!!!T8FLe`4bfwZTQoG{j#yTkMY{C4JEeUuaf>uWXIW{^KPYQMduyf!9nzT z-T>tW4`v7Rwh!2*rv3tSkqRN)&cVX26&tP|zHFbfK^Evp+z+0cj3YYik98Y}W(_Mn`=}+gf5g2eUe30`4R_uEe;)}mcAA1*} zc5#jJBt{fMK+_9dO?eM9;+PhN3@*sxG~niVLqn2Skz8MbQya3+{9i<Gp%cMe6;T$?t_sIRvzFDPV|rTR6J7ekN*Xl5k*68FmZtxYUMVM9uB3yXJ^gs z;F;X?truu3teWi`YMP05(d*V;}Yezi603TENg2#xDuhJCqhjDdBA8Mv@?fI?`&ps#eUy1xZH|; zk#I6x4naVmgBy9TxO13;%F#vj9e9PaL*dH>9d2my94W+}{L{YL^HCXZs!McU@{aHp zSlp6#l<7Pae`{wluOV`uyd*e-=VfPcSCe1fzioS0NT0ylgZ*cJ{vpEY zQ?At%SOtxVNr=Bi5b1#W^-Uy6O-M8^KyqM>YZe_bj?*K5`*91iBXn^&xr&_`W zV^XNOX*Em&T4s>idr@?>>Tf1c1@=lrG-dw(6GQ=fbU}Zrz>%8~3s*MxZoeLo9ktK(Y_6T!mRd#UJG);}_49QUS{Brk~JK8QR}n_A2wuKz%|TZah4`(>R<1EI$r%PJFM7##`2Ldp!TKr^N1aWM?m;52%dxS z-!~myA}7_G!5dwFzi2nW!4)#3&y|%(Y${xh!2*KW@LNFUyvOSb#P@M?l946`*l?(M z28~{ctS|JZs)D<5kkPd+f9-_qWH~N)i10#$u=Rm2&*qAN?)AmiI3AQ}!Bpzua7=5tZqkMD@FW$16ANkLZJPFi0BxyVQB6XF1P=(yOT_ z%_EcOA!l>FVaQ_tQ!3FGx9l)`9uw9r56OQ%MPJ}Ig`BgJdKRMRL>K)tv58^gfUnlYEuoxwOTMm~D%!$c!XI&O zDKOP|MP7erZXAi+i%uqsM|Q(d8_un^GbcRQ+R#EE+BAN2ZI|pNFG-^i**bBcInoPm&uiM@eB`%_q}fLrUEx0HqUCq< z=l#xKOGOF%DqNn35v~QlOq|H?25j@kpFPr;!wWPrzwb^8K$Vi3sI6rWz&h;7TFj0@ zga`=Chu#5txwyW0H#NW31=%!04j^YMWHSM>$uaYHAbz4rE&{)8Evgv^TMb!@>OLf0RYzROokwtWwlMWzVzqyDwy2)_W%%Hg_ji$MC(Z z>$4r0Wv|ZjJPI?iU$snLPen}^7zDObiP8)bxfqHSQHv$Sq`GiFYF>DVO`&0t&hqmx zKQ9ZPlNg=n>0J2SkH|RBeoBWxn`20DdIy}r=asM6g}3(>Ip<6?+2HQ zJ6kCJZLd}LqR07bSPWuexvS|1>}`Zt_1a6`^-bTz%_^4}Z^N}+>7ZSH>!-h=ldffl z%wzrZ3Fz3vata+sL+;5wV{UC4is;RZD!oR@{2Hvk>iIQ9f3a<;qE}q*Hy14T*9N?~ zQVeS+6~CnK57RBy26d)LzV1-F8?=NcPZ|Ht|d3aIQhH z^GrWYpr78M`4h6OpEmew2YaNCa?q~@oW~e@-sPfV2qQI$v~eG)@tnAvIsfs%fUH96 zac^#xr^EQ)dD(O=aBlJDzf*wU0JIZ?xLAzP%bN=FpOY2ULXetlLBWY!?dR-;$Dhx| ze<7@ibc~p0wsn*K_*-VLeUH3vy$fBwRr6Jf4&?9i?Rt%i)6JKPP$3e9iW$*$w3T{y z4spitwzH(M9`_hp`>yTJr6uld!{3FR0=IEsfKxFC2(xFGiMMea5hcK{@!_crA8otU z%Ay^C&#);rrjI8P>BBMX>Vm}8#h&OvtVGMU#&*F);$JTIIFB8Dp&);gN0ttl6<~sS zAt}~yI44oX(x;N`9DBaKj#kP(HBG1;aW%RQ89TQeuh_#ycvdahk@2lP+T2%rlg^~z zI$kl_&@JR{oc9&!#EOgT4wO@XC?4ppPV^PM;uC&c0SoVv#l8Qkuj>jIM!zN{M5Z45 z=HRPb4WPMglqu<(LI2ub8Pn$Q1DK?stA~Y#Uz5$#1%cW*plrjn4E%Q!3m@cA1g0EN zafs#v(s@+mLr!OIWAX7QSQQQcsnP$V=!^wS$y@0UpG1Bf-SFeL_Q>jRMIVpzxHtbL z%+_#v<#BHhm$$>1ejexM0>~DY1vPP5GZ5e1l+QRo0_2KEAq^jsEkB0&w-jDXkMQcqVLPCk!!L1NOyUg+1k!*ld`PyS&q+BXDVh+v8( z#6IyeuEZ7n3KGG7@mntT#>ezoaz&oQQGHfHeA309c!Uufyznee@>G7R+Sj`p%`1oD znkwG*I-f_*JjWU7=5g-w=5JHQ2Hc}(b6);-FB5jd@eckv_liFZlYc=Nn{Ufz$fPB{ z%O3Gs`M~gk^;UEs)kIB#Ho!TqAIE`g-}CWB4_VJqu6I}?y>p>6@?zrV{+(~WIJ`gE zBI?`^ywcISA81`$Z*?2XjmojP+^FP?m`u|>Wa_<8=H32Gxsl6R_C>}uPw~}yWNvn{ zMjXq`ofZB)E?8B4miV}2E|-J1tv=Z#4sUAflOqer?kOMEWZ{m|s`yw|mU*WP=y{}Z z)F}he&$YCy%?f&A^hhIc#oHl})yS?aK_ zw$PclHb*u$$1@u=Ahcc9yB;Cn-G=yEM|XMUSV!$Rjz@3t9I1DPzsR7gXGnP88NtPX z$T^5c?@-AJIv0ejJrnx)Y8P?C`K^eP?TId&#^7pJw4o0Q3DJ-EmNbZvz>&Zc;TO2o z+mmy6;q&-$qa4V4skx7;3r^Obtk2eK?AD&MQ?Y)Dr{8CM{l4ZOw`p&C{T=svI7J|j zGi@ml-XUuuE{O)w90h;K|MfCOe5;Yc%%%9v+%?JJ3j8y~3q==Xq1SqXpZ+)oV*<4$ zs6sj3Et*yiq{#vs9B?VwU>iH;`7 zZ3!4u!JZ0a0yM|=*#Ox}NBzq!xusucOg5jTqmg{t-kd9> zAFoe7MJ!)*F&BYj@{@d$awDDvtsl!hVjPISR(u8XpXa#(Ka0Vtl|c-B?P_LbK6kWx z;*#SPf8Z{3^8tUnF__<2HILNH)HxN`i})A)1NRpjNQ`#FcXU5G$R#Y~{+p#vTK;d3 zvC6y~Ul$PAcpR{}%SQQnHy+}e!m)t+y~yvd#1!sn#%Ez-V*EIUz2g3sZ9#X#yf;V3 zyD!o0sIfgm4cR$#Sr(53H8kXe;^VVqS-+UZSsS(?3FKB{aijVA_;wDw*N!+l`s#}` z9$`!sv8nMtnu=t*P^gzp%F!R2ZK!-o5O;98$%6^l5lcXDw)gLu$u(V zZP>P8(;fAbeVX!*$eyH^_p)sg8GJSeeA|%-=N*JlvvUMY%;s6SR{DTuZGY$k9hA_= zW}80R+1mI!G|TLoLg&#@3hcZ!@}p*t3yeAJoOp%2_24ziu%=T)J|Oon`+ z+qH`IRCv9_4e+i%RLqo$`Lp??fxJMJX3e{&0-!eECE>;6Hi*HTb&p5MJG^4p-hF>HlKH*m)*M>}9=1bU%B#><~oYAgJ2*#$<- z;wYx*9zXf2oj(FkK{R(Qjie03-{x4U-`!|MA0|Bmefm{d<7-D;P!Ru% z_sb>gWk#JKtUfY}EvrKJ#rKAxn#j(eJeed9wguf!S-ts2oSC%5yVauCO7A&!_tarpCjWa~M7 zqteIu(8t_+l|D8#?}HQq`TMIXN$rcims9coBT(Q(%@KSxa5&&}h; z-1R#P;}_ox<3u%paN_G}qrkEIqNiyViAO%U0>TG7-|Jq0G#! z>;|5jr?jn~%(2lw9Ae)X(}B>ZF8sZR1a$YdAsA5tsQ2RTTnenu6^eOQ`X`o4_9y!% zG^WA(4HxvI9rRZ6FdZM?zU1JcmJW^qoZ_;%%*ps#URAb$iB*i*R{kahs{dmAk#IS% zb~v&t`6x^?-oQbz+U^dnyqwH3H6BHAF~rVqNP2$izj)#h$&dRG>j-p4P;XTvYK zk+xHXq944cd|7m2%r2H<&y=5o?CfNHgfRxrgg=6qbKlP& zSGMxQfB9?t(Asb;#SZJ61M)Z@w`#oHs(~#EJ8V;*GvtSjk>C0`^{D*NBm5A7cFReA zcosy@!YYj)E);&)d{Nu+#mkCq_~FqMKYa3k%nvU(Gk!=3PbFWam;VYsWU_oxh+!9> z562Hl70iFGYF;4z46GA=h!tqzhq!(DTiWu&^H0GK?^1qvm-55Agdg5@k{`03&_RN2 z=4z_fZoYhB9{ZaMcQ$us+a|@o4QmX7sBZWM z-dy9r=)$c{Zw#VNSV$Fdl9{36B^GwW+9^@L&~v zi&3D<#$0M~a)mAU_EK*n`2GUvAHnw+z?b0mug@xFeKL&O?EJCTALH^hH1WXx7m2`D zLwyGsWK8CeqR7kmQi56jAdUGNjyoW~-N7qEz`bAv}i@1#J5tZTc!2em3{HOci0(&$E5eg?lj2$-K>} zm_B0=2<09;`a?K$pL%(hFThk`LG*w#6WDFI9^_{KbgQIy)jC(D}^2gvH4myaZuaY zA0{Kdw4!zHKUx3Q>He@hYRqgOzNCG9`drjnAD7mLQQGzlU|W1n^0W@t_^o|j zRCSBktKi8cT#1gNal!7SFYfJg%#)9ZcP+2e?hcQa!#$B{ECvhRT~NAwCY2G-L(OQ0J_n#cU60LH+a*_9Bebg9a>*smm zrR0If`R(xhO24{zmVKrg8DU8|3V^hiwmy1?b*L=TtYvcXTxNK=-ZG-&X!qP-==x}j zte>Aq-e#xfoI%wr4gsjF$OTh&%wI+>*cZq@7>K_pv_aQ4u~7OxTr{*&<-?!a>*t@^ z>*t^9`uV5O!;|RannWM>Quw4i@J-gw-}JR?=hm65pBqQVFa8C~4UX9Mc`*?GI%2?Y zXauNL6%P1*j&qqez!xXpz*M6X&tZx$mo0taHs!j2vNo{F_S%an((poz>z07rZ@!q> z=*bQ~p`~->EZB|h$D2R?Cx7&h>;Tc(KIe1q*EhnC<{yF|b)Vm6aRWON&&6DIXLj<# z@b?DX5YYj|!l09XM+44%>|F)&Ut?zCtvJ^lxq;CVTFLx0A9lON=YBWxcJcw@w-FCy z{<6=_jm;zXvAKLY%HritR9h!G5$)T>f~&4kwq{$xE=I^O<)*R<(-okP;{;`&78;RC zbEkfoV>^M1C2+BirC384U8Sra7{7E_^Y^v8&__4baOv{?bl^5uBRl7Y#Hz;NfY7p)DeEmj#Njl!w-;^cl zgU%d#!8b45yZLNJy8ir(2}d^-?u^b2&r#vLW}YO|Up=f1bmt~^kL$yo*f+%d@BFiy zKg-S}J2vN#`MGxHyTfM%oV$5yX}33j)2`-F{0p#`Z)AnyWpW6StH0j(;+!pG(J+FA zEo1eB>;y(V=Z@oJ^WabYsGt?=&%7H*6rxsNgj&59o3RCK8DrI%wzoJVyyLcith@Va zD<)Q7e8U$ZU%gC@e)oGA0sDeO!i1l5j{gPW=kFy&!QqQ85`DV-Bz;o0KEM+etly_k z59GfWj30neJF8avS;6gka{@I)>wa5BQUii1+^21qALtF60onU#Y@-KSKPIC^cS>><_w6gg;~C+r-?} z$35|jSNmF?3b^;rdvk2OJHNO1;){C986x(fQt~E`8}lw+g9mlCAZ~Cw#Pz^va{=-i zh#Reln*eJa>+Z6W8&|D}YgWX)TRG(j~z+Kc(?! zQRI4mV(&lv#NL1SiS9rAMEM`AiO|n2;w{1dteZHIL_58oJjzl>VL< z`g-Ns(;>6aN(e4q*XW{jpm=Is0QH z?ESGq!6)a8Qp4NgT71K3S5Eu+N(ExMcz$wv3M4q1FH-U00xkk2zJWlzKYY2cu*gK1 zvAg>>IngV}!{nOAH;{(+ThX^5ULQLMQzf`^iY~R;Kj6NGO|N!T%*dPl0#w5PMUtdQ zLyQG>W}Ca&`(vWc<#^sPXVu-J)Yyfn(mluPp7>4ZH2{G_uh09@he5BXjoBxFUQr6a zi2VDU>Vmg0{#loO=fjVGKhtY!{}K6jiO9c8&<7*#&wJAw?~e4t(;1u_N6LynuktS! zNgB3@{5w+Q-ZU_@e(gptew@hN?d@f=qxf3c4vhB~pI}pPwZ{bPF%0;3N6~D?bkDah-Ap8m0Z%1-J zy_%AD?VW(f@G<)V!J3z?8X<$ED8bMeiB#7;wVtO7gFH=&tW;APnp2SjQ`Pp^!F+jj;}p`x#-rbNu<)1H)_wH zQJp`#L}eEBMwveAnLeKsdH2;o0z8@ZPiy}N-G}DANfVKHeKp+<3S)2)7NgxNzuBZylbF05^N2I`(>x_4}ACxjmz9@kyo#b?4Uf#U(?^P@i+fs8X{CfuE2@|!uxMuSRNFmA>ocvm$iNvD>R(); z`4$(IYW!(s2&A6}PuAFtIJ1UTMdhKBG$OIek`<)_Z!{%nC_2 zJyJeb;Eb6I$`#I?S|sUb%w3@Mm=P}4a%UD*6iN8Z8D(0pnRAO~s=F*)Eb(Vn6lpzX zR?L{A?%5Su-psO6J6^=NBXbllv}dNA=d36z)^OZql3#IASnE|hV`_z*@|;sts`a5? z6p!V_bG1G+U*YVcDy`QX>M7~xlup-jQ|aau&9nVYKh7yG(){Pl3M*dc6qi)UIr%xo zWwRxH<*ZWer#Tfxnr?1USsvbwxkX{6i@7t(r%AlIvr6POW}sa^p!Vb3S(Op>Uog#1 zzhJu7v!tk4^DilyqxCJBTcY(WDYDB0YW$L-3e6w9DgH}lOb84~s$v`eqIZCG%DgBfd&D3&AO+89y%+vaX zi{@%OO6Qd2N%^If#Y+FhC8bIyWiyLP@OG5Vou>3uR$8R>m_-&XaPf zr|q6qs&rdfW{-o)vIScI`IV9R8ZTn^OJ$@~@m9HDuHC)`71M;TglEpxdWVZLgxl>1&oKVQMT(Dbagowjc-GW#N69B-;?1hi z`i8N!r1_VHwLalUSnCmCKoi|jRWvJ4;jFO6pEs>oIm7W&N%F}o^7nN%L zoen2&ZaF!g-NE6K0pxUMb#R@P-O@6sCI>+Mj zrF<0n+qp81bPSA3_xK?96(1BK6aKMcAP^k?v6h!9EQ5gz1~M2p0}M>K@~W$^nK)_k zwPz4F6D5Oz3!L(HpqNG3G51073@+dxOmb~|bWrvAD*tM3wb50k!!Nsn980X1D;6W-T^D^td%0P|ICs!q=H_+!_vS*N#U`c^ggqjV3;BjgQ;F_UTgX*kjV|G3jt? ze4v)|it$gyf5rG`I~_}Ko;tw?a@sNSIwf?vj4m9|9=rnjw<&%PpN9|weQXy{52e-n@Og@i(Kz<_)9yS_? zTic6U;Yeq-j;oCZrpiyjai;w32IAK8aVs2W%HM9_coT1jf#VI{b{I&wrXyS-;md?R z30HWv@!xIW)y99ffvI|>ApFLRGaF7e?c8G^Zfz%Sg}Al7xD}G#xNS(d(gooPZ!q;f zU|`6=S5CThe9t!Rea%4JS{`nNvrYY9J54)M?fGYe(4UxncR+s%Kd$!E?^@oTkGb5B zt9|L^WE;9;knzvq=xg9Q1K|tm4_{EoI8ewqP{^aAI!_%ou%d&_mkt|9xW*$q6<_%l zZiT7(oMY18Y2ZCMcE0x-cwWliz*M>v>}Be6uYs2s_<(`5L&q)cP|yY+%E0psyvM+)1|Bpp+gW{^^v5y-aW6M+ zg*}Y_Dg$w=KW>H0Uz&cMfw|pW6_At#0_W!gPEwpDTSZpDRoc{~&j^;it|y4KRR&&X=w_dRlMUQsAnjLv zO#2l+YUpmGfgv+*ykg)7)#q;wcXqLJILp9PenI2z-NhbfDgO-ocrozDP9JS~fBKNw zt);Ip03^hQ~&D>{p|ag>1ebmuhBrx(L<^| z@F^YV(90>u`_yyobRh$2m*zve6y9Lqfz#waHP>FR9W)TPro*l9W&__nP5QN_+;s*% zV&V-k^a}sebu4tK5Vz)wTj7daTMyK=n+@+Z;k`~n?+=*pOHLD>!dnKO83yj{S)DKT zOYZII_>#chpS2i&{(pIL67{8*DeXSXj^)9f^N%Kzhr<31tv__*7hDevzS18e&@ z?iG7dANAjk|D}9C>U#cPj=Q;y#FtEbFWd`1E-~$G3H1Pkb-v8+3_PWUNf{ce= z7gaa^Z;Xq-6@MH1Iu3ji>-D#`E0g{o0|VRpIeLkCuJpfyr}0mZ_s{0O&fw(+11nC0 zrw2~s|Idc6kE*@BzT)`tspu5{?~8x0uT-Bh{G%%WgYsE+vEyE;$L$7wQ2b2z--dzn zzUp{E``y6vzFOUUD*E`_O39@Dq+sB@0gf+=UDC|o-zNr646L60Vfyd9L3X@s++Q-`f1g;%)cV6>;Jiy6-znhC2S(mfk`` zt6vp&h4IJzX4~*H$@8BvPN&PO_lsTXkLqvW8Rl1bhViaD!+51<81HXwXV&G_`#ws1 zZNA*`i?;dUepKAsM>^`;`tL|{f7o`Af4h7?Y(5`Vx^W{vTKcOv!~B+=VZ3|JFx~@a z81HYz+vt%WE&cti_4!9lziO1@GdcgLjmxy_A07kQ-*CLpIgk6E->5dw@uIj-_ecDL zCceVc#mo5rb6}vy-0FKi)uySv(%gO1+?S-ehorgNWTig~KOj6ke#U)j47`?x$HQsv zRH}E4|B1BlP9^R8ITb$x|FJN@eWp9jeJ_Qb%)O-B4aEIT3CFDv_iE!-*vs4_yVt;T zOu9P_#I5OYE5xnoa4W>E_q1>;#Jx)L$E|Rj%RaX|-oSA#`&{~X1G#^t@wk7bu!qy3 z`QlKxHpf0Ey3WA!OugwFctWdgE5u+uWO9YaroTZ^9K4{%xs0 z;R^ejdaN^Wq`}ih11~Z6`W`S4x0ZujA#QC4ZiNGl|3e1un{U_qfPsW-Ji=4)6)(6I z4l(6CVjylkM~hn_ZY>wLLhgO5Kli>B;#Pm$scgn|AIoko$0Y&XxOc z3J0EL_wNt`2cBj3?+^n=n|d}Hh+FG{Tj4kZx1V%ty>Kg>y}-s#se#1TdJ?X1yh*pi zK-`)Rx1IhhyPQ%3mm0Xtz}pwt;VTTh+T^p_K-`)SZiTqDT-*wAE1q!M_;Nz}(9a$N zCmXuKt??(DczX<7Yw)zr!28a!@%n&)*O~k2`wYab^}wz02B(ex0|wq;@O;2P!nL0W zS4gz`l&%JbovrRs)8Hiikja%W`R{XWr zOYhIWlJ-8w3DZBI@~{5E|FquA48*PN#I3NCq1)RH>}2i}-)2NDNXxj0LfqhLm>kP!L_{6Pnq=6exx;0Wx*lpm| zrXITuBwXVWo{F#az^!oLEe?f43|yLR^N(c)F3q;vx6DAoH6Owi;@0%I72>w(!NAF; z-g^wht?6(p+-S;aG;pISr_n&dH6G!q_*xEbg@kK)xD|%XIE0?HUqYtbR}93h`QTQF zTl2xK@UIg4DFV5l7#DuCxhqpVFzZ&k+-w80Zng25Z6M)4ka&bEEHvp0P5Ry@U0(xx zn{<5*BwW)Gu8@0?TK*oBezZwfXy9m*uF$~rCUE~$(@!?(r6RI|)TCQxAmLhX!WG_N(%)dxuQln`8MxM@TW28QnvQUV+ym9}xi_i!Z#3yP z8`x;lZ8nf_O-H!GkVzjh=?|K8uNZjHqf5N2CT4?&;z^sL){|!vX z|00uqkxAd%r0Z*7ZDC#z)}&i!AmMg8 z12=cI@%^)|cFh$H03HTx;Mu1Mf5N0Rta0@DT$aHE^SW^sly`{#AIpfh!EW)4){*-ecgs2GYNp zj{a46pMeh;_>h5*82G4x8x5rYbsh&Um40Y!^|$kTsH+WA{Y5;bpM8sL|3Z@) z-=8(~0e{wdrPBY=_@~?{xHikqceg1YzNqOQO-m0wYWe3aw!`7OTHXaF-y4kki>+=u z-ibwayc3J6H9l_5=M__bpw|COhF(3VsVDI?9q|-~OnRWE2WtNLY3bixZ2P~v*e)Np zrf0m^a+GDKzr>W^VA5wB{*Z0>1MxK-@f5;$G(Awu2Wt6llYUu>FJ#&NpEmwWq_a=) zci7+`zNGlS%)nGs#E_e^7p(l<*a4^`7S)3mE={M7y5Bh9~en)`39&&QSih@*Y`mi;faV~EN3uqp3d1Mf8ct4>qycH_U} zG~xS<|AEtle-IvDGwI$qP5Mr^+xY2fV0wP%8UJ3V2~Usz&*r|};AO3W>kND#gRf5n zDI7L*f5gB-(=X#bWdCe8>2?^n+rT{^GQUp*k}{R}Knz?^Z%6r}fghM46X9dQK-G`i z&+i{gp_xKjF>pykb)aXf%i$Q3<{p{mE=+TePjgRBbKj8W4yCzE)7({Q?nP`kY}&pB!S=cT!Or@2puk97Z$Cf&$Q?dgA<@gJAwKiT+CPV=8?{HLb*mm2@lH2?H^ zd{W)_r1ej#o*PZO8V%fR;C2I3@zUXuwD1cC*c(H;{>@fg=MT5t7Ywpt!7pw9ZNqGM z_XHc>w8#!m!GamKf5BMW|MMJNlfMg$|MU9#zr*n#&)fc=K4HVZ^t9tAd)e@%3vGD$ zXd9lr-i}xDa~sasWWxo|*znJ}cDx@I*zn1jCLM+m_x(KYQ_iXTzRq=>>+^Tc{qa1{ z{X8$xp}k1HU?9fd4K6ecB(}=FTfavybll^Bah|c~e(ShsI zc#ngLem0Zn#I1AUM@GKf1EkCUlqWJ~lpMII>q=Sim#C3kg^Y_4|Bp=Ftw*MaS%Wow*kL&8n$H~me zByYcr=)fM7-$PpxT?v0U1l!Yl5a04B@vAxiTh}4^>>EgaE9bYE*Y^XX*e~PLUVdsU z#KOOm{K+P=AIo^buaqJ>}EOLagTF;h}d)@39Hw@1dzgCtXBz z*u_Mr9Y}h;?;`rf!$jwepz)x`Y)nS z@_M{;ck;VzKq5{l7FQ~h{Zfl ztN%vwmzNM-Fr4U$qlv0@weo!8r}O%Hj@Q=%OG!SJ&wstSj->}szOV9e)G~?q$;T5N z!s~A_JQ#>=>3$?%eiYHUSCYIpuZyYs5Wkq$`DbSnKjk)}>bMy8OXm5!yozyLHIn=e z<@0>Ym)YNuBp=9lezcI}OTI$1J)i%k|B(2Bzau(@*X_g0i66*?=fD-i+MdP z=i~X|z1aRdq7U(T@=iZFZ1H2AKw9@#k>il#E@x!=|MST3+ z%ExtY&VSw?NpHnxL`U$tnagy0KCb5R{C&pfkClwW430aJ@t(}
_H=5wBtrV}2s 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 literal 0 HcmV?d00001 diff --git a/modules/kb_text_shape/android/x64/kb_text_shape.so b/modules/kb_text_shape/android/x64/kb_text_shape.so new file mode 100644 index 0000000000000000000000000000000000000000..75b8e88020fb83d153158adf8db154906a23f7d2 GIT binary patch literal 684952 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 literal 0 HcmV?d00001 diff --git a/modules/kb_text_shape/bindings.jai b/modules/kb_text_shape/bindings.jai new file mode 100644 index 0000000..ff8a1d7 --- /dev/null +++ b/modules/kb_text_shape/bindings.jai @@ -0,0 +1,3715 @@ +// +// This file was auto-generated using the following command: +// +// jai generate.jai - -compile -debug +// + + + +kbts_s32 :: s32; + +KB_TEXT_SHAPE_POINTER_SIZE :: 8; + +KBTS_MAX_SIMULTANEOUS_FEATURES :: 16; + +KBTS_BREAK_REORDER_BUFFER_FLUSH_THRESHOLD :: 4; +KBTS_BREAK_REORDER_BUFFER_SIZE :: KBTS_BREAK_REORDER_BUFFER_FLUSH_THRESHOLD * 2; + +kbts_joining_feature :: u8; +kbts_joining_feature_enum :: enum u32 { + NONE :: 0; + ISOL :: 1; + FINA :: 2; + FIN2 :: 3; + FIN3 :: 4; + MEDI :: 5; + MED2 :: 6; + INIT :: 7; + + COUNT :: 8; + + KBTS_JOINING_FEATURE_NONE :: NONE; + KBTS_JOINING_FEATURE_ISOL :: ISOL; + KBTS_JOINING_FEATURE_FINA :: FINA; + KBTS_JOINING_FEATURE_FIN2 :: FIN2; + KBTS_JOINING_FEATURE_FIN3 :: FIN3; + KBTS_JOINING_FEATURE_MEDI :: MEDI; + KBTS_JOINING_FEATURE_MED2 :: MED2; + KBTS_JOINING_FEATURE_INIT :: INIT; + + KBTS_JOINING_FEATURE_COUNT :: COUNT; +} + +kbts_reph_position :: u8; +kbts_reph_position_enum :: enum u32 { + AFTER_POST :: 0; + BEFORE_POST :: 1; + BEFORE_SUBJOINED :: 2; + AFTER_SUBJOINED :: 3; + AFTER_MAIN :: 4; + + COUNT :: 5; + + KBTS_REPH_POSITION_AFTER_POST :: AFTER_POST; + KBTS_REPH_POSITION_BEFORE_POST :: BEFORE_POST; + KBTS_REPH_POSITION_BEFORE_SUBJOINED :: BEFORE_SUBJOINED; + KBTS_REPH_POSITION_AFTER_SUBJOINED :: AFTER_SUBJOINED; + KBTS_REPH_POSITION_AFTER_MAIN :: AFTER_MAIN; + + KBTS_REPH_POSITION_COUNT :: COUNT; +} + +kbts_reph_encoding :: u8; +kbts_reph_encoding_enum :: enum u32 { + IMPLICIT :: 0; + EXPLICIT :: 1; + LOGICAL_REPHA :: 2; + VISUAL_REPHA :: 3; + + COUNT :: 4; + + KBTS_REPH_ENCODING_IMPLICIT :: IMPLICIT; + KBTS_REPH_ENCODING_EXPLICIT :: EXPLICIT; + KBTS_REPH_ENCODING_LOGICAL_REPHA :: LOGICAL_REPHA; + KBTS_REPH_ENCODING_VISUAL_REPHA :: VISUAL_REPHA; + + KBTS_REPH_ENCODING_COUNT :: COUNT; +} + +kbts_syllabic_position :: u8; +kbts_syllabic_position_enum :: enum u32 { + NONE :: 0; + + RA_TO_BECOME_REPH :: 1; + + PREBASE_MATRA :: 2; + PREBASE_CONSONANT :: 3; + + SYLLABLE_BASE :: 4; + AFTER_MAIN :: 5; + + ABOVEBASE_CONSONANT :: 6; + + BEFORE_SUBJOINED :: 7; + BELOWBASE_CONSONANT :: 8; + AFTER_SUBJOINED :: 9; + + BEFORE_POST :: 10; + POSTBASE_CONSONANT :: 11; + AFTER_POST :: 12; + + FINAL_CONSONANT :: 13; + SMVD :: 14; + + COUNT :: 15; + + KBTS_SYLLABIC_POSITION_NONE :: NONE; + + KBTS_SYLLABIC_POSITION_RA_TO_BECOME_REPH :: RA_TO_BECOME_REPH; + + KBTS_SYLLABIC_POSITION_PREBASE_MATRA :: PREBASE_MATRA; + KBTS_SYLLABIC_POSITION_PREBASE_CONSONANT :: PREBASE_CONSONANT; + + KBTS_SYLLABIC_POSITION_SYLLABLE_BASE :: SYLLABLE_BASE; + KBTS_SYLLABIC_POSITION_AFTER_MAIN :: AFTER_MAIN; + + KBTS_SYLLABIC_POSITION_ABOVEBASE_CONSONANT :: ABOVEBASE_CONSONANT; + + KBTS_SYLLABIC_POSITION_BEFORE_SUBJOINED :: BEFORE_SUBJOINED; + KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT :: BELOWBASE_CONSONANT; + KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED :: AFTER_SUBJOINED; + + KBTS_SYLLABIC_POSITION_BEFORE_POST :: BEFORE_POST; + KBTS_SYLLABIC_POSITION_POSTBASE_CONSONANT :: POSTBASE_CONSONANT; + KBTS_SYLLABIC_POSITION_AFTER_POST :: AFTER_POST; + + KBTS_SYLLABIC_POSITION_FINAL_CONSONANT :: FINAL_CONSONANT; + KBTS_SYLLABIC_POSITION_SMVD :: SMVD; + + KBTS_SYLLABIC_POSITION_COUNT :: COUNT; +} + +kbts_language :: u32; +kbts_language_enum :: enum u32 { + DONT_KNOW :: 0; + + A_HMAO :: 541347144; + AARI :: 541676097; + ABAZA :: 541147713; + ABKHAZIAN :: 541803073; + ACHI :: 542262081; + ACHOLI :: 541606721; + ADYGHE :: 542721089; + AFAR :: 542262849; + AFRIKAANS :: 541804097; + AGAW :: 542590785; + AITON :: 542067009; + AKAN :: 541150017; + ALBANIAN :: 541675859; + ALSATIAN :: 542329921; + ALTAI :: 542395457; + ALUO :: 541150809; + AMERICAN_PHONETIC :: 1213222977; + AMHARIC :: 541609281; + ANGLO_SAXON :: 541544001; + ARABIC :: 541151809; + ARAGONESE :: 541545025; + ARAKANESE :: 541807169; + ARAKWAL :: 542591826; + ARMENIAN :: 541415752; + ARMENIAN_EAST :: 809851208; + AROMANIAN :: 542135634; + ARPITAN :: 542134854; + ASSAMESE :: 541938497; + ASTURIAN :: 542397249; + ATHAPASKAN :: 541611073; + ATSINA :: 542331969; + AVAR :: 542266945; + AVATIME :: 542004801; + AWADHI :: 541153089; + AYMARA :: 541940033; + AZERBAIDJANI :: 541416001; + BADAGA :: 541344066; + BAGHELKHANDI :: 541540674; + BAGRI :: 542197570; + BALANTE :: 542002242; + BALINESE :: 541999426; + BALKAR :: 541868354; + BALTI :: 542395458; + BALUCHI :: 541674562; + BAMBARA :: 541216066; + BAMILEKE :: 541871426; + BANDA :: 809779522; + BANDJALANG :: 542721090; + BANGLA :: 542000450; + BASHKIR :: 541610818; + BASQUE :: 542201157; + BATAK :: 541807682; + BATAK_ALAS_KLUET :: 542790722; + BATAK_ANGKOLA :: 541215553; + BATAK_DAIRI :: 541348930; + BATAK_KARO :: 542659650; + BATAK_MANDAILING :: 541938754; + BATAK_SIMALUNGUN :: 542331970; + BATAK_TOBA :: 541278786; + BAULE :: 542458178; + BAVARIAN :: 542261570; + BELARUSIAN :: 541869378; + BEMBA :: 541934914; + BENCH :: 541606722; + BERBER :: 542261826; + BETI :: 541676610; + BETTE_KURUMA :: 541218136; + BHILI :: 541673538; + BHOJPURI :: 542066754; + BHUTANESE :: 542005828; + BIBLE_CREE :: 542262082; + BIKOL :: 541804866; + BILEN :: 541870402; + BISHNUPRIYA_MANIPURI :: 542724162; + BISLAMA :: 542329154; + BLACKFOOT :: 541477698; + BODO :: 542659138; + BOSNIAN :: 542330690; + BOUYEI :: 541279056; + BRAHUI :: 541610562; + BRAJ_BHASHA :: 541676098; + BRETON :: 541413954; + BUGIS :: 541545794; + BULGARIAN :: 542263106; + BUMTHANGKHA :: 542788171; + BURMESE :: 541938242; + BURUSHASKI :: 541807426; + CAJUN_FRENCH :: 541282886; + CARRIER :: 542265923; + CATALAN :: 542392643; + CAYUGA :: 542720323; + CEBUANO :: 541214019; + CENTRAL_YUPIK :: 542462789; + CHAHA_GURAGE :: 541542467; + CHAMORRO :: 541149251; + CHATTISGARHI :: 541608003; + CHECHEN :: 541411395; + CHEROKEE :: 542263363; + CHEYENNE :: 542722115; + CHICHEWA :: 541673539; + CHIGA :: 541542211; + CHIMILA :: 541540931; + CHIN :: 542001489; + CHINANTEC :: 1313358659; + CHINESE_PHONETIC :: 542132314; + CHINESE_SIMPLIFIED :: 542328922; + CHINESE_TRADITIONAL :: 542394458; + CHINESE_TRADITIONAL_HONG_KONG :: 541608026; + CHINESE_TRADITIONAL_MACAO :: 1297369178; + CHIPEWYAN :: 542132291; + CHITTAGONIAN :: 541545539; + CHOCTAW :: 542066755; + CHUKCHI :: 541804611; + CHURCH_SLAVONIC :: 541872963; + CHUUKESE :: 810240067; + CHUVASH :: 542459971; + COMORIAN :: 542264643; + COMOX :: 542068547; + COPTIC :: 542134083; + CORNISH :: 542265155; + CORSICAN :: 542330691; + CREE :: 541413955; + CREOLES :: 542134339; + CRIMEAN_TATAR :: 542396995; + CRIOULO :: 541148491; + CROATIAN :: 542528072; + CYPRIOT_ARABIC :: 542720833; + CZECH :: 542724931; + DAGBANI :: 541540676; + DAN :: 541740612; + DANGME :: 541544004; + DANISH :: 541999428; + DARGWA :: 542261572; + DARI :: 541676100; + DAYI :: 542654788; + DEFAULT :: 1953261156; + DEHONG_DAI :: 541344852; + DHANGU :: 541542468; + DHIVEHI :: 542525764; + DHUWAL :: 541742404; + DIMLI :: 542198084; + DINKA :: 541806148; + DIVEHI :: 542525764; + DJAMBARRPUYNGU :: 810699332; + DOGRI :: 542066500; + DOGRI_MACROLANGUAGE :: 542263108; + DUNGAN :: 542004548; + DUTCH :: 541346894; + DZONGKHA :: 542005828; + EASTERN_ABENAKI :: 542196033; + EASTERN_CHAM :: 541936195; + EASTERN_CREE :: 542262085; + EASTERN_MANINKAKAN :: 541805893; + EASTERN_PWO_KAREN :: 542132811; + EBIRA :: 541672005; + EDO :: 542065733; + EFIK :: 541673029; + EMBERA_BAUDO :: 541279298; + EMBERA_CATIO :: 542069827; + EMBERA_CHAMI :: 541674819; + EMBERA_TADO :: 541279316; + ENGLISH :: 541544005; + EPENA :: 541149779; + ERZYA :: 542790213; + KB_TEXT_SHAPEANTO :: 542069838; + ESTONIAN :: 541676613; + EVEN :: 542004805; + EVENKI :: 541808197; + EWE :: 541415237; + FALAM_CHIN :: 541868360; + FANG :: 810434886; + FANTI :: 542392646; + FAROESE :: 542330694; + FEFE :: 542133574; + FIJIAN :: 541674054; + FILIPINO :: 541870416; + FINNISH :: 542001478; + FLEMISH :: 541412422; + FON :: 542003014; + FOREST_ENETS :: 541412934; + FRENCH :: 541151814; + FRENCH_ANTILLEAN :: 541999430; + FRISIAN :: 541676102; + FRIULIAN :: 541872710; + FULAH :: 541873478; + FUTA :: 541152326; + GA :: 541344071; + GAGAUZ :: 541540679; + GALICIAN :: 541868359; + GANDA :: 541545804; + GARHWALI :: 542589255; + GARO :: 542069319; + GARSHUNI :: 542261575; + GEBA_KAREN :: 542201419; + GEEZ :: 542786887; + GEORGIAN :: 542392651; + GEPO :: 542132057; + GERMAN :: 542459204; + GIKUYU :: 541804875; + GILAKI :: 541805639; + GILBERTESE :: 810305863; + GILYAK :: 541870407; + GITHABUL :: 541608263; + GOGO :: 541544263; + GONDI :: 542003015; + GREEK :: 541871173; + GREENLANDIC :: 542003783; + GUARANI :: 541152583; + GUINEA :: 542133063; + GUJARATI :: 541742407; + GUMATJ :: 542002759; + GUMUZ :: 542788935; + GUPAPUYNGU :: 541480263; + GUSII :: 542790983; + HAIDA :: 810107208; + HAITIAN_CREOLE :: 541671752; + HALKOMELEM :: 542266696; + HAMMER_BANNA :: 541999688; + HARARI :: 541676104; + HARAUTI :: 542261576; + HARYANVI :: 541280066; + HAUSA :: 542458184; + HAVASUPAI_WALAPAI_YAVAPAI :: 541480281; + HAWAIIAN :: 542589256; + HAYA :: 542720328; + HAZARAGI :: 542785864; + HEBREW :: 542267209; + HEILTSUK :: 541672776; + HERERO :: 542262600; + HIGH_MARI :: 541150536; + HILIGAYNON :: 541870408; + HINDI :: 542001480; + HINDKO :: 541347400; + HIRI_MOTU :: 542068040; + HMONG :: 542002504; + HMONG_DAW :: 542594893; + HMONG_SHUAT :: 542788936; + HO :: 538988360; + HUNGARIAN :: 542004552; + IBAN :: 541147721; + IBIBIO :: 541213257; + ICELANDIC :: 541872969; + IDO :: 542065737; + IGBO :: 542065225; + IJO :: 542067273; + ILOKANO :: 542067785; + INARI_SAMI :: 541938505; + INDONESIAN :: 541347401; + INGUSH :: 541544009; + INTERLINGUA :: 541150793; + INTERLINGUE :: 541412425; + INUKTITUT :: 542461513; + INUPIAT :: 541806665; + IPA_PHONETIC :: 542134345; + IRISH :: 541676105; + IRISH_TRADITIONAL :: 542397001; + IRULA :: 542462537; + ITALIAN :: 541152329; + JAMAICAN_CREOLE :: 541933898; + JAPANESE :: 541999434; + JAVANESE :: 542523722; + JENNU_KURUMA :: 541742424; + JUDEO_TAT :: 542393418; + JULA :: 541873482; + KABARDIAN :: 541213003; + KABYLE :: 809648459; + KACHCHI :: 541278539; + KADIWEU :: 541278795; + KALENJIN :: 541868363; + KALMYK :: 541936715; + KAMBA :: 541216075; + KANAUJI :: 541739586; + KANNADA :: 541999435; + KANURI :: 542264907; + KAQCHIKEL :: 541802819; + KARACHAY :: 542261579; + KARAIM :: 541938251; + KARAKALPAK :: 541807179; + KARELIAN :: 541872715; + KAREN :: 542003787; + KASHMIRI :: 541610827; + KASHUBIAN :: 541217603; + KATE :: 541543755; + KAZAKH :: 542785867; + KEBENA :: 541214027; + KEKCHI :: 541803851; + KHAKASS :: 541149259; + KHAMTI_SHAN :: 542394443; + KHAMYANG :: 542462795; + KHANTY_KAZIM :: 541804619; + KHANTY_SHURISHKAR :: 542328907; + KHANTY_VAKHI :: 542525515; + KHASI :: 541676363; + KHENGKHA :: 541477720; + KHINALUG :: 541739595; + KHMER :: 541935691; + KHORASANI_TURKIC :: 542788939; + KHOWAR :: 542591051; + KHUTSURI_GEORGIAN :: 541411147; + KICHE :: 541283665; + KIKONGO :: 542003019; + KILDIN_SAMI :: 541938507; + KINYARWANDA :: 541152594; + KIRMANJKI :: 542460235; + KISII :: 542329163; + KITUBA :: 542591821; + KODAGU :: 541347659; + KOKNI :: 542001995; + KOMI :: 541937483; + KOMI_PERMYAK :: 542134091; + KOMI_ZYRIAN :: 542789451; + KOMO :: 542068043; + KOMSO :: 542330187; + KONGO :: 810438475; + KONKANI :: 541806411; + KOORETE :: 542397003; + KOREAN :: 542265163; + KOREAO_OLD_HANGUL :: 541609803; + KORYAK :: 541808971; + KOSRAEAN :: 542330699; + KPELLE :: 541872203; + KPELLE_LIBERIA :: 541413464; + KRIO :: 541676107; + KRYMCHAK :: 542393162; + KUANYAMA :: 541152587; + KUBE :: 541476683; + KUI :: 541676875; + KULVI :: 541807947; + KUMAONI :: 542002507; + KUMYK :: 541939019; + KURDISH :: 542266699; + KURUKH :: 542463307; + KUY :: 542725451; + KWAKWALA :: 541808459; + KYRGYZ :: 542263627; + L_CREE :: 542262092; + LADAKHI :: 541803596; + LADIN :: 541344076; + LADINO :: 541349194; + LAHULI :: 541606220; + LAK :: 541802828; + LAKI :: 541674316; + LAMBANI :: 541933900; + LAMPUNG :: 542132812; + LAO :: 542064972; + LATIN :: 542392652; + LATVIAN :: 541677132; + LAZ :: 542785868; + LELEMI :: 541476172; + LEZGI :: 542786892; + LIGURIAN :: 541739340; + LIMBU :: 541216076; + LIMBURGISH :: 541935948; + LINGALA :: 542001484; + LIPO :: 542068812; + LISU :: 542329164; + LITHUANIAN :: 541611084; + LIV :: 542525772; + LOJBAN :: 542065226; + LOMA :: 541937484; + LOMBARD :: 542068044; + LOMWE :: 542592332; + LOW_MARI :: 541150540; + LOW_SAXON :: 542327886; + LOWER_SORBIAN :: 541217612; + LU :: 541344344; + LUBA_KATANGA :: 541218124; + LUBA_LULUA :: 541152588; + LULE_SAMI :: 541938508; + LUO :: 542070092; + LURI :: 541282892; + LUSHOOTSEED :: 542397772; + LUXEMBOURGISH :: 542790732; + LUYIA :: 541611340; + MACEDONIAN :: 541346637; + MADURA :: 541344077; + MAGAHI :: 541540685; + MAITHILI :: 541611085; + MAJANG :: 541737293; + MAKASAR :: 542264141; + MAKHUWA :: 541802829; + MAKONDE :: 541410379; + MALAGASY :: 541543501; + MALAY :: 542723149; + MALAYALAM :: 541868365; + MALAYALAM_REFORMED :: 542264397; + MALE :: 541412429; + MALINKE :: 542002253; + MALTESE :: 542331981; + MAM :: 541933901; + MANCHU :: 541606733; + MANDAR :: 542262349; + MANDINKA :: 541347405; + MANINKA :: 541806157; + MANIPURI :: 541675085; + MANO :: 542524749; + MANSI :: 541999437; + MANX :: 542658125; + MAORI :: 541676109; + MAPUDUNGUN :: 542130509; + MARATHI :: 542261581; + MARSHALLESE :: 541606221; + MARWARI :: 542589261; + MAYAN :: 542005581; + MAZANDERANI :: 542005837; + MBEMBE_TIGON :: 541153870; + MBO :: 542065229; + MBUNDU :: 541999693; + MEDUMBA :: 542529858; + MEEN :: 542000461; + MENDE :: 541410381; + MERU :: 542262605; + MEWATI :: 541938775; + MINANGKABAU :: 542001485; + MINJANGBAL :: 541215320; + MIRANDESE :: 541873997; + MIZO :: 542787917; + MOHAWK :: 541609805; + MOKSHA :: 541806413; + MOLDAVIAN :: 541871949; + MON :: 542003021; + MONGOLIAN :: 541544013; + MOOSE_CREE :: 542262093; + MORISYEN :: 541410893; + MOROCCAN :: 542265165; + MOSSI :: 542330957; + MUNDARI :: 542004557; + MUSCOGEE :: 542332237; + N_CREE :: 542262094; + NAGA_ASSAMESE :: 541540686; + NAGARI :: 542263118; + NAHUATL :: 541606222; + NANAI :: 541999438; + NASKAPI :: 542327118; + NAURUAN :: 542458190; + NAVAJO :: 542523726; + NDAU :: 541279310; + NDEBELE :: 541213774; + NDONGA :: 541541454; + NEAPOLITAN :: 542130510; + NEPALI :: 542131534; + NEWARI :: 542590286; + NGBAKA :: 541149006; + NIGERIAN_FULFULDE :: 542528838; + NIMADI :: 541413198; + NISI :: 542329166; + NIUEAN :: 542460238; + NKO :: 542067534; + NOGAI :: 541544270; + NORFOLK :: 541608272; + NORTH_SLAVEY :: 542327635; + NORTHERN_EMBERA :: 542133573; + NORTHERN_SAMI :: 541938510; + NORTHERN_SOTHO :: 542069582; + NORTHERN_TAI :: 541152334; + NORWAY_HOUSE_CREE :: 541280334; + NORWEGIAN :: 542265166; + NORWEGIAN_NYNORSK :: 542005582; + NOVIAL :: 542527310; + NUMANGGANG :: 542134094; + NUNAVIK_INUKTITUT :: 542461513; + NUU_CHAH_NULTH :: 541807950; + NYAMWEZI :: 541940046; + NYANKOLE :: 541870926; + OCCITAN :: 541672271; + ODIA :: 541676111; + OJI_CREE :: 542262095; + OJIBWAY :: 541215311; + OLD_IRISH :: 541149011; + OLD_JAVANESE :: 542589259; + ONEIDA :: 541412943; + ONONDAGA :: 542068303; + OROMO :: 542069327; + OSSETIAN :: 542331727; + PA_O_KAREN :: 541805634; + PALAUAN :: 542458192; + PALAUNG :: 541543504; + PALESTINIAN_ARAMAIC :: 541147472; + PALI :: 541868368; + PALPA :: 542130512; + PAMPANGAN :: 541933904; + PANGASINAN :: 541540688; + PAPIAMENTU :: 810565968; + PASHTO :: 542327120; + PATTANI_MALAY :: 541148749; + PENNSYLVANIA_GERMAN :: 541279312; + PERSIAN :: 542261574; + PHAKE :: 541805136; + PICARD :: 541344592; + PIEMONTESE :: 542330192; + PILAGA :: 541543504; + PITE_SAMI :: 541411923; + POCOMCHI :: 541609808; + POHNPEIAN :: 542003024; + POLISH :: 541805648; + POLYTONIC_GREEK :: 542263120; + PORTUGUESE :: 541545552; + PROVENCAL :: 542069328; + PUNJABI :: 541999440; + QUECHUA :: 542790993; + QUECHUA_BOLIVIA :: 541611345; + QUECHUA_ECUADOR :: 541677137; + QUECHUA_PERU :: 541611857; + R_CREE :: 542262098; + RAJASTHANI :: 541737298; + RAKHINE :: 541807169; + RAROTONGAN :: 542261586; + REJANG :: 541738322; + RIANG :: 541149522; + RIPUARIAN :: 541610827; + RITARUNGO :: 542394706; + ROHINGYA :: 541542482; + ROMANIAN :: 541937490; + ROMANSH :: 542330194; + ROMANY :: 542723922; + ROTUMAN :: 541938770; + RUNDI :: 542004562; + RUSSIAN :: 542332242; + RUSSIAN_BURIAT :: 542458450; + RUSYN :: 542724946; + SADRI :: 541344083; + SAKHA :: 541802841; + SAMOAN :: 542068051; + SAMOGITIAN :: 542328659; + SAN_BLAS_KUNA :: 541807939; + SANGO :: 542066515; + SANSKRIT :: 541999443; + SANTALI :: 542392659; + SARAIKI :: 541807187; + SARDINIAN :: 541348435; + SASAK :: 542327123; + SATERLAND_FRISIAN :: 542200915; + SAYISI :: 542720339; + SCOTS :: 541672275; + SCOTTISH_GAELIC :: 541409607; + SEKOTA :: 541738323; + SELKUP :: 541869395; + SENA :: 541150803; + SENECA :: 541410643; + SERBIAN :: 541217363; + SERER :: 542265939; + SGAW_KAREN :: 542593867; + SHAN :: 542001235; + SHONA :: 541150803; + SIBE :: 541215059; + SICILIAN :: 541999955; + SIDAMO :: 541346131; + SILESIAN :: 541874771; + SILTE_GURAGE :: 541542739; + SINDHI :: 541347411; + SINHALA :: 541609555; + SKOLT_SAMI :: 542329683; + SLAVEY :: 541150291; + SLOVAK :: 542722899; + SLOVENIAN :: 542526547; + SMALL_FLOWERY_MIAO :: 541935187; + SODO_GURAGE :: 541544275; + SOGA :: 541544280; + SOMALI :: 541871443; + SONGE :: 542134099; + SONINKE :: 541806163; + SOUTH_SLAVEY :: 541872979; + SOUTHERN_KIWAI :: 541346379; + SOUTHERN_SAMI :: 541938515; + SOUTHERN_SOTHO :: 542396243; + SPANISH :: 542135109; + STANDARD_MOROCCAN_TAMAZIGHT :: 541607770; + STRAITS_SALISH :: 542266451; + SUKUMA :: 541807955; + SUNDANESE :: 542004563; + SURI :: 542266707; + SUTU :: 542398547; + SVAN :: 541152851; + SWADAYA_ARAMAIC :: 541153107; + SWAHILI :: 541808467; + SWATI :: 542791507; + SWEDISH :: 541414995; + SYLHETI :: 541874515; + SYRIAC :: 542267731; + SYRIAC_EASTERN :: 1314019667; + SYRIAC_ESTRANGELA :: 1163024723; + SYRIAC_WESTERN :: 1246910803; + TABASARAN :: 541213012; + TACHELHIT :: 541673555; + TAGALOG :: 541869908; + TAHAGGART_TAMAHAQ :: 542525524; + TAHITIAN :: 542394452; + TAI_LAING :: 541870676; + TAJIKI :: 541737300; + TALYSH :: 542723156; + TAMASHEK :: 541609300; + TAMASHEQ :: 542196052; + TAMAZIGHT :: 541940308; + TAMIL :: 541933908; + TARIFIT :: 541477202; + TATAR :: 542392660; + TAWALLAMMAT_TAMAJAQ :: 542200916; + TAY :: 542792020; + TAYART_TAMAJEQ :: 542787668; + TELUGU :: 541869396; + TEMNE :: 542002516; + TETUM :: 542393684; + TH_CREE :: 542262100; + THAI :: 541149268; + THAILAND_MON :: 1414418253; + THOMPSON :: 542132308; + TIBETAN :: 541215060; + TIGRE :: 542263124; + TIGRINYA :: 542721876; + TIV :: 542525780; + TLINGIT :: 541674580; + TOBO :: 542523988; + TODO :: 541347668; + TOK_PISIN :: 541675604; + TOMA :: 809783124; + TONGA :: 541544020; + TONGAN :: 542000980; + TORKI :: 541219393; + TSHANGLA :: 541741908; + TSONGA :: 541545300; + TSWANA :: 541150804; + TULU :: 541873492; + TUMBUKA :: 541939028; + TUNDRA_ENETS :: 541412948; + TURKISH :: 541807188; + TURKMEN :: 541936468; + TUROYO_ARAMAIC :: 541152596; + TUSCARORA :: 542332244; + TUVALU :: 541873748; + TUVIN :: 542528852; + TWI :: 541677396; + TZOTZIL :: 542071380; + UDI :: 541672533; + UDMURT :: 541934677; + UKRAINIAN :: 542264149; + UMBUNDU :: 541216085; + UME_SAMI :: 542460499; + UPPER_SAXON :: 542464083; + UPPER_SORBIAN :: 541217621; + URALIC_PHONETIC :: 542134357; + URDU :: 541348437; + UYGHUR :: 541546837; + UZBEK :: 541219413; + VENDA :: 542000470; + VENETIAN :: 541279574; + VIETNAMESE :: 542394710; + VLAX_ROMANI :: 542723410; + VOLAPUK :: 541871958; + VORO :: 542069334; + WA :: 538984791; + WACI_GBE :: 541672279; + WAGDI :: 541540695; + WAKHI :: 541868631; + WALLOON :: 542002263; + WARAY_WARAY :: 542261591; + WAYANAD_CHETTI :: 542397507; + WAYUU :: 541283655; + WELSH :: 541869399; + WENDAT :: 542393431; + WEST_CREE :: 542262103; + WESTERN_CHAM :: 541149763; + WESTERN_KAYAH :: 542464331; + WESTERN_PANJABI :: 541216336; + WESTERN_PWO_KAREN :: 542070608; + WOLOF :: 541477975; + WOODS_CREE :: 542262084; + WUDING_LUQUAN_YI :: 542201689; + WYANDOT :: 542005591; + XHOSA :: 542328920; + Y_CREE :: 542262105; + YAO :: 542064985; + YAPESE :: 542130521; + YI_CLASSIC :: 541280601; + YI_MODERN :: 541935961; + YIDDISH :: 541673802; + YORUBA :: 541147737; + ZAMBOANGA_CHAVACANO :: 541803075; + ZANDE :: 541347418; + ZARMA :: 542263876; + ZAZAKI :: 541153882; + ZEALANDIC :: 541148506; + ZHUANG :: 541149274; + ZULU :: 541873498; + + KBTS_LANGUAGE_DONT_KNOW :: DONT_KNOW; + + KBTS_LANGUAGE_A_HMAO :: A_HMAO; + KBTS_LANGUAGE_AARI :: AARI; + KBTS_LANGUAGE_ABAZA :: ABAZA; + KBTS_LANGUAGE_ABKHAZIAN :: ABKHAZIAN; + KBTS_LANGUAGE_ACHI :: ACHI; + KBTS_LANGUAGE_ACHOLI :: ACHOLI; + KBTS_LANGUAGE_ADYGHE :: ADYGHE; + KBTS_LANGUAGE_AFAR :: AFAR; + KBTS_LANGUAGE_AFRIKAANS :: AFRIKAANS; + KBTS_LANGUAGE_AGAW :: AGAW; + KBTS_LANGUAGE_AITON :: AITON; + KBTS_LANGUAGE_AKAN :: AKAN; + KBTS_LANGUAGE_ALBANIAN :: ALBANIAN; + KBTS_LANGUAGE_ALSATIAN :: ALSATIAN; + KBTS_LANGUAGE_ALTAI :: ALTAI; + KBTS_LANGUAGE_ALUO :: ALUO; + KBTS_LANGUAGE_AMERICAN_PHONETIC :: AMERICAN_PHONETIC; + KBTS_LANGUAGE_AMHARIC :: AMHARIC; + KBTS_LANGUAGE_ANGLO_SAXON :: ANGLO_SAXON; + KBTS_LANGUAGE_ARABIC :: ARABIC; + KBTS_LANGUAGE_ARAGONESE :: ARAGONESE; + KBTS_LANGUAGE_ARAKANESE :: ARAKANESE; + KBTS_LANGUAGE_ARAKWAL :: ARAKWAL; + KBTS_LANGUAGE_ARMENIAN :: ARMENIAN; + KBTS_LANGUAGE_ARMENIAN_EAST :: ARMENIAN_EAST; + KBTS_LANGUAGE_AROMANIAN :: AROMANIAN; + KBTS_LANGUAGE_ARPITAN :: ARPITAN; + KBTS_LANGUAGE_ASSAMESE :: ASSAMESE; + KBTS_LANGUAGE_ASTURIAN :: ASTURIAN; + KBTS_LANGUAGE_ATHAPASKAN :: ATHAPASKAN; + KBTS_LANGUAGE_ATSINA :: ATSINA; + KBTS_LANGUAGE_AVAR :: AVAR; + KBTS_LANGUAGE_AVATIME :: AVATIME; + KBTS_LANGUAGE_AWADHI :: AWADHI; + KBTS_LANGUAGE_AYMARA :: AYMARA; + KBTS_LANGUAGE_AZERBAIDJANI :: AZERBAIDJANI; + KBTS_LANGUAGE_BADAGA :: BADAGA; + KBTS_LANGUAGE_BAGHELKHANDI :: BAGHELKHANDI; + KBTS_LANGUAGE_BAGRI :: BAGRI; + KBTS_LANGUAGE_BALANTE :: BALANTE; + KBTS_LANGUAGE_BALINESE :: BALINESE; + KBTS_LANGUAGE_BALKAR :: BALKAR; + KBTS_LANGUAGE_BALTI :: BALTI; + KBTS_LANGUAGE_BALUCHI :: BALUCHI; + KBTS_LANGUAGE_BAMBARA :: BAMBARA; + KBTS_LANGUAGE_BAMILEKE :: BAMILEKE; + KBTS_LANGUAGE_BANDA :: BANDA; + KBTS_LANGUAGE_BANDJALANG :: BANDJALANG; + KBTS_LANGUAGE_BANGLA :: BANGLA; + KBTS_LANGUAGE_BASHKIR :: BASHKIR; + KBTS_LANGUAGE_BASQUE :: BASQUE; + KBTS_LANGUAGE_BATAK :: BATAK; + KBTS_LANGUAGE_BATAK_ALAS_KLUET :: BATAK_ALAS_KLUET; + KBTS_LANGUAGE_BATAK_ANGKOLA :: BATAK_ANGKOLA; + KBTS_LANGUAGE_BATAK_DAIRI :: BATAK_DAIRI; + KBTS_LANGUAGE_BATAK_KARO :: BATAK_KARO; + KBTS_LANGUAGE_BATAK_MANDAILING :: BATAK_MANDAILING; + KBTS_LANGUAGE_BATAK_SIMALUNGUN :: BATAK_SIMALUNGUN; + KBTS_LANGUAGE_BATAK_TOBA :: BATAK_TOBA; + KBTS_LANGUAGE_BAULE :: BAULE; + KBTS_LANGUAGE_BAVARIAN :: BAVARIAN; + KBTS_LANGUAGE_BELARUSIAN :: BELARUSIAN; + KBTS_LANGUAGE_BEMBA :: BEMBA; + KBTS_LANGUAGE_BENCH :: BENCH; + KBTS_LANGUAGE_BERBER :: BERBER; + KBTS_LANGUAGE_BETI :: BETI; + KBTS_LANGUAGE_BETTE_KURUMA :: BETTE_KURUMA; + KBTS_LANGUAGE_BHILI :: BHILI; + KBTS_LANGUAGE_BHOJPURI :: BHOJPURI; + KBTS_LANGUAGE_BHUTANESE :: BHUTANESE; + KBTS_LANGUAGE_BIBLE_CREE :: BIBLE_CREE; + KBTS_LANGUAGE_BIKOL :: BIKOL; + KBTS_LANGUAGE_BILEN :: BILEN; + KBTS_LANGUAGE_BISHNUPRIYA_MANIPURI :: BISHNUPRIYA_MANIPURI; + KBTS_LANGUAGE_BISLAMA :: BISLAMA; + KBTS_LANGUAGE_BLACKFOOT :: BLACKFOOT; + KBTS_LANGUAGE_BODO :: BODO; + KBTS_LANGUAGE_BOSNIAN :: BOSNIAN; + KBTS_LANGUAGE_BOUYEI :: BOUYEI; + KBTS_LANGUAGE_BRAHUI :: BRAHUI; + KBTS_LANGUAGE_BRAJ_BHASHA :: BRAJ_BHASHA; + KBTS_LANGUAGE_BRETON :: BRETON; + KBTS_LANGUAGE_BUGIS :: BUGIS; + KBTS_LANGUAGE_BULGARIAN :: BULGARIAN; + KBTS_LANGUAGE_BUMTHANGKHA :: BUMTHANGKHA; + KBTS_LANGUAGE_BURMESE :: BURMESE; + KBTS_LANGUAGE_BURUSHASKI :: BURUSHASKI; + KBTS_LANGUAGE_CAJUN_FRENCH :: CAJUN_FRENCH; + KBTS_LANGUAGE_CARRIER :: CARRIER; + KBTS_LANGUAGE_CATALAN :: CATALAN; + KBTS_LANGUAGE_CAYUGA :: CAYUGA; + KBTS_LANGUAGE_CEBUANO :: CEBUANO; + KBTS_LANGUAGE_CENTRAL_YUPIK :: CENTRAL_YUPIK; + KBTS_LANGUAGE_CHAHA_GURAGE :: CHAHA_GURAGE; + KBTS_LANGUAGE_CHAMORRO :: CHAMORRO; + KBTS_LANGUAGE_CHATTISGARHI :: CHATTISGARHI; + KBTS_LANGUAGE_CHECHEN :: CHECHEN; + KBTS_LANGUAGE_CHEROKEE :: CHEROKEE; + KBTS_LANGUAGE_CHEYENNE :: CHEYENNE; + KBTS_LANGUAGE_CHICHEWA :: CHICHEWA; + KBTS_LANGUAGE_CHIGA :: CHIGA; + KBTS_LANGUAGE_CHIMILA :: CHIMILA; + KBTS_LANGUAGE_CHIN :: CHIN; + KBTS_LANGUAGE_CHINANTEC :: CHINANTEC; + KBTS_LANGUAGE_CHINESE_PHONETIC :: CHINESE_PHONETIC; + KBTS_LANGUAGE_CHINESE_SIMPLIFIED :: CHINESE_SIMPLIFIED; + KBTS_LANGUAGE_CHINESE_TRADITIONAL :: CHINESE_TRADITIONAL; + KBTS_LANGUAGE_CHINESE_TRADITIONAL_HONG_KONG :: CHINESE_TRADITIONAL_HONG_KONG; + KBTS_LANGUAGE_CHINESE_TRADITIONAL_MACAO :: CHINESE_TRADITIONAL_MACAO; + KBTS_LANGUAGE_CHIPEWYAN :: CHIPEWYAN; + KBTS_LANGUAGE_CHITTAGONIAN :: CHITTAGONIAN; + KBTS_LANGUAGE_CHOCTAW :: CHOCTAW; + KBTS_LANGUAGE_CHUKCHI :: CHUKCHI; + KBTS_LANGUAGE_CHURCH_SLAVONIC :: CHURCH_SLAVONIC; + KBTS_LANGUAGE_CHUUKESE :: CHUUKESE; + KBTS_LANGUAGE_CHUVASH :: CHUVASH; + KBTS_LANGUAGE_COMORIAN :: COMORIAN; + KBTS_LANGUAGE_COMOX :: COMOX; + KBTS_LANGUAGE_COPTIC :: COPTIC; + KBTS_LANGUAGE_CORNISH :: CORNISH; + KBTS_LANGUAGE_CORSICAN :: CORSICAN; + KBTS_LANGUAGE_CREE :: CREE; + KBTS_LANGUAGE_CREOLES :: CREOLES; + KBTS_LANGUAGE_CRIMEAN_TATAR :: CRIMEAN_TATAR; + KBTS_LANGUAGE_CRIOULO :: CRIOULO; + KBTS_LANGUAGE_CROATIAN :: CROATIAN; + KBTS_LANGUAGE_CYPRIOT_ARABIC :: CYPRIOT_ARABIC; + KBTS_LANGUAGE_CZECH :: CZECH; + KBTS_LANGUAGE_DAGBANI :: DAGBANI; + KBTS_LANGUAGE_DAN :: DAN; + KBTS_LANGUAGE_DANGME :: DANGME; + KBTS_LANGUAGE_DANISH :: DANISH; + KBTS_LANGUAGE_DARGWA :: DARGWA; + KBTS_LANGUAGE_DARI :: DARI; + KBTS_LANGUAGE_DAYI :: DAYI; + KBTS_LANGUAGE_DEFAULT :: DEFAULT; + KBTS_LANGUAGE_DEHONG_DAI :: DEHONG_DAI; + KBTS_LANGUAGE_DHANGU :: DHANGU; + KBTS_LANGUAGE_DHIVEHI :: DHIVEHI; + KBTS_LANGUAGE_DHUWAL :: DHUWAL; + KBTS_LANGUAGE_DIMLI :: DIMLI; + KBTS_LANGUAGE_DINKA :: DINKA; + KBTS_LANGUAGE_DIVEHI :: DIVEHI; + KBTS_LANGUAGE_DJAMBARRPUYNGU :: DJAMBARRPUYNGU; + KBTS_LANGUAGE_DOGRI :: DOGRI; + KBTS_LANGUAGE_DOGRI_MACROLANGUAGE :: DOGRI_MACROLANGUAGE; + KBTS_LANGUAGE_DUNGAN :: DUNGAN; + KBTS_LANGUAGE_DUTCH :: DUTCH; + KBTS_LANGUAGE_DZONGKHA :: DZONGKHA; + KBTS_LANGUAGE_EASTERN_ABENAKI :: EASTERN_ABENAKI; + KBTS_LANGUAGE_EASTERN_CHAM :: EASTERN_CHAM; + KBTS_LANGUAGE_EASTERN_CREE :: EASTERN_CREE; + KBTS_LANGUAGE_EASTERN_MANINKAKAN :: EASTERN_MANINKAKAN; + KBTS_LANGUAGE_EASTERN_PWO_KAREN :: EASTERN_PWO_KAREN; + KBTS_LANGUAGE_EBIRA :: EBIRA; + KBTS_LANGUAGE_EDO :: EDO; + KBTS_LANGUAGE_EFIK :: EFIK; + KBTS_LANGUAGE_EMBERA_BAUDO :: EMBERA_BAUDO; + KBTS_LANGUAGE_EMBERA_CATIO :: EMBERA_CATIO; + KBTS_LANGUAGE_EMBERA_CHAMI :: EMBERA_CHAMI; + KBTS_LANGUAGE_EMBERA_TADO :: EMBERA_TADO; + KBTS_LANGUAGE_ENGLISH :: ENGLISH; + KBTS_LANGUAGE_EPENA :: EPENA; + KBTS_LANGUAGE_ERZYA :: ERZYA; + KBTS_LANGUAGE_KB_TEXT_SHAPEANTO :: KB_TEXT_SHAPEANTO; + KBTS_LANGUAGE_ESTONIAN :: ESTONIAN; + KBTS_LANGUAGE_EVEN :: EVEN; + KBTS_LANGUAGE_EVENKI :: EVENKI; + KBTS_LANGUAGE_EWE :: EWE; + KBTS_LANGUAGE_FALAM_CHIN :: FALAM_CHIN; + KBTS_LANGUAGE_FANG :: FANG; + KBTS_LANGUAGE_FANTI :: FANTI; + KBTS_LANGUAGE_FAROESE :: FAROESE; + KBTS_LANGUAGE_FEFE :: FEFE; + KBTS_LANGUAGE_FIJIAN :: FIJIAN; + KBTS_LANGUAGE_FILIPINO :: FILIPINO; + KBTS_LANGUAGE_FINNISH :: FINNISH; + KBTS_LANGUAGE_FLEMISH :: FLEMISH; + KBTS_LANGUAGE_FON :: FON; + KBTS_LANGUAGE_FOREST_ENETS :: FOREST_ENETS; + KBTS_LANGUAGE_FRENCH :: FRENCH; + KBTS_LANGUAGE_FRENCH_ANTILLEAN :: FRENCH_ANTILLEAN; + KBTS_LANGUAGE_FRISIAN :: FRISIAN; + KBTS_LANGUAGE_FRIULIAN :: FRIULIAN; + KBTS_LANGUAGE_FULAH :: FULAH; + KBTS_LANGUAGE_FUTA :: FUTA; + KBTS_LANGUAGE_GA :: GA; + KBTS_LANGUAGE_GAGAUZ :: GAGAUZ; + KBTS_LANGUAGE_GALICIAN :: GALICIAN; + KBTS_LANGUAGE_GANDA :: GANDA; + KBTS_LANGUAGE_GARHWALI :: GARHWALI; + KBTS_LANGUAGE_GARO :: GARO; + KBTS_LANGUAGE_GARSHUNI :: GARSHUNI; + KBTS_LANGUAGE_GEBA_KAREN :: GEBA_KAREN; + KBTS_LANGUAGE_GEEZ :: GEEZ; + KBTS_LANGUAGE_GEORGIAN :: GEORGIAN; + KBTS_LANGUAGE_GEPO :: GEPO; + KBTS_LANGUAGE_GERMAN :: GERMAN; + KBTS_LANGUAGE_GIKUYU :: GIKUYU; + KBTS_LANGUAGE_GILAKI :: GILAKI; + KBTS_LANGUAGE_GILBERTESE :: GILBERTESE; + KBTS_LANGUAGE_GILYAK :: GILYAK; + KBTS_LANGUAGE_GITHABUL :: GITHABUL; + KBTS_LANGUAGE_GOGO :: GOGO; + KBTS_LANGUAGE_GONDI :: GONDI; + KBTS_LANGUAGE_GREEK :: GREEK; + KBTS_LANGUAGE_GREENLANDIC :: GREENLANDIC; + KBTS_LANGUAGE_GUARANI :: GUARANI; + KBTS_LANGUAGE_GUINEA :: GUINEA; + KBTS_LANGUAGE_GUJARATI :: GUJARATI; + KBTS_LANGUAGE_GUMATJ :: GUMATJ; + KBTS_LANGUAGE_GUMUZ :: GUMUZ; + KBTS_LANGUAGE_GUPAPUYNGU :: GUPAPUYNGU; + KBTS_LANGUAGE_GUSII :: GUSII; + KBTS_LANGUAGE_HAIDA :: HAIDA; + KBTS_LANGUAGE_HAITIAN_CREOLE :: HAITIAN_CREOLE; + KBTS_LANGUAGE_HALKOMELEM :: HALKOMELEM; + KBTS_LANGUAGE_HAMMER_BANNA :: HAMMER_BANNA; + KBTS_LANGUAGE_HARARI :: HARARI; + KBTS_LANGUAGE_HARAUTI :: HARAUTI; + KBTS_LANGUAGE_HARYANVI :: HARYANVI; + KBTS_LANGUAGE_HAUSA :: HAUSA; + KBTS_LANGUAGE_HAVASUPAI_WALAPAI_YAVAPAI :: HAVASUPAI_WALAPAI_YAVAPAI; + KBTS_LANGUAGE_HAWAIIAN :: HAWAIIAN; + KBTS_LANGUAGE_HAYA :: HAYA; + KBTS_LANGUAGE_HAZARAGI :: HAZARAGI; + KBTS_LANGUAGE_HEBREW :: HEBREW; + KBTS_LANGUAGE_HEILTSUK :: HEILTSUK; + KBTS_LANGUAGE_HERERO :: HERERO; + KBTS_LANGUAGE_HIGH_MARI :: HIGH_MARI; + KBTS_LANGUAGE_HILIGAYNON :: HILIGAYNON; + KBTS_LANGUAGE_HINDI :: HINDI; + KBTS_LANGUAGE_HINDKO :: HINDKO; + KBTS_LANGUAGE_HIRI_MOTU :: HIRI_MOTU; + KBTS_LANGUAGE_HMONG :: HMONG; + KBTS_LANGUAGE_HMONG_DAW :: HMONG_DAW; + KBTS_LANGUAGE_HMONG_SHUAT :: HMONG_SHUAT; + KBTS_LANGUAGE_HO :: HO; + KBTS_LANGUAGE_HUNGARIAN :: HUNGARIAN; + KBTS_LANGUAGE_IBAN :: IBAN; + KBTS_LANGUAGE_IBIBIO :: IBIBIO; + KBTS_LANGUAGE_ICELANDIC :: ICELANDIC; + KBTS_LANGUAGE_IDO :: IDO; + KBTS_LANGUAGE_IGBO :: IGBO; + KBTS_LANGUAGE_IJO :: IJO; + KBTS_LANGUAGE_ILOKANO :: ILOKANO; + KBTS_LANGUAGE_INARI_SAMI :: INARI_SAMI; + KBTS_LANGUAGE_INDONESIAN :: INDONESIAN; + KBTS_LANGUAGE_INGUSH :: INGUSH; + KBTS_LANGUAGE_INTERLINGUA :: INTERLINGUA; + KBTS_LANGUAGE_INTERLINGUE :: INTERLINGUE; + KBTS_LANGUAGE_INUKTITUT :: INUKTITUT; + KBTS_LANGUAGE_INUPIAT :: INUPIAT; + KBTS_LANGUAGE_IPA_PHONETIC :: IPA_PHONETIC; + KBTS_LANGUAGE_IRISH :: IRISH; + KBTS_LANGUAGE_IRISH_TRADITIONAL :: IRISH_TRADITIONAL; + KBTS_LANGUAGE_IRULA :: IRULA; + KBTS_LANGUAGE_ITALIAN :: ITALIAN; + KBTS_LANGUAGE_JAMAICAN_CREOLE :: JAMAICAN_CREOLE; + KBTS_LANGUAGE_JAPANESE :: JAPANESE; + KBTS_LANGUAGE_JAVANESE :: JAVANESE; + KBTS_LANGUAGE_JENNU_KURUMA :: JENNU_KURUMA; + KBTS_LANGUAGE_JUDEO_TAT :: JUDEO_TAT; + KBTS_LANGUAGE_JULA :: JULA; + KBTS_LANGUAGE_KABARDIAN :: KABARDIAN; + KBTS_LANGUAGE_KABYLE :: KABYLE; + KBTS_LANGUAGE_KACHCHI :: KACHCHI; + KBTS_LANGUAGE_KADIWEU :: KADIWEU; + KBTS_LANGUAGE_KALENJIN :: KALENJIN; + KBTS_LANGUAGE_KALMYK :: KALMYK; + KBTS_LANGUAGE_KAMBA :: KAMBA; + KBTS_LANGUAGE_KANAUJI :: KANAUJI; + KBTS_LANGUAGE_KANNADA :: KANNADA; + KBTS_LANGUAGE_KANURI :: KANURI; + KBTS_LANGUAGE_KAQCHIKEL :: KAQCHIKEL; + KBTS_LANGUAGE_KARACHAY :: KARACHAY; + KBTS_LANGUAGE_KARAIM :: KARAIM; + KBTS_LANGUAGE_KARAKALPAK :: KARAKALPAK; + KBTS_LANGUAGE_KARELIAN :: KARELIAN; + KBTS_LANGUAGE_KAREN :: KAREN; + KBTS_LANGUAGE_KASHMIRI :: KASHMIRI; + KBTS_LANGUAGE_KASHUBIAN :: KASHUBIAN; + KBTS_LANGUAGE_KATE :: KATE; + KBTS_LANGUAGE_KAZAKH :: KAZAKH; + KBTS_LANGUAGE_KEBENA :: KEBENA; + KBTS_LANGUAGE_KEKCHI :: KEKCHI; + KBTS_LANGUAGE_KHAKASS :: KHAKASS; + KBTS_LANGUAGE_KHAMTI_SHAN :: KHAMTI_SHAN; + KBTS_LANGUAGE_KHAMYANG :: KHAMYANG; + KBTS_LANGUAGE_KHANTY_KAZIM :: KHANTY_KAZIM; + KBTS_LANGUAGE_KHANTY_SHURISHKAR :: KHANTY_SHURISHKAR; + KBTS_LANGUAGE_KHANTY_VAKHI :: KHANTY_VAKHI; + KBTS_LANGUAGE_KHASI :: KHASI; + KBTS_LANGUAGE_KHENGKHA :: KHENGKHA; + KBTS_LANGUAGE_KHINALUG :: KHINALUG; + KBTS_LANGUAGE_KHMER :: KHMER; + KBTS_LANGUAGE_KHORASANI_TURKIC :: KHORASANI_TURKIC; + KBTS_LANGUAGE_KHOWAR :: KHOWAR; + KBTS_LANGUAGE_KHUTSURI_GEORGIAN :: KHUTSURI_GEORGIAN; + KBTS_LANGUAGE_KICHE :: KICHE; + KBTS_LANGUAGE_KIKONGO :: KIKONGO; + KBTS_LANGUAGE_KILDIN_SAMI :: KILDIN_SAMI; + KBTS_LANGUAGE_KINYARWANDA :: KINYARWANDA; + KBTS_LANGUAGE_KIRMANJKI :: KIRMANJKI; + KBTS_LANGUAGE_KISII :: KISII; + KBTS_LANGUAGE_KITUBA :: KITUBA; + KBTS_LANGUAGE_KODAGU :: KODAGU; + KBTS_LANGUAGE_KOKNI :: KOKNI; + KBTS_LANGUAGE_KOMI :: KOMI; + KBTS_LANGUAGE_KOMI_PERMYAK :: KOMI_PERMYAK; + KBTS_LANGUAGE_KOMI_ZYRIAN :: KOMI_ZYRIAN; + KBTS_LANGUAGE_KOMO :: KOMO; + KBTS_LANGUAGE_KOMSO :: KOMSO; + KBTS_LANGUAGE_KONGO :: KONGO; + KBTS_LANGUAGE_KONKANI :: KONKANI; + KBTS_LANGUAGE_KOORETE :: KOORETE; + KBTS_LANGUAGE_KOREAN :: KOREAN; + KBTS_LANGUAGE_KOREAO_OLD_HANGUL :: KOREAO_OLD_HANGUL; + KBTS_LANGUAGE_KORYAK :: KORYAK; + KBTS_LANGUAGE_KOSRAEAN :: KOSRAEAN; + KBTS_LANGUAGE_KPELLE :: KPELLE; + KBTS_LANGUAGE_KPELLE_LIBERIA :: KPELLE_LIBERIA; + KBTS_LANGUAGE_KRIO :: KRIO; + KBTS_LANGUAGE_KRYMCHAK :: KRYMCHAK; + KBTS_LANGUAGE_KUANYAMA :: KUANYAMA; + KBTS_LANGUAGE_KUBE :: KUBE; + KBTS_LANGUAGE_KUI :: KUI; + KBTS_LANGUAGE_KULVI :: KULVI; + KBTS_LANGUAGE_KUMAONI :: KUMAONI; + KBTS_LANGUAGE_KUMYK :: KUMYK; + KBTS_LANGUAGE_KURDISH :: KURDISH; + KBTS_LANGUAGE_KURUKH :: KURUKH; + KBTS_LANGUAGE_KUY :: KUY; + KBTS_LANGUAGE_KWAKWALA :: KWAKWALA; + KBTS_LANGUAGE_KYRGYZ :: KYRGYZ; + KBTS_LANGUAGE_L_CREE :: L_CREE; + KBTS_LANGUAGE_LADAKHI :: LADAKHI; + KBTS_LANGUAGE_LADIN :: LADIN; + KBTS_LANGUAGE_LADINO :: LADINO; + KBTS_LANGUAGE_LAHULI :: LAHULI; + KBTS_LANGUAGE_LAK :: LAK; + KBTS_LANGUAGE_LAKI :: LAKI; + KBTS_LANGUAGE_LAMBANI :: LAMBANI; + KBTS_LANGUAGE_LAMPUNG :: LAMPUNG; + KBTS_LANGUAGE_LAO :: LAO; + KBTS_LANGUAGE_LATIN :: LATIN; + KBTS_LANGUAGE_LATVIAN :: LATVIAN; + KBTS_LANGUAGE_LAZ :: LAZ; + KBTS_LANGUAGE_LELEMI :: LELEMI; + KBTS_LANGUAGE_LEZGI :: LEZGI; + KBTS_LANGUAGE_LIGURIAN :: LIGURIAN; + KBTS_LANGUAGE_LIMBU :: LIMBU; + KBTS_LANGUAGE_LIMBURGISH :: LIMBURGISH; + KBTS_LANGUAGE_LINGALA :: LINGALA; + KBTS_LANGUAGE_LIPO :: LIPO; + KBTS_LANGUAGE_LISU :: LISU; + KBTS_LANGUAGE_LITHUANIAN :: LITHUANIAN; + KBTS_LANGUAGE_LIV :: LIV; + KBTS_LANGUAGE_LOJBAN :: LOJBAN; + KBTS_LANGUAGE_LOMA :: LOMA; + KBTS_LANGUAGE_LOMBARD :: LOMBARD; + KBTS_LANGUAGE_LOMWE :: LOMWE; + KBTS_LANGUAGE_LOW_MARI :: LOW_MARI; + KBTS_LANGUAGE_LOW_SAXON :: LOW_SAXON; + KBTS_LANGUAGE_LOWER_SORBIAN :: LOWER_SORBIAN; + KBTS_LANGUAGE_LU :: LU; + KBTS_LANGUAGE_LUBA_KATANGA :: LUBA_KATANGA; + KBTS_LANGUAGE_LUBA_LULUA :: LUBA_LULUA; + KBTS_LANGUAGE_LULE_SAMI :: LULE_SAMI; + KBTS_LANGUAGE_LUO :: LUO; + KBTS_LANGUAGE_LURI :: LURI; + KBTS_LANGUAGE_LUSHOOTSEED :: LUSHOOTSEED; + KBTS_LANGUAGE_LUXEMBOURGISH :: LUXEMBOURGISH; + KBTS_LANGUAGE_LUYIA :: LUYIA; + KBTS_LANGUAGE_MACEDONIAN :: MACEDONIAN; + KBTS_LANGUAGE_MADURA :: MADURA; + KBTS_LANGUAGE_MAGAHI :: MAGAHI; + KBTS_LANGUAGE_MAITHILI :: MAITHILI; + KBTS_LANGUAGE_MAJANG :: MAJANG; + KBTS_LANGUAGE_MAKASAR :: MAKASAR; + KBTS_LANGUAGE_MAKHUWA :: MAKHUWA; + KBTS_LANGUAGE_MAKONDE :: MAKONDE; + KBTS_LANGUAGE_MALAGASY :: MALAGASY; + KBTS_LANGUAGE_MALAY :: MALAY; + KBTS_LANGUAGE_MALAYALAM :: MALAYALAM; + KBTS_LANGUAGE_MALAYALAM_REFORMED :: MALAYALAM_REFORMED; + KBTS_LANGUAGE_MALE :: MALE; + KBTS_LANGUAGE_MALINKE :: MALINKE; + KBTS_LANGUAGE_MALTESE :: MALTESE; + KBTS_LANGUAGE_MAM :: MAM; + KBTS_LANGUAGE_MANCHU :: MANCHU; + KBTS_LANGUAGE_MANDAR :: MANDAR; + KBTS_LANGUAGE_MANDINKA :: MANDINKA; + KBTS_LANGUAGE_MANINKA :: MANINKA; + KBTS_LANGUAGE_MANIPURI :: MANIPURI; + KBTS_LANGUAGE_MANO :: MANO; + KBTS_LANGUAGE_MANSI :: MANSI; + KBTS_LANGUAGE_MANX :: MANX; + KBTS_LANGUAGE_MAORI :: MAORI; + KBTS_LANGUAGE_MAPUDUNGUN :: MAPUDUNGUN; + KBTS_LANGUAGE_MARATHI :: MARATHI; + KBTS_LANGUAGE_MARSHALLESE :: MARSHALLESE; + KBTS_LANGUAGE_MARWARI :: MARWARI; + KBTS_LANGUAGE_MAYAN :: MAYAN; + KBTS_LANGUAGE_MAZANDERANI :: MAZANDERANI; + KBTS_LANGUAGE_MBEMBE_TIGON :: MBEMBE_TIGON; + KBTS_LANGUAGE_MBO :: MBO; + KBTS_LANGUAGE_MBUNDU :: MBUNDU; + KBTS_LANGUAGE_MEDUMBA :: MEDUMBA; + KBTS_LANGUAGE_MEEN :: MEEN; + KBTS_LANGUAGE_MENDE :: MENDE; + KBTS_LANGUAGE_MERU :: MERU; + KBTS_LANGUAGE_MEWATI :: MEWATI; + KBTS_LANGUAGE_MINANGKABAU :: MINANGKABAU; + KBTS_LANGUAGE_MINJANGBAL :: MINJANGBAL; + KBTS_LANGUAGE_MIRANDESE :: MIRANDESE; + KBTS_LANGUAGE_MIZO :: MIZO; + KBTS_LANGUAGE_MOHAWK :: MOHAWK; + KBTS_LANGUAGE_MOKSHA :: MOKSHA; + KBTS_LANGUAGE_MOLDAVIAN :: MOLDAVIAN; + KBTS_LANGUAGE_MON :: MON; + KBTS_LANGUAGE_MONGOLIAN :: MONGOLIAN; + KBTS_LANGUAGE_MOOSE_CREE :: MOOSE_CREE; + KBTS_LANGUAGE_MORISYEN :: MORISYEN; + KBTS_LANGUAGE_MOROCCAN :: MOROCCAN; + KBTS_LANGUAGE_MOSSI :: MOSSI; + KBTS_LANGUAGE_MUNDARI :: MUNDARI; + KBTS_LANGUAGE_MUSCOGEE :: MUSCOGEE; + KBTS_LANGUAGE_N_CREE :: N_CREE; + KBTS_LANGUAGE_NAGA_ASSAMESE :: NAGA_ASSAMESE; + KBTS_LANGUAGE_NAGARI :: NAGARI; + KBTS_LANGUAGE_NAHUATL :: NAHUATL; + KBTS_LANGUAGE_NANAI :: NANAI; + KBTS_LANGUAGE_NASKAPI :: NASKAPI; + KBTS_LANGUAGE_NAURUAN :: NAURUAN; + KBTS_LANGUAGE_NAVAJO :: NAVAJO; + KBTS_LANGUAGE_NDAU :: NDAU; + KBTS_LANGUAGE_NDEBELE :: NDEBELE; + KBTS_LANGUAGE_NDONGA :: NDONGA; + KBTS_LANGUAGE_NEAPOLITAN :: NEAPOLITAN; + KBTS_LANGUAGE_NEPALI :: NEPALI; + KBTS_LANGUAGE_NEWARI :: NEWARI; + KBTS_LANGUAGE_NGBAKA :: NGBAKA; + KBTS_LANGUAGE_NIGERIAN_FULFULDE :: NIGERIAN_FULFULDE; + KBTS_LANGUAGE_NIMADI :: NIMADI; + KBTS_LANGUAGE_NISI :: NISI; + KBTS_LANGUAGE_NIUEAN :: NIUEAN; + KBTS_LANGUAGE_NKO :: NKO; + KBTS_LANGUAGE_NOGAI :: NOGAI; + KBTS_LANGUAGE_NORFOLK :: NORFOLK; + KBTS_LANGUAGE_NORTH_SLAVEY :: NORTH_SLAVEY; + KBTS_LANGUAGE_NORTHERN_EMBERA :: NORTHERN_EMBERA; + KBTS_LANGUAGE_NORTHERN_SAMI :: NORTHERN_SAMI; + KBTS_LANGUAGE_NORTHERN_SOTHO :: NORTHERN_SOTHO; + KBTS_LANGUAGE_NORTHERN_TAI :: NORTHERN_TAI; + KBTS_LANGUAGE_NORWAY_HOUSE_CREE :: NORWAY_HOUSE_CREE; + KBTS_LANGUAGE_NORWEGIAN :: NORWEGIAN; + KBTS_LANGUAGE_NORWEGIAN_NYNORSK :: NORWEGIAN_NYNORSK; + KBTS_LANGUAGE_NOVIAL :: NOVIAL; + KBTS_LANGUAGE_NUMANGGANG :: NUMANGGANG; + KBTS_LANGUAGE_NUNAVIK_INUKTITUT :: NUNAVIK_INUKTITUT; + KBTS_LANGUAGE_NUU_CHAH_NULTH :: NUU_CHAH_NULTH; + KBTS_LANGUAGE_NYAMWEZI :: NYAMWEZI; + KBTS_LANGUAGE_NYANKOLE :: NYANKOLE; + KBTS_LANGUAGE_OCCITAN :: OCCITAN; + KBTS_LANGUAGE_ODIA :: ODIA; + KBTS_LANGUAGE_OJI_CREE :: OJI_CREE; + KBTS_LANGUAGE_OJIBWAY :: OJIBWAY; + KBTS_LANGUAGE_OLD_IRISH :: OLD_IRISH; + KBTS_LANGUAGE_OLD_JAVANESE :: OLD_JAVANESE; + KBTS_LANGUAGE_ONEIDA :: ONEIDA; + KBTS_LANGUAGE_ONONDAGA :: ONONDAGA; + KBTS_LANGUAGE_OROMO :: OROMO; + KBTS_LANGUAGE_OSSETIAN :: OSSETIAN; + KBTS_LANGUAGE_PA_O_KAREN :: PA_O_KAREN; + KBTS_LANGUAGE_PALAUAN :: PALAUAN; + KBTS_LANGUAGE_PALAUNG :: PALAUNG; + KBTS_LANGUAGE_PALESTINIAN_ARAMAIC :: PALESTINIAN_ARAMAIC; + KBTS_LANGUAGE_PALI :: PALI; + KBTS_LANGUAGE_PALPA :: PALPA; + KBTS_LANGUAGE_PAMPANGAN :: PAMPANGAN; + KBTS_LANGUAGE_PANGASINAN :: PANGASINAN; + KBTS_LANGUAGE_PAPIAMENTU :: PAPIAMENTU; + KBTS_LANGUAGE_PASHTO :: PASHTO; + KBTS_LANGUAGE_PATTANI_MALAY :: PATTANI_MALAY; + KBTS_LANGUAGE_PENNSYLVANIA_GERMAN :: PENNSYLVANIA_GERMAN; + KBTS_LANGUAGE_PERSIAN :: PERSIAN; + KBTS_LANGUAGE_PHAKE :: PHAKE; + KBTS_LANGUAGE_PICARD :: PICARD; + KBTS_LANGUAGE_PIEMONTESE :: PIEMONTESE; + KBTS_LANGUAGE_PILAGA :: PILAGA; + KBTS_LANGUAGE_PITE_SAMI :: PITE_SAMI; + KBTS_LANGUAGE_POCOMCHI :: POCOMCHI; + KBTS_LANGUAGE_POHNPEIAN :: POHNPEIAN; + KBTS_LANGUAGE_POLISH :: POLISH; + KBTS_LANGUAGE_POLYTONIC_GREEK :: POLYTONIC_GREEK; + KBTS_LANGUAGE_PORTUGUESE :: PORTUGUESE; + KBTS_LANGUAGE_PROVENCAL :: PROVENCAL; + KBTS_LANGUAGE_PUNJABI :: PUNJABI; + KBTS_LANGUAGE_QUECHUA :: QUECHUA; + KBTS_LANGUAGE_QUECHUA_BOLIVIA :: QUECHUA_BOLIVIA; + KBTS_LANGUAGE_QUECHUA_ECUADOR :: QUECHUA_ECUADOR; + KBTS_LANGUAGE_QUECHUA_PERU :: QUECHUA_PERU; + KBTS_LANGUAGE_R_CREE :: R_CREE; + KBTS_LANGUAGE_RAJASTHANI :: RAJASTHANI; + KBTS_LANGUAGE_RAKHINE :: RAKHINE; + KBTS_LANGUAGE_RAROTONGAN :: RAROTONGAN; + KBTS_LANGUAGE_REJANG :: REJANG; + KBTS_LANGUAGE_RIANG :: RIANG; + KBTS_LANGUAGE_RIPUARIAN :: RIPUARIAN; + KBTS_LANGUAGE_RITARUNGO :: RITARUNGO; + KBTS_LANGUAGE_ROHINGYA :: ROHINGYA; + KBTS_LANGUAGE_ROMANIAN :: ROMANIAN; + KBTS_LANGUAGE_ROMANSH :: ROMANSH; + KBTS_LANGUAGE_ROMANY :: ROMANY; + KBTS_LANGUAGE_ROTUMAN :: ROTUMAN; + KBTS_LANGUAGE_RUNDI :: RUNDI; + KBTS_LANGUAGE_RUSSIAN :: RUSSIAN; + KBTS_LANGUAGE_RUSSIAN_BURIAT :: RUSSIAN_BURIAT; + KBTS_LANGUAGE_RUSYN :: RUSYN; + KBTS_LANGUAGE_SADRI :: SADRI; + KBTS_LANGUAGE_SAKHA :: SAKHA; + KBTS_LANGUAGE_SAMOAN :: SAMOAN; + KBTS_LANGUAGE_SAMOGITIAN :: SAMOGITIAN; + KBTS_LANGUAGE_SAN_BLAS_KUNA :: SAN_BLAS_KUNA; + KBTS_LANGUAGE_SANGO :: SANGO; + KBTS_LANGUAGE_SANSKRIT :: SANSKRIT; + KBTS_LANGUAGE_SANTALI :: SANTALI; + KBTS_LANGUAGE_SARAIKI :: SARAIKI; + KBTS_LANGUAGE_SARDINIAN :: SARDINIAN; + KBTS_LANGUAGE_SASAK :: SASAK; + KBTS_LANGUAGE_SATERLAND_FRISIAN :: SATERLAND_FRISIAN; + KBTS_LANGUAGE_SAYISI :: SAYISI; + KBTS_LANGUAGE_SCOTS :: SCOTS; + KBTS_LANGUAGE_SCOTTISH_GAELIC :: SCOTTISH_GAELIC; + KBTS_LANGUAGE_SEKOTA :: SEKOTA; + KBTS_LANGUAGE_SELKUP :: SELKUP; + KBTS_LANGUAGE_SENA :: SENA; + KBTS_LANGUAGE_SENECA :: SENECA; + KBTS_LANGUAGE_SERBIAN :: SERBIAN; + KBTS_LANGUAGE_SERER :: SERER; + KBTS_LANGUAGE_SGAW_KAREN :: SGAW_KAREN; + KBTS_LANGUAGE_SHAN :: SHAN; + KBTS_LANGUAGE_SHONA :: SHONA; + KBTS_LANGUAGE_SIBE :: SIBE; + KBTS_LANGUAGE_SICILIAN :: SICILIAN; + KBTS_LANGUAGE_SIDAMO :: SIDAMO; + KBTS_LANGUAGE_SILESIAN :: SILESIAN; + KBTS_LANGUAGE_SILTE_GURAGE :: SILTE_GURAGE; + KBTS_LANGUAGE_SINDHI :: SINDHI; + KBTS_LANGUAGE_SINHALA :: SINHALA; + KBTS_LANGUAGE_SKOLT_SAMI :: SKOLT_SAMI; + KBTS_LANGUAGE_SLAVEY :: SLAVEY; + KBTS_LANGUAGE_SLOVAK :: SLOVAK; + KBTS_LANGUAGE_SLOVENIAN :: SLOVENIAN; + KBTS_LANGUAGE_SMALL_FLOWERY_MIAO :: SMALL_FLOWERY_MIAO; + KBTS_LANGUAGE_SODO_GURAGE :: SODO_GURAGE; + KBTS_LANGUAGE_SOGA :: SOGA; + KBTS_LANGUAGE_SOMALI :: SOMALI; + KBTS_LANGUAGE_SONGE :: SONGE; + KBTS_LANGUAGE_SONINKE :: SONINKE; + KBTS_LANGUAGE_SOUTH_SLAVEY :: SOUTH_SLAVEY; + KBTS_LANGUAGE_SOUTHERN_KIWAI :: SOUTHERN_KIWAI; + KBTS_LANGUAGE_SOUTHERN_SAMI :: SOUTHERN_SAMI; + KBTS_LANGUAGE_SOUTHERN_SOTHO :: SOUTHERN_SOTHO; + KBTS_LANGUAGE_SPANISH :: SPANISH; + KBTS_LANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT :: STANDARD_MOROCCAN_TAMAZIGHT; + KBTS_LANGUAGE_STRAITS_SALISH :: STRAITS_SALISH; + KBTS_LANGUAGE_SUKUMA :: SUKUMA; + KBTS_LANGUAGE_SUNDANESE :: SUNDANESE; + KBTS_LANGUAGE_SURI :: SURI; + KBTS_LANGUAGE_SUTU :: SUTU; + KBTS_LANGUAGE_SVAN :: SVAN; + KBTS_LANGUAGE_SWADAYA_ARAMAIC :: SWADAYA_ARAMAIC; + KBTS_LANGUAGE_SWAHILI :: SWAHILI; + KBTS_LANGUAGE_SWATI :: SWATI; + KBTS_LANGUAGE_SWEDISH :: SWEDISH; + KBTS_LANGUAGE_SYLHETI :: SYLHETI; + KBTS_LANGUAGE_SYRIAC :: SYRIAC; + KBTS_LANGUAGE_SYRIAC_EASTERN :: SYRIAC_EASTERN; + KBTS_LANGUAGE_SYRIAC_ESTRANGELA :: SYRIAC_ESTRANGELA; + KBTS_LANGUAGE_SYRIAC_WESTERN :: SYRIAC_WESTERN; + KBTS_LANGUAGE_TABASARAN :: TABASARAN; + KBTS_LANGUAGE_TACHELHIT :: TACHELHIT; + KBTS_LANGUAGE_TAGALOG :: TAGALOG; + KBTS_LANGUAGE_TAHAGGART_TAMAHAQ :: TAHAGGART_TAMAHAQ; + KBTS_LANGUAGE_TAHITIAN :: TAHITIAN; + KBTS_LANGUAGE_TAI_LAING :: TAI_LAING; + KBTS_LANGUAGE_TAJIKI :: TAJIKI; + KBTS_LANGUAGE_TALYSH :: TALYSH; + KBTS_LANGUAGE_TAMASHEK :: TAMASHEK; + KBTS_LANGUAGE_TAMASHEQ :: TAMASHEQ; + KBTS_LANGUAGE_TAMAZIGHT :: TAMAZIGHT; + KBTS_LANGUAGE_TAMIL :: TAMIL; + KBTS_LANGUAGE_TARIFIT :: TARIFIT; + KBTS_LANGUAGE_TATAR :: TATAR; + KBTS_LANGUAGE_TAWALLAMMAT_TAMAJAQ :: TAWALLAMMAT_TAMAJAQ; + KBTS_LANGUAGE_TAY :: TAY; + KBTS_LANGUAGE_TAYART_TAMAJEQ :: TAYART_TAMAJEQ; + KBTS_LANGUAGE_TELUGU :: TELUGU; + KBTS_LANGUAGE_TEMNE :: TEMNE; + KBTS_LANGUAGE_TETUM :: TETUM; + KBTS_LANGUAGE_TH_CREE :: TH_CREE; + KBTS_LANGUAGE_THAI :: THAI; + KBTS_LANGUAGE_THAILAND_MON :: THAILAND_MON; + KBTS_LANGUAGE_THOMPSON :: THOMPSON; + KBTS_LANGUAGE_TIBETAN :: TIBETAN; + KBTS_LANGUAGE_TIGRE :: TIGRE; + KBTS_LANGUAGE_TIGRINYA :: TIGRINYA; + KBTS_LANGUAGE_TIV :: TIV; + KBTS_LANGUAGE_TLINGIT :: TLINGIT; + KBTS_LANGUAGE_TOBO :: TOBO; + KBTS_LANGUAGE_TODO :: TODO; + KBTS_LANGUAGE_TOK_PISIN :: TOK_PISIN; + KBTS_LANGUAGE_TOMA :: TOMA; + KBTS_LANGUAGE_TONGA :: TONGA; + KBTS_LANGUAGE_TONGAN :: TONGAN; + KBTS_LANGUAGE_TORKI :: TORKI; + KBTS_LANGUAGE_TSHANGLA :: TSHANGLA; + KBTS_LANGUAGE_TSONGA :: TSONGA; + KBTS_LANGUAGE_TSWANA :: TSWANA; + KBTS_LANGUAGE_TULU :: TULU; + KBTS_LANGUAGE_TUMBUKA :: TUMBUKA; + KBTS_LANGUAGE_TUNDRA_ENETS :: TUNDRA_ENETS; + KBTS_LANGUAGE_TURKISH :: TURKISH; + KBTS_LANGUAGE_TURKMEN :: TURKMEN; + KBTS_LANGUAGE_TUROYO_ARAMAIC :: TUROYO_ARAMAIC; + KBTS_LANGUAGE_TUSCARORA :: TUSCARORA; + KBTS_LANGUAGE_TUVALU :: TUVALU; + KBTS_LANGUAGE_TUVIN :: TUVIN; + KBTS_LANGUAGE_TWI :: TWI; + KBTS_LANGUAGE_TZOTZIL :: TZOTZIL; + KBTS_LANGUAGE_UDI :: UDI; + KBTS_LANGUAGE_UDMURT :: UDMURT; + KBTS_LANGUAGE_UKRAINIAN :: UKRAINIAN; + KBTS_LANGUAGE_UMBUNDU :: UMBUNDU; + KBTS_LANGUAGE_UME_SAMI :: UME_SAMI; + KBTS_LANGUAGE_UPPER_SAXON :: UPPER_SAXON; + KBTS_LANGUAGE_UPPER_SORBIAN :: UPPER_SORBIAN; + KBTS_LANGUAGE_URALIC_PHONETIC :: URALIC_PHONETIC; + KBTS_LANGUAGE_URDU :: URDU; + KBTS_LANGUAGE_UYGHUR :: UYGHUR; + KBTS_LANGUAGE_UZBEK :: UZBEK; + KBTS_LANGUAGE_VENDA :: VENDA; + KBTS_LANGUAGE_VENETIAN :: VENETIAN; + KBTS_LANGUAGE_VIETNAMESE :: VIETNAMESE; + KBTS_LANGUAGE_VLAX_ROMANI :: VLAX_ROMANI; + KBTS_LANGUAGE_VOLAPUK :: VOLAPUK; + KBTS_LANGUAGE_VORO :: VORO; + KBTS_LANGUAGE_WA :: WA; + KBTS_LANGUAGE_WACI_GBE :: WACI_GBE; + KBTS_LANGUAGE_WAGDI :: WAGDI; + KBTS_LANGUAGE_WAKHI :: WAKHI; + KBTS_LANGUAGE_WALLOON :: WALLOON; + KBTS_LANGUAGE_WARAY_WARAY :: WARAY_WARAY; + KBTS_LANGUAGE_WAYANAD_CHETTI :: WAYANAD_CHETTI; + KBTS_LANGUAGE_WAYUU :: WAYUU; + KBTS_LANGUAGE_WELSH :: WELSH; + KBTS_LANGUAGE_WENDAT :: WENDAT; + KBTS_LANGUAGE_WEST_CREE :: WEST_CREE; + KBTS_LANGUAGE_WESTERN_CHAM :: WESTERN_CHAM; + KBTS_LANGUAGE_WESTERN_KAYAH :: WESTERN_KAYAH; + KBTS_LANGUAGE_WESTERN_PANJABI :: WESTERN_PANJABI; + KBTS_LANGUAGE_WESTERN_PWO_KAREN :: WESTERN_PWO_KAREN; + KBTS_LANGUAGE_WOLOF :: WOLOF; + KBTS_LANGUAGE_WOODS_CREE :: WOODS_CREE; + KBTS_LANGUAGE_WUDING_LUQUAN_YI :: WUDING_LUQUAN_YI; + KBTS_LANGUAGE_WYANDOT :: WYANDOT; + KBTS_LANGUAGE_XHOSA :: XHOSA; + KBTS_LANGUAGE_Y_CREE :: Y_CREE; + KBTS_LANGUAGE_YAO :: YAO; + KBTS_LANGUAGE_YAPESE :: YAPESE; + KBTS_LANGUAGE_YI_CLASSIC :: YI_CLASSIC; + KBTS_LANGUAGE_YI_MODERN :: YI_MODERN; + KBTS_LANGUAGE_YIDDISH :: YIDDISH; + KBTS_LANGUAGE_YORUBA :: YORUBA; + KBTS_LANGUAGE_ZAMBOANGA_CHAVACANO :: ZAMBOANGA_CHAVACANO; + KBTS_LANGUAGE_ZANDE :: ZANDE; + KBTS_LANGUAGE_ZARMA :: ZARMA; + KBTS_LANGUAGE_ZAZAKI :: ZAZAKI; + KBTS_LANGUAGE_ZEALANDIC :: ZEALANDIC; + KBTS_LANGUAGE_ZHUANG :: ZHUANG; + KBTS_LANGUAGE_ZULU :: ZULU; +} + +kbts_break_flags :: u32; +kbts_break_flags_enum :: enum u32 { + DIRECTION :: 1; + + SCRIPT :: 2; + + GRAPHEME :: 4; + + WORD :: 8; + + LINE_SOFT :: 16; + + LINE_HARD :: 32; + + LINE :: 48; + ANY :: 63; + + KBTS_BREAK_FLAG_DIRECTION :: DIRECTION; + + KBTS_BREAK_FLAG_SCRIPT :: SCRIPT; + + KBTS_BREAK_FLAG_GRAPHEME :: GRAPHEME; + + KBTS_BREAK_FLAG_WORD :: WORD; + + KBTS_BREAK_FLAG_LINE_SOFT :: LINE_SOFT; + + KBTS_BREAK_FLAG_LINE_HARD :: LINE_HARD; + + KBTS_BREAK_FLAG_LINE :: LINE; + KBTS_BREAK_FLAG_ANY :: ANY; +} + +kbts_op_kind :: u8; +kbts_op_kind_enum :: enum u32 { + END :: 0; + + PRE_NORMALIZE_DOTTED_CIRCLES :: 1; + NORMALIZE :: 2; + NORMALIZE_HANGUL :: 3; + FLAG_JOINING_LETTERS :: 4; + GSUB_FEATURES :: 5; + GSUB_FEATURES_WITH_USER :: 6; + + GPOS_METRICS :: 7; + GPOS_FEATURES :: 8; + + POST_GPOS_FIXUP :: 9; + STCH_POSTPASS :: 10; + + COUNT :: 11; + + KBTS_OP_KIND_END :: END; + + KBTS_OP_KIND_PRE_NORMALIZE_DOTTED_CIRCLES :: PRE_NORMALIZE_DOTTED_CIRCLES; + KBTS_OP_KIND_NORMALIZE :: NORMALIZE; + KBTS_OP_KIND_NORMALIZE_HANGUL :: NORMALIZE_HANGUL; + KBTS_OP_KIND_FLAG_JOINING_LETTERS :: FLAG_JOINING_LETTERS; + KBTS_OP_KIND_GSUB_FEATURES :: GSUB_FEATURES; + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER :: GSUB_FEATURES_WITH_USER; + + KBTS_OP_KIND_GPOS_METRICS :: GPOS_METRICS; + KBTS_OP_KIND_GPOS_FEATURES :: GPOS_FEATURES; + + KBTS_OP_KIND_POST_GPOS_FIXUP :: POST_GPOS_FIXUP; + KBTS_OP_KIND_STCH_POSTPASS :: STCH_POSTPASS; + + KBTS_OP_KIND_COUNT :: COUNT; +} + +kbts_glyph_flags :: u32; +kbts_glyph_flags_enum :: enum u32 { + ISOL :: 1; + FINA :: 2; + FIN2 :: 4; + FIN3 :: 8; + MEDI :: 16; + MED2 :: 32; + INIT :: 64; + + LJMO :: 128; + VJMO :: 256; + TJMO :: 512; + RPHF :: 1024; + BLWF :: 2048; + HALF :: 4096; + PSTF :: 8192; + ABVF :: 16384; + PREF :: 32768; + NUMR :: 65536; + FRAC :: 131072; + DNOM :: 262144; + CFAR :: 524288; + + DO_NOT_DECOMPOSE :: 2097152; + FIRST_IN_MULTIPLE_SUBSTITUTION :: 4194304; + NO_BREAK :: 8388608; + CURSIVE :: 16777216; + GENERATED_BY_GSUB :: 33554432; + USED_IN_GPOS :: 67108864; + + STCH_ENDPOINT :: 134217728; + STCH_EXTENSION :: 268435456; + + LIGATURE :: 536870912; + MULTIPLE_SUBSTITUTION :: 1073741824; + + KBTS_GLYPH_FLAG_ISOL :: ISOL; + KBTS_GLYPH_FLAG_FINA :: FINA; + KBTS_GLYPH_FLAG_FIN2 :: FIN2; + KBTS_GLYPH_FLAG_FIN3 :: FIN3; + KBTS_GLYPH_FLAG_MEDI :: MEDI; + KBTS_GLYPH_FLAG_MED2 :: MED2; + KBTS_GLYPH_FLAG_INIT :: INIT; + + KBTS_GLYPH_FLAG_LJMO :: LJMO; + KBTS_GLYPH_FLAG_VJMO :: VJMO; + KBTS_GLYPH_FLAG_TJMO :: TJMO; + KBTS_GLYPH_FLAG_RPHF :: RPHF; + KBTS_GLYPH_FLAG_BLWF :: BLWF; + KBTS_GLYPH_FLAG_HALF :: HALF; + KBTS_GLYPH_FLAG_PSTF :: PSTF; + KBTS_GLYPH_FLAG_ABVF :: ABVF; + KBTS_GLYPH_FLAG_PREF :: PREF; + KBTS_GLYPH_FLAG_NUMR :: NUMR; + KBTS_GLYPH_FLAG_FRAC :: FRAC; + KBTS_GLYPH_FLAG_DNOM :: DNOM; + KBTS_GLYPH_FLAG_CFAR :: CFAR; + + KBTS_GLYPH_FLAG_DO_NOT_DECOMPOSE :: DO_NOT_DECOMPOSE; + KBTS_GLYPH_FLAG_FIRST_IN_MULTIPLE_SUBSTITUTION :: FIRST_IN_MULTIPLE_SUBSTITUTION; + KBTS_GLYPH_FLAG_NO_BREAK :: NO_BREAK; + KBTS_GLYPH_FLAG_CURSIVE :: CURSIVE; + KBTS_GLYPH_FLAG_GENERATED_BY_GSUB :: GENERATED_BY_GSUB; + KBTS_GLYPH_FLAG_USED_IN_GPOS :: USED_IN_GPOS; + + KBTS_GLYPH_FLAG_STCH_ENDPOINT :: STCH_ENDPOINT; + KBTS_GLYPH_FLAG_STCH_EXTENSION :: STCH_EXTENSION; + + KBTS_GLYPH_FLAG_LIGATURE :: LIGATURE; + KBTS_GLYPH_FLAG_MULTIPLE_SUBSTITUTION :: MULTIPLE_SUBSTITUTION; +} + +kbts_japanese_line_break_style :: u8; +kbts_japanese_line_break_style_enum :: enum u32 { + STRICT :: 0; + + NORMAL :: 1; + + LOOSE :: 2; + + COUNT :: 3; + + KBTS_JAPANESE_LINE_BREAK_STYLE_STRICT :: STRICT; + + KBTS_JAPANESE_LINE_BREAK_STYLE_NORMAL :: NORMAL; + + KBTS_JAPANESE_LINE_BREAK_STYLE_LOOSE :: LOOSE; + + KBTS_JAPANESE_LINE_BREAK_STYLE_COUNT :: COUNT; +} + +kbts_orientation :: u32; +kbts_orientation_enum :: enum u32 { + HORIZONTAL :: 0; + VERTICAL :: 1; + + COUNT :: 2; + + KBTS_ORIENTATION_HORIZONTAL :: HORIZONTAL; + KBTS_ORIENTATION_VERTICAL :: VERTICAL; + + KBTS_ORIENTATION_COUNT :: COUNT; +} + +kbts_direction :: u32; +kbts_direction_enum :: enum u32 { + NONE :: 0; + LTR :: 1; + RTL :: 2; + + COUNT :: 3; + + KBTS_DIRECTION_NONE :: NONE; + KBTS_DIRECTION_LTR :: LTR; + KBTS_DIRECTION_RTL :: RTL; + + KBTS_DIRECTION_COUNT :: COUNT; +} + +kbts_unicode_joining_type :: u8; +kbts_unicode_joining_type_enum :: enum u32 { + NONE :: 0; + LEFT :: 1; + DUAL :: 2; + FORCE :: 3; + RIGHT :: 4; + TRANSPARENT :: 5; + COUNT :: 6; + + KBTS_UNICODE_JOINING_TYPE_NONE :: NONE; + KBTS_UNICODE_JOINING_TYPE_LEFT :: LEFT; + KBTS_UNICODE_JOINING_TYPE_DUAL :: DUAL; + KBTS_UNICODE_JOINING_TYPE_FORCE :: FORCE; + KBTS_UNICODE_JOINING_TYPE_RIGHT :: RIGHT; + KBTS_UNICODE_JOINING_TYPE_TRANSPARENT :: TRANSPARENT; + KBTS_UNICODE_JOINING_TYPE_COUNT :: COUNT; +} + +kbts_unicode_flags :: u8; +kbts_unicode_flag_enum :: enum u32 { + MODIFIER_COMBINING_MARK :: 1; + DEFAULT_IGNORABLE :: 2; + OPEN_BRACKET :: 4; + CLOSE_BRACKET :: 8; + PART_OF_WORD :: 16; + DECIMAL_DIGIT :: 32; + NON_SPACING_MARK :: 64; + + KBTS_UNICODE_FLAG_MODIFIER_COMBINING_MARK :: MODIFIER_COMBINING_MARK; + KBTS_UNICODE_FLAG_DEFAULT_IGNORABLE :: DEFAULT_IGNORABLE; + KBTS_UNICODE_FLAG_OPEN_BRACKET :: OPEN_BRACKET; + KBTS_UNICODE_FLAG_CLOSE_BRACKET :: CLOSE_BRACKET; + KBTS_UNICODE_FLAG_PART_OF_WORD :: PART_OF_WORD; + KBTS_UNICODE_FLAG_DECIMAL_DIGIT :: DECIMAL_DIGIT; + KBTS_UNICODE_FLAG_NON_SPACING_MARK :: NON_SPACING_MARK; +} + +kbts_unicode_bidirectional_class :: u8; +kbts_unicode_bidirectional_class_enum :: enum u32 { + NI :: 0; + L :: 1; + R :: 2; + NSM :: 3; + AL :: 4; + AN :: 5; + EN :: 6; + ES :: 7; + ET :: 8; + CS :: 9; + COUNT :: 10; + + KBTS_UNICODE_BIDIRECTIONAL_CLASS_NI :: NI; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_L :: L; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_R :: R; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_NSM :: NSM; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_AL :: AL; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN :: AN; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN :: EN; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_ES :: ES; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_ET :: ET; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_CS :: CS; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_COUNT :: COUNT; +} + +kbts_line_break_class :: u8; +kbts_line_break_class_enum :: enum u32 { + Onea :: 0; + Oea :: 1; + Ope :: 2; + BK :: 3; + CR :: 4; + LF :: 5; + NL :: 6; + SP :: 7; + ZW :: 8; + WJ :: 9; + GLnea :: 10; + GLea :: 11; + CLnea :: 12; + CLea :: 13; + CPnea :: 14; + CPea :: 15; + EXnea :: 16; + EXea :: 17; + SY :: 18; + BAnea :: 19; + BAea :: 20; + OPnea :: 21; + OPea :: 22; + QU :: 23; + QUPi :: 24; + QUPf :: 25; + IS :: 26; + NSnea :: 27; + NSea :: 28; + B2 :: 29; + CB :: 30; + HY :: 31; + HYPHEN :: 32; + INnea :: 33; + INea :: 34; + BB :: 35; + HL :: 36; + ALnea :: 37; + ALea :: 38; + NU :: 39; + PRnea :: 40; + PRea :: 41; + IDnea :: 42; + IDea :: 43; + IDpe :: 44; + EBnea :: 45; + EBea :: 46; + EM :: 47; + POnea :: 48; + POea :: 49; + JL :: 50; + JV :: 51; + JT :: 52; + H2 :: 53; + H3 :: 54; + AP :: 55; + AK :: 56; + DOTTED_CIRCLE :: 57; + AS :: 58; + VF :: 59; + VI :: 60; + RI :: 61; + + COUNT :: 62; + + CM :: 63; + ZWJ :: 64; + + CJ :: 65; + + SOT :: 66; + EOT :: 67; + + KBTS_LINE_BREAK_CLASS_Onea :: Onea; + KBTS_LINE_BREAK_CLASS_Oea :: Oea; + KBTS_LINE_BREAK_CLASS_Ope :: Ope; + KBTS_LINE_BREAK_CLASS_BK :: BK; + KBTS_LINE_BREAK_CLASS_CR :: CR; + KBTS_LINE_BREAK_CLASS_LF :: LF; + KBTS_LINE_BREAK_CLASS_NL :: NL; + KBTS_LINE_BREAK_CLASS_SP :: SP; + KBTS_LINE_BREAK_CLASS_ZW :: ZW; + KBTS_LINE_BREAK_CLASS_WJ :: WJ; + KBTS_LINE_BREAK_CLASS_GLnea :: GLnea; + KBTS_LINE_BREAK_CLASS_GLea :: GLea; + KBTS_LINE_BREAK_CLASS_CLnea :: CLnea; + KBTS_LINE_BREAK_CLASS_CLea :: CLea; + KBTS_LINE_BREAK_CLASS_CPnea :: CPnea; + KBTS_LINE_BREAK_CLASS_CPea :: CPea; + KBTS_LINE_BREAK_CLASS_EXnea :: EXnea; + KBTS_LINE_BREAK_CLASS_EXea :: EXea; + KBTS_LINE_BREAK_CLASS_SY :: SY; + KBTS_LINE_BREAK_CLASS_BAnea :: BAnea; + KBTS_LINE_BREAK_CLASS_BAea :: BAea; + KBTS_LINE_BREAK_CLASS_OPnea :: OPnea; + KBTS_LINE_BREAK_CLASS_OPea :: OPea; + KBTS_LINE_BREAK_CLASS_QU :: QU; + KBTS_LINE_BREAK_CLASS_QUPi :: QUPi; + KBTS_LINE_BREAK_CLASS_QUPf :: QUPf; + KBTS_LINE_BREAK_CLASS_IS :: IS; + KBTS_LINE_BREAK_CLASS_NSnea :: NSnea; + KBTS_LINE_BREAK_CLASS_NSea :: NSea; + KBTS_LINE_BREAK_CLASS_B2 :: B2; + KBTS_LINE_BREAK_CLASS_CB :: CB; + KBTS_LINE_BREAK_CLASS_HY :: HY; + KBTS_LINE_BREAK_CLASS_HYPHEN :: HYPHEN; + KBTS_LINE_BREAK_CLASS_INnea :: INnea; + KBTS_LINE_BREAK_CLASS_INea :: INea; + KBTS_LINE_BREAK_CLASS_BB :: BB; + KBTS_LINE_BREAK_CLASS_HL :: HL; + KBTS_LINE_BREAK_CLASS_ALnea :: ALnea; + KBTS_LINE_BREAK_CLASS_ALea :: ALea; + KBTS_LINE_BREAK_CLASS_NU :: NU; + KBTS_LINE_BREAK_CLASS_PRnea :: PRnea; + KBTS_LINE_BREAK_CLASS_PRea :: PRea; + KBTS_LINE_BREAK_CLASS_IDnea :: IDnea; + KBTS_LINE_BREAK_CLASS_IDea :: IDea; + KBTS_LINE_BREAK_CLASS_IDpe :: IDpe; + KBTS_LINE_BREAK_CLASS_EBnea :: EBnea; + KBTS_LINE_BREAK_CLASS_EBea :: EBea; + KBTS_LINE_BREAK_CLASS_EM :: EM; + KBTS_LINE_BREAK_CLASS_POnea :: POnea; + KBTS_LINE_BREAK_CLASS_POea :: POea; + KBTS_LINE_BREAK_CLASS_JL :: JL; + KBTS_LINE_BREAK_CLASS_JV :: JV; + KBTS_LINE_BREAK_CLASS_JT :: JT; + KBTS_LINE_BREAK_CLASS_H2 :: H2; + KBTS_LINE_BREAK_CLASS_H3 :: H3; + KBTS_LINE_BREAK_CLASS_AP :: AP; + KBTS_LINE_BREAK_CLASS_AK :: AK; + KBTS_LINE_BREAK_CLASS_DOTTED_CIRCLE :: DOTTED_CIRCLE; + KBTS_LINE_BREAK_CLASS_AS :: AS; + KBTS_LINE_BREAK_CLASS_VF :: VF; + KBTS_LINE_BREAK_CLASS_VI :: VI; + KBTS_LINE_BREAK_CLASS_RI :: RI; + + KBTS_LINE_BREAK_CLASS_COUNT :: COUNT; + + KBTS_LINE_BREAK_CLASS_CM :: CM; + KBTS_LINE_BREAK_CLASS_ZWJ :: ZWJ; + + KBTS_LINE_BREAK_CLASS_CJ :: CJ; + + KBTS_LINE_BREAK_CLASS_SOT :: SOT; + KBTS_LINE_BREAK_CLASS_EOT :: EOT; +} + +kbts_word_break_class :: u8; +kbts_word_break_class_enum :: enum u32 { + Onep :: 0; + Oep :: 1; + CR :: 2; + LF :: 3; + NL :: 4; + EX :: 5; + ZWJ :: 6; + RI :: 7; + FO :: 8; + KA :: 9; + HL :: 10; + ALnep :: 11; + ALep :: 12; + SQ :: 13; + DQ :: 14; + MNL :: 15; + ML :: 16; + MN :: 17; + NM :: 18; + ENL :: 19; + WSS :: 20; + + SOT :: 21; + + KBTS_WORD_BREAK_CLASS_Onep :: Onep; + KBTS_WORD_BREAK_CLASS_Oep :: Oep; + KBTS_WORD_BREAK_CLASS_CR :: CR; + KBTS_WORD_BREAK_CLASS_LF :: LF; + KBTS_WORD_BREAK_CLASS_NL :: NL; + KBTS_WORD_BREAK_CLASS_EX :: EX; + KBTS_WORD_BREAK_CLASS_ZWJ :: ZWJ; + KBTS_WORD_BREAK_CLASS_RI :: RI; + KBTS_WORD_BREAK_CLASS_FO :: FO; + KBTS_WORD_BREAK_CLASS_KA :: KA; + KBTS_WORD_BREAK_CLASS_HL :: HL; + KBTS_WORD_BREAK_CLASS_ALnep :: ALnep; + KBTS_WORD_BREAK_CLASS_ALep :: ALep; + KBTS_WORD_BREAK_CLASS_SQ :: SQ; + KBTS_WORD_BREAK_CLASS_DQ :: DQ; + KBTS_WORD_BREAK_CLASS_MNL :: MNL; + KBTS_WORD_BREAK_CLASS_ML :: ML; + KBTS_WORD_BREAK_CLASS_MN :: MN; + KBTS_WORD_BREAK_CLASS_NM :: NM; + KBTS_WORD_BREAK_CLASS_ENL :: ENL; + KBTS_WORD_BREAK_CLASS_WSS :: WSS; + + KBTS_WORD_BREAK_CLASS_SOT :: SOT; +} + +kbts_shaper :: u32; +kbts_shaper_enum :: enum u32 { + DEFAULT :: 0; + ARABIC :: 1; + HANGUL :: 2; + HEBREW :: 3; + INDIC :: 4; + KHMER :: 5; + MYANMAR :: 6; + TIBETAN :: 7; + USE :: 8; + + COUNT :: 9; + + KBTS_SHAPER_DEFAULT :: DEFAULT; + KBTS_SHAPER_ARABIC :: ARABIC; + KBTS_SHAPER_HANGUL :: HANGUL; + KBTS_SHAPER_HEBREW :: HEBREW; + KBTS_SHAPER_INDIC :: INDIC; + KBTS_SHAPER_KHMER :: KHMER; + KBTS_SHAPER_MYANMAR :: MYANMAR; + KBTS_SHAPER_TIBETAN :: TIBETAN; + KBTS_SHAPER_USE :: USE; + + KBTS_SHAPER_COUNT :: COUNT; +} + +kbts_script :: u32; +kbts_script_enum :: enum u32 { + DONT_KNOW :: 0; + ADLAM :: 1; + AHOM :: 2; + ANATOLIAN_HIEROGLYPHS :: 3; + ARABIC :: 4; + ARMENIAN :: 5; + AVESTAN :: 6; + BALINESE :: 7; + BAMUM :: 8; + BASSA_VAH :: 9; + BATAK :: 10; + BENGALI :: 11; + BHAIKSUKI :: 12; + BOPOMOFO :: 13; + BRAHMI :: 14; + BUGINESE :: 15; + BUHID :: 16; + CANADIAN_SYLLABICS :: 17; + CARIAN :: 18; + CAUCASIAN_ALBANIAN :: 19; + CHAKMA :: 20; + CHAM :: 21; + CHEROKEE :: 22; + CHORASMIAN :: 23; + CJK_IDEOGRAPHIC :: 24; + COPTIC :: 25; + CYPRIOT_SYLLABARY :: 26; + CYPRO_MINOAN :: 27; + CYRILLIC :: 28; + DEFAULT :: 29; + DEFAULT2 :: 30; + DESERET :: 31; + DEVANAGARI :: 32; + DIVES_AKURU :: 33; + DOGRA :: 34; + DUPLOYAN :: 35; + EGYPTIAN_HIEROGLYPHS :: 36; + ELBASAN :: 37; + ELYMAIC :: 38; + ETHIOPIC :: 39; + GARAY :: 40; + GEORGIAN :: 41; + GLAGOLITIC :: 42; + GOTHIC :: 43; + GRANTHA :: 44; + GREEK :: 45; + GUJARATI :: 46; + GUNJALA_GONDI :: 47; + GURMUKHI :: 48; + GURUNG_KHEMA :: 49; + HANGUL :: 50; + HANIFI_ROHINGYA :: 51; + HANUNOO :: 52; + HATRAN :: 53; + HEBREW :: 54; + HIRAGANA :: 55; + IMPERIAL_ARAMAIC :: 56; + INSCRIPTIONAL_PAHLAVI :: 57; + INSCRIPTIONAL_PARTHIAN :: 58; + JAVANESE :: 59; + KAITHI :: 60; + KANNADA :: 61; + KATAKANA :: 62; + KAWI :: 63; + KAYAH_LI :: 64; + KHAROSHTHI :: 65; + KHITAN_SMALL_SCRIPT :: 66; + KHMER :: 67; + KHOJKI :: 68; + KHUDAWADI :: 69; + KIRAT_RAI :: 70; + LAO :: 71; + LATIN :: 72; + LEPCHA :: 73; + LIMBU :: 74; + LINEAR_A :: 75; + LINEAR_B :: 76; + LISU :: 77; + LYCIAN :: 78; + LYDIAN :: 79; + MAHAJANI :: 80; + MAKASAR :: 81; + MALAYALAM :: 82; + MANDAIC :: 83; + MANICHAEAN :: 84; + MARCHEN :: 85; + MASARAM_GONDI :: 86; + MEDEFAIDRIN :: 87; + MEETEI_MAYEK :: 88; + MENDE_KIKAKUI :: 89; + MEROITIC_CURSIVE :: 90; + MEROITIC_HIEROGLYPHS :: 91; + MIAO :: 92; + MODI :: 93; + MONGOLIAN :: 94; + MRO :: 95; + MULTANI :: 96; + MYANMAR :: 97; + NABATAEAN :: 98; + NAG_MUNDARI :: 99; + NANDINAGARI :: 100; + NEWA :: 101; + NEW_TAI_LUE :: 102; + NKO :: 103; + NUSHU :: 104; + NYIAKENG_PUACHUE_HMONG :: 105; + OGHAM :: 106; + OL_CHIKI :: 107; + OL_ONAL :: 108; + OLD_ITALIC :: 109; + OLD_HUNGARIAN :: 110; + OLD_NORTH_ARABIAN :: 111; + OLD_PERMIC :: 112; + OLD_PERSIAN_CUNEIFORM :: 113; + OLD_SOGDIAN :: 114; + OLD_SOUTH_ARABIAN :: 115; + OLD_TURKIC :: 116; + OLD_UYGHUR :: 117; + ODIA :: 118; + OSAGE :: 119; + OSMANYA :: 120; + PAHAWH_HMONG :: 121; + PALMYRENE :: 122; + PAU_CIN_HAU :: 123; + PHAGS_PA :: 124; + PHOENICIAN :: 125; + PSALTER_PAHLAVI :: 126; + REJANG :: 127; + RUNIC :: 128; + SAMARITAN :: 129; + SAURASHTRA :: 130; + SHARADA :: 131; + SHAVIAN :: 132; + SIDDHAM :: 133; + SIGN_WRITING :: 134; + SOGDIAN :: 135; + SINHALA :: 136; + SORA_SOMPENG :: 137; + SOYOMBO :: 138; + SUMERO_AKKADIAN_CUNEIFORM :: 139; + SUNDANESE :: 140; + SUNUWAR :: 141; + SYLOTI_NAGRI :: 142; + SYRIAC :: 143; + TAGALOG :: 144; + TAGBANWA :: 145; + TAI_LE :: 146; + TAI_THAM :: 147; + TAI_VIET :: 148; + TAKRI :: 149; + TAMIL :: 150; + TANGSA :: 151; + TANGUT :: 152; + TELUGU :: 153; + THAANA :: 154; + THAI :: 155; + TIBETAN :: 156; + TIFINAGH :: 157; + TIRHUTA :: 158; + TODHRI :: 159; + TOTO :: 160; + TULU_TIGALARI :: 161; + UGARITIC_CUNEIFORM :: 162; + VAI :: 163; + VITHKUQI :: 164; + WANCHO :: 165; + WARANG_CITI :: 166; + YEZIDI :: 167; + YI :: 168; + ZANABAZAR_SQUARE :: 169; + COUNT :: 170; + + KBTS_SCRIPT_DONT_KNOW :: DONT_KNOW; + KBTS_SCRIPT_ADLAM :: ADLAM; + KBTS_SCRIPT_AHOM :: AHOM; + KBTS_SCRIPT_ANATOLIAN_HIEROGLYPHS :: ANATOLIAN_HIEROGLYPHS; + KBTS_SCRIPT_ARABIC :: ARABIC; + KBTS_SCRIPT_ARMENIAN :: ARMENIAN; + KBTS_SCRIPT_AVESTAN :: AVESTAN; + KBTS_SCRIPT_BALINESE :: BALINESE; + KBTS_SCRIPT_BAMUM :: BAMUM; + KBTS_SCRIPT_BASSA_VAH :: BASSA_VAH; + KBTS_SCRIPT_BATAK :: BATAK; + KBTS_SCRIPT_BENGALI :: BENGALI; + KBTS_SCRIPT_BHAIKSUKI :: BHAIKSUKI; + KBTS_SCRIPT_BOPOMOFO :: BOPOMOFO; + KBTS_SCRIPT_BRAHMI :: BRAHMI; + KBTS_SCRIPT_BUGINESE :: BUGINESE; + KBTS_SCRIPT_BUHID :: BUHID; + KBTS_SCRIPT_CANADIAN_SYLLABICS :: CANADIAN_SYLLABICS; + KBTS_SCRIPT_CARIAN :: CARIAN; + KBTS_SCRIPT_CAUCASIAN_ALBANIAN :: CAUCASIAN_ALBANIAN; + KBTS_SCRIPT_CHAKMA :: CHAKMA; + KBTS_SCRIPT_CHAM :: CHAM; + KBTS_SCRIPT_CHEROKEE :: CHEROKEE; + KBTS_SCRIPT_CHORASMIAN :: CHORASMIAN; + KBTS_SCRIPT_CJK_IDEOGRAPHIC :: CJK_IDEOGRAPHIC; + KBTS_SCRIPT_COPTIC :: COPTIC; + KBTS_SCRIPT_CYPRIOT_SYLLABARY :: CYPRIOT_SYLLABARY; + KBTS_SCRIPT_CYPRO_MINOAN :: CYPRO_MINOAN; + KBTS_SCRIPT_CYRILLIC :: CYRILLIC; + KBTS_SCRIPT_DEFAULT :: DEFAULT; + KBTS_SCRIPT_DEFAULT2 :: DEFAULT2; + KBTS_SCRIPT_DESERET :: DESERET; + KBTS_SCRIPT_DEVANAGARI :: DEVANAGARI; + KBTS_SCRIPT_DIVES_AKURU :: DIVES_AKURU; + KBTS_SCRIPT_DOGRA :: DOGRA; + KBTS_SCRIPT_DUPLOYAN :: DUPLOYAN; + KBTS_SCRIPT_EGYPTIAN_HIEROGLYPHS :: EGYPTIAN_HIEROGLYPHS; + KBTS_SCRIPT_ELBASAN :: ELBASAN; + KBTS_SCRIPT_ELYMAIC :: ELYMAIC; + KBTS_SCRIPT_ETHIOPIC :: ETHIOPIC; + KBTS_SCRIPT_GARAY :: GARAY; + KBTS_SCRIPT_GEORGIAN :: GEORGIAN; + KBTS_SCRIPT_GLAGOLITIC :: GLAGOLITIC; + KBTS_SCRIPT_GOTHIC :: GOTHIC; + KBTS_SCRIPT_GRANTHA :: GRANTHA; + KBTS_SCRIPT_GREEK :: GREEK; + KBTS_SCRIPT_GUJARATI :: GUJARATI; + KBTS_SCRIPT_GUNJALA_GONDI :: GUNJALA_GONDI; + KBTS_SCRIPT_GURMUKHI :: GURMUKHI; + KBTS_SCRIPT_GURUNG_KHEMA :: GURUNG_KHEMA; + KBTS_SCRIPT_HANGUL :: HANGUL; + KBTS_SCRIPT_HANIFI_ROHINGYA :: HANIFI_ROHINGYA; + KBTS_SCRIPT_HANUNOO :: HANUNOO; + KBTS_SCRIPT_HATRAN :: HATRAN; + KBTS_SCRIPT_HEBREW :: HEBREW; + KBTS_SCRIPT_HIRAGANA :: HIRAGANA; + KBTS_SCRIPT_IMPERIAL_ARAMAIC :: IMPERIAL_ARAMAIC; + KBTS_SCRIPT_INSCRIPTIONAL_PAHLAVI :: INSCRIPTIONAL_PAHLAVI; + KBTS_SCRIPT_INSCRIPTIONAL_PARTHIAN :: INSCRIPTIONAL_PARTHIAN; + KBTS_SCRIPT_JAVANESE :: JAVANESE; + KBTS_SCRIPT_KAITHI :: KAITHI; + KBTS_SCRIPT_KANNADA :: KANNADA; + KBTS_SCRIPT_KATAKANA :: KATAKANA; + KBTS_SCRIPT_KAWI :: KAWI; + KBTS_SCRIPT_KAYAH_LI :: KAYAH_LI; + KBTS_SCRIPT_KHAROSHTHI :: KHAROSHTHI; + KBTS_SCRIPT_KHITAN_SMALL_SCRIPT :: KHITAN_SMALL_SCRIPT; + KBTS_SCRIPT_KHMER :: KHMER; + KBTS_SCRIPT_KHOJKI :: KHOJKI; + KBTS_SCRIPT_KHUDAWADI :: KHUDAWADI; + KBTS_SCRIPT_KIRAT_RAI :: KIRAT_RAI; + KBTS_SCRIPT_LAO :: LAO; + KBTS_SCRIPT_LATIN :: LATIN; + KBTS_SCRIPT_LEPCHA :: LEPCHA; + KBTS_SCRIPT_LIMBU :: LIMBU; + KBTS_SCRIPT_LINEAR_A :: LINEAR_A; + KBTS_SCRIPT_LINEAR_B :: LINEAR_B; + KBTS_SCRIPT_LISU :: LISU; + KBTS_SCRIPT_LYCIAN :: LYCIAN; + KBTS_SCRIPT_LYDIAN :: LYDIAN; + KBTS_SCRIPT_MAHAJANI :: MAHAJANI; + KBTS_SCRIPT_MAKASAR :: MAKASAR; + KBTS_SCRIPT_MALAYALAM :: MALAYALAM; + KBTS_SCRIPT_MANDAIC :: MANDAIC; + KBTS_SCRIPT_MANICHAEAN :: MANICHAEAN; + KBTS_SCRIPT_MARCHEN :: MARCHEN; + KBTS_SCRIPT_MASARAM_GONDI :: MASARAM_GONDI; + KBTS_SCRIPT_MEDEFAIDRIN :: MEDEFAIDRIN; + KBTS_SCRIPT_MEETEI_MAYEK :: MEETEI_MAYEK; + KBTS_SCRIPT_MENDE_KIKAKUI :: MENDE_KIKAKUI; + KBTS_SCRIPT_MEROITIC_CURSIVE :: MEROITIC_CURSIVE; + KBTS_SCRIPT_MEROITIC_HIEROGLYPHS :: MEROITIC_HIEROGLYPHS; + KBTS_SCRIPT_MIAO :: MIAO; + KBTS_SCRIPT_MODI :: MODI; + KBTS_SCRIPT_MONGOLIAN :: MONGOLIAN; + KBTS_SCRIPT_MRO :: MRO; + KBTS_SCRIPT_MULTANI :: MULTANI; + KBTS_SCRIPT_MYANMAR :: MYANMAR; + KBTS_SCRIPT_NABATAEAN :: NABATAEAN; + KBTS_SCRIPT_NAG_MUNDARI :: NAG_MUNDARI; + KBTS_SCRIPT_NANDINAGARI :: NANDINAGARI; + KBTS_SCRIPT_NEWA :: NEWA; + KBTS_SCRIPT_NEW_TAI_LUE :: NEW_TAI_LUE; + KBTS_SCRIPT_NKO :: NKO; + KBTS_SCRIPT_NUSHU :: NUSHU; + KBTS_SCRIPT_NYIAKENG_PUACHUE_HMONG :: NYIAKENG_PUACHUE_HMONG; + KBTS_SCRIPT_OGHAM :: OGHAM; + KBTS_SCRIPT_OL_CHIKI :: OL_CHIKI; + KBTS_SCRIPT_OL_ONAL :: OL_ONAL; + KBTS_SCRIPT_OLD_ITALIC :: OLD_ITALIC; + KBTS_SCRIPT_OLD_HUNGARIAN :: OLD_HUNGARIAN; + KBTS_SCRIPT_OLD_NORTH_ARABIAN :: OLD_NORTH_ARABIAN; + KBTS_SCRIPT_OLD_PERMIC :: OLD_PERMIC; + KBTS_SCRIPT_OLD_PERSIAN_CUNEIFORM :: OLD_PERSIAN_CUNEIFORM; + KBTS_SCRIPT_OLD_SOGDIAN :: OLD_SOGDIAN; + KBTS_SCRIPT_OLD_SOUTH_ARABIAN :: OLD_SOUTH_ARABIAN; + KBTS_SCRIPT_OLD_TURKIC :: OLD_TURKIC; + KBTS_SCRIPT_OLD_UYGHUR :: OLD_UYGHUR; + KBTS_SCRIPT_ODIA :: ODIA; + KBTS_SCRIPT_OSAGE :: OSAGE; + KBTS_SCRIPT_OSMANYA :: OSMANYA; + KBTS_SCRIPT_PAHAWH_HMONG :: PAHAWH_HMONG; + KBTS_SCRIPT_PALMYRENE :: PALMYRENE; + KBTS_SCRIPT_PAU_CIN_HAU :: PAU_CIN_HAU; + KBTS_SCRIPT_PHAGS_PA :: PHAGS_PA; + KBTS_SCRIPT_PHOENICIAN :: PHOENICIAN; + KBTS_SCRIPT_PSALTER_PAHLAVI :: PSALTER_PAHLAVI; + KBTS_SCRIPT_REJANG :: REJANG; + KBTS_SCRIPT_RUNIC :: RUNIC; + KBTS_SCRIPT_SAMARITAN :: SAMARITAN; + KBTS_SCRIPT_SAURASHTRA :: SAURASHTRA; + KBTS_SCRIPT_SHARADA :: SHARADA; + KBTS_SCRIPT_SHAVIAN :: SHAVIAN; + KBTS_SCRIPT_SIDDHAM :: SIDDHAM; + KBTS_SCRIPT_SIGN_WRITING :: SIGN_WRITING; + KBTS_SCRIPT_SOGDIAN :: SOGDIAN; + KBTS_SCRIPT_SINHALA :: SINHALA; + KBTS_SCRIPT_SORA_SOMPENG :: SORA_SOMPENG; + KBTS_SCRIPT_SOYOMBO :: SOYOMBO; + KBTS_SCRIPT_SUMERO_AKKADIAN_CUNEIFORM :: SUMERO_AKKADIAN_CUNEIFORM; + KBTS_SCRIPT_SUNDANESE :: SUNDANESE; + KBTS_SCRIPT_SUNUWAR :: SUNUWAR; + KBTS_SCRIPT_SYLOTI_NAGRI :: SYLOTI_NAGRI; + KBTS_SCRIPT_SYRIAC :: SYRIAC; + KBTS_SCRIPT_TAGALOG :: TAGALOG; + KBTS_SCRIPT_TAGBANWA :: TAGBANWA; + KBTS_SCRIPT_TAI_LE :: TAI_LE; + KBTS_SCRIPT_TAI_THAM :: TAI_THAM; + KBTS_SCRIPT_TAI_VIET :: TAI_VIET; + KBTS_SCRIPT_TAKRI :: TAKRI; + KBTS_SCRIPT_TAMIL :: TAMIL; + KBTS_SCRIPT_TANGSA :: TANGSA; + KBTS_SCRIPT_TANGUT :: TANGUT; + KBTS_SCRIPT_TELUGU :: TELUGU; + KBTS_SCRIPT_THAANA :: THAANA; + KBTS_SCRIPT_THAI :: THAI; + KBTS_SCRIPT_TIBETAN :: TIBETAN; + KBTS_SCRIPT_TIFINAGH :: TIFINAGH; + KBTS_SCRIPT_TIRHUTA :: TIRHUTA; + KBTS_SCRIPT_TODHRI :: TODHRI; + KBTS_SCRIPT_TOTO :: TOTO; + KBTS_SCRIPT_TULU_TIGALARI :: TULU_TIGALARI; + KBTS_SCRIPT_UGARITIC_CUNEIFORM :: UGARITIC_CUNEIFORM; + KBTS_SCRIPT_VAI :: VAI; + KBTS_SCRIPT_VITHKUQI :: VITHKUQI; + KBTS_SCRIPT_WANCHO :: WANCHO; + KBTS_SCRIPT_WARANG_CITI :: WARANG_CITI; + KBTS_SCRIPT_YEZIDI :: YEZIDI; + KBTS_SCRIPT_YI :: YI; + KBTS_SCRIPT_ZANABAZAR_SQUARE :: ZANABAZAR_SQUARE; + KBTS_SCRIPT_COUNT :: COUNT; +} + +kbts_feature_tag :: u32; +kbts_feature_tag_enum :: enum u32 { + isol :: 1819243369; + fina :: 1634625894; + fin2 :: 846096742; + fin3 :: 862873958; + medi :: 1768187245; + med2 :: 845440365; + init :: 1953066601; + ljmo :: 1869441644; + vjmo :: 1869441654; + tjmo :: 1869441652; + rphf :: 1718120562; + blwf :: 1719102562; + half :: 1718378856; + pstf :: 1718907760; + abvf :: 1719034465; + pref :: 1717924464; + numr :: 1919776110; + frac :: 1667330662; + dnom :: 1836019300; + cfar :: 1918985827; + aalt :: 1953259873; + abvm :: 1836474977; + abvs :: 1937138273; + afrc :: 1668441697; + akhn :: 1852336993; + apkn :: 1852534881; + blwm :: 1836543074; + blws :: 1937206370; + calt :: 1953259875; + case_ :: 1702060387; + ccmp :: 1886217059; + chws :: 1937205347; + cjct :: 1952672355; + clig :: 1734962275; + cpct :: 1952673891; + cpsp :: 1886613603; + cswh :: 1752658787; + curs :: 1936880995; + cv01 :: 825259619; + cv02 :: 842036835; + cv03 :: 858814051; + cv04 :: 875591267; + cv05 :: 892368483; + cv06 :: 909145699; + cv07 :: 925922915; + cv08 :: 942700131; + cv09 :: 959477347; + cv10 :: 808547939; + cv11 :: 825325155; + cv12 :: 842102371; + cv13 :: 858879587; + cv14 :: 875656803; + cv15 :: 892434019; + cv16 :: 909211235; + cv17 :: 925988451; + cv18 :: 942765667; + cv19 :: 959542883; + cv20 :: 808613475; + cv21 :: 825390691; + cv22 :: 842167907; + cv23 :: 858945123; + cv24 :: 875722339; + cv25 :: 892499555; + cv26 :: 909276771; + cv27 :: 926053987; + cv28 :: 942831203; + cv29 :: 959608419; + cv30 :: 808679011; + cv31 :: 825456227; + cv32 :: 842233443; + cv33 :: 859010659; + cv34 :: 875787875; + cv35 :: 892565091; + cv36 :: 909342307; + cv37 :: 926119523; + cv38 :: 942896739; + cv39 :: 959673955; + cv40 :: 808744547; + cv41 :: 825521763; + cv42 :: 842298979; + cv43 :: 859076195; + cv44 :: 875853411; + cv45 :: 892630627; + cv46 :: 909407843; + cv47 :: 926185059; + cv48 :: 942962275; + cv49 :: 959739491; + cv50 :: 808810083; + cv51 :: 825587299; + cv52 :: 842364515; + cv53 :: 859141731; + cv54 :: 875918947; + cv55 :: 892696163; + cv56 :: 909473379; + cv57 :: 926250595; + cv58 :: 943027811; + cv59 :: 959805027; + cv60 :: 808875619; + cv61 :: 825652835; + cv62 :: 842430051; + cv63 :: 859207267; + cv64 :: 875984483; + cv65 :: 892761699; + cv66 :: 909538915; + cv67 :: 926316131; + cv68 :: 943093347; + cv69 :: 959870563; + cv70 :: 808941155; + cv71 :: 825718371; + cv72 :: 842495587; + cv73 :: 859272803; + cv74 :: 876050019; + cv75 :: 892827235; + cv76 :: 909604451; + cv77 :: 926381667; + cv78 :: 943158883; + cv79 :: 959936099; + cv80 :: 809006691; + cv81 :: 825783907; + cv82 :: 842561123; + cv83 :: 859338339; + cv84 :: 876115555; + cv85 :: 892892771; + cv86 :: 909669987; + cv87 :: 926447203; + cv88 :: 943224419; + cv89 :: 960001635; + cv90 :: 809072227; + cv91 :: 825849443; + cv92 :: 842626659; + cv93 :: 859403875; + cv94 :: 876181091; + cv95 :: 892958307; + cv96 :: 909735523; + cv97 :: 926512739; + cv98 :: 943289955; + cv99 :: 960067171; + c2pc :: 1668297315; + c2sc :: 1668493923; + dist :: 1953720676; + dlig :: 1734962276; + dtls :: 1936487524; + expt :: 1953527909; + falt :: 1953259878; + flac :: 1667329126; + fwid :: 1684633446; + haln :: 1852596584; + halt :: 1953259880; + hist :: 1953720680; + hkna :: 1634626408; + hlig :: 1734962280; + hngl :: 1818717800; + hojo :: 1869246312; + hwid :: 1684633448; + ital :: 1818326121; + jalt :: 1953259882; + jp78 :: 943157354; + jp83 :: 859336810; + jp90 :: 809070698; + jp04 :: 875589738; + kern :: 1852990827; + lfbd :: 1684170348; + liga :: 1634167148; + lnum :: 1836412524; + locl :: 1818455916; + ltra :: 1634890860; + ltrm :: 1836217452; + mark :: 1802658157; + mgrk :: 1802659693; + mkmk :: 1802333037; + mset :: 1952805741; + nalt :: 1953259886; + nlck :: 1801677934; + nukt :: 1953199470; + onum :: 1836412527; + opbd :: 1684172911; + ordn :: 1852076655; + ornm :: 1835954799; + palt :: 1953259888; + pcap :: 1885430640; + pkna :: 1634626416; + pnum :: 1836412528; + pres :: 1936028272; + psts :: 1937011568; + pwid :: 1684633456; + qwid :: 1684633457; + rand :: 1684955506; + rclt :: 1953260402; + rkrf :: 1718774642; + rlig :: 1734962290; + rtbd :: 1684173938; + rtla :: 1634497650; + rtlm :: 1835824242; + ruby :: 2036495730; + rvrn :: 1852995186; + salt :: 1953259891; + sinf :: 1718511987; + size :: 1702521203; + smcp :: 1885564275; + smpl :: 1819307379; + ss01 :: 825258867; + ss02 :: 842036083; + ss03 :: 858813299; + ss04 :: 875590515; + ss05 :: 892367731; + ss06 :: 909144947; + ss07 :: 925922163; + ss08 :: 942699379; + ss09 :: 959476595; + ss10 :: 808547187; + ss11 :: 825324403; + ss12 :: 842101619; + ss13 :: 858878835; + ss14 :: 875656051; + ss15 :: 892433267; + ss16 :: 909210483; + ss17 :: 925987699; + ss18 :: 942764915; + ss19 :: 959542131; + ss20 :: 808612723; + ssty :: 2037674867; + stch :: 1751348339; + subs :: 1935832435; + sups :: 1936749939; + swsh :: 1752397683; + test :: 1953719668; + titl :: 1819568500; + tnam :: 1835101812; + tnum :: 1836412532; + trad :: 1684107892; + twid :: 1684633460; + unic :: 1667853941; + valt :: 1953259894; + vapk :: 1802527094; + vatu :: 1970561398; + vchw :: 2003329910; + vert :: 1953654134; + vhal :: 1818323062; + vkna :: 1634626422; + vkrn :: 1852992374; + vpal :: 1818325110; + vrt2 :: 846492278; + vrtr :: 1920234102; + zero :: 1869768058; + + KBTS_FEATURE_TAG_isol :: isol; + KBTS_FEATURE_TAG_fina :: fina; + KBTS_FEATURE_TAG_fin2 :: fin2; + KBTS_FEATURE_TAG_fin3 :: fin3; + KBTS_FEATURE_TAG_medi :: medi; + KBTS_FEATURE_TAG_med2 :: med2; + KBTS_FEATURE_TAG_init :: init; + KBTS_FEATURE_TAG_ljmo :: ljmo; + KBTS_FEATURE_TAG_vjmo :: vjmo; + KBTS_FEATURE_TAG_tjmo :: tjmo; + KBTS_FEATURE_TAG_rphf :: rphf; + KBTS_FEATURE_TAG_blwf :: blwf; + KBTS_FEATURE_TAG_half :: half; + KBTS_FEATURE_TAG_pstf :: pstf; + KBTS_FEATURE_TAG_abvf :: abvf; + KBTS_FEATURE_TAG_pref :: pref; + KBTS_FEATURE_TAG_numr :: numr; + KBTS_FEATURE_TAG_frac :: frac; + KBTS_FEATURE_TAG_dnom :: dnom; + KBTS_FEATURE_TAG_cfar :: cfar; + KBTS_FEATURE_TAG_aalt :: aalt; + KBTS_FEATURE_TAG_abvm :: abvm; + KBTS_FEATURE_TAG_abvs :: abvs; + KBTS_FEATURE_TAG_afrc :: afrc; + KBTS_FEATURE_TAG_akhn :: akhn; + KBTS_FEATURE_TAG_apkn :: apkn; + KBTS_FEATURE_TAG_blwm :: blwm; + KBTS_FEATURE_TAG_blws :: blws; + KBTS_FEATURE_TAG_calt :: calt; + KBTS_FEATURE_TAG_case :: case_; + KBTS_FEATURE_TAG_ccmp :: ccmp; + KBTS_FEATURE_TAG_chws :: chws; + KBTS_FEATURE_TAG_cjct :: cjct; + KBTS_FEATURE_TAG_clig :: clig; + KBTS_FEATURE_TAG_cpct :: cpct; + KBTS_FEATURE_TAG_cpsp :: cpsp; + KBTS_FEATURE_TAG_cswh :: cswh; + KBTS_FEATURE_TAG_curs :: curs; + KBTS_FEATURE_TAG_cv01 :: cv01; + KBTS_FEATURE_TAG_cv02 :: cv02; + KBTS_FEATURE_TAG_cv03 :: cv03; + KBTS_FEATURE_TAG_cv04 :: cv04; + KBTS_FEATURE_TAG_cv05 :: cv05; + KBTS_FEATURE_TAG_cv06 :: cv06; + KBTS_FEATURE_TAG_cv07 :: cv07; + KBTS_FEATURE_TAG_cv08 :: cv08; + KBTS_FEATURE_TAG_cv09 :: cv09; + KBTS_FEATURE_TAG_cv10 :: cv10; + KBTS_FEATURE_TAG_cv11 :: cv11; + KBTS_FEATURE_TAG_cv12 :: cv12; + KBTS_FEATURE_TAG_cv13 :: cv13; + KBTS_FEATURE_TAG_cv14 :: cv14; + KBTS_FEATURE_TAG_cv15 :: cv15; + KBTS_FEATURE_TAG_cv16 :: cv16; + KBTS_FEATURE_TAG_cv17 :: cv17; + KBTS_FEATURE_TAG_cv18 :: cv18; + KBTS_FEATURE_TAG_cv19 :: cv19; + KBTS_FEATURE_TAG_cv20 :: cv20; + KBTS_FEATURE_TAG_cv21 :: cv21; + KBTS_FEATURE_TAG_cv22 :: cv22; + KBTS_FEATURE_TAG_cv23 :: cv23; + KBTS_FEATURE_TAG_cv24 :: cv24; + KBTS_FEATURE_TAG_cv25 :: cv25; + KBTS_FEATURE_TAG_cv26 :: cv26; + KBTS_FEATURE_TAG_cv27 :: cv27; + KBTS_FEATURE_TAG_cv28 :: cv28; + KBTS_FEATURE_TAG_cv29 :: cv29; + KBTS_FEATURE_TAG_cv30 :: cv30; + KBTS_FEATURE_TAG_cv31 :: cv31; + KBTS_FEATURE_TAG_cv32 :: cv32; + KBTS_FEATURE_TAG_cv33 :: cv33; + KBTS_FEATURE_TAG_cv34 :: cv34; + KBTS_FEATURE_TAG_cv35 :: cv35; + KBTS_FEATURE_TAG_cv36 :: cv36; + KBTS_FEATURE_TAG_cv37 :: cv37; + KBTS_FEATURE_TAG_cv38 :: cv38; + KBTS_FEATURE_TAG_cv39 :: cv39; + KBTS_FEATURE_TAG_cv40 :: cv40; + KBTS_FEATURE_TAG_cv41 :: cv41; + KBTS_FEATURE_TAG_cv42 :: cv42; + KBTS_FEATURE_TAG_cv43 :: cv43; + KBTS_FEATURE_TAG_cv44 :: cv44; + KBTS_FEATURE_TAG_cv45 :: cv45; + KBTS_FEATURE_TAG_cv46 :: cv46; + KBTS_FEATURE_TAG_cv47 :: cv47; + KBTS_FEATURE_TAG_cv48 :: cv48; + KBTS_FEATURE_TAG_cv49 :: cv49; + KBTS_FEATURE_TAG_cv50 :: cv50; + KBTS_FEATURE_TAG_cv51 :: cv51; + KBTS_FEATURE_TAG_cv52 :: cv52; + KBTS_FEATURE_TAG_cv53 :: cv53; + KBTS_FEATURE_TAG_cv54 :: cv54; + KBTS_FEATURE_TAG_cv55 :: cv55; + KBTS_FEATURE_TAG_cv56 :: cv56; + KBTS_FEATURE_TAG_cv57 :: cv57; + KBTS_FEATURE_TAG_cv58 :: cv58; + KBTS_FEATURE_TAG_cv59 :: cv59; + KBTS_FEATURE_TAG_cv60 :: cv60; + KBTS_FEATURE_TAG_cv61 :: cv61; + KBTS_FEATURE_TAG_cv62 :: cv62; + KBTS_FEATURE_TAG_cv63 :: cv63; + KBTS_FEATURE_TAG_cv64 :: cv64; + KBTS_FEATURE_TAG_cv65 :: cv65; + KBTS_FEATURE_TAG_cv66 :: cv66; + KBTS_FEATURE_TAG_cv67 :: cv67; + KBTS_FEATURE_TAG_cv68 :: cv68; + KBTS_FEATURE_TAG_cv69 :: cv69; + KBTS_FEATURE_TAG_cv70 :: cv70; + KBTS_FEATURE_TAG_cv71 :: cv71; + KBTS_FEATURE_TAG_cv72 :: cv72; + KBTS_FEATURE_TAG_cv73 :: cv73; + KBTS_FEATURE_TAG_cv74 :: cv74; + KBTS_FEATURE_TAG_cv75 :: cv75; + KBTS_FEATURE_TAG_cv76 :: cv76; + KBTS_FEATURE_TAG_cv77 :: cv77; + KBTS_FEATURE_TAG_cv78 :: cv78; + KBTS_FEATURE_TAG_cv79 :: cv79; + KBTS_FEATURE_TAG_cv80 :: cv80; + KBTS_FEATURE_TAG_cv81 :: cv81; + KBTS_FEATURE_TAG_cv82 :: cv82; + KBTS_FEATURE_TAG_cv83 :: cv83; + KBTS_FEATURE_TAG_cv84 :: cv84; + KBTS_FEATURE_TAG_cv85 :: cv85; + KBTS_FEATURE_TAG_cv86 :: cv86; + KBTS_FEATURE_TAG_cv87 :: cv87; + KBTS_FEATURE_TAG_cv88 :: cv88; + KBTS_FEATURE_TAG_cv89 :: cv89; + KBTS_FEATURE_TAG_cv90 :: cv90; + KBTS_FEATURE_TAG_cv91 :: cv91; + KBTS_FEATURE_TAG_cv92 :: cv92; + KBTS_FEATURE_TAG_cv93 :: cv93; + KBTS_FEATURE_TAG_cv94 :: cv94; + KBTS_FEATURE_TAG_cv95 :: cv95; + KBTS_FEATURE_TAG_cv96 :: cv96; + KBTS_FEATURE_TAG_cv97 :: cv97; + KBTS_FEATURE_TAG_cv98 :: cv98; + KBTS_FEATURE_TAG_cv99 :: cv99; + KBTS_FEATURE_TAG_c2pc :: c2pc; + KBTS_FEATURE_TAG_c2sc :: c2sc; + KBTS_FEATURE_TAG_dist :: dist; + KBTS_FEATURE_TAG_dlig :: dlig; + KBTS_FEATURE_TAG_dtls :: dtls; + KBTS_FEATURE_TAG_expt :: expt; + KBTS_FEATURE_TAG_falt :: falt; + KBTS_FEATURE_TAG_flac :: flac; + KBTS_FEATURE_TAG_fwid :: fwid; + KBTS_FEATURE_TAG_haln :: haln; + KBTS_FEATURE_TAG_halt :: halt; + KBTS_FEATURE_TAG_hist :: hist; + KBTS_FEATURE_TAG_hkna :: hkna; + KBTS_FEATURE_TAG_hlig :: hlig; + KBTS_FEATURE_TAG_hngl :: hngl; + KBTS_FEATURE_TAG_hojo :: hojo; + KBTS_FEATURE_TAG_hwid :: hwid; + KBTS_FEATURE_TAG_ital :: ital; + KBTS_FEATURE_TAG_jalt :: jalt; + KBTS_FEATURE_TAG_jp78 :: jp78; + KBTS_FEATURE_TAG_jp83 :: jp83; + KBTS_FEATURE_TAG_jp90 :: jp90; + KBTS_FEATURE_TAG_jp04 :: jp04; + KBTS_FEATURE_TAG_kern :: kern; + KBTS_FEATURE_TAG_lfbd :: lfbd; + KBTS_FEATURE_TAG_liga :: liga; + KBTS_FEATURE_TAG_lnum :: lnum; + KBTS_FEATURE_TAG_locl :: locl; + KBTS_FEATURE_TAG_ltra :: ltra; + KBTS_FEATURE_TAG_ltrm :: ltrm; + KBTS_FEATURE_TAG_mark :: mark; + KBTS_FEATURE_TAG_mgrk :: mgrk; + KBTS_FEATURE_TAG_mkmk :: mkmk; + KBTS_FEATURE_TAG_mset :: mset; + KBTS_FEATURE_TAG_nalt :: nalt; + KBTS_FEATURE_TAG_nlck :: nlck; + KBTS_FEATURE_TAG_nukt :: nukt; + KBTS_FEATURE_TAG_onum :: onum; + KBTS_FEATURE_TAG_opbd :: opbd; + KBTS_FEATURE_TAG_ordn :: ordn; + KBTS_FEATURE_TAG_ornm :: ornm; + KBTS_FEATURE_TAG_palt :: palt; + KBTS_FEATURE_TAG_pcap :: pcap; + KBTS_FEATURE_TAG_pkna :: pkna; + KBTS_FEATURE_TAG_pnum :: pnum; + KBTS_FEATURE_TAG_pres :: pres; + KBTS_FEATURE_TAG_psts :: psts; + KBTS_FEATURE_TAG_pwid :: pwid; + KBTS_FEATURE_TAG_qwid :: qwid; + KBTS_FEATURE_TAG_rand :: rand; + KBTS_FEATURE_TAG_rclt :: rclt; + KBTS_FEATURE_TAG_rkrf :: rkrf; + KBTS_FEATURE_TAG_rlig :: rlig; + KBTS_FEATURE_TAG_rtbd :: rtbd; + KBTS_FEATURE_TAG_rtla :: rtla; + KBTS_FEATURE_TAG_rtlm :: rtlm; + KBTS_FEATURE_TAG_ruby :: ruby; + KBTS_FEATURE_TAG_rvrn :: rvrn; + KBTS_FEATURE_TAG_salt :: salt; + KBTS_FEATURE_TAG_sinf :: sinf; + KBTS_FEATURE_TAG_size :: size; + KBTS_FEATURE_TAG_smcp :: smcp; + KBTS_FEATURE_TAG_smpl :: smpl; + KBTS_FEATURE_TAG_ss01 :: ss01; + KBTS_FEATURE_TAG_ss02 :: ss02; + KBTS_FEATURE_TAG_ss03 :: ss03; + KBTS_FEATURE_TAG_ss04 :: ss04; + KBTS_FEATURE_TAG_ss05 :: ss05; + KBTS_FEATURE_TAG_ss06 :: ss06; + KBTS_FEATURE_TAG_ss07 :: ss07; + KBTS_FEATURE_TAG_ss08 :: ss08; + KBTS_FEATURE_TAG_ss09 :: ss09; + KBTS_FEATURE_TAG_ss10 :: ss10; + KBTS_FEATURE_TAG_ss11 :: ss11; + KBTS_FEATURE_TAG_ss12 :: ss12; + KBTS_FEATURE_TAG_ss13 :: ss13; + KBTS_FEATURE_TAG_ss14 :: ss14; + KBTS_FEATURE_TAG_ss15 :: ss15; + KBTS_FEATURE_TAG_ss16 :: ss16; + KBTS_FEATURE_TAG_ss17 :: ss17; + KBTS_FEATURE_TAG_ss18 :: ss18; + KBTS_FEATURE_TAG_ss19 :: ss19; + KBTS_FEATURE_TAG_ss20 :: ss20; + KBTS_FEATURE_TAG_ssty :: ssty; + KBTS_FEATURE_TAG_stch :: stch; + KBTS_FEATURE_TAG_subs :: subs; + KBTS_FEATURE_TAG_sups :: sups; + KBTS_FEATURE_TAG_swsh :: swsh; + KBTS_FEATURE_TAG_test :: test; + KBTS_FEATURE_TAG_titl :: titl; + KBTS_FEATURE_TAG_tnam :: tnam; + KBTS_FEATURE_TAG_tnum :: tnum; + KBTS_FEATURE_TAG_trad :: trad; + KBTS_FEATURE_TAG_twid :: twid; + KBTS_FEATURE_TAG_unic :: unic; + KBTS_FEATURE_TAG_valt :: valt; + KBTS_FEATURE_TAG_vapk :: vapk; + KBTS_FEATURE_TAG_vatu :: vatu; + KBTS_FEATURE_TAG_vchw :: vchw; + KBTS_FEATURE_TAG_vert :: vert; + KBTS_FEATURE_TAG_vhal :: vhal; + KBTS_FEATURE_TAG_vkna :: vkna; + KBTS_FEATURE_TAG_vkrn :: vkrn; + KBTS_FEATURE_TAG_vpal :: vpal; + KBTS_FEATURE_TAG_vrt2 :: vrt2; + KBTS_FEATURE_TAG_vrtr :: vrtr; + KBTS_FEATURE_TAG_zero :: zero; +} + +kbts_feature_id :: u32; +kbts_feature_id_enum :: enum u32 { + isol :: 0; + fina :: 1; + fin2 :: 2; + fin3 :: 3; + medi :: 4; + med2 :: 5; + init :: 6; + ljmo :: 7; + vjmo :: 8; + tjmo :: 9; + rphf :: 10; + blwf :: 11; + half :: 12; + pstf :: 13; + abvf :: 14; + pref :: 15; + numr :: 16; + frac :: 17; + dnom :: 18; + cfar :: 19; + aalt :: 20; + abvm :: 21; + abvs :: 22; + afrc :: 23; + akhn :: 24; + apkn :: 25; + blwm :: 26; + blws :: 27; + calt :: 28; + case_ :: 29; + ccmp :: 30; + chws :: 31; + cjct :: 32; + clig :: 33; + cpct :: 34; + cpsp :: 35; + cswh :: 36; + curs :: 37; + cv01 :: 38; + cv02 :: 39; + cv03 :: 40; + cv04 :: 41; + cv05 :: 42; + cv06 :: 43; + cv07 :: 44; + cv08 :: 45; + cv09 :: 46; + cv10 :: 47; + cv11 :: 48; + cv12 :: 49; + cv13 :: 50; + cv14 :: 51; + cv15 :: 52; + cv16 :: 53; + cv17 :: 54; + cv18 :: 55; + cv19 :: 56; + cv20 :: 57; + cv21 :: 58; + cv22 :: 59; + cv23 :: 60; + cv24 :: 61; + cv25 :: 62; + cv26 :: 63; + cv27 :: 64; + cv28 :: 65; + cv29 :: 66; + cv30 :: 67; + cv31 :: 68; + cv32 :: 69; + cv33 :: 70; + cv34 :: 71; + cv35 :: 72; + cv36 :: 73; + cv37 :: 74; + cv38 :: 75; + cv39 :: 76; + cv40 :: 77; + cv41 :: 78; + cv42 :: 79; + cv43 :: 80; + cv44 :: 81; + cv45 :: 82; + cv46 :: 83; + cv47 :: 84; + cv48 :: 85; + cv49 :: 86; + cv50 :: 87; + cv51 :: 88; + cv52 :: 89; + cv53 :: 90; + cv54 :: 91; + cv55 :: 92; + cv56 :: 93; + cv57 :: 94; + cv58 :: 95; + cv59 :: 96; + cv60 :: 97; + cv61 :: 98; + cv62 :: 99; + cv63 :: 100; + cv64 :: 101; + cv65 :: 102; + cv66 :: 103; + cv67 :: 104; + cv68 :: 105; + cv69 :: 106; + cv70 :: 107; + cv71 :: 108; + cv72 :: 109; + cv73 :: 110; + cv74 :: 111; + cv75 :: 112; + cv76 :: 113; + cv77 :: 114; + cv78 :: 115; + cv79 :: 116; + cv80 :: 117; + cv81 :: 118; + cv82 :: 119; + cv83 :: 120; + cv84 :: 121; + cv85 :: 122; + cv86 :: 123; + cv87 :: 124; + cv88 :: 125; + cv89 :: 126; + cv90 :: 127; + cv91 :: 128; + cv92 :: 129; + cv93 :: 130; + cv94 :: 131; + cv95 :: 132; + cv96 :: 133; + cv97 :: 134; + cv98 :: 135; + cv99 :: 136; + c2pc :: 137; + c2sc :: 138; + dist :: 139; + dlig :: 140; + dtls :: 141; + expt :: 142; + falt :: 143; + flac :: 144; + fwid :: 145; + haln :: 146; + halt :: 147; + hist :: 148; + hkna :: 149; + hlig :: 150; + hngl :: 151; + hojo :: 152; + hwid :: 153; + ital :: 154; + jalt :: 155; + jp78 :: 156; + jp83 :: 157; + jp90 :: 158; + jp04 :: 159; + kern :: 160; + lfbd :: 161; + liga :: 162; + lnum :: 163; + locl :: 164; + ltra :: 165; + ltrm :: 166; + mark :: 167; + mgrk :: 168; + mkmk :: 169; + mset :: 170; + nalt :: 171; + nlck :: 172; + nukt :: 173; + onum :: 174; + opbd :: 175; + ordn :: 176; + ornm :: 177; + palt :: 178; + pcap :: 179; + pkna :: 180; + pnum :: 181; + pres :: 182; + psts :: 183; + pwid :: 184; + qwid :: 185; + rand :: 186; + rclt :: 187; + rkrf :: 188; + rlig :: 189; + rtbd :: 190; + rtla :: 191; + rtlm :: 192; + ruby :: 193; + rvrn :: 194; + salt :: 195; + sinf :: 196; + size :: 197; + smcp :: 198; + smpl :: 199; + ss01 :: 200; + ss02 :: 201; + ss03 :: 202; + ss04 :: 203; + ss05 :: 204; + ss06 :: 205; + ss07 :: 206; + ss08 :: 207; + ss09 :: 208; + ss10 :: 209; + ss11 :: 210; + ss12 :: 211; + ss13 :: 212; + ss14 :: 213; + ss15 :: 214; + ss16 :: 215; + ss17 :: 216; + ss18 :: 217; + ss19 :: 218; + ss20 :: 219; + ssty :: 220; + stch :: 221; + subs :: 222; + sups :: 223; + swsh :: 224; + test :: 225; + titl :: 226; + tnam :: 227; + tnum :: 228; + trad :: 229; + twid :: 230; + unic :: 231; + valt :: 232; + vapk :: 233; + vatu :: 234; + vchw :: 235; + vert :: 236; + vhal :: 237; + vkna :: 238; + vkrn :: 239; + vpal :: 240; + vrt2 :: 241; + vrtr :: 242; + zero :: 243; + COUNT :: 244; + + KBTS_FEATURE_ID_isol :: isol; + KBTS_FEATURE_ID_fina :: fina; + KBTS_FEATURE_ID_fin2 :: fin2; + KBTS_FEATURE_ID_fin3 :: fin3; + KBTS_FEATURE_ID_medi :: medi; + KBTS_FEATURE_ID_med2 :: med2; + KBTS_FEATURE_ID_init :: init; + KBTS_FEATURE_ID_ljmo :: ljmo; + KBTS_FEATURE_ID_vjmo :: vjmo; + KBTS_FEATURE_ID_tjmo :: tjmo; + KBTS_FEATURE_ID_rphf :: rphf; + KBTS_FEATURE_ID_blwf :: blwf; + KBTS_FEATURE_ID_half :: half; + KBTS_FEATURE_ID_pstf :: pstf; + KBTS_FEATURE_ID_abvf :: abvf; + KBTS_FEATURE_ID_pref :: pref; + KBTS_FEATURE_ID_numr :: numr; + KBTS_FEATURE_ID_frac :: frac; + KBTS_FEATURE_ID_dnom :: dnom; + KBTS_FEATURE_ID_cfar :: cfar; + KBTS_FEATURE_ID_aalt :: aalt; + KBTS_FEATURE_ID_abvm :: abvm; + KBTS_FEATURE_ID_abvs :: abvs; + KBTS_FEATURE_ID_afrc :: afrc; + KBTS_FEATURE_ID_akhn :: akhn; + KBTS_FEATURE_ID_apkn :: apkn; + KBTS_FEATURE_ID_blwm :: blwm; + KBTS_FEATURE_ID_blws :: blws; + KBTS_FEATURE_ID_calt :: calt; + KBTS_FEATURE_ID_case :: case_; + KBTS_FEATURE_ID_ccmp :: ccmp; + KBTS_FEATURE_ID_chws :: chws; + KBTS_FEATURE_ID_cjct :: cjct; + KBTS_FEATURE_ID_clig :: clig; + KBTS_FEATURE_ID_cpct :: cpct; + KBTS_FEATURE_ID_cpsp :: cpsp; + KBTS_FEATURE_ID_cswh :: cswh; + KBTS_FEATURE_ID_curs :: curs; + KBTS_FEATURE_ID_cv01 :: cv01; + KBTS_FEATURE_ID_cv02 :: cv02; + KBTS_FEATURE_ID_cv03 :: cv03; + KBTS_FEATURE_ID_cv04 :: cv04; + KBTS_FEATURE_ID_cv05 :: cv05; + KBTS_FEATURE_ID_cv06 :: cv06; + KBTS_FEATURE_ID_cv07 :: cv07; + KBTS_FEATURE_ID_cv08 :: cv08; + KBTS_FEATURE_ID_cv09 :: cv09; + KBTS_FEATURE_ID_cv10 :: cv10; + KBTS_FEATURE_ID_cv11 :: cv11; + KBTS_FEATURE_ID_cv12 :: cv12; + KBTS_FEATURE_ID_cv13 :: cv13; + KBTS_FEATURE_ID_cv14 :: cv14; + KBTS_FEATURE_ID_cv15 :: cv15; + KBTS_FEATURE_ID_cv16 :: cv16; + KBTS_FEATURE_ID_cv17 :: cv17; + KBTS_FEATURE_ID_cv18 :: cv18; + KBTS_FEATURE_ID_cv19 :: cv19; + KBTS_FEATURE_ID_cv20 :: cv20; + KBTS_FEATURE_ID_cv21 :: cv21; + KBTS_FEATURE_ID_cv22 :: cv22; + KBTS_FEATURE_ID_cv23 :: cv23; + KBTS_FEATURE_ID_cv24 :: cv24; + KBTS_FEATURE_ID_cv25 :: cv25; + KBTS_FEATURE_ID_cv26 :: cv26; + KBTS_FEATURE_ID_cv27 :: cv27; + KBTS_FEATURE_ID_cv28 :: cv28; + KBTS_FEATURE_ID_cv29 :: cv29; + KBTS_FEATURE_ID_cv30 :: cv30; + KBTS_FEATURE_ID_cv31 :: cv31; + KBTS_FEATURE_ID_cv32 :: cv32; + KBTS_FEATURE_ID_cv33 :: cv33; + KBTS_FEATURE_ID_cv34 :: cv34; + KBTS_FEATURE_ID_cv35 :: cv35; + KBTS_FEATURE_ID_cv36 :: cv36; + KBTS_FEATURE_ID_cv37 :: cv37; + KBTS_FEATURE_ID_cv38 :: cv38; + KBTS_FEATURE_ID_cv39 :: cv39; + KBTS_FEATURE_ID_cv40 :: cv40; + KBTS_FEATURE_ID_cv41 :: cv41; + KBTS_FEATURE_ID_cv42 :: cv42; + KBTS_FEATURE_ID_cv43 :: cv43; + KBTS_FEATURE_ID_cv44 :: cv44; + KBTS_FEATURE_ID_cv45 :: cv45; + KBTS_FEATURE_ID_cv46 :: cv46; + KBTS_FEATURE_ID_cv47 :: cv47; + KBTS_FEATURE_ID_cv48 :: cv48; + KBTS_FEATURE_ID_cv49 :: cv49; + KBTS_FEATURE_ID_cv50 :: cv50; + KBTS_FEATURE_ID_cv51 :: cv51; + KBTS_FEATURE_ID_cv52 :: cv52; + KBTS_FEATURE_ID_cv53 :: cv53; + KBTS_FEATURE_ID_cv54 :: cv54; + KBTS_FEATURE_ID_cv55 :: cv55; + KBTS_FEATURE_ID_cv56 :: cv56; + KBTS_FEATURE_ID_cv57 :: cv57; + KBTS_FEATURE_ID_cv58 :: cv58; + KBTS_FEATURE_ID_cv59 :: cv59; + KBTS_FEATURE_ID_cv60 :: cv60; + KBTS_FEATURE_ID_cv61 :: cv61; + KBTS_FEATURE_ID_cv62 :: cv62; + KBTS_FEATURE_ID_cv63 :: cv63; + KBTS_FEATURE_ID_cv64 :: cv64; + KBTS_FEATURE_ID_cv65 :: cv65; + KBTS_FEATURE_ID_cv66 :: cv66; + KBTS_FEATURE_ID_cv67 :: cv67; + KBTS_FEATURE_ID_cv68 :: cv68; + KBTS_FEATURE_ID_cv69 :: cv69; + KBTS_FEATURE_ID_cv70 :: cv70; + KBTS_FEATURE_ID_cv71 :: cv71; + KBTS_FEATURE_ID_cv72 :: cv72; + KBTS_FEATURE_ID_cv73 :: cv73; + KBTS_FEATURE_ID_cv74 :: cv74; + KBTS_FEATURE_ID_cv75 :: cv75; + KBTS_FEATURE_ID_cv76 :: cv76; + KBTS_FEATURE_ID_cv77 :: cv77; + KBTS_FEATURE_ID_cv78 :: cv78; + KBTS_FEATURE_ID_cv79 :: cv79; + KBTS_FEATURE_ID_cv80 :: cv80; + KBTS_FEATURE_ID_cv81 :: cv81; + KBTS_FEATURE_ID_cv82 :: cv82; + KBTS_FEATURE_ID_cv83 :: cv83; + KBTS_FEATURE_ID_cv84 :: cv84; + KBTS_FEATURE_ID_cv85 :: cv85; + KBTS_FEATURE_ID_cv86 :: cv86; + KBTS_FEATURE_ID_cv87 :: cv87; + KBTS_FEATURE_ID_cv88 :: cv88; + KBTS_FEATURE_ID_cv89 :: cv89; + KBTS_FEATURE_ID_cv90 :: cv90; + KBTS_FEATURE_ID_cv91 :: cv91; + KBTS_FEATURE_ID_cv92 :: cv92; + KBTS_FEATURE_ID_cv93 :: cv93; + KBTS_FEATURE_ID_cv94 :: cv94; + KBTS_FEATURE_ID_cv95 :: cv95; + KBTS_FEATURE_ID_cv96 :: cv96; + KBTS_FEATURE_ID_cv97 :: cv97; + KBTS_FEATURE_ID_cv98 :: cv98; + KBTS_FEATURE_ID_cv99 :: cv99; + KBTS_FEATURE_ID_c2pc :: c2pc; + KBTS_FEATURE_ID_c2sc :: c2sc; + KBTS_FEATURE_ID_dist :: dist; + KBTS_FEATURE_ID_dlig :: dlig; + KBTS_FEATURE_ID_dtls :: dtls; + KBTS_FEATURE_ID_expt :: expt; + KBTS_FEATURE_ID_falt :: falt; + KBTS_FEATURE_ID_flac :: flac; + KBTS_FEATURE_ID_fwid :: fwid; + KBTS_FEATURE_ID_haln :: haln; + KBTS_FEATURE_ID_halt :: halt; + KBTS_FEATURE_ID_hist :: hist; + KBTS_FEATURE_ID_hkna :: hkna; + KBTS_FEATURE_ID_hlig :: hlig; + KBTS_FEATURE_ID_hngl :: hngl; + KBTS_FEATURE_ID_hojo :: hojo; + KBTS_FEATURE_ID_hwid :: hwid; + KBTS_FEATURE_ID_ital :: ital; + KBTS_FEATURE_ID_jalt :: jalt; + KBTS_FEATURE_ID_jp78 :: jp78; + KBTS_FEATURE_ID_jp83 :: jp83; + KBTS_FEATURE_ID_jp90 :: jp90; + KBTS_FEATURE_ID_jp04 :: jp04; + KBTS_FEATURE_ID_kern :: kern; + KBTS_FEATURE_ID_lfbd :: lfbd; + KBTS_FEATURE_ID_liga :: liga; + KBTS_FEATURE_ID_lnum :: lnum; + KBTS_FEATURE_ID_locl :: locl; + KBTS_FEATURE_ID_ltra :: ltra; + KBTS_FEATURE_ID_ltrm :: ltrm; + KBTS_FEATURE_ID_mark :: mark; + KBTS_FEATURE_ID_mgrk :: mgrk; + KBTS_FEATURE_ID_mkmk :: mkmk; + KBTS_FEATURE_ID_mset :: mset; + KBTS_FEATURE_ID_nalt :: nalt; + KBTS_FEATURE_ID_nlck :: nlck; + KBTS_FEATURE_ID_nukt :: nukt; + KBTS_FEATURE_ID_onum :: onum; + KBTS_FEATURE_ID_opbd :: opbd; + KBTS_FEATURE_ID_ordn :: ordn; + KBTS_FEATURE_ID_ornm :: ornm; + KBTS_FEATURE_ID_palt :: palt; + KBTS_FEATURE_ID_pcap :: pcap; + KBTS_FEATURE_ID_pkna :: pkna; + KBTS_FEATURE_ID_pnum :: pnum; + KBTS_FEATURE_ID_pres :: pres; + KBTS_FEATURE_ID_psts :: psts; + KBTS_FEATURE_ID_pwid :: pwid; + KBTS_FEATURE_ID_qwid :: qwid; + KBTS_FEATURE_ID_rand :: rand; + KBTS_FEATURE_ID_rclt :: rclt; + KBTS_FEATURE_ID_rkrf :: rkrf; + KBTS_FEATURE_ID_rlig :: rlig; + KBTS_FEATURE_ID_rtbd :: rtbd; + KBTS_FEATURE_ID_rtla :: rtla; + KBTS_FEATURE_ID_rtlm :: rtlm; + KBTS_FEATURE_ID_ruby :: ruby; + KBTS_FEATURE_ID_rvrn :: rvrn; + KBTS_FEATURE_ID_salt :: salt; + KBTS_FEATURE_ID_sinf :: sinf; + KBTS_FEATURE_ID_size :: size; + KBTS_FEATURE_ID_smcp :: smcp; + KBTS_FEATURE_ID_smpl :: smpl; + KBTS_FEATURE_ID_ss01 :: ss01; + KBTS_FEATURE_ID_ss02 :: ss02; + KBTS_FEATURE_ID_ss03 :: ss03; + KBTS_FEATURE_ID_ss04 :: ss04; + KBTS_FEATURE_ID_ss05 :: ss05; + KBTS_FEATURE_ID_ss06 :: ss06; + KBTS_FEATURE_ID_ss07 :: ss07; + KBTS_FEATURE_ID_ss08 :: ss08; + KBTS_FEATURE_ID_ss09 :: ss09; + KBTS_FEATURE_ID_ss10 :: ss10; + KBTS_FEATURE_ID_ss11 :: ss11; + KBTS_FEATURE_ID_ss12 :: ss12; + KBTS_FEATURE_ID_ss13 :: ss13; + KBTS_FEATURE_ID_ss14 :: ss14; + KBTS_FEATURE_ID_ss15 :: ss15; + KBTS_FEATURE_ID_ss16 :: ss16; + KBTS_FEATURE_ID_ss17 :: ss17; + KBTS_FEATURE_ID_ss18 :: ss18; + KBTS_FEATURE_ID_ss19 :: ss19; + KBTS_FEATURE_ID_ss20 :: ss20; + KBTS_FEATURE_ID_ssty :: ssty; + KBTS_FEATURE_ID_stch :: stch; + KBTS_FEATURE_ID_subs :: subs; + KBTS_FEATURE_ID_sups :: sups; + KBTS_FEATURE_ID_swsh :: swsh; + KBTS_FEATURE_ID_test :: test; + KBTS_FEATURE_ID_titl :: titl; + KBTS_FEATURE_ID_tnam :: tnam; + KBTS_FEATURE_ID_tnum :: tnum; + KBTS_FEATURE_ID_trad :: trad; + KBTS_FEATURE_ID_twid :: twid; + KBTS_FEATURE_ID_unic :: unic; + KBTS_FEATURE_ID_valt :: valt; + KBTS_FEATURE_ID_vapk :: vapk; + KBTS_FEATURE_ID_vatu :: vatu; + KBTS_FEATURE_ID_vchw :: vchw; + KBTS_FEATURE_ID_vert :: vert; + KBTS_FEATURE_ID_vhal :: vhal; + KBTS_FEATURE_ID_vkna :: vkna; + KBTS_FEATURE_ID_vkrn :: vkrn; + KBTS_FEATURE_ID_vpal :: vpal; + KBTS_FEATURE_ID_vrt2 :: vrt2; + KBTS_FEATURE_ID_vrtr :: vrtr; + KBTS_FEATURE_ID_zero :: zero; + KBTS_FEATURE_ID_COUNT :: COUNT; +} + +kbts_shaping_table :: u8; +kbts_shaping_table_enum :: enum u32 { + GSUB :: 0; + GPOS :: 1; + COUNT :: 2; + + KBTS_SHAPING_TABLE_GSUB :: GSUB; + KBTS_SHAPING_TABLE_GPOS :: GPOS; + KBTS_SHAPING_TABLE_COUNT :: COUNT; +} + +kbts_lookup_info :: struct { + MaximumBacktrackWithoutSkippingGlyphs: u32; + MaximumLookaheadWithoutSkippingGlyphs: u32; + MaximumSubstitutionOutputSize: u32; + MaximumInputSequenceLength: u32; + MaximumLookupStackSize: u32; +} + +kbts_gdef :: struct {} +kbts_cmap_14 :: struct {} +kbts_gsub_gpos :: struct {} +kbts_maxp :: struct {} +kbts_hea :: struct {} +kbts_iterate_features :: struct {} + +kbts_shaper_properties :: struct {} +kbts_feature :: struct {} +kbts_head :: struct {} + +kbts_lookup_subtable_info :: struct { + MinimumBacktrackPlusOne: u32; + MinimumFollowupPlusOne: u32; +} + +kbts_font :: struct { + FileBase: *u8; + Head: *kbts_head; + Cmap: *u16; + Gdef: *kbts_gdef; + Cmap14: *kbts_cmap_14; + ShapingTables: [2] *kbts_gsub_gpos; + Fvar: *void; + Maxp: *kbts_maxp; + + Hea: [2] *kbts_hea; + Mtx: [2] *u16; + + LookupInfo: kbts_lookup_info; + + GlyphCount: u32; + LookupCount: u32; + SubtableCount: u32; + + GlyphLookupMatrix: *u32; + GlyphLookupSubtableMatrix: *u32; + LookupSubtableIndexOffsets: *u32; + SubtableInfos: *kbts_lookup_subtable_info; + GposLookupIndexOffset: u32; + + Error: s32; +} + +kbts_glyph_classes :: struct { + Class: u16; + MarkAttachmentClass: u16; +} + +kbts_feature_set :: struct { + Flags: [4] u64; +} + +kbts_feature_override :: struct { + Id: kbts_feature_id; + EnabledOrAlternatePlusOne: u32; +} + +kbts_glyph_config :: struct { + EnabledFeatures: kbts_feature_set; + DisabledFeatures: kbts_feature_set; + FeatureOverrideCount: u32; + FeatureOverrides: *kbts_feature_override; +} + +kbts_glyph :: struct { + Codepoint: u32; + Id: u16; + Uid: u16; + Classes: kbts_glyph_classes; + + Decomposition: u64; + + Config: *kbts_glyph_config; + + Flags: kbts_glyph_flags; + + OffsetX: s32; + OffsetY: s32; + AdvanceX: s32; + AdvanceY: s32; + + ParentInfo: u32; + + LigatureUid: u16; + LigatureComponentIndexPlusOne: u16; + + AttachGlyphIndexPlusOne: u16; + + JoiningFeature: kbts_joining_feature; + + JoiningType: kbts_unicode_joining_type; + Script: u8; + UnicodeFlags: u8; + SyllabicClass: u8; + SyllabicPosition: u8; + UseClass: u8; + CombiningClass: u8; + + MarkOrdering: u8; +} + +kbts_glyph_array :: struct { + Glyphs: *kbts_glyph; + Count: u32; + TotalCount: u32; + Capacity: u32; + RequiredCapacity: u32; +} + +kbts_op_state_normalize :: struct { + CodepointsToDecomposeCount: u64; + AboveBaseGlyphCount: u64; +} + +kbts_op_state_gsub :: struct { + LookupFeatures: kbts_feature_set; + LookupIndex: u64; + GlyphFilter: u32; + SkipFlags: u32; +} + +kbts_op_state_normalize_hangul :: struct { + LvtGlyphs: [4] kbts_glyph; + LvtGlyphCount: u64; +} + +kbts_op_state_op_specific :: union { + Normalize: kbts_op_state_normalize; + Gsub: kbts_op_state_gsub; + NormalizeHangul: kbts_op_state_normalize_hangul; +} + +kbts_lookup_indices :: struct { + FeatureId: u32; + SkipFlags: u32; + GlyphFilter: u32; + Count: u32; + Indices: *u16; +} + +kbts_op :: struct { + Kind: kbts_op_kind; + Features: kbts_feature_set; +} + +kbts_op_state :: struct { + WrittenCount: u64; + GlyphIndex: u64; + FrameCount: u32; + ResumePoint: u32; + + FeatureCount: u32; + FeatureLookupIndices: [16] kbts_lookup_indices; + + OpSpecific: kbts_op_state_op_specific; +} + +kbts_op_list :: struct { + Ops: *u8; + Length: u64; +} + +kbts_indic_script_properties :: struct { + ViramaCodepoint: u32; + BlwfPostOnly: u8; + RephPosition: kbts_reph_position; + RephEncoding: kbts_reph_encoding; + RightSideMatraPosition: kbts_syllabic_position; + AboveBaseMatraPosition: kbts_syllabic_position; + BelowBaseMatraPosition: kbts_syllabic_position; +} + +kbts_langsys :: struct {} +kbts_shape_config :: struct { + Font: *kbts_font; + Script: kbts_script; + Language: kbts_language; + Langsys: [2] *kbts_langsys; + OpLists: [4] kbts_op_list; + + Features: *kbts_feature_set; + + Shaper: kbts_shaper; + ShaperProperties: *kbts_shaper_properties; + + IndicScriptProperties: kbts_indic_script_properties; + Blwf: *kbts_feature; + Pref: *kbts_feature; + Pstf: *kbts_feature; + Locl: *kbts_feature; + Rphf: *kbts_feature; + Half: *kbts_feature; + Vatu: *kbts_feature; + + Virama: kbts_glyph; + + DottedCircle: kbts_glyph; + Whitespace: kbts_glyph; + + Nikhahit: kbts_glyph; + SaraAa: kbts_glyph; +} + +kbts_shape_state :: struct { + Op: kbts_op; + Config: *kbts_shape_config; + MainDirection: kbts_direction; + RunDirection: kbts_direction; + + UserFeatures: kbts_feature_set; + + GlyphArray: kbts_glyph_array; + ClusterGlyphArray: kbts_glyph_array; + + DottedCircleInsertIndex: u32; + + GlyphCountStartingFromCurrentCluster: u32; + + At: u32; + ResumePoint: u32; + OpGlyphOffset: u32; + ClusterGlyphCount: u32; + Ip: u32; + NextGlyphUid: u32; + + RequiredGlyphCapacity: u32; + + RealCluster: s32; + ClusterAtStartOfWord: s32; + WordBreak: s32; + + OpState: kbts_op_state; +} + +kbts_cursor :: struct { + Direction: kbts_direction; + LastAdvanceX: s32; + X: s32; + Y: s32; +} + +kbts_break :: struct { + Position: u32; + Flags: kbts_break_flags; + Direction: kbts_direction; + Script: kbts_script; +} + +kbts_bracket :: struct { + Codepoint: u32; + Direction: u8; + Script: u8; +} + +kbts_break_state_flags :: u32; +kbts_break_state_flags_enum :: enum u32 { + STARTED :: 1; + END :: 2; + RAN_OUT_OF_REORDER_BUFFER_SPACE :: 4; + + SAW_R_AFTER_L :: 8; + SAW_AL_AFTER_LR :: 16; + LAST_WAS_BRACKET :: 32; + + KBTS_BREAK_STATE_FLAG_STARTED :: STARTED; + KBTS_BREAK_STATE_FLAG_END :: END; + KBTS_BREAK_STATE_FLAG_RAN_OUT_OF_REORDER_BUFFER_SPACE :: RAN_OUT_OF_REORDER_BUFFER_SPACE; + + KBTS_BREAK_STATE_FLAG_SAW_R_AFTER_L :: SAW_R_AFTER_L; + KBTS_BREAK_STATE_FLAG_SAW_AL_AFTER_LR :: SAW_AL_AFTER_LR; + KBTS_BREAK_STATE_FLAG_LAST_WAS_BRACKET :: LAST_WAS_BRACKET; +} + +kbts_break_state :: struct { + Breaks: [8] kbts_break; + BreakCount: u32; + MainDirection: kbts_direction; + + LastFlushedBreakPosition: u32; + CurrentPosition: u32; + + LastScripts: [2] u8; + + Brackets: [64] kbts_bracket; + BracketCount: u32; + Flags: kbts_break_state_flags; + + FlagState: u32; + PositionOffset2: s16; + PositionOffset3: s16; + + WordBreakHistory: u32; + WordBreaks: u16; + WordUnbreaks: u16; + WordBreak2PositionOffset: s16; + + LineBreaks: u64; + + LineUnbreaksAsync: u64; + LineUnbreaks: u64; + LineBreakHistory: u32; + LineBreak2PositionOffset: s16; + LineBreak3PositionOffset: s16; + + LastDirection: u8; + BidirectionalClass2: u8; + BidirectionalClass1: u8; + + JapaneseLineBreakStyle: kbts_japanese_line_break_style; + GraphemeBreakState: u8; + LastLineBreakClass: u8; + LastWordBreakClass: u8; + LastWordBreakClassIncludingIgnored: u8; +} + +kbts_decode :: struct { + Codepoint: u32; + + SourceCharactersConsumed: u32; + Valid: u32; +} + +kbts_FeatureOverride :: (Id: kbts_feature_id, Alternate: s32, Value: u32) -> kbts_feature_override #foreign kb_text_shape; +kbts_GlyphConfig :: (FeatureOverrides: *kbts_feature_override, FeatureOverrideCount: u32) -> kbts_glyph_config #foreign kb_text_shape; +kbts_FontFromFile :: (FileName: *u8) -> kbts_font #foreign kb_text_shape; +kbts_FreeFont :: (Font: *kbts_font) -> void #foreign kb_text_shape; +kbts_CreateShapeState :: (Font: *kbts_font) -> *kbts_shape_state #foreign kb_text_shape; +kbts_FreeShapeState :: (State: *kbts_shape_state) -> void #foreign kb_text_shape; + +kbts_FontIsValid :: (Font: *kbts_font) -> s32 #foreign kb_text_shape; +kbts_ReadFontHeader :: (Font: *kbts_font, Data: *void, Size: u64) -> u64 #foreign kb_text_shape; +kbts_ReadFontData :: (Font: *kbts_font, Scratch: *void, ScratchSize: u64) -> u64 #foreign kb_text_shape; +kbts_PostReadFontInitialize :: (Font: *kbts_font, Memory: *void, MemorySize: u64) -> s32 #foreign kb_text_shape; +kbts_SizeOfShapeState :: (Font: *kbts_font) -> u64 #foreign kb_text_shape; +kbts_PlaceShapeState :: (Address: *void, Size: u64) -> *kbts_shape_state #foreign kb_text_shape; +kbts_ResetShapeState :: (State: *kbts_shape_state) -> void #foreign kb_text_shape; +kbts_ShapeConfig :: (Font: *kbts_font, Script: kbts_script, Language: kbts_language) -> kbts_shape_config #foreign kb_text_shape; +kbts_ShaperIsComplex :: (Shaper: kbts_shaper) -> s32 #foreign kb_text_shape; +kbts_Shape :: (State: *kbts_shape_state, Config: *kbts_shape_config, MainDirection: kbts_direction, RunDirection: kbts_direction, Glyphs: *kbts_glyph, GlyphCount: *u32, GlyphCapacity: u32) -> s32 #foreign kb_text_shape; +kbts_Cursor :: (Direction: kbts_direction) -> kbts_cursor #foreign kb_text_shape; +kbts_PositionGlyph :: (Cursor: *kbts_cursor, Glyph: *kbts_glyph, X: *s32, Y: *s32) -> void #foreign kb_text_shape; +kbts_BeginBreak :: (State: *kbts_break_state, MainDirection: kbts_direction, JapaneseLineBreakStyle: kbts_japanese_line_break_style) -> void #foreign kb_text_shape; +kbts_BreakStateIsValid :: (State: *kbts_break_state) -> s32 #foreign kb_text_shape; +kbts_BreakAddCodepoint :: (State: *kbts_break_state, Codepoint: u32, PositionIncrement: u32, EndOfText: s32) -> void #foreign kb_text_shape; +kbts_BreakFlush :: (State: *kbts_break_state) -> void #foreign kb_text_shape; +kbts_Break :: (State: *kbts_break_state, Break: *kbts_break) -> s32 #foreign kb_text_shape; +kbts_DecodeUtf8 :: (Utf8: *u8, Length: u64) -> kbts_decode #foreign kb_text_shape; +kbts_CodepointToGlyph :: (Font: *kbts_font, Codepoint: u32) -> kbts_glyph #foreign kb_text_shape; +kbts_InferScript :: (Direction: *kbts_direction, Script: *kbts_script, GlyphScript: kbts_script) -> void #foreign kb_text_shape; +kbts_ScriptIsComplex :: (Script: kbts_script) -> s32 #foreign kb_text_shape; + +#scope_file + + +#if OS == .WINDOWS { + kb_text_shape :: #library "windows/kb_text_shape"; +} else #if OS == .LINUX { + kb_text_shape :: #library "linux/kb_text_shape"; +} else #if OS == .MACOS { + kb_text_shape :: #library "macos/kb_text_shape"; +} else #if OS == .ANDROID { + #if CPU == .X64 { + kb_text_shape :: #library "android/x64/kb_text_shape"; + } else #if CPU == .ARM64 { + kb_text_shape :: #library "android/arm64/kb_text_shape"; + } +} else #if OS == .PS5 { + kb_text_shape :: #library "ps5/kb_text_shape"; +} else { + #assert false; +} + diff --git a/modules/kb_text_shape/generate.jai b/modules/kb_text_shape/generate.jai new file mode 100644 index 0000000..4598b32 --- /dev/null +++ b/modules/kb_text_shape/generate.jai @@ -0,0 +1,155 @@ +AT_COMPILE_TIME :: true; + +#if OS == .WINDOWS { + LIB_BASE_NAME :: "kb_text_shape"; +} else #if OS == .MACOS { + LIB_BASE_NAME :: "kb_text_shape"; +} + +#if AT_COMPILE_TIME { + #run,stallable { + set_build_options_dc(.{do_output=false}); + options := get_build_options(); + args := options.compile_time_command_line; + if !generate_bindings(args, options.minimum_os_version) { + compiler_set_workspace_status(.FAILED); + } + } +} else { + #import "System"; + + main :: () { + set_working_directory(path_strip_filename(get_path_of_running_executable())); + if !generate_bindings(get_command_line_arguments(), #run get_build_options().minimum_os_version) { + exit(1); + } + } +} + +generate_bindings :: (args: [] string, minimum_os_version: type_of(Build_Options.minimum_os_version)) -> bool { + target_android := array_find(args, "-android"); + target_x64 := array_find(args, "-x64"); + target_arm := array_find(args, "-arm64"); + compile := array_find(args, "-compile"); + compile_debug := array_find(args, "-debug"); + + os_target := OS; + cpu_target := CPU; + if target_android os_target = .ANDROID; + if target_x64 cpu_target = .X64; + if target_arm cpu_target = .ARM64; + + lib_directory : string; + if os_target == { + case .WINDOWS; + lib_directory = "windows"; + case .LINUX; + lib_directory = "linux"; + case .MACOS; + lib_directory = "macos"; + case .ANDROID; + lib_directory = ifx cpu_target == .X64 then "android/x64" else "android/arm64"; + case .PS5; + lib_directory = "ps5"; + case; + assert(false); + } + + if compile { + source_file := tprint("%.c", LIB_BASE_NAME); + + make_directory_if_it_does_not_exist(lib_directory, recursive = true); + lib_path := tprint("%/%", lib_directory, LIB_BASE_NAME); + success := true; + if os_target == .MACOS { + //lib_path_x64 := tprint("%_x64", lib_path); + lib_path_arm64 := tprint("%", lib_path); + //macos_x64_version_arg := "-mmacos-version-min=10.13"; // Our current x64 min version + macos_arm64_version_arg := "-mmacos-version-min=11.0"; // Earliest version that supports arm64 + // x64 variant + //success &&= build_cpp_dynamic_lib(lib_path_x64, source_file, extra = .["-arch", "x86_64", macos_x64_version_arg], debug=compile_debug); + //success &&= build_cpp_static_lib( lib_path_x64, source_file, extra = .["-arch", "x86_64", macos_x64_version_arg], debug=compile_debug); + // arm64 variant + success &&= build_cpp_dynamic_lib(lib_path, source_file, extra = .["-arch", "arm64", macos_arm64_version_arg], debug = compile_debug); + success &&= build_cpp_static_lib( lib_path, source_file, extra = .["-arch", "arm64", macos_arm64_version_arg], debug = compile_debug); + // create universal binaries + //run_result := run_command("lipo", "-create", tprint("%.dylib", lib_path_x64), tprint("%.dylib", lib_path_arm64), "-output", tprint("%.dylib", lib_path)); + //success &&= (run_result.exit_code == 0); + //run_result = run_command("lipo", "-create", tprint("%.a", lib_path_x64), tprint("%.a", lib_path_arm64), "-output", tprint("%.a", lib_path)); + //success &&= (run_result.exit_code == 0); + } else { + extra: [..] string; + if os_target == .ANDROID { + _, target_triple_with_sdk := get_android_target_triple(cpu_target); + array_add(*extra, "-target", target_triple_with_sdk); + } + if os_target != .WINDOWS { + array_add(*extra, "-fPIC"); + } + + if os_target == .WINDOWS { + array_add(*extra, "/MD"); + } + + if os_target != .PS5 { + success &&= build_cpp_dynamic_lib(lib_path, source_file, target = os_target, debug = compile_debug, extra = extra); + } + success &&= build_cpp_static_lib(lib_path, source_file, target = os_target, debug = compile_debug, extra = extra); + } + + if !success return false; + } + + options: Generate_Bindings_Options; + options.os = os_target; + options.cpu = cpu_target; + { + using options; + + try_to_preserve_comments = false; + + array_add(*libpaths, lib_directory); + array_add(*libnames, LIB_BASE_NAME); + array_add(*source_files, tprint("%.h", LIB_BASE_NAME)); + + generate_library_declarations = false; + footer = tprint(FOOTER_TEMPLATE, LIB_BASE_NAME); + + auto_detect_enum_prefixes = true; + log_stripped_declarations = false; + generate_compile_time_struct_checks = false; + } + + output_filename := tprint("%.jai", lib_directory); + return generate_bindings(options, output_filename); +} + +FOOTER_TEMPLATE :: #string END + +#if OS == .WINDOWS { + %1 :: #library "windows/%1"; +} else #if OS == .LINUX { + %1 :: #library "linux/%1"; +} else #if OS == .MACOS { + %1 :: #library "macos/%1"; +} else #if OS == .ANDROID { + #if CPU == .X64 { + %1 :: #library "android/x64/%1"; + } else #if CPU == .ARM64 { + %1 :: #library "android/arm64/%1"; + } +} else #if OS == .PS5 { + %1 :: #library "ps5/%1"; +} else { + #assert false; +} + +END + +#import "Basic"; +#import "BuildCpp"; +#import "Bindings_Generator"; +#import "Compiler"; +#import "File"; +#import "Process"; +#import "Toolchains/Android"; diff --git a/modules/kb_text_shape/kb_text_shape.c b/modules/kb_text_shape/kb_text_shape.c new file mode 100644 index 0000000..e7b5534 --- /dev/null +++ b/modules/kb_text_shape/kb_text_shape.c @@ -0,0 +1,13 @@ +#ifdef WIN32 +#define KBTS_EXPORT __declspec(dllexport) +#else +#define KBTS_EXPORT +#endif + +#define KB_TEXT_SHAPE_IMPLEMENTATION + +#include +#include +#include + +#include "kb_text_shape.h" diff --git a/modules/kb_text_shape/kb_text_shape.h b/modules/kb_text_shape/kb_text_shape.h new file mode 100644 index 0000000..de3dfb8 --- /dev/null +++ b/modules/kb_text_shape/kb_text_shape.h @@ -0,0 +1,23192 @@ +/* kb_text_shape - v1.02 - text segmentation and shaping + by Jimmy Lefevre + + SECURITY + This library provides NO SECURITY GUARANTEE whatsoever. + DO NOT use it on untrusted font files. + + FEATURE OVERVIEW + This library provides: + - Unicode segmentation + LTR/RTL breaking + Script breaking + Line breaking + Word breaking + Grapheme breaking + - OpenType text shaping + Open and parse TTF and OTF fonts + Extract glyph information + Apply OpenType features such as ligatures and contextual typographic rules + All OpenType shapers are supported, which means most languages in the world are supported + (see LANGUAGE_SUPPORT for known non-supported cases) + + COMPILING & LINKING + This library uses declare-anywhere, so it will not compile as C89/VC6 C. + In one C/C++ file that #includes this file, do this: + #define KB_TEXT_SHAPE_IMPLEMENTATION + before the #include. That will create the implementation in that file. + If you also do this: + #define KB_TEXT_SHAPE_STATIC + then all functions will be declared as static. + If you do this: + #define KB_TEXT_SHAPE_NO_CRT + then we do not use the C runtime library. These functions are compiled out: + kbts_CreateShapeState() + kbts_FreeShapeState() + kbts_FontFromFile() + kbts_FreeFont() + + API + Segmentation + kbts_BeginBreak() + kbts_BreakAddCodepoint() -- Feed a codepoint to the breaker, call kbts_Break() after this + kbts_BreakFlush() + kbts_Break() -- Call repeatedly to get breaks + kbts_BreakStateIsValid() + Easy font loading + kbts_FontFromFile() -- Open a font, byteswap it in place, and allocate auxiliary structures + kbts_FreeFont() + kbts_FontIsValid() + Shaping + kbts_CreateShapeState() + kbts_FreeShapeState() + kbts_ShapeConfig() -- Bake a font/script-specific shaping configuration + kbts_CodepointToGlyph() + kbts_FeatureOverride() -- Describe a manual override for a font feature + kbts_GlyphConfig() -- Bake per-glyph parameters (like feature overrides) + kbts_InferScript() -- Hacky script recognition for when no segmentation data is available + kbts_Shape() -- Returns 1 if more memory is needed, you should probably call this in a while() + kbts_ResetShapeState() + Layout + kbts_Cursor() + kbts_PositionGlyph() + Manual memory management + kbts_SizeOfShapeState() + kbts_PlaceShapeState() + kbts_ReadFontHeader() -- Read the top of the file and return how many bytes are needed to read the rest + kbts_ReadFontData() -- Read and byteswap the rest + kbts_PostReadFontInitialize() -- Initialize auxiliary structures + Utility, etc. + kbts_ShaperIsComplex() + kbts_ScriptIsComplex() + kbts_InferScript() -- Stupid script detection. Do not ship this! Use script breaks instead. + kbts_DecodeUtf8() + + EXAMPLE USAGE + Complete example: + const char *String = "..."; + size_t Length = strlen(String); + // Open a font file + kbts_font Font = kbts_FontFromFile("..."); + // Make some glyphs + kbts_glyph *Glyphs = (kbts_glyph *)malloc(sizeof(kbts_glyph) * Length); + uint32_t GlyphCount = 0; + kbts_script Script = KBTS_SCRIPT_DONT_KNOW; + kbts_direction Direction = KBTS_DIRECTION_NONE; + for(size_t StringAt = 0; StringAt < Length;) + { + kbts_decode Decode = kbts_DecodeUtf8(String, Length - StringAt); + StringAt += Decode.SourceCharactersConsumed; + if(Decode.Valid) + { + kbts_glyph Glyph = kbts_CodepointToGlyph(&Font, Decode.Codepoint); + // Easy script inference for simple cases. (This is similar to hb_buffer_guess_segment_properties.) + // If you have already segmented String with our API, you already have a script! + // So no need to pass it in that case. + // Only use this as a shorthand, when you are pretty sure String is a single + // script. + kbts_InferScript(&Direction, &Script, Glyph.Script); + Glyphs[GlyphCount++] = Glyph; + } + } + // Shape + uint32_t GlyphCapacity = Length; + kbts_shape_state *State = kbts_CreateShapeState(&Font); + // A shape_config is immutable once created. You can freely share/hash it, etc. + kbts_shape_config Config = kbts_ShapeConfig(&Font, Script, KBTS_LANGUAGE_DONT_KNOW); + while(kbts_Shape(State, &Config, Direction, Direction, Glyphs, &GlyphCount, GlyphCapacity)) + { + Glyphs = realloc(Glyphs, sizeof(kbts_glyph) * State->RequiredGlyphCapacity); + GlyphCapacity = State->RequiredGlyphCapacity; + } + // Get final positions + kbts_cursor Cursor = kbts_Cursor(Direction); + for(size_t GlyphIndex = 0; GlyphIndex < GlyphCount; ++GlyphIndex) + { + int X, Y; + kbts_PositionGlyph(&Cursor, &Glyphs[GlyphIndex], &X, &Y); + } + + Breaking Unicode text - finding the end of the current line: + uint32_t LineLength = 0; + kbts_break_state BreakState; + kbts_BeginBreak(&BreakState, KBTS_DIRECTION_NONE, KBTS_JAPANESE_LINE_BREAK_STYLE_NORMAL); + for(size_t CodepointIndex = 0; (CodepointIndex < CodepointCount) && !LineLength; ++CodepointIndex) + { + // We use a fixed-width encoding (codepoints) -- just pass a PositionIncrement of 1. + // If we wanted to directly segment UTF-8 in-place, we would pass in however many bytes each UTF-8 character was. + + // The last parameter to AddCodepoint is a boolean signifying the end of text. + // Alternatively, we could have written: + // kbts_BreakAddCodepoint(..., 0); + // if((CodepointIndex + 1) == CodepointCount) kbts_BreakFlush(); + + kbts_BreakAddCodepoint(&BreakState, Codepoints[CodepointIndex], 1, (CodepointIndex + 1) == CodepointCount); + kbts_break Break; + while(kbts_Break(&BreakState, &Break)) + { + // We could just as easily check for any other kind of break here. + // See kbts_break_flags for the kind of breaks we can find. + if(Break.Flags & KBTS_BREAK_FLAG_LINE_HARD) + { + LineLength = Break.Position; + } + } + } + + Control which font features apply to which glyphs: + kbts_feature_override Ss03FeatureOverrides[] = { + kbts_FeatureOverride(KBTS_FEATURE_ID_ccmp, 0, 0), // Disable ccmp + kbts_FeatureOverride(KBTS_FEATURE_ID_ss03, 0, 1), // Enable ss03 + }; + kbts_glyph_config Ss03Config = kbts_GlyphConfig(Ss03FeatureOverrides, 2); + kbts_feature_override SaltFeatureOverrides[] = { + kbts_FeatureOverride(KBTS_FEATURE_ID_salt, 1, 3), // Pick alternate glyph number 3 from feature 'salt' + }; + kbts_glyph_config SaltConfig = kbts_GlyphConfig(SaltFeatureOverrides, 1); + + // Then, do this before calling kbts_Shape(): + MyGlyphs[0].Config = &Ss03Config; + MyGlyphs[1].Config = &SaltConfig; + + Open a font with your own memory: + kbts_font Font; + size_t ScratchSize = kbts_ReadFontHeader(&Font, Data, Size); + size_t PermanentMemorySize = kbts_ReadFontData(&Font, malloc(ScratchSize), ScratchSize); + kbts_PostReadFontInitialize(&Font, malloc(PermanentMemorySize), PermanentMemorySize); + // At any point, you can call kbts_FontIsValid(&Font) to check if the read went well. + // You do not need to check for font validity in between API calls here; once a font is flagged + // with an error, subsequent API calls simply do nothing. + // If you have provided real font data, kbts_FontIsValid(&Font) will most likely be true. + // We may still fail to parse some technically valid fonts that contain very deeply-nested or + // self-referential lookups. + // In those cases, Harfbuzz might open the font, but, at the time of writing, it silently limits + // the recursion depth to 64 when applying the lookups anyway. + + Allocate a shape_state with your own memory: + kbts_shape_state *State = kbts_PlaceShapeState(malloc(kbts_SizeOfShapeState(Font)), kbts_SizeOfShapeState(Font)); + + Use a single shape_state across multiple runs: + while(kbts_Shape(State, ...)) {...} + // If the previous shaping operation completed successfully, ResetShapeState is not necessary. + // If, for any reason, you have decided to stop shaping in the middle of an operation, though, + // you need to call it. + // (This is just setting a state counter, so this is very cheap.) + kbts_ResetShapeState(State); + while(kbts_Shape(State, ...)) {...} + + Use a single shape_state across multiple fonts: + // Different fonts have different memory requirements for shaping. However, beyond that, there + // is nothing that ties a shape_state to a font. You may use it freely with multiple fonts, as + // long as it is large enough. + size_t Size0 = kbts_SizeOfShapeState(Font0); + size_t Size1 = kbts_SizeOfShapeState(Font1); + size_t Size = MAX(Size0, Size1) + kbts_shape_state *State = kbts_PlaceShapeState(malloc(Size), Size); + + Use a single shape_config across multiple runs: + // Once a shape_config has been created, it is assumed to be immutable and can be trivially shared + // between runs/operations that have the same parameters. + + LANGUAGE SUPPORT + Shaping is NOT supported for the following scripts: + Zawgyi: some fonts exist, but no standardized OpenType feature set seems to exist as of writing. + Syriac: Syriac Abbreviation Mark (0x070F) is not supported. + Egyptian Hieroglyphs, I think, although example text is hard to come by. + Word breaking is NOT supported for languages that require word dictionaries, like CJK. + + FONT SUPPORT + Font collections (.ttc) are not supported. + Indic fonts using the Indic1 shaping model are not supported. + e.g., 'bng2' will work, but 'beng' will not. + The Indic v2 shaping model was released with OpenType 1.5 in May 2008. + Traditional Arabic Windows 3.1 fonts are not supported. + https://github.com/harfbuzz/harfbuzz/issues/681 + Thai/Lao PUA fonts are not supported. + These are old fonts that use OS-specific codepages (PUA stands for [Unicode] "Private Use Area") and + pre-OpenType shaping. + https://linux.thai.net/~thep/th-otf/shaping.html + More generally, we try to be compatible with most well-formed fonts, but we try less hard than Harfbuzz + to be compatible with every font under the sun. + + OTHER LIMITATIONS + Explicit direction control characters are not supported. This includes: + 0x202A Left-to-right embedding + 0x202B Right-to-left embedding + 0x202D Left-to-right override + 0x202E Right-to-left override + 0x202C Pop directional formatting + 0x2066 Left-to-right isolate + 0x2067 Right-to-left isolate + 0x2068 First strong isolate + 0x2069 Pop directional isolate + See https://unicode.org/reports/tr9 for more information. + + VERSION HISTORY + 1.02 - Added per-glyph manual feature control through kbts_FeatureOverride(), kbts_GlyphConfig() + Added enum definitions for features cv01-cv99 and ss01-ss20 + 1.01 - Header cleanup and glyph output documentation + 1.0 - Initial release + + TODO + Word dictionaries for word breaking: CJK, etc. + 'stch' feature. + Precompute GPOS nesting in advance and replace recursion with explicit frames. + (Either that or limit to a hard depth for now.) + + LICENSE + zlib License + + (C) Copyright 2024-2025 Jimmy Lefevre + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef KB_TEXT_SHAPE_INCLUDED +# define KB_TEXT_SHAPE_INDLUDED + +# ifndef kbts_s64 +# if defined(_MSC_VER) || defined(__BORLANDC__) +# define kbts_s64 __int64 +# else +# define kbts_s64 long long +# endif +# endif +# ifndef kbts_u64 +# if defined(_MSC_VER) || defined(__BORLANDC__) +# define kbts_u64 unsigned __int64 +# else +# define kbts_u64 unsigned long long +# endif +# endif +# ifndef kbts_u32 +# define kbts_u32 unsigned +# endif +# ifndef kbts_u16 +# define kbts_u16 unsigned short +# endif +# ifndef kbts_s32 +# define kbts_s32 int +# endif +# ifndef kbts_s16 +# define kbts_s16 short +# endif +# ifndef kbts_u8 +# define kbts_u8 unsigned char +# endif +# ifndef kbts_s8 +# define kbts_s8 signed char +# endif + +# ifndef KB_TEXT_SHAPE_POINTER_SIZE +# if defined(i386) || defined(__i386__) || defined(_M_IX86) || defined(_M_ARM) || defined(__arm__) || defined(__x86) || (defined(__APPLE__) && defined(__ppc)) || \ + (defined(__TOS_AIX__) && !defined(__64BIT)) +# define KB_TEXT_SHAPE_POINTER_SIZE 4 +# else +# define KB_TEXT_SHAPE_POINTER_SIZE 8 +# endif +# endif + +# if KB_TEXT_SHAPE_POINTER_SIZE == 4 +# define kbts_un kbts_u32 +# define kbts_sn kbts_s32 +# else +# define kbts_un kbts_u64 +# define kbts_sn kbts_s64 +# endif + +# ifdef __has_attribute +# if __has_attribute(fallthrough) +# define KBTS_FALLTHROUGH __attribute__((fallthrough)) +# endif +# endif +# ifndef KBTS_FALLTHROUGH +# define KBTS_FALLTHROUGH +# endif + +# ifndef KBTS_EXPORT +# ifdef KB_TEXT_SHAPE_STATIC +# define KBTS_EXPORT static +# else +# ifdef __cplusplus +# define KBTS_EXPORT extern "C" +# else +# define KBTS_EXPORT extern +# endif +# endif +# endif + +# ifdef _MSC_VER +# define KBTS_INLINE static __forceinline +# define KBTS_NOINLINE static __declspec(noinline) +# else +# ifdef __has_attribute +# if __has_attribute(always_inline) +# define KBTS_INLINE static inline __attribute__((always_inline)) +# endif +# if __has_attribute(noinline) +# define KBTS_NOINLINE static __attribute__((noinline)) +# endif +# endif +# endif +# ifndef KBTS_INLINE +# define KBTS_INLINE static inline +# endif + +# define KBTS_FOURCC(A, B, C, D) ((A) | ((B) << 8) | ((C) << 16) | ((D) << 24)) + +typedef kbts_u8 kbts_joining_feature; +enum kbts_joining_feature_enum +{ + KBTS_JOINING_FEATURE_NONE, + KBTS_JOINING_FEATURE_ISOL, + KBTS_JOINING_FEATURE_FINA, + KBTS_JOINING_FEATURE_FIN2, + KBTS_JOINING_FEATURE_FIN3, + KBTS_JOINING_FEATURE_MEDI, + KBTS_JOINING_FEATURE_MED2, + KBTS_JOINING_FEATURE_INIT, + + KBTS_JOINING_FEATURE_COUNT, +}; + +typedef kbts_u8 kbts_reph_position; +enum kbts_reph_position_enum +{ + KBTS_REPH_POSITION_AFTER_POST, + KBTS_REPH_POSITION_BEFORE_POST, + KBTS_REPH_POSITION_BEFORE_SUBJOINED, + KBTS_REPH_POSITION_AFTER_SUBJOINED, + KBTS_REPH_POSITION_AFTER_MAIN, + + KBTS_REPH_POSITION_COUNT, +}; + +typedef kbts_u8 kbts_reph_encoding; +enum kbts_reph_encoding_enum +{ + KBTS_REPH_ENCODING_IMPLICIT, + KBTS_REPH_ENCODING_EXPLICIT, + KBTS_REPH_ENCODING_LOGICAL_REPHA, + KBTS_REPH_ENCODING_VISUAL_REPHA, + + KBTS_REPH_ENCODING_COUNT, +}; + +typedef kbts_u8 kbts_syllabic_position; +enum kbts_syllabic_position_enum +{ + KBTS_SYLLABIC_POSITION_NONE, + + KBTS_SYLLABIC_POSITION_RA_TO_BECOME_REPH, + + KBTS_SYLLABIC_POSITION_PREBASE_MATRA, + KBTS_SYLLABIC_POSITION_PREBASE_CONSONANT, + + KBTS_SYLLABIC_POSITION_SYLLABLE_BASE, + KBTS_SYLLABIC_POSITION_AFTER_MAIN, + + KBTS_SYLLABIC_POSITION_ABOVEBASE_CONSONANT, + + KBTS_SYLLABIC_POSITION_BEFORE_SUBJOINED, + KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT, + KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED, + + KBTS_SYLLABIC_POSITION_BEFORE_POST, + KBTS_SYLLABIC_POSITION_POSTBASE_CONSONANT, + KBTS_SYLLABIC_POSITION_AFTER_POST, + + KBTS_SYLLABIC_POSITION_FINAL_CONSONANT, + KBTS_SYLLABIC_POSITION_SMVD, + + KBTS_SYLLABIC_POSITION_COUNT, +}; + +typedef kbts_u32 kbts_language; +enum kbts_language_enum +{ + KBTS_LANGUAGE_DONT_KNOW = 0, + + KBTS_LANGUAGE_A_HMAO = KBTS_FOURCC('H', 'M', 'D', ' '), + KBTS_LANGUAGE_AARI = KBTS_FOURCC('A', 'R', 'I', ' '), + KBTS_LANGUAGE_ABAZA = KBTS_FOURCC('A', 'B', 'A', ' '), + KBTS_LANGUAGE_ABKHAZIAN = KBTS_FOURCC('A', 'B', 'K', ' '), + KBTS_LANGUAGE_ACHI = KBTS_FOURCC('A', 'C', 'R', ' '), + KBTS_LANGUAGE_ACHOLI = KBTS_FOURCC('A', 'C', 'H', ' '), + KBTS_LANGUAGE_ADYGHE = KBTS_FOURCC('A', 'D', 'Y', ' '), + KBTS_LANGUAGE_AFAR = KBTS_FOURCC('A', 'F', 'R', ' '), + KBTS_LANGUAGE_AFRIKAANS = KBTS_FOURCC('A', 'F', 'K', ' '), + KBTS_LANGUAGE_AGAW = KBTS_FOURCC('A', 'G', 'W', ' '), + KBTS_LANGUAGE_AITON = KBTS_FOURCC('A', 'I', 'O', ' '), + KBTS_LANGUAGE_AKAN = KBTS_FOURCC('A', 'K', 'A', ' '), + KBTS_LANGUAGE_ALBANIAN = KBTS_FOURCC('S', 'Q', 'I', ' '), + KBTS_LANGUAGE_ALSATIAN = KBTS_FOURCC('A', 'L', 'S', ' '), + KBTS_LANGUAGE_ALTAI = KBTS_FOURCC('A', 'L', 'T', ' '), + KBTS_LANGUAGE_ALUO = KBTS_FOURCC('Y', 'N', 'A', ' '), + KBTS_LANGUAGE_AMERICAN_PHONETIC = KBTS_FOURCC('A', 'P', 'P', 'H'), + KBTS_LANGUAGE_AMHARIC = KBTS_FOURCC('A', 'M', 'H', ' '), + KBTS_LANGUAGE_ANGLO_SAXON = KBTS_FOURCC('A', 'N', 'G', ' '), + KBTS_LANGUAGE_ARABIC = KBTS_FOURCC('A', 'R', 'A', ' '), + KBTS_LANGUAGE_ARAGONESE = KBTS_FOURCC('A', 'R', 'G', ' '), + KBTS_LANGUAGE_ARAKANESE = KBTS_FOURCC('A', 'R', 'K', ' '), + KBTS_LANGUAGE_ARAKWAL = KBTS_FOURCC('R', 'K', 'W', ' '), + KBTS_LANGUAGE_ARMENIAN = KBTS_FOURCC('H', 'Y', 'E', ' '), + KBTS_LANGUAGE_ARMENIAN_EAST = KBTS_FOURCC('H', 'Y', 'E', '0'), + KBTS_LANGUAGE_AROMANIAN = KBTS_FOURCC('R', 'U', 'P', ' '), + KBTS_LANGUAGE_ARPITAN = KBTS_FOURCC('F', 'R', 'P', ' '), + KBTS_LANGUAGE_ASSAMESE = KBTS_FOURCC('A', 'S', 'M', ' '), + KBTS_LANGUAGE_ASTURIAN = KBTS_FOURCC('A', 'S', 'T', ' '), + KBTS_LANGUAGE_ATHAPASKAN = KBTS_FOURCC('A', 'T', 'H', ' '), + KBTS_LANGUAGE_ATSINA = KBTS_FOURCC('A', 'T', 'S', ' '), + KBTS_LANGUAGE_AVAR = KBTS_FOURCC('A', 'V', 'R', ' '), + KBTS_LANGUAGE_AVATIME = KBTS_FOURCC('A', 'V', 'N', ' '), + KBTS_LANGUAGE_AWADHI = KBTS_FOURCC('A', 'W', 'A', ' '), + KBTS_LANGUAGE_AYMARA = KBTS_FOURCC('A', 'Y', 'M', ' '), + KBTS_LANGUAGE_AZERBAIDJANI = KBTS_FOURCC('A', 'Z', 'E', ' '), + KBTS_LANGUAGE_BADAGA = KBTS_FOURCC('B', 'A', 'D', ' '), + KBTS_LANGUAGE_BAGHELKHANDI = KBTS_FOURCC('B', 'A', 'G', ' '), + KBTS_LANGUAGE_BAGRI = KBTS_FOURCC('B', 'G', 'Q', ' '), + KBTS_LANGUAGE_BALANTE = KBTS_FOURCC('B', 'L', 'N', ' '), + KBTS_LANGUAGE_BALINESE = KBTS_FOURCC('B', 'A', 'N', ' '), + KBTS_LANGUAGE_BALKAR = KBTS_FOURCC('B', 'A', 'L', ' '), + KBTS_LANGUAGE_BALTI = KBTS_FOURCC('B', 'L', 'T', ' '), + KBTS_LANGUAGE_BALUCHI = KBTS_FOURCC('B', 'L', 'I', ' '), + KBTS_LANGUAGE_BAMBARA = KBTS_FOURCC('B', 'M', 'B', ' '), + KBTS_LANGUAGE_BAMILEKE = KBTS_FOURCC('B', 'M', 'L', ' '), + KBTS_LANGUAGE_BANDA = KBTS_FOURCC('B', 'A', 'D', '0'), + KBTS_LANGUAGE_BANDJALANG = KBTS_FOURCC('B', 'D', 'Y', ' '), + KBTS_LANGUAGE_BANGLA = KBTS_FOURCC('B', 'E', 'N', ' '), + KBTS_LANGUAGE_BASHKIR = KBTS_FOURCC('B', 'S', 'H', ' '), + KBTS_LANGUAGE_BASQUE = KBTS_FOURCC('E', 'U', 'Q', ' '), + KBTS_LANGUAGE_BATAK = KBTS_FOURCC('B', 'T', 'K', ' '), + KBTS_LANGUAGE_BATAK_ALAS_KLUET = KBTS_FOURCC('B', 'T', 'Z', ' '), + KBTS_LANGUAGE_BATAK_ANGKOLA = KBTS_FOURCC('A', 'K', 'B', ' '), + KBTS_LANGUAGE_BATAK_DAIRI = KBTS_FOURCC('B', 'T', 'D', ' '), + KBTS_LANGUAGE_BATAK_KARO = KBTS_FOURCC('B', 'T', 'X', ' '), + KBTS_LANGUAGE_BATAK_MANDAILING = KBTS_FOURCC('B', 'T', 'M', ' '), + KBTS_LANGUAGE_BATAK_SIMALUNGUN = KBTS_FOURCC('B', 'T', 'S', ' '), + KBTS_LANGUAGE_BATAK_TOBA = KBTS_FOURCC('B', 'B', 'C', ' '), + KBTS_LANGUAGE_BAULE = KBTS_FOURCC('B', 'A', 'U', ' '), + KBTS_LANGUAGE_BAVARIAN = KBTS_FOURCC('B', 'A', 'R', ' '), + KBTS_LANGUAGE_BELARUSIAN = KBTS_FOURCC('B', 'E', 'L', ' '), + KBTS_LANGUAGE_BEMBA = KBTS_FOURCC('B', 'E', 'M', ' '), + KBTS_LANGUAGE_BENCH = KBTS_FOURCC('B', 'C', 'H', ' '), + KBTS_LANGUAGE_BERBER = KBTS_FOURCC('B', 'B', 'R', ' '), + KBTS_LANGUAGE_BETI = KBTS_FOURCC('B', 'T', 'I', ' '), + KBTS_LANGUAGE_BETTE_KURUMA = KBTS_FOURCC('X', 'U', 'B', ' '), + KBTS_LANGUAGE_BHILI = KBTS_FOURCC('B', 'H', 'I', ' '), + KBTS_LANGUAGE_BHOJPURI = KBTS_FOURCC('B', 'H', 'O', ' '), + KBTS_LANGUAGE_BHUTANESE = KBTS_FOURCC('D', 'Z', 'N', ' '), + KBTS_LANGUAGE_BIBLE_CREE = KBTS_FOURCC('B', 'C', 'R', ' '), + KBTS_LANGUAGE_BIKOL = KBTS_FOURCC('B', 'I', 'K', ' '), + KBTS_LANGUAGE_BILEN = KBTS_FOURCC('B', 'I', 'L', ' '), + KBTS_LANGUAGE_BISHNUPRIYA_MANIPURI = KBTS_FOURCC('B', 'P', 'Y', ' '), + KBTS_LANGUAGE_BISLAMA = KBTS_FOURCC('B', 'I', 'S', ' '), + KBTS_LANGUAGE_BLACKFOOT = KBTS_FOURCC('B', 'K', 'F', ' '), + KBTS_LANGUAGE_BODO = KBTS_FOURCC('B', 'R', 'X', ' '), + KBTS_LANGUAGE_BOSNIAN = KBTS_FOURCC('B', 'O', 'S', ' '), + KBTS_LANGUAGE_BOUYEI = KBTS_FOURCC('P', 'C', 'C', ' '), + KBTS_LANGUAGE_BRAHUI = KBTS_FOURCC('B', 'R', 'H', ' '), + KBTS_LANGUAGE_BRAJ_BHASHA = KBTS_FOURCC('B', 'R', 'I', ' '), + KBTS_LANGUAGE_BRETON = KBTS_FOURCC('B', 'R', 'E', ' '), + KBTS_LANGUAGE_BUGIS = KBTS_FOURCC('B', 'U', 'G', ' '), + KBTS_LANGUAGE_BULGARIAN = KBTS_FOURCC('B', 'G', 'R', ' '), + KBTS_LANGUAGE_BUMTHANGKHA = KBTS_FOURCC('K', 'J', 'Z', ' '), + KBTS_LANGUAGE_BURMESE = KBTS_FOURCC('B', 'R', 'M', ' '), + KBTS_LANGUAGE_BURUSHASKI = KBTS_FOURCC('B', 'S', 'K', ' '), + KBTS_LANGUAGE_CAJUN_FRENCH = KBTS_FOURCC('F', 'R', 'C', ' '), + KBTS_LANGUAGE_CARRIER = KBTS_FOURCC('C', 'R', 'R', ' '), + KBTS_LANGUAGE_CATALAN = KBTS_FOURCC('C', 'A', 'T', ' '), + KBTS_LANGUAGE_CAYUGA = KBTS_FOURCC('C', 'A', 'Y', ' '), + KBTS_LANGUAGE_CEBUANO = KBTS_FOURCC('C', 'E', 'B', ' '), + KBTS_LANGUAGE_CENTRAL_YUPIK = KBTS_FOURCC('E', 'S', 'U', ' '), + KBTS_LANGUAGE_CHAHA_GURAGE = KBTS_FOURCC('C', 'H', 'G', ' '), + KBTS_LANGUAGE_CHAMORRO = KBTS_FOURCC('C', 'H', 'A', ' '), + KBTS_LANGUAGE_CHATTISGARHI = KBTS_FOURCC('C', 'H', 'H', ' '), + KBTS_LANGUAGE_CHECHEN = KBTS_FOURCC('C', 'H', 'E', ' '), + KBTS_LANGUAGE_CHEROKEE = KBTS_FOURCC('C', 'H', 'R', ' '), + KBTS_LANGUAGE_CHEYENNE = KBTS_FOURCC('C', 'H', 'Y', ' '), + KBTS_LANGUAGE_CHICHEWA = KBTS_FOURCC('C', 'H', 'I', ' '), + KBTS_LANGUAGE_CHIGA = KBTS_FOURCC('C', 'G', 'G', ' '), + KBTS_LANGUAGE_CHIMILA = KBTS_FOURCC('C', 'B', 'G', ' '), + KBTS_LANGUAGE_CHIN = KBTS_FOURCC('Q', 'I', 'N', ' '), + KBTS_LANGUAGE_CHINANTEC = KBTS_FOURCC('C', 'C', 'H', 'N'), + KBTS_LANGUAGE_CHINESE_PHONETIC = KBTS_FOURCC('Z', 'H', 'P', ' '), + KBTS_LANGUAGE_CHINESE_SIMPLIFIED = KBTS_FOURCC('Z', 'H', 'S', ' '), + KBTS_LANGUAGE_CHINESE_TRADITIONAL = KBTS_FOURCC('Z', 'H', 'T', ' '), + KBTS_LANGUAGE_CHINESE_TRADITIONAL_HONG_KONG = KBTS_FOURCC('Z', 'H', 'H', ' '), + KBTS_LANGUAGE_CHINESE_TRADITIONAL_MACAO = KBTS_FOURCC('Z', 'H', 'T', 'M'), + KBTS_LANGUAGE_CHIPEWYAN = KBTS_FOURCC('C', 'H', 'P', ' '), + KBTS_LANGUAGE_CHITTAGONIAN = KBTS_FOURCC('C', 'T', 'G', ' '), + KBTS_LANGUAGE_CHOCTAW = KBTS_FOURCC('C', 'H', 'O', ' '), + KBTS_LANGUAGE_CHUKCHI = KBTS_FOURCC('C', 'H', 'K', ' '), + KBTS_LANGUAGE_CHURCH_SLAVONIC = KBTS_FOURCC('C', 'S', 'L', ' '), + KBTS_LANGUAGE_CHUUKESE = KBTS_FOURCC('C', 'H', 'K', '0'), + KBTS_LANGUAGE_CHUVASH = KBTS_FOURCC('C', 'H', 'U', ' '), + KBTS_LANGUAGE_COMORIAN = KBTS_FOURCC('C', 'M', 'R', ' '), + KBTS_LANGUAGE_COMOX = KBTS_FOURCC('C', 'O', 'O', ' '), + KBTS_LANGUAGE_COPTIC = KBTS_FOURCC('C', 'O', 'P', ' '), + KBTS_LANGUAGE_CORNISH = KBTS_FOURCC('C', 'O', 'R', ' '), + KBTS_LANGUAGE_CORSICAN = KBTS_FOURCC('C', 'O', 'S', ' '), + KBTS_LANGUAGE_CREE = KBTS_FOURCC('C', 'R', 'E', ' '), + KBTS_LANGUAGE_CREOLES = KBTS_FOURCC('C', 'P', 'P', ' '), + KBTS_LANGUAGE_CRIMEAN_TATAR = KBTS_FOURCC('C', 'R', 'T', ' '), + KBTS_LANGUAGE_CRIOULO = KBTS_FOURCC('K', 'E', 'A', ' '), + KBTS_LANGUAGE_CROATIAN = KBTS_FOURCC('H', 'R', 'V', ' '), + KBTS_LANGUAGE_CYPRIOT_ARABIC = KBTS_FOURCC('A', 'C', 'Y', ' '), + KBTS_LANGUAGE_CZECH = KBTS_FOURCC('C', 'S', 'Y', ' '), + KBTS_LANGUAGE_DAGBANI = KBTS_FOURCC('D', 'A', 'G', ' '), + KBTS_LANGUAGE_DAN = KBTS_FOURCC('D', 'N', 'J', ' '), + KBTS_LANGUAGE_DANGME = KBTS_FOURCC('D', 'N', 'G', ' '), + KBTS_LANGUAGE_DANISH = KBTS_FOURCC('D', 'A', 'N', ' '), + KBTS_LANGUAGE_DARGWA = KBTS_FOURCC('D', 'A', 'R', ' '), + KBTS_LANGUAGE_DARI = KBTS_FOURCC('D', 'R', 'I', ' '), + KBTS_LANGUAGE_DAYI = KBTS_FOURCC('D', 'A', 'X', ' '), + KBTS_LANGUAGE_DEFAULT = KBTS_FOURCC('d', 'f', 'l', 't'), // Can be DFLT too... + KBTS_LANGUAGE_DEHONG_DAI = KBTS_FOURCC('T', 'D', 'D', ' '), + KBTS_LANGUAGE_DHANGU = KBTS_FOURCC('D', 'H', 'G', ' '), + KBTS_LANGUAGE_DHIVEHI = KBTS_FOURCC('D', 'I', 'V', ' '), + KBTS_LANGUAGE_DHUWAL = KBTS_FOURCC('D', 'U', 'J', ' '), + KBTS_LANGUAGE_DIMLI = KBTS_FOURCC('D', 'I', 'Q', ' '), + KBTS_LANGUAGE_DINKA = KBTS_FOURCC('D', 'N', 'K', ' '), + KBTS_LANGUAGE_DIVEHI = KBTS_FOURCC('D', 'I', 'V', ' '), + KBTS_LANGUAGE_DJAMBARRPUYNGU = KBTS_FOURCC('D', 'J', 'R', '0'), + KBTS_LANGUAGE_DOGRI = KBTS_FOURCC('D', 'G', 'O', ' '), + KBTS_LANGUAGE_DOGRI_MACROLANGUAGE = KBTS_FOURCC('D', 'G', 'R', ' '), + KBTS_LANGUAGE_DUNGAN = KBTS_FOURCC('D', 'U', 'N', ' '), + KBTS_LANGUAGE_DUTCH = KBTS_FOURCC('N', 'L', 'D', ' '), + KBTS_LANGUAGE_DZONGKHA = KBTS_FOURCC('D', 'Z', 'N', ' '), + KBTS_LANGUAGE_EASTERN_ABENAKI = KBTS_FOURCC('A', 'A', 'Q', ' '), + KBTS_LANGUAGE_EASTERN_CHAM = KBTS_FOURCC('C', 'J', 'M', ' '), + KBTS_LANGUAGE_EASTERN_CREE = KBTS_FOURCC('E', 'C', 'R', ' '), + KBTS_LANGUAGE_EASTERN_MANINKAKAN = KBTS_FOURCC('E', 'M', 'K', ' '), + KBTS_LANGUAGE_EASTERN_PWO_KAREN = KBTS_FOURCC('K', 'J', 'P', ' '), + KBTS_LANGUAGE_EBIRA = KBTS_FOURCC('E', 'B', 'I', ' '), + KBTS_LANGUAGE_EDO = KBTS_FOURCC('E', 'D', 'O', ' '), + KBTS_LANGUAGE_EFIK = KBTS_FOURCC('E', 'F', 'I', ' '), + KBTS_LANGUAGE_EMBERA_BAUDO = KBTS_FOURCC('B', 'D', 'C', ' '), + KBTS_LANGUAGE_EMBERA_CATIO = KBTS_FOURCC('C', 'T', 'O', ' '), + KBTS_LANGUAGE_EMBERA_CHAMI = KBTS_FOURCC('C', 'M', 'I', ' '), + KBTS_LANGUAGE_EMBERA_TADO = KBTS_FOURCC('T', 'D', 'C', ' '), + KBTS_LANGUAGE_ENGLISH = KBTS_FOURCC('E', 'N', 'G', ' '), + KBTS_LANGUAGE_EPENA = KBTS_FOURCC('S', 'J', 'A', ' '), + KBTS_LANGUAGE_ERZYA = KBTS_FOURCC('E', 'R', 'Z', ' '), + KBTS_LANGUAGE_KB_TEXT_SHAPEANTO = KBTS_FOURCC('N', 'T', 'O', ' '), + KBTS_LANGUAGE_ESTONIAN = KBTS_FOURCC('E', 'T', 'I', ' '), + KBTS_LANGUAGE_EVEN = KBTS_FOURCC('E', 'V', 'N', ' '), + KBTS_LANGUAGE_EVENKI = KBTS_FOURCC('E', 'V', 'K', ' '), + KBTS_LANGUAGE_EWE = KBTS_FOURCC('E', 'W', 'E', ' '), + KBTS_LANGUAGE_FALAM_CHIN = KBTS_FOURCC('H', 'A', 'L', ' '), + KBTS_LANGUAGE_FANG = KBTS_FOURCC('F', 'A', 'N', '0'), + KBTS_LANGUAGE_FANTI = KBTS_FOURCC('F', 'A', 'T', ' '), + KBTS_LANGUAGE_FAROESE = KBTS_FOURCC('F', 'O', 'S', ' '), + KBTS_LANGUAGE_FEFE = KBTS_FOURCC('F', 'M', 'P', ' '), + KBTS_LANGUAGE_FIJIAN = KBTS_FOURCC('F', 'J', 'I', ' '), + KBTS_LANGUAGE_FILIPINO = KBTS_FOURCC('P', 'I', 'L', ' '), + KBTS_LANGUAGE_FINNISH = KBTS_FOURCC('F', 'I', 'N', ' '), + KBTS_LANGUAGE_FLEMISH = KBTS_FOURCC('F', 'L', 'E', ' '), + KBTS_LANGUAGE_FON = KBTS_FOURCC('F', 'O', 'N', ' '), + KBTS_LANGUAGE_FOREST_ENETS = KBTS_FOURCC('F', 'N', 'E', ' '), + KBTS_LANGUAGE_FRENCH = KBTS_FOURCC('F', 'R', 'A', ' '), + KBTS_LANGUAGE_FRENCH_ANTILLEAN = KBTS_FOURCC('F', 'A', 'N', ' '), + KBTS_LANGUAGE_FRISIAN = KBTS_FOURCC('F', 'R', 'I', ' '), + KBTS_LANGUAGE_FRIULIAN = KBTS_FOURCC('F', 'R', 'L', ' '), + KBTS_LANGUAGE_FULAH = KBTS_FOURCC('F', 'U', 'L', ' '), + KBTS_LANGUAGE_FUTA = KBTS_FOURCC('F', 'T', 'A', ' '), + KBTS_LANGUAGE_GA = KBTS_FOURCC('G', 'A', 'D', ' '), + KBTS_LANGUAGE_GAGAUZ = KBTS_FOURCC('G', 'A', 'G', ' '), + KBTS_LANGUAGE_GALICIAN = KBTS_FOURCC('G', 'A', 'L', ' '), + KBTS_LANGUAGE_GANDA = KBTS_FOURCC('L', 'U', 'G', ' '), + KBTS_LANGUAGE_GARHWALI = KBTS_FOURCC('G', 'A', 'W', ' '), + KBTS_LANGUAGE_GARO = KBTS_FOURCC('G', 'R', 'O', ' '), + KBTS_LANGUAGE_GARSHUNI = KBTS_FOURCC('G', 'A', 'R', ' '), + KBTS_LANGUAGE_GEBA_KAREN = KBTS_FOURCC('K', 'V', 'Q', ' '), + KBTS_LANGUAGE_GEEZ = KBTS_FOURCC('G', 'E', 'Z', ' '), + KBTS_LANGUAGE_GEORGIAN = KBTS_FOURCC('K', 'A', 'T', ' '), + KBTS_LANGUAGE_GEPO = KBTS_FOURCC('Y', 'G', 'P', ' '), + KBTS_LANGUAGE_GERMAN = KBTS_FOURCC('D', 'E', 'U', ' '), + KBTS_LANGUAGE_GIKUYU = KBTS_FOURCC('K', 'I', 'K', ' '), + KBTS_LANGUAGE_GILAKI = KBTS_FOURCC('G', 'L', 'K', ' '), + KBTS_LANGUAGE_GILBERTESE = KBTS_FOURCC('G', 'I', 'L', '0'), + KBTS_LANGUAGE_GILYAK = KBTS_FOURCC('G', 'I', 'L', ' '), + KBTS_LANGUAGE_GITHABUL = KBTS_FOURCC('G', 'I', 'H', ' '), + KBTS_LANGUAGE_GOGO = KBTS_FOURCC('G', 'O', 'G', ' '), + KBTS_LANGUAGE_GONDI = KBTS_FOURCC('G', 'O', 'N', ' '), + KBTS_LANGUAGE_GREEK = KBTS_FOURCC('E', 'L', 'L', ' '), + KBTS_LANGUAGE_GREENLANDIC = KBTS_FOURCC('G', 'R', 'N', ' '), + KBTS_LANGUAGE_GUARANI = KBTS_FOURCC('G', 'U', 'A', ' '), + KBTS_LANGUAGE_GUINEA = KBTS_FOURCC('G', 'K', 'P', ' '), + KBTS_LANGUAGE_GUJARATI = KBTS_FOURCC('G', 'U', 'J', ' '), + KBTS_LANGUAGE_GUMATJ = KBTS_FOURCC('G', 'N', 'N', ' '), + KBTS_LANGUAGE_GUMUZ = KBTS_FOURCC('G', 'M', 'Z', ' '), + KBTS_LANGUAGE_GUPAPUYNGU = KBTS_FOURCC('G', 'U', 'F', ' '), + KBTS_LANGUAGE_GUSII = KBTS_FOURCC('G', 'U', 'Z', ' '), + KBTS_LANGUAGE_HAIDA = KBTS_FOURCC('H', 'A', 'I', '0'), + KBTS_LANGUAGE_HAITIAN_CREOLE = KBTS_FOURCC('H', 'A', 'I', ' '), + KBTS_LANGUAGE_HALKOMELEM = KBTS_FOURCC('H', 'U', 'R', ' '), + KBTS_LANGUAGE_HAMMER_BANNA = KBTS_FOURCC('H', 'B', 'N', ' '), + KBTS_LANGUAGE_HARARI = KBTS_FOURCC('H', 'R', 'I', ' '), + KBTS_LANGUAGE_HARAUTI = KBTS_FOURCC('H', 'A', 'R', ' '), + KBTS_LANGUAGE_HARYANVI = KBTS_FOURCC('B', 'G', 'C', ' '), + KBTS_LANGUAGE_HAUSA = KBTS_FOURCC('H', 'A', 'U', ' '), + KBTS_LANGUAGE_HAVASUPAI_WALAPAI_YAVAPAI = KBTS_FOURCC('Y', 'U', 'F', ' '), + KBTS_LANGUAGE_HAWAIIAN = KBTS_FOURCC('H', 'A', 'W', ' '), + KBTS_LANGUAGE_HAYA = KBTS_FOURCC('H', 'A', 'Y', ' '), + KBTS_LANGUAGE_HAZARAGI = KBTS_FOURCC('H', 'A', 'Z', ' '), + KBTS_LANGUAGE_HEBREW = KBTS_FOURCC('I', 'W', 'R', ' '), + KBTS_LANGUAGE_HEILTSUK = KBTS_FOURCC('H', 'E', 'I', ' '), + KBTS_LANGUAGE_HERERO = KBTS_FOURCC('H', 'E', 'R', ' '), + KBTS_LANGUAGE_HIGH_MARI = KBTS_FOURCC('H', 'M', 'A', ' '), + KBTS_LANGUAGE_HILIGAYNON = KBTS_FOURCC('H', 'I', 'L', ' '), + KBTS_LANGUAGE_HINDI = KBTS_FOURCC('H', 'I', 'N', ' '), + KBTS_LANGUAGE_HINDKO = KBTS_FOURCC('H', 'N', 'D', ' '), + KBTS_LANGUAGE_HIRI_MOTU = KBTS_FOURCC('H', 'M', 'O', ' '), + KBTS_LANGUAGE_HMONG = KBTS_FOURCC('H', 'M', 'N', ' '), + KBTS_LANGUAGE_HMONG_DAW = KBTS_FOURCC('M', 'W', 'W', ' '), + KBTS_LANGUAGE_HMONG_SHUAT = KBTS_FOURCC('H', 'M', 'Z', ' '), + KBTS_LANGUAGE_HO = KBTS_FOURCC('H', 'O', ' ', ' '), + KBTS_LANGUAGE_HUNGARIAN = KBTS_FOURCC('H', 'U', 'N', ' '), + KBTS_LANGUAGE_IBAN = KBTS_FOURCC('I', 'B', 'A', ' '), + KBTS_LANGUAGE_IBIBIO = KBTS_FOURCC('I', 'B', 'B', ' '), + KBTS_LANGUAGE_ICELANDIC = KBTS_FOURCC('I', 'S', 'L', ' '), + KBTS_LANGUAGE_IDO = KBTS_FOURCC('I', 'D', 'O', ' '), + KBTS_LANGUAGE_IGBO = KBTS_FOURCC('I', 'B', 'O', ' '), + KBTS_LANGUAGE_IJO = KBTS_FOURCC('I', 'J', 'O', ' '), + KBTS_LANGUAGE_ILOKANO = KBTS_FOURCC('I', 'L', 'O', ' '), + KBTS_LANGUAGE_INARI_SAMI = KBTS_FOURCC('I', 'S', 'M', ' '), + KBTS_LANGUAGE_INDONESIAN = KBTS_FOURCC('I', 'N', 'D', ' '), + KBTS_LANGUAGE_INGUSH = KBTS_FOURCC('I', 'N', 'G', ' '), + KBTS_LANGUAGE_INTERLINGUA = KBTS_FOURCC('I', 'N', 'A', ' '), + KBTS_LANGUAGE_INTERLINGUE = KBTS_FOURCC('I', 'L', 'E', ' '), + KBTS_LANGUAGE_INUKTITUT = KBTS_FOURCC('I', 'N', 'U', ' '), + KBTS_LANGUAGE_INUPIAT = KBTS_FOURCC('I', 'P', 'K', ' '), + KBTS_LANGUAGE_IPA_PHONETIC = KBTS_FOURCC('I', 'P', 'P', ' '), + KBTS_LANGUAGE_IRISH = KBTS_FOURCC('I', 'R', 'I', ' '), + KBTS_LANGUAGE_IRISH_TRADITIONAL = KBTS_FOURCC('I', 'R', 'T', ' '), + KBTS_LANGUAGE_IRULA = KBTS_FOURCC('I', 'R', 'U', ' '), + KBTS_LANGUAGE_ITALIAN = KBTS_FOURCC('I', 'T', 'A', ' '), + KBTS_LANGUAGE_JAMAICAN_CREOLE = KBTS_FOURCC('J', 'A', 'M', ' '), + KBTS_LANGUAGE_JAPANESE = KBTS_FOURCC('J', 'A', 'N', ' '), + KBTS_LANGUAGE_JAVANESE = KBTS_FOURCC('J', 'A', 'V', ' '), + KBTS_LANGUAGE_JENNU_KURUMA = KBTS_FOURCC('X', 'U', 'J', ' '), + KBTS_LANGUAGE_JUDEO_TAT = KBTS_FOURCC('J', 'D', 'T', ' '), + KBTS_LANGUAGE_JULA = KBTS_FOURCC('J', 'U', 'L', ' '), + KBTS_LANGUAGE_KABARDIAN = KBTS_FOURCC('K', 'A', 'B', ' '), + KBTS_LANGUAGE_KABYLE = KBTS_FOURCC('K', 'A', 'B', '0'), + KBTS_LANGUAGE_KACHCHI = KBTS_FOURCC('K', 'A', 'C', ' '), + KBTS_LANGUAGE_KADIWEU = KBTS_FOURCC('K', 'B', 'C', ' '), + KBTS_LANGUAGE_KALENJIN = KBTS_FOURCC('K', 'A', 'L', ' '), + KBTS_LANGUAGE_KALMYK = KBTS_FOURCC('K', 'L', 'M', ' '), + KBTS_LANGUAGE_KAMBA = KBTS_FOURCC('K', 'M', 'B', ' '), + KBTS_LANGUAGE_KANAUJI = KBTS_FOURCC('B', 'J', 'J', ' '), + KBTS_LANGUAGE_KANNADA = KBTS_FOURCC('K', 'A', 'N', ' '), + KBTS_LANGUAGE_KANURI = KBTS_FOURCC('K', 'N', 'R', ' '), + KBTS_LANGUAGE_KAQCHIKEL = KBTS_FOURCC('C', 'A', 'K', ' '), + KBTS_LANGUAGE_KARACHAY = KBTS_FOURCC('K', 'A', 'R', ' '), + KBTS_LANGUAGE_KARAIM = KBTS_FOURCC('K', 'R', 'M', ' '), + KBTS_LANGUAGE_KARAKALPAK = KBTS_FOURCC('K', 'R', 'K', ' '), + KBTS_LANGUAGE_KARELIAN = KBTS_FOURCC('K', 'R', 'L', ' '), + KBTS_LANGUAGE_KAREN = KBTS_FOURCC('K', 'R', 'N', ' '), + KBTS_LANGUAGE_KASHMIRI = KBTS_FOURCC('K', 'S', 'H', ' '), + KBTS_LANGUAGE_KASHUBIAN = KBTS_FOURCC('C', 'S', 'B', ' '), + KBTS_LANGUAGE_KATE = KBTS_FOURCC('K', 'M', 'G', ' '), + KBTS_LANGUAGE_KAZAKH = KBTS_FOURCC('K', 'A', 'Z', ' '), + KBTS_LANGUAGE_KEBENA = KBTS_FOURCC('K', 'E', 'B', ' '), + KBTS_LANGUAGE_KEKCHI = KBTS_FOURCC('K', 'E', 'K', ' '), + KBTS_LANGUAGE_KHAKASS = KBTS_FOURCC('K', 'H', 'A', ' '), + KBTS_LANGUAGE_KHAMTI_SHAN = KBTS_FOURCC('K', 'H', 'T', ' '), + KBTS_LANGUAGE_KHAMYANG = KBTS_FOURCC('K', 'S', 'U', ' '), + KBTS_LANGUAGE_KHANTY_KAZIM = KBTS_FOURCC('K', 'H', 'K', ' '), + KBTS_LANGUAGE_KHANTY_SHURISHKAR = KBTS_FOURCC('K', 'H', 'S', ' '), + KBTS_LANGUAGE_KHANTY_VAKHI = KBTS_FOURCC('K', 'H', 'V', ' '), + KBTS_LANGUAGE_KHASI = KBTS_FOURCC('K', 'S', 'I', ' '), + KBTS_LANGUAGE_KHENGKHA = KBTS_FOURCC('X', 'K', 'F', ' '), + KBTS_LANGUAGE_KHINALUG = KBTS_FOURCC('K', 'J', 'J', ' '), + KBTS_LANGUAGE_KHMER = KBTS_FOURCC('K', 'H', 'M', ' '), + KBTS_LANGUAGE_KHORASANI_TURKIC = KBTS_FOURCC('K', 'M', 'Z', ' '), + KBTS_LANGUAGE_KHOWAR = KBTS_FOURCC('K', 'H', 'W', ' '), + KBTS_LANGUAGE_KHUTSURI_GEORGIAN = KBTS_FOURCC('K', 'G', 'E', ' '), + KBTS_LANGUAGE_KICHE = KBTS_FOURCC('Q', 'U', 'C', ' '), + KBTS_LANGUAGE_KIKONGO = KBTS_FOURCC('K', 'O', 'N', ' '), + KBTS_LANGUAGE_KILDIN_SAMI = KBTS_FOURCC('K', 'S', 'M', ' '), + KBTS_LANGUAGE_KINYARWANDA = KBTS_FOURCC('R', 'U', 'A', ' '), + KBTS_LANGUAGE_KIRMANJKI = KBTS_FOURCC('K', 'I', 'U', ' '), + KBTS_LANGUAGE_KISII = KBTS_FOURCC('K', 'I', 'S', ' '), + KBTS_LANGUAGE_KITUBA = KBTS_FOURCC('M', 'K', 'W', ' '), + KBTS_LANGUAGE_KODAGU = KBTS_FOURCC('K', 'O', 'D', ' '), + KBTS_LANGUAGE_KOKNI = KBTS_FOURCC('K', 'K', 'N', ' '), + KBTS_LANGUAGE_KOMI = KBTS_FOURCC('K', 'O', 'M', ' '), + KBTS_LANGUAGE_KOMI_PERMYAK = KBTS_FOURCC('K', 'O', 'P', ' '), + KBTS_LANGUAGE_KOMI_ZYRIAN = KBTS_FOURCC('K', 'O', 'Z', ' '), + KBTS_LANGUAGE_KOMO = KBTS_FOURCC('K', 'M', 'O', ' '), + KBTS_LANGUAGE_KOMSO = KBTS_FOURCC('K', 'M', 'S', ' '), + KBTS_LANGUAGE_KONGO = KBTS_FOURCC('K', 'O', 'N', '0'), + KBTS_LANGUAGE_KONKANI = KBTS_FOURCC('K', 'O', 'K', ' '), + KBTS_LANGUAGE_KOORETE = KBTS_FOURCC('K', 'R', 'T', ' '), + KBTS_LANGUAGE_KOREAN = KBTS_FOURCC('K', 'O', 'R', ' '), + KBTS_LANGUAGE_KOREAO_OLD_HANGUL = KBTS_FOURCC('K', 'O', 'H', ' '), + KBTS_LANGUAGE_KORYAK = KBTS_FOURCC('K', 'Y', 'K', ' '), + KBTS_LANGUAGE_KOSRAEAN = KBTS_FOURCC('K', 'O', 'S', ' '), + KBTS_LANGUAGE_KPELLE = KBTS_FOURCC('K', 'P', 'L', ' '), + KBTS_LANGUAGE_KPELLE_LIBERIA = KBTS_FOURCC('X', 'P', 'E', ' '), + KBTS_LANGUAGE_KRIO = KBTS_FOURCC('K', 'R', 'I', ' '), + KBTS_LANGUAGE_KRYMCHAK = KBTS_FOURCC('J', 'C', 'T', ' '), + KBTS_LANGUAGE_KUANYAMA = KBTS_FOURCC('K', 'U', 'A', ' '), + KBTS_LANGUAGE_KUBE = KBTS_FOURCC('K', 'G', 'F', ' '), + KBTS_LANGUAGE_KUI = KBTS_FOURCC('K', 'U', 'I', ' '), + KBTS_LANGUAGE_KULVI = KBTS_FOURCC('K', 'U', 'K', ' '), + KBTS_LANGUAGE_KUMAONI = KBTS_FOURCC('K', 'M', 'N', ' '), + KBTS_LANGUAGE_KUMYK = KBTS_FOURCC('K', 'U', 'M', ' '), + KBTS_LANGUAGE_KURDISH = KBTS_FOURCC('K', 'U', 'R', ' '), + KBTS_LANGUAGE_KURUKH = KBTS_FOURCC('K', 'U', 'U', ' '), + KBTS_LANGUAGE_KUY = KBTS_FOURCC('K', 'U', 'Y', ' '), + KBTS_LANGUAGE_KWAKWALA = KBTS_FOURCC('K', 'W', 'K', ' '), + KBTS_LANGUAGE_KYRGYZ = KBTS_FOURCC('K', 'I', 'R', ' '), + KBTS_LANGUAGE_L_CREE = KBTS_FOURCC('L', 'C', 'R', ' '), + KBTS_LANGUAGE_LADAKHI = KBTS_FOURCC('L', 'D', 'K', ' '), + KBTS_LANGUAGE_LADIN = KBTS_FOURCC('L', 'A', 'D', ' '), + KBTS_LANGUAGE_LADINO = KBTS_FOURCC('J', 'U', 'D', ' '), + KBTS_LANGUAGE_LAHULI = KBTS_FOURCC('L', 'A', 'H', ' '), + KBTS_LANGUAGE_LAK = KBTS_FOURCC('L', 'A', 'K', ' '), + KBTS_LANGUAGE_LAKI = KBTS_FOURCC('L', 'K', 'I', ' '), + KBTS_LANGUAGE_LAMBANI = KBTS_FOURCC('L', 'A', 'M', ' '), + KBTS_LANGUAGE_LAMPUNG = KBTS_FOURCC('L', 'J', 'P', ' '), + KBTS_LANGUAGE_LAO = KBTS_FOURCC('L', 'A', 'O', ' '), + KBTS_LANGUAGE_LATIN = KBTS_FOURCC('L', 'A', 'T', ' '), + KBTS_LANGUAGE_LATVIAN = KBTS_FOURCC('L', 'V', 'I', ' '), + KBTS_LANGUAGE_LAZ = KBTS_FOURCC('L', 'A', 'Z', ' '), + KBTS_LANGUAGE_LELEMI = KBTS_FOURCC('L', 'E', 'F', ' '), + KBTS_LANGUAGE_LEZGI = KBTS_FOURCC('L', 'E', 'Z', ' '), + KBTS_LANGUAGE_LIGURIAN = KBTS_FOURCC('L', 'I', 'J', ' '), + KBTS_LANGUAGE_LIMBU = KBTS_FOURCC('L', 'M', 'B', ' '), + KBTS_LANGUAGE_LIMBURGISH = KBTS_FOURCC('L', 'I', 'M', ' '), + KBTS_LANGUAGE_LINGALA = KBTS_FOURCC('L', 'I', 'N', ' '), + KBTS_LANGUAGE_LIPO = KBTS_FOURCC('L', 'P', 'O', ' '), + KBTS_LANGUAGE_LISU = KBTS_FOURCC('L', 'I', 'S', ' '), + KBTS_LANGUAGE_LITHUANIAN = KBTS_FOURCC('L', 'T', 'H', ' '), + KBTS_LANGUAGE_LIV = KBTS_FOURCC('L', 'I', 'V', ' '), + KBTS_LANGUAGE_LOJBAN = KBTS_FOURCC('J', 'B', 'O', ' '), + KBTS_LANGUAGE_LOMA = KBTS_FOURCC('L', 'O', 'M', ' '), + KBTS_LANGUAGE_LOMBARD = KBTS_FOURCC('L', 'M', 'O', ' '), + KBTS_LANGUAGE_LOMWE = KBTS_FOURCC('L', 'M', 'W', ' '), + KBTS_LANGUAGE_LOW_MARI = KBTS_FOURCC('L', 'M', 'A', ' '), + KBTS_LANGUAGE_LOW_SAXON = KBTS_FOURCC('N', 'D', 'S', ' '), + KBTS_LANGUAGE_LOWER_SORBIAN = KBTS_FOURCC('L', 'S', 'B', ' '), + KBTS_LANGUAGE_LU = KBTS_FOURCC('X', 'B', 'D', ' '), + KBTS_LANGUAGE_LUBA_KATANGA = KBTS_FOURCC('L', 'U', 'B', ' '), + KBTS_LANGUAGE_LUBA_LULUA = KBTS_FOURCC('L', 'U', 'A', ' '), + KBTS_LANGUAGE_LULE_SAMI = KBTS_FOURCC('L', 'S', 'M', ' '), + KBTS_LANGUAGE_LUO = KBTS_FOURCC('L', 'U', 'O', ' '), + KBTS_LANGUAGE_LURI = KBTS_FOURCC('L', 'R', 'C', ' '), + KBTS_LANGUAGE_LUSHOOTSEED = KBTS_FOURCC('L', 'U', 'T', ' '), + KBTS_LANGUAGE_LUXEMBOURGISH = KBTS_FOURCC('L', 'T', 'Z', ' '), + KBTS_LANGUAGE_LUYIA = KBTS_FOURCC('L', 'U', 'H', ' '), + KBTS_LANGUAGE_MACEDONIAN = KBTS_FOURCC('M', 'K', 'D', ' '), + KBTS_LANGUAGE_MADURA = KBTS_FOURCC('M', 'A', 'D', ' '), + KBTS_LANGUAGE_MAGAHI = KBTS_FOURCC('M', 'A', 'G', ' '), + KBTS_LANGUAGE_MAITHILI = KBTS_FOURCC('M', 'T', 'H', ' '), + KBTS_LANGUAGE_MAJANG = KBTS_FOURCC('M', 'A', 'J', ' '), + KBTS_LANGUAGE_MAKASAR = KBTS_FOURCC('M', 'K', 'R', ' '), + KBTS_LANGUAGE_MAKHUWA = KBTS_FOURCC('M', 'A', 'K', ' '), + KBTS_LANGUAGE_MAKONDE = KBTS_FOURCC('K', 'D', 'E', ' '), + KBTS_LANGUAGE_MALAGASY = KBTS_FOURCC('M', 'L', 'G', ' '), + KBTS_LANGUAGE_MALAY = KBTS_FOURCC('M', 'L', 'Y', ' '), + KBTS_LANGUAGE_MALAYALAM = KBTS_FOURCC('M', 'A', 'L', ' '), + KBTS_LANGUAGE_MALAYALAM_REFORMED = KBTS_FOURCC('M', 'L', 'R', ' '), + KBTS_LANGUAGE_MALE = KBTS_FOURCC('M', 'L', 'E', ' '), + KBTS_LANGUAGE_MALINKE = KBTS_FOURCC('M', 'L', 'N', ' '), + KBTS_LANGUAGE_MALTESE = KBTS_FOURCC('M', 'T', 'S', ' '), + KBTS_LANGUAGE_MAM = KBTS_FOURCC('M', 'A', 'M', ' '), + KBTS_LANGUAGE_MANCHU = KBTS_FOURCC('M', 'C', 'H', ' '), + KBTS_LANGUAGE_MANDAR = KBTS_FOURCC('M', 'D', 'R', ' '), + KBTS_LANGUAGE_MANDINKA = KBTS_FOURCC('M', 'N', 'D', ' '), + KBTS_LANGUAGE_MANINKA = KBTS_FOURCC('M', 'N', 'K', ' '), + KBTS_LANGUAGE_MANIPURI = KBTS_FOURCC('M', 'N', 'I', ' '), + KBTS_LANGUAGE_MANO = KBTS_FOURCC('M', 'E', 'V', ' '), + KBTS_LANGUAGE_MANSI = KBTS_FOURCC('M', 'A', 'N', ' '), + KBTS_LANGUAGE_MANX = KBTS_FOURCC('M', 'N', 'X', ' '), + KBTS_LANGUAGE_MAORI = KBTS_FOURCC('M', 'R', 'I', ' '), + KBTS_LANGUAGE_MAPUDUNGUN = KBTS_FOURCC('M', 'A', 'P', ' '), + KBTS_LANGUAGE_MARATHI = KBTS_FOURCC('M', 'A', 'R', ' '), + KBTS_LANGUAGE_MARSHALLESE = KBTS_FOURCC('M', 'A', 'H', ' '), + KBTS_LANGUAGE_MARWARI = KBTS_FOURCC('M', 'A', 'W', ' '), + KBTS_LANGUAGE_MAYAN = KBTS_FOURCC('M', 'Y', 'N', ' '), + KBTS_LANGUAGE_MAZANDERANI = KBTS_FOURCC('M', 'Z', 'N', ' '), + KBTS_LANGUAGE_MBEMBE_TIGON = KBTS_FOURCC('N', 'Z', 'A', ' '), + KBTS_LANGUAGE_MBO = KBTS_FOURCC('M', 'B', 'O', ' '), + KBTS_LANGUAGE_MBUNDU = KBTS_FOURCC('M', 'B', 'N', ' '), + KBTS_LANGUAGE_MEDUMBA = KBTS_FOURCC('B', 'Y', 'V', ' '), + KBTS_LANGUAGE_MEEN = KBTS_FOURCC('M', 'E', 'N', ' '), + KBTS_LANGUAGE_MENDE = KBTS_FOURCC('M', 'D', 'E', ' '), + KBTS_LANGUAGE_MERU = KBTS_FOURCC('M', 'E', 'R', ' '), + KBTS_LANGUAGE_MEWATI = KBTS_FOURCC('W', 'T', 'M', ' '), + KBTS_LANGUAGE_MINANGKABAU = KBTS_FOURCC('M', 'I', 'N', ' '), + KBTS_LANGUAGE_MINJANGBAL = KBTS_FOURCC('X', 'J', 'B', ' '), + KBTS_LANGUAGE_MIRANDESE = KBTS_FOURCC('M', 'W', 'L', ' '), + KBTS_LANGUAGE_MIZO = KBTS_FOURCC('M', 'I', 'Z', ' '), + KBTS_LANGUAGE_MOHAWK = KBTS_FOURCC('M', 'O', 'H', ' '), + KBTS_LANGUAGE_MOKSHA = KBTS_FOURCC('M', 'O', 'K', ' '), + KBTS_LANGUAGE_MOLDAVIAN = KBTS_FOURCC('M', 'O', 'L', ' '), + KBTS_LANGUAGE_MON = KBTS_FOURCC('M', 'O', 'N', ' '), + KBTS_LANGUAGE_MONGOLIAN = KBTS_FOURCC('M', 'N', 'G', ' '), + KBTS_LANGUAGE_MOOSE_CREE = KBTS_FOURCC('M', 'C', 'R', ' '), + KBTS_LANGUAGE_MORISYEN = KBTS_FOURCC('M', 'F', 'E', ' '), + KBTS_LANGUAGE_MOROCCAN = KBTS_FOURCC('M', 'O', 'R', ' '), + KBTS_LANGUAGE_MOSSI = KBTS_FOURCC('M', 'P', 'S', ' '), + KBTS_LANGUAGE_MUNDARI = KBTS_FOURCC('M', 'U', 'N', ' '), + KBTS_LANGUAGE_MUSCOGEE = KBTS_FOURCC('M', 'U', 'S', ' '), + KBTS_LANGUAGE_N_CREE = KBTS_FOURCC('N', 'C', 'R', ' '), + KBTS_LANGUAGE_NAGA_ASSAMESE = KBTS_FOURCC('N', 'A', 'G', ' '), + KBTS_LANGUAGE_NAGARI = KBTS_FOURCC('N', 'G', 'R', ' '), + KBTS_LANGUAGE_NAHUATL = KBTS_FOURCC('N', 'A', 'H', ' '), + KBTS_LANGUAGE_NANAI = KBTS_FOURCC('N', 'A', 'N', ' '), + KBTS_LANGUAGE_NASKAPI = KBTS_FOURCC('N', 'A', 'S', ' '), + KBTS_LANGUAGE_NAURUAN = KBTS_FOURCC('N', 'A', 'U', ' '), + KBTS_LANGUAGE_NAVAJO = KBTS_FOURCC('N', 'A', 'V', ' '), + KBTS_LANGUAGE_NDAU = KBTS_FOURCC('N', 'D', 'C', ' '), + KBTS_LANGUAGE_NDEBELE = KBTS_FOURCC('N', 'D', 'B', ' '), + KBTS_LANGUAGE_NDONGA = KBTS_FOURCC('N', 'D', 'G', ' '), + KBTS_LANGUAGE_NEAPOLITAN = KBTS_FOURCC('N', 'A', 'P', ' '), + KBTS_LANGUAGE_NEPALI = KBTS_FOURCC('N', 'E', 'P', ' '), + KBTS_LANGUAGE_NEWARI = KBTS_FOURCC('N', 'E', 'W', ' '), + KBTS_LANGUAGE_NGBAKA = KBTS_FOURCC('N', 'G', 'A', ' '), + KBTS_LANGUAGE_NIGERIAN_FULFULDE = KBTS_FOURCC('F', 'U', 'V', ' '), + KBTS_LANGUAGE_NIMADI = KBTS_FOURCC('N', 'O', 'E', ' '), + KBTS_LANGUAGE_NISI = KBTS_FOURCC('N', 'I', 'S', ' '), + KBTS_LANGUAGE_NIUEAN = KBTS_FOURCC('N', 'I', 'U', ' '), + KBTS_LANGUAGE_NKO = KBTS_FOURCC('N', 'K', 'O', ' '), + KBTS_LANGUAGE_NOGAI = KBTS_FOURCC('N', 'O', 'G', ' '), + KBTS_LANGUAGE_NORFOLK = KBTS_FOURCC('P', 'I', 'H', ' '), + KBTS_LANGUAGE_NORTH_SLAVEY = KBTS_FOURCC('S', 'C', 'S', ' '), + KBTS_LANGUAGE_NORTHERN_EMBERA = KBTS_FOURCC('E', 'M', 'P', ' '), + KBTS_LANGUAGE_NORTHERN_SAMI = KBTS_FOURCC('N', 'S', 'M', ' '), + KBTS_LANGUAGE_NORTHERN_SOTHO = KBTS_FOURCC('N', 'S', 'O', ' '), + KBTS_LANGUAGE_NORTHERN_TAI = KBTS_FOURCC('N', 'T', 'A', ' '), + KBTS_LANGUAGE_NORWAY_HOUSE_CREE = KBTS_FOURCC('N', 'H', 'C', ' '), + KBTS_LANGUAGE_NORWEGIAN = KBTS_FOURCC('N', 'O', 'R', ' '), + KBTS_LANGUAGE_NORWEGIAN_NYNORSK = KBTS_FOURCC('N', 'Y', 'N', ' '), + KBTS_LANGUAGE_NOVIAL = KBTS_FOURCC('N', 'O', 'V', ' '), + KBTS_LANGUAGE_NUMANGGANG = KBTS_FOURCC('N', 'O', 'P', ' '), + KBTS_LANGUAGE_NUNAVIK_INUKTITUT = KBTS_FOURCC('I', 'N', 'U', ' '), + KBTS_LANGUAGE_NUU_CHAH_NULTH = KBTS_FOURCC('N', 'U', 'K', ' '), + KBTS_LANGUAGE_NYAMWEZI = KBTS_FOURCC('N', 'Y', 'M', ' '), + KBTS_LANGUAGE_NYANKOLE = KBTS_FOURCC('N', 'K', 'L', ' '), + KBTS_LANGUAGE_OCCITAN = KBTS_FOURCC('O', 'C', 'I', ' '), + KBTS_LANGUAGE_ODIA = KBTS_FOURCC('O', 'R', 'I', ' '), + KBTS_LANGUAGE_OJI_CREE = KBTS_FOURCC('O', 'C', 'R', ' '), + KBTS_LANGUAGE_OJIBWAY = KBTS_FOURCC('O', 'J', 'B', ' '), + KBTS_LANGUAGE_OLD_IRISH = KBTS_FOURCC('S', 'G', 'A', ' '), + KBTS_LANGUAGE_OLD_JAVANESE = KBTS_FOURCC('K', 'A', 'W', ' '), + KBTS_LANGUAGE_ONEIDA = KBTS_FOURCC('O', 'N', 'E', ' '), + KBTS_LANGUAGE_ONONDAGA = KBTS_FOURCC('O', 'N', 'O', ' '), + KBTS_LANGUAGE_OROMO = KBTS_FOURCC('O', 'R', 'O', ' '), + KBTS_LANGUAGE_OSSETIAN = KBTS_FOURCC('O', 'S', 'S', ' '), + KBTS_LANGUAGE_PA_O_KAREN = KBTS_FOURCC('B', 'L', 'K', ' '), + KBTS_LANGUAGE_PALAUAN = KBTS_FOURCC('P', 'A', 'U', ' '), + KBTS_LANGUAGE_PALAUNG = KBTS_FOURCC('P', 'L', 'G', ' '), + KBTS_LANGUAGE_PALESTINIAN_ARAMAIC = KBTS_FOURCC('P', 'A', 'A', ' '), + KBTS_LANGUAGE_PALI = KBTS_FOURCC('P', 'A', 'L', ' '), + KBTS_LANGUAGE_PALPA = KBTS_FOURCC('P', 'A', 'P', ' '), + KBTS_LANGUAGE_PAMPANGAN = KBTS_FOURCC('P', 'A', 'M', ' '), + KBTS_LANGUAGE_PANGASINAN = KBTS_FOURCC('P', 'A', 'G', ' '), + KBTS_LANGUAGE_PAPIAMENTU = KBTS_FOURCC('P', 'A', 'P', '0'), + KBTS_LANGUAGE_PASHTO = KBTS_FOURCC('P', 'A', 'S', ' '), + KBTS_LANGUAGE_PATTANI_MALAY = KBTS_FOURCC('M', 'F', 'A', ' '), + KBTS_LANGUAGE_PENNSYLVANIA_GERMAN = KBTS_FOURCC('P', 'D', 'C', ' '), + KBTS_LANGUAGE_PERSIAN = KBTS_FOURCC('F', 'A', 'R', ' '), + KBTS_LANGUAGE_PHAKE = KBTS_FOURCC('P', 'J', 'K', ' '), + KBTS_LANGUAGE_PICARD = KBTS_FOURCC('P', 'C', 'D', ' '), + KBTS_LANGUAGE_PIEMONTESE = KBTS_FOURCC('P', 'M', 'S', ' '), + KBTS_LANGUAGE_PILAGA = KBTS_FOURCC('P', 'L', 'G', ' '), + KBTS_LANGUAGE_PITE_SAMI = KBTS_FOURCC('S', 'J', 'E', ' '), + KBTS_LANGUAGE_POCOMCHI = KBTS_FOURCC('P', 'O', 'H', ' '), + KBTS_LANGUAGE_POHNPEIAN = KBTS_FOURCC('P', 'O', 'N', ' '), + KBTS_LANGUAGE_POLISH = KBTS_FOURCC('P', 'L', 'K', ' '), + KBTS_LANGUAGE_POLYTONIC_GREEK = KBTS_FOURCC('P', 'G', 'R', ' '), + KBTS_LANGUAGE_PORTUGUESE = KBTS_FOURCC('P', 'T', 'G', ' '), + KBTS_LANGUAGE_PROVENCAL = KBTS_FOURCC('P', 'R', 'O', ' '), + KBTS_LANGUAGE_PUNJABI = KBTS_FOURCC('P', 'A', 'N', ' '), + KBTS_LANGUAGE_QUECHUA = KBTS_FOURCC('Q', 'U', 'Z', ' '), + KBTS_LANGUAGE_QUECHUA_BOLIVIA = KBTS_FOURCC('Q', 'U', 'H', ' '), + KBTS_LANGUAGE_QUECHUA_ECUADOR = KBTS_FOURCC('Q', 'V', 'I', ' '), + KBTS_LANGUAGE_QUECHUA_PERU = KBTS_FOURCC('Q', 'W', 'H', ' '), + KBTS_LANGUAGE_R_CREE = KBTS_FOURCC('R', 'C', 'R', ' '), + KBTS_LANGUAGE_RAJASTHANI = KBTS_FOURCC('R', 'A', 'J', ' '), + KBTS_LANGUAGE_RAKHINE = KBTS_FOURCC('A', 'R', 'K', ' '), + KBTS_LANGUAGE_RAROTONGAN = KBTS_FOURCC('R', 'A', 'R', ' '), + KBTS_LANGUAGE_REJANG = KBTS_FOURCC('R', 'E', 'J', ' '), + KBTS_LANGUAGE_RIANG = KBTS_FOURCC('R', 'I', 'A', ' '), + KBTS_LANGUAGE_RIPUARIAN = KBTS_FOURCC('K', 'S', 'H', ' '), + KBTS_LANGUAGE_RITARUNGO = KBTS_FOURCC('R', 'I', 'T', ' '), + KBTS_LANGUAGE_ROHINGYA = KBTS_FOURCC('R', 'H', 'G', ' '), + KBTS_LANGUAGE_ROMANIAN = KBTS_FOURCC('R', 'O', 'M', ' '), + KBTS_LANGUAGE_ROMANSH = KBTS_FOURCC('R', 'M', 'S', ' '), + KBTS_LANGUAGE_ROMANY = KBTS_FOURCC('R', 'O', 'Y', ' '), + KBTS_LANGUAGE_ROTUMAN = KBTS_FOURCC('R', 'T', 'M', ' '), + KBTS_LANGUAGE_RUNDI = KBTS_FOURCC('R', 'U', 'N', ' '), + KBTS_LANGUAGE_RUSSIAN = KBTS_FOURCC('R', 'U', 'S', ' '), + KBTS_LANGUAGE_RUSSIAN_BURIAT = KBTS_FOURCC('R', 'B', 'U', ' '), + KBTS_LANGUAGE_RUSYN = KBTS_FOURCC('R', 'S', 'Y', ' '), + KBTS_LANGUAGE_SADRI = KBTS_FOURCC('S', 'A', 'D', ' '), + KBTS_LANGUAGE_SAKHA = KBTS_FOURCC('Y', 'A', 'K', ' '), + KBTS_LANGUAGE_SAMOAN = KBTS_FOURCC('S', 'M', 'O', ' '), + KBTS_LANGUAGE_SAMOGITIAN = KBTS_FOURCC('S', 'G', 'S', ' '), + KBTS_LANGUAGE_SAN_BLAS_KUNA = KBTS_FOURCC('C', 'U', 'K', ' '), + KBTS_LANGUAGE_SANGO = KBTS_FOURCC('S', 'G', 'O', ' '), + KBTS_LANGUAGE_SANSKRIT = KBTS_FOURCC('S', 'A', 'N', ' '), + KBTS_LANGUAGE_SANTALI = KBTS_FOURCC('S', 'A', 'T', ' '), + KBTS_LANGUAGE_SARAIKI = KBTS_FOURCC('S', 'R', 'K', ' '), + KBTS_LANGUAGE_SARDINIAN = KBTS_FOURCC('S', 'R', 'D', ' '), + KBTS_LANGUAGE_SASAK = KBTS_FOURCC('S', 'A', 'S', ' '), + KBTS_LANGUAGE_SATERLAND_FRISIAN = KBTS_FOURCC('S', 'T', 'Q', ' '), + KBTS_LANGUAGE_SAYISI = KBTS_FOURCC('S', 'A', 'Y', ' '), + KBTS_LANGUAGE_SCOTS = KBTS_FOURCC('S', 'C', 'I', ' '), + KBTS_LANGUAGE_SCOTTISH_GAELIC = KBTS_FOURCC('G', 'A', 'E', ' '), + KBTS_LANGUAGE_SEKOTA = KBTS_FOURCC('S', 'E', 'J', ' '), + KBTS_LANGUAGE_SELKUP = KBTS_FOURCC('S', 'E', 'L', ' '), + KBTS_LANGUAGE_SENA = KBTS_FOURCC('S', 'N', 'A', ' '), + KBTS_LANGUAGE_SENECA = KBTS_FOURCC('S', 'E', 'E', ' '), + KBTS_LANGUAGE_SERBIAN = KBTS_FOURCC('S', 'R', 'B', ' '), + KBTS_LANGUAGE_SERER = KBTS_FOURCC('S', 'R', 'R', ' '), + KBTS_LANGUAGE_SGAW_KAREN = KBTS_FOURCC('K', 'S', 'W', ' '), + KBTS_LANGUAGE_SHAN = KBTS_FOURCC('S', 'H', 'N', ' '), + KBTS_LANGUAGE_SHONA = KBTS_FOURCC('S', 'N', 'A', ' '), + KBTS_LANGUAGE_SIBE = KBTS_FOURCC('S', 'I', 'B', ' '), + KBTS_LANGUAGE_SICILIAN = KBTS_FOURCC('S', 'C', 'N', ' '), + KBTS_LANGUAGE_SIDAMO = KBTS_FOURCC('S', 'I', 'D', ' '), + KBTS_LANGUAGE_SILESIAN = KBTS_FOURCC('S', 'Z', 'L', ' '), + KBTS_LANGUAGE_SILTE_GURAGE = KBTS_FOURCC('S', 'I', 'G', ' '), + KBTS_LANGUAGE_SINDHI = KBTS_FOURCC('S', 'N', 'D', ' '), + KBTS_LANGUAGE_SINHALA = KBTS_FOURCC('S', 'N', 'H', ' '), + KBTS_LANGUAGE_SKOLT_SAMI = KBTS_FOURCC('S', 'K', 'S', ' '), + KBTS_LANGUAGE_SLAVEY = KBTS_FOURCC('S', 'L', 'A', ' '), + KBTS_LANGUAGE_SLOVAK = KBTS_FOURCC('S', 'K', 'Y', ' '), + KBTS_LANGUAGE_SLOVENIAN = KBTS_FOURCC('S', 'L', 'V', ' '), + KBTS_LANGUAGE_SMALL_FLOWERY_MIAO = KBTS_FOURCC('S', 'F', 'M', ' '), + KBTS_LANGUAGE_SODO_GURAGE = KBTS_FOURCC('S', 'O', 'G', ' '), + KBTS_LANGUAGE_SOGA = KBTS_FOURCC('X', 'O', 'G', ' '), + KBTS_LANGUAGE_SOMALI = KBTS_FOURCC('S', 'M', 'L', ' '), + KBTS_LANGUAGE_SONGE = KBTS_FOURCC('S', 'O', 'P', ' '), + KBTS_LANGUAGE_SONINKE = KBTS_FOURCC('S', 'N', 'K', ' '), + KBTS_LANGUAGE_SOUTH_SLAVEY = KBTS_FOURCC('S', 'S', 'L', ' '), + KBTS_LANGUAGE_SOUTHERN_KIWAI = KBTS_FOURCC('K', 'J', 'D', ' '), + KBTS_LANGUAGE_SOUTHERN_SAMI = KBTS_FOURCC('S', 'S', 'M', ' '), + KBTS_LANGUAGE_SOUTHERN_SOTHO = KBTS_FOURCC('S', 'O', 'T', ' '), + KBTS_LANGUAGE_SPANISH = KBTS_FOURCC('E', 'S', 'P', ' '), + KBTS_LANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT = KBTS_FOURCC('Z', 'G', 'H', ' '), + KBTS_LANGUAGE_STRAITS_SALISH = KBTS_FOURCC('S', 'T', 'R', ' '), + KBTS_LANGUAGE_SUKUMA = KBTS_FOURCC('S', 'U', 'K', ' '), + KBTS_LANGUAGE_SUNDANESE = KBTS_FOURCC('S', 'U', 'N', ' '), + KBTS_LANGUAGE_SURI = KBTS_FOURCC('S', 'U', 'R', ' '), + KBTS_LANGUAGE_SUTU = KBTS_FOURCC('S', 'X', 'T', ' '), + KBTS_LANGUAGE_SVAN = KBTS_FOURCC('S', 'V', 'A', ' '), + KBTS_LANGUAGE_SWADAYA_ARAMAIC = KBTS_FOURCC('S', 'W', 'A', ' '), + KBTS_LANGUAGE_SWAHILI = KBTS_FOURCC('S', 'W', 'K', ' '), + KBTS_LANGUAGE_SWATI = KBTS_FOURCC('S', 'W', 'Z', ' '), + KBTS_LANGUAGE_SWEDISH = KBTS_FOURCC('S', 'V', 'E', ' '), + KBTS_LANGUAGE_SYLHETI = KBTS_FOURCC('S', 'Y', 'L', ' '), + KBTS_LANGUAGE_SYRIAC = KBTS_FOURCC('S', 'Y', 'R', ' '), + KBTS_LANGUAGE_SYRIAC_EASTERN = KBTS_FOURCC('S', 'Y', 'R', 'N'), + KBTS_LANGUAGE_SYRIAC_ESTRANGELA = KBTS_FOURCC('S', 'Y', 'R', 'E'), + KBTS_LANGUAGE_SYRIAC_WESTERN = KBTS_FOURCC('S', 'Y', 'R', 'J'), + KBTS_LANGUAGE_TABASARAN = KBTS_FOURCC('T', 'A', 'B', ' '), + KBTS_LANGUAGE_TACHELHIT = KBTS_FOURCC('S', 'H', 'I', ' '), + KBTS_LANGUAGE_TAGALOG = KBTS_FOURCC('T', 'G', 'L', ' '), + KBTS_LANGUAGE_TAHAGGART_TAMAHAQ = KBTS_FOURCC('T', 'H', 'V', ' '), + KBTS_LANGUAGE_TAHITIAN = KBTS_FOURCC('T', 'H', 'T', ' '), + KBTS_LANGUAGE_TAI_LAING = KBTS_FOURCC('T', 'J', 'L', ' '), + KBTS_LANGUAGE_TAJIKI = KBTS_FOURCC('T', 'A', 'J', ' '), + KBTS_LANGUAGE_TALYSH = KBTS_FOURCC('T', 'L', 'Y', ' '), + KBTS_LANGUAGE_TAMASHEK = KBTS_FOURCC('T', 'M', 'H', ' '), + KBTS_LANGUAGE_TAMASHEQ = KBTS_FOURCC('T', 'A', 'Q', ' '), + KBTS_LANGUAGE_TAMAZIGHT = KBTS_FOURCC('T', 'Z', 'M', ' '), + KBTS_LANGUAGE_TAMIL = KBTS_FOURCC('T', 'A', 'M', ' '), + KBTS_LANGUAGE_TARIFIT = KBTS_FOURCC('R', 'I', 'F', ' '), + KBTS_LANGUAGE_TATAR = KBTS_FOURCC('T', 'A', 'T', ' '), + KBTS_LANGUAGE_TAWALLAMMAT_TAMAJAQ = KBTS_FOURCC('T', 'T', 'Q', ' '), + KBTS_LANGUAGE_TAY = KBTS_FOURCC('T', 'Y', 'Z', ' '), + KBTS_LANGUAGE_TAYART_TAMAJEQ = KBTS_FOURCC('T', 'H', 'Z', ' '), + KBTS_LANGUAGE_TELUGU = KBTS_FOURCC('T', 'E', 'L', ' '), + KBTS_LANGUAGE_TEMNE = KBTS_FOURCC('T', 'M', 'N', ' '), + KBTS_LANGUAGE_TETUM = KBTS_FOURCC('T', 'E', 'T', ' '), + KBTS_LANGUAGE_TH_CREE = KBTS_FOURCC('T', 'C', 'R', ' '), + KBTS_LANGUAGE_THAI = KBTS_FOURCC('T', 'H', 'A', ' '), + KBTS_LANGUAGE_THAILAND_MON = KBTS_FOURCC('M', 'O', 'N', 'T'), + KBTS_LANGUAGE_THOMPSON = KBTS_FOURCC('T', 'H', 'P', ' '), + KBTS_LANGUAGE_TIBETAN = KBTS_FOURCC('T', 'I', 'B', ' '), + KBTS_LANGUAGE_TIGRE = KBTS_FOURCC('T', 'G', 'R', ' '), + KBTS_LANGUAGE_TIGRINYA = KBTS_FOURCC('T', 'G', 'Y', ' '), + KBTS_LANGUAGE_TIV = KBTS_FOURCC('T', 'I', 'V', ' '), + KBTS_LANGUAGE_TLINGIT = KBTS_FOURCC('T', 'L', 'I', ' '), + KBTS_LANGUAGE_TOBO = KBTS_FOURCC('T', 'B', 'V', ' '), + KBTS_LANGUAGE_TODO = KBTS_FOURCC('T', 'O', 'D', ' '), + KBTS_LANGUAGE_TOK_PISIN = KBTS_FOURCC('T', 'P', 'I', ' '), + KBTS_LANGUAGE_TOMA = KBTS_FOURCC('T', 'O', 'D', '0'), + KBTS_LANGUAGE_TONGA = KBTS_FOURCC('T', 'N', 'G', ' '), + KBTS_LANGUAGE_TONGAN = KBTS_FOURCC('T', 'G', 'N', ' '), + KBTS_LANGUAGE_TORKI = KBTS_FOURCC('A', 'Z', 'B', ' '), + KBTS_LANGUAGE_TSHANGLA = KBTS_FOURCC('T', 'S', 'J', ' '), + KBTS_LANGUAGE_TSONGA = KBTS_FOURCC('T', 'S', 'G', ' '), + KBTS_LANGUAGE_TSWANA = KBTS_FOURCC('T', 'N', 'A', ' '), + KBTS_LANGUAGE_TULU = KBTS_FOURCC('T', 'U', 'L', ' '), + KBTS_LANGUAGE_TUMBUKA = KBTS_FOURCC('T', 'U', 'M', ' '), + KBTS_LANGUAGE_TUNDRA_ENETS = KBTS_FOURCC('T', 'N', 'E', ' '), + KBTS_LANGUAGE_TURKISH = KBTS_FOURCC('T', 'R', 'K', ' '), + KBTS_LANGUAGE_TURKMEN = KBTS_FOURCC('T', 'K', 'M', ' '), + KBTS_LANGUAGE_TUROYO_ARAMAIC = KBTS_FOURCC('T', 'U', 'A', ' '), + KBTS_LANGUAGE_TUSCARORA = KBTS_FOURCC('T', 'U', 'S', ' '), + KBTS_LANGUAGE_TUVALU = KBTS_FOURCC('T', 'V', 'L', ' '), + KBTS_LANGUAGE_TUVIN = KBTS_FOURCC('T', 'U', 'V', ' '), + KBTS_LANGUAGE_TWI = KBTS_FOURCC('T', 'W', 'I', ' '), + KBTS_LANGUAGE_TZOTZIL = KBTS_FOURCC('T', 'Z', 'O', ' '), + KBTS_LANGUAGE_UDI = KBTS_FOURCC('U', 'D', 'I', ' '), + KBTS_LANGUAGE_UDMURT = KBTS_FOURCC('U', 'D', 'M', ' '), + KBTS_LANGUAGE_UKRAINIAN = KBTS_FOURCC('U', 'K', 'R', ' '), + KBTS_LANGUAGE_UMBUNDU = KBTS_FOURCC('U', 'M', 'B', ' '), + KBTS_LANGUAGE_UME_SAMI = KBTS_FOURCC('S', 'J', 'U', ' '), + KBTS_LANGUAGE_UPPER_SAXON = KBTS_FOURCC('S', 'X', 'U', ' '), + KBTS_LANGUAGE_UPPER_SORBIAN = KBTS_FOURCC('U', 'S', 'B', ' '), + KBTS_LANGUAGE_URALIC_PHONETIC = KBTS_FOURCC('U', 'P', 'P', ' '), + KBTS_LANGUAGE_URDU = KBTS_FOURCC('U', 'R', 'D', ' '), + KBTS_LANGUAGE_UYGHUR = KBTS_FOURCC('U', 'Y', 'G', ' '), + KBTS_LANGUAGE_UZBEK = KBTS_FOURCC('U', 'Z', 'B', ' '), + KBTS_LANGUAGE_VENDA = KBTS_FOURCC('V', 'E', 'N', ' '), + KBTS_LANGUAGE_VENETIAN = KBTS_FOURCC('V', 'E', 'C', ' '), + KBTS_LANGUAGE_VIETNAMESE = KBTS_FOURCC('V', 'I', 'T', ' '), + KBTS_LANGUAGE_VLAX_ROMANI = KBTS_FOURCC('R', 'M', 'Y', ' '), + KBTS_LANGUAGE_VOLAPUK = KBTS_FOURCC('V', 'O', 'L', ' '), + KBTS_LANGUAGE_VORO = KBTS_FOURCC('V', 'R', 'O', ' '), + KBTS_LANGUAGE_WA = KBTS_FOURCC('W', 'A', ' ', ' '), + KBTS_LANGUAGE_WACI_GBE = KBTS_FOURCC('W', 'C', 'I', ' '), + KBTS_LANGUAGE_WAGDI = KBTS_FOURCC('W', 'A', 'G', ' '), + KBTS_LANGUAGE_WAKHI = KBTS_FOURCC('W', 'B', 'L', ' '), + KBTS_LANGUAGE_WALLOON = KBTS_FOURCC('W', 'L', 'N', ' '), + KBTS_LANGUAGE_WARAY_WARAY = KBTS_FOURCC('W', 'A', 'R', ' '), + KBTS_LANGUAGE_WAYANAD_CHETTI = KBTS_FOURCC('C', 'T', 'T', ' '), + KBTS_LANGUAGE_WAYUU = KBTS_FOURCC('G', 'U', 'C', ' '), + KBTS_LANGUAGE_WELSH = KBTS_FOURCC('W', 'E', 'L', ' '), + KBTS_LANGUAGE_WENDAT = KBTS_FOURCC('W', 'D', 'T', ' '), + KBTS_LANGUAGE_WEST_CREE = KBTS_FOURCC('W', 'C', 'R', ' '), + KBTS_LANGUAGE_WESTERN_CHAM = KBTS_FOURCC('C', 'J', 'A', ' '), + KBTS_LANGUAGE_WESTERN_KAYAH = KBTS_FOURCC('K', 'Y', 'U', ' '), + KBTS_LANGUAGE_WESTERN_PANJABI = KBTS_FOURCC('P', 'N', 'B', ' '), + KBTS_LANGUAGE_WESTERN_PWO_KAREN = KBTS_FOURCC('P', 'W', 'O', ' '), + KBTS_LANGUAGE_WOLOF = KBTS_FOURCC('W', 'L', 'F', ' '), + KBTS_LANGUAGE_WOODS_CREE = KBTS_FOURCC('D', 'C', 'R', ' '), + KBTS_LANGUAGE_WUDING_LUQUAN_YI = KBTS_FOURCC('Y', 'W', 'Q', ' '), + KBTS_LANGUAGE_WYANDOT = KBTS_FOURCC('W', 'Y', 'N', ' '), + KBTS_LANGUAGE_XHOSA = KBTS_FOURCC('X', 'H', 'S', ' '), + KBTS_LANGUAGE_Y_CREE = KBTS_FOURCC('Y', 'C', 'R', ' '), + KBTS_LANGUAGE_YAO = KBTS_FOURCC('Y', 'A', 'O', ' '), + KBTS_LANGUAGE_YAPESE = KBTS_FOURCC('Y', 'A', 'P', ' '), + KBTS_LANGUAGE_YI_CLASSIC = KBTS_FOURCC('Y', 'I', 'C', ' '), + KBTS_LANGUAGE_YI_MODERN = KBTS_FOURCC('Y', 'I', 'M', ' '), + KBTS_LANGUAGE_YIDDISH = KBTS_FOURCC('J', 'I', 'I', ' '), + KBTS_LANGUAGE_YORUBA = KBTS_FOURCC('Y', 'B', 'A', ' '), + KBTS_LANGUAGE_ZAMBOANGA_CHAVACANO = KBTS_FOURCC('C', 'B', 'K', ' '), + KBTS_LANGUAGE_ZANDE = KBTS_FOURCC('Z', 'N', 'D', ' '), + KBTS_LANGUAGE_ZARMA = KBTS_FOURCC('D', 'J', 'R', ' '), + KBTS_LANGUAGE_ZAZAKI = KBTS_FOURCC('Z', 'Z', 'A', ' '), + KBTS_LANGUAGE_ZEALANDIC = KBTS_FOURCC('Z', 'E', 'A', ' '), + KBTS_LANGUAGE_ZHUANG = KBTS_FOURCC('Z', 'H', 'A', ' '), + KBTS_LANGUAGE_ZULU = KBTS_FOURCC('Z', 'U', 'L', ' '), +}; + +typedef kbts_u32 kbts_break_flags; +enum kbts_break_flags_enum +{ + // Direction changes from left-to-right to right-to-left, or vice versa. + KBTS_BREAK_FLAG_DIRECTION = 1 << 0, + // Script changes. + // Note that some characters, such as digits, are used in multiple + // scripts and, as such, will not produce script breaks. + KBTS_BREAK_FLAG_SCRIPT = 1 << 1, + // Graphemes are "visual units". They may be composed of more than one codepoint. + // They are used as interaction boundaries in graphical interfaces, e.g. moving the + // caret. + KBTS_BREAK_FLAG_GRAPHEME = 1 << 2, + // In most scripts, words are broken up by whitespace, but Unicode word breaking has + // better script coverage and also handles some special cases that a simple stateless + // loop cannot handle. + KBTS_BREAK_FLAG_WORD = 1 << 3, + // By default, you are not allowed to break a line. + // Soft line breaks allow for line breaking, but do not require it. + // This is useful for when you are doing line wrapping. + KBTS_BREAK_FLAG_LINE_SOFT = 1 << 4, + // Hard line breaks are required. They signal the end of a paragraph. + // (In Unicode, there is no meaningful distinction between a line and a paragraph. + // a paragraph is pretty much just a line of text that can wrap.) + KBTS_BREAK_FLAG_LINE_HARD = 1 << 5, + + KBTS_BREAK_FLAG_LINE = KBTS_BREAK_FLAG_LINE_SOFT | KBTS_BREAK_FLAG_LINE_HARD, + KBTS_BREAK_FLAG_ANY = KBTS_BREAK_FLAG_DIRECTION | KBTS_BREAK_FLAG_SCRIPT | KBTS_BREAK_FLAG_GRAPHEME | KBTS_BREAK_FLAG_WORD | KBTS_BREAK_FLAG_LINE_SOFT | KBTS_BREAK_FLAG_LINE_HARD, +}; + +typedef kbts_u8 kbts_op_kind; +enum kbts_op_kind_enum +{ + KBTS_OP_KIND_END, + + // Substitution ops. + KBTS_OP_KIND_PRE_NORMALIZE_DOTTED_CIRCLES, + KBTS_OP_KIND_NORMALIZE, + KBTS_OP_KIND_NORMALIZE_HANGUL, + KBTS_OP_KIND_FLAG_JOINING_LETTERS, + KBTS_OP_KIND_GSUB_FEATURES, + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER, + + // Positioning ops. + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, + + KBTS_OP_KIND_POST_GPOS_FIXUP, + KBTS_OP_KIND_STCH_POSTPASS, + + KBTS_OP_KIND_COUNT, +}; + +typedef kbts_u32 kbts_glyph_flags; +enum kbts_glyph_flags_enum +{ + // These feature flags must coincide with kbts_joining_feature _and_ KBTS_FEATURE_FLAG! + KBTS_GLYPH_FLAG_ISOL = (1 << 0), + KBTS_GLYPH_FLAG_FINA = (1 << 1), + KBTS_GLYPH_FLAG_FIN2 = (1 << 2), + KBTS_GLYPH_FLAG_FIN3 = (1 << 3), + KBTS_GLYPH_FLAG_MEDI = (1 << 4), + KBTS_GLYPH_FLAG_MED2 = (1 << 5), + KBTS_GLYPH_FLAG_INIT = (1 << 6), + + // These feature flags must coincide with FEATURE_FLAG! + KBTS_GLYPH_FLAG_LJMO = (1 << 7), + KBTS_GLYPH_FLAG_VJMO = (1 << 8), + KBTS_GLYPH_FLAG_TJMO = (1 << 9), + KBTS_GLYPH_FLAG_RPHF = (1 << 10), + KBTS_GLYPH_FLAG_BLWF = (1 << 11), + KBTS_GLYPH_FLAG_HALF = (1 << 12), + KBTS_GLYPH_FLAG_PSTF = (1 << 13), + KBTS_GLYPH_FLAG_ABVF = (1 << 14), + KBTS_GLYPH_FLAG_PREF = (1 << 15), + KBTS_GLYPH_FLAG_NUMR = (1 << 16), + KBTS_GLYPH_FLAG_FRAC = (1 << 17), + KBTS_GLYPH_FLAG_DNOM = (1 << 18), + KBTS_GLYPH_FLAG_CFAR = (1 << 19), + + // These can be anything. + KBTS_GLYPH_FLAG_DO_NOT_DECOMPOSE = (1 << 21), + KBTS_GLYPH_FLAG_FIRST_IN_MULTIPLE_SUBSTITUTION = (1 << 22), + KBTS_GLYPH_FLAG_NO_BREAK = (1 << 23), + KBTS_GLYPH_FLAG_CURSIVE = (1 << 24), + KBTS_GLYPH_FLAG_GENERATED_BY_GSUB = (1 << 25), + KBTS_GLYPH_FLAG_USED_IN_GPOS = (1 << 26), + + KBTS_GLYPH_FLAG_STCH_ENDPOINT = (1 << 27), + KBTS_GLYPH_FLAG_STCH_EXTENSION = (1 << 28), + + KBTS_GLYPH_FLAG_LIGATURE = (1 << 29), + KBTS_GLYPH_FLAG_MULTIPLE_SUBSTITUTION = (1 << 30), +}; +#define KBTS_GLYPH_FEATURE_MASK ((KBTS_GLYPH_FLAG_CFAR << 1) - 1) +// In USE, glyphs are mostly not pre-flagged for feature application. +// However, we do want to flag rphf/pref results for reordering, so we want to +// keep all of the flags as usual, and only use these feature flags for filtering. +#define KBTS_USE_GLYPH_FEATURE_MASK (((KBTS_GLYPH_FLAG_INIT << 1) - 1) | KBTS_GLYPH_FLAG_NUMR | KBTS_GLYPH_FLAG_DNOM | KBTS_GLYPH_FLAG_FRAC) +#define KBTS_JOINING_FEATURE_MASK (KBTS_GLYPH_FLAG_ISOL | KBTS_GLYPH_FLAG_FINA | KBTS_GLYPH_FLAG_FIN2 | KBTS_GLYPH_FLAG_FIN3 | KBTS_GLYPH_FLAG_MEDI | KBTS_GLYPH_FLAG_MED2 | KBTS_GLYPH_FLAG_INIT) +#define KBTS_JOINING_FEATURE_TO_GLYPH_FLAG(Feature) (1 << ((Feature) - 1)) + +// Japanese text contains "kinsoku" characters, around which breaking a line is forbidden. +// Exactly which characters are "kinsoku" or not depends on the context: +// - Strict style has the largest amount of kinsoku characters, which leads to longer lines. +// - Loose style has the smallest amount of kinsoku characters, which leads to smaller lines. +// - Normal style is somewhere in the middle. +// Note that, while the Unicode standard mentions all three of these styles, it does not mention +// any differences between the normal and loose styles. +// As such, normal and loose styles currently behave the same. +typedef kbts_u8 kbts_japanese_line_break_style; +enum kbts_japanese_line_break_style_enum +{ + // The Unicode standard does not define what strict style is used for. + // Supposedly, it is used for anything that does not fall into the other two categories of text. + KBTS_JAPANESE_LINE_BREAK_STYLE_STRICT, + + // Normal style is used for books and documents. + KBTS_JAPANESE_LINE_BREAK_STYLE_NORMAL, + + // Loose style is used for newspapers, and (I assume) any other narrow column format. + KBTS_JAPANESE_LINE_BREAK_STYLE_LOOSE, + + KBTS_JAPANESE_LINE_BREAK_STYLE_COUNT, +}; + +typedef kbts_u32 kbts_orientation; +enum kbts_orientation_enum +{ + KBTS_ORIENTATION_HORIZONTAL, + KBTS_ORIENTATION_VERTICAL, + + KBTS_ORIENTATION_COUNT, +}; + +typedef kbts_u32 kbts_direction; +enum kbts_direction_enum +{ + KBTS_DIRECTION_NONE, + KBTS_DIRECTION_LTR, + KBTS_DIRECTION_RTL, + + KBTS_DIRECTION_COUNT, +}; + +typedef kbts_u8 kbts_unicode_joining_type; +enum kbts_unicode_joining_type_enum +{ + KBTS_UNICODE_JOINING_TYPE_NONE, + KBTS_UNICODE_JOINING_TYPE_LEFT, + KBTS_UNICODE_JOINING_TYPE_DUAL, + KBTS_UNICODE_JOINING_TYPE_FORCE, + KBTS_UNICODE_JOINING_TYPE_RIGHT, + KBTS_UNICODE_JOINING_TYPE_TRANSPARENT, + KBTS_UNICODE_JOINING_TYPE_COUNT, +}; + +typedef kbts_u8 kbts_unicode_flags; +enum kbts_unicode_flag_enum +{ + KBTS_UNICODE_FLAG_MODIFIER_COMBINING_MARK = (1 << 0), + KBTS_UNICODE_FLAG_DEFAULT_IGNORABLE = (1 << 1), + KBTS_UNICODE_FLAG_OPEN_BRACKET = (1 << 2), + KBTS_UNICODE_FLAG_CLOSE_BRACKET = (1 << 3), + KBTS_UNICODE_FLAG_PART_OF_WORD = (1 << 4), + KBTS_UNICODE_FLAG_DECIMAL_DIGIT = (1 << 5), + KBTS_UNICODE_FLAG_NON_SPACING_MARK = (1 << 6), +}; + +typedef kbts_u8 kbts_unicode_bidirectional_class; +enum kbts_unicode_bidirectional_class_enum +{ + KBTS_UNICODE_BIDIRECTIONAL_CLASS_NI, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_L, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_R, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_NSM, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_AL, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_ES, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_ET, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_CS, + KBTS_UNICODE_BIDIRECTIONAL_CLASS_COUNT, +}; + +typedef kbts_u8 kbts_line_break_class; +enum kbts_line_break_class_enum +{ + /* 0 */ KBTS_LINE_BREAK_CLASS_Onea, + /* 1 */ KBTS_LINE_BREAK_CLASS_Oea, + /* 2 */ KBTS_LINE_BREAK_CLASS_Ope, + /* 3 */ KBTS_LINE_BREAK_CLASS_BK, + /* 4 */ KBTS_LINE_BREAK_CLASS_CR, + /* 5 */ KBTS_LINE_BREAK_CLASS_LF, + /* 6 */ KBTS_LINE_BREAK_CLASS_NL, + /* 7 */ KBTS_LINE_BREAK_CLASS_SP, + /* 8 */ KBTS_LINE_BREAK_CLASS_ZW, + /* 9 */ KBTS_LINE_BREAK_CLASS_WJ, + /* 10 */ KBTS_LINE_BREAK_CLASS_GLnea, + /* 11 */ KBTS_LINE_BREAK_CLASS_GLea, + /* 12 */ KBTS_LINE_BREAK_CLASS_CLnea, + /* 13 */ KBTS_LINE_BREAK_CLASS_CLea, + /* 14 */ KBTS_LINE_BREAK_CLASS_CPnea, + /* 15 */ KBTS_LINE_BREAK_CLASS_CPea, + /* 16 */ KBTS_LINE_BREAK_CLASS_EXnea, + /* 17 */ KBTS_LINE_BREAK_CLASS_EXea, + /* 18 */ KBTS_LINE_BREAK_CLASS_SY, + /* 19 */ KBTS_LINE_BREAK_CLASS_BAnea, + /* 20 */ KBTS_LINE_BREAK_CLASS_BAea, + /* 21 */ KBTS_LINE_BREAK_CLASS_OPnea, + /* 22 */ KBTS_LINE_BREAK_CLASS_OPea, + /* 23 */ KBTS_LINE_BREAK_CLASS_QU, + /* 24 */ KBTS_LINE_BREAK_CLASS_QUPi, + /* 25 */ KBTS_LINE_BREAK_CLASS_QUPf, + /* 26 */ KBTS_LINE_BREAK_CLASS_IS, + /* 27 */ KBTS_LINE_BREAK_CLASS_NSnea, + /* 28 */ KBTS_LINE_BREAK_CLASS_NSea, + /* 29 */ KBTS_LINE_BREAK_CLASS_B2, + /* 30 */ KBTS_LINE_BREAK_CLASS_CB, + /* 31 */ KBTS_LINE_BREAK_CLASS_HY, + /* 32 */ KBTS_LINE_BREAK_CLASS_HYPHEN, + /* 33 */ KBTS_LINE_BREAK_CLASS_INnea, + /* 34 */ KBTS_LINE_BREAK_CLASS_INea, + /* 35 */ KBTS_LINE_BREAK_CLASS_BB, + /* 36 */ KBTS_LINE_BREAK_CLASS_HL, + /* 37 */ KBTS_LINE_BREAK_CLASS_ALnea, + /* 38 */ KBTS_LINE_BREAK_CLASS_ALea, + /* 39 */ KBTS_LINE_BREAK_CLASS_NU, + /* 40 */ KBTS_LINE_BREAK_CLASS_PRnea, + /* 41 */ KBTS_LINE_BREAK_CLASS_PRea, + /* 42 */ KBTS_LINE_BREAK_CLASS_IDnea, + /* 43 */ KBTS_LINE_BREAK_CLASS_IDea, + /* 44 */ KBTS_LINE_BREAK_CLASS_IDpe, + /* 45 */ KBTS_LINE_BREAK_CLASS_EBnea, + /* 46 */ KBTS_LINE_BREAK_CLASS_EBea, + /* 47 */ KBTS_LINE_BREAK_CLASS_EM, + /* 48 */ KBTS_LINE_BREAK_CLASS_POnea, + /* 49 */ KBTS_LINE_BREAK_CLASS_POea, + /* 50 */ KBTS_LINE_BREAK_CLASS_JL, + /* 51 */ KBTS_LINE_BREAK_CLASS_JV, + /* 52 */ KBTS_LINE_BREAK_CLASS_JT, + /* 53 */ KBTS_LINE_BREAK_CLASS_H2, + /* 54 */ KBTS_LINE_BREAK_CLASS_H3, + /* 55 */ KBTS_LINE_BREAK_CLASS_AP, + /* 56 */ KBTS_LINE_BREAK_CLASS_AK, + /* 57 */ KBTS_LINE_BREAK_CLASS_DOTTED_CIRCLE, + /* 58 */ KBTS_LINE_BREAK_CLASS_AS, + /* 59 */ KBTS_LINE_BREAK_CLASS_VF, + /* 60 */ KBTS_LINE_BREAK_CLASS_VI, + /* 61 */ KBTS_LINE_BREAK_CLASS_RI, + + /* 62 */ KBTS_LINE_BREAK_CLASS_COUNT, + + /* 63 */ KBTS_LINE_BREAK_CLASS_CM, + /* 64 */ KBTS_LINE_BREAK_CLASS_ZWJ, + + // CJ resolves to either NS or ID depending on the (Japanese) line break style. + // NS is strict line breaking, used for long lines. + // ID is normal line breaking, used for normal body text. + /* 65 */ KBTS_LINE_BREAK_CLASS_CJ, + + /* 66 */ KBTS_LINE_BREAK_CLASS_SOT, + /* 67 */ KBTS_LINE_BREAK_CLASS_EOT, +}; + +// @Cleanup: Merge EX and FO. +typedef kbts_u8 kbts_word_break_class; +enum kbts_word_break_class_enum +{ + KBTS_WORD_BREAK_CLASS_Onep, + KBTS_WORD_BREAK_CLASS_Oep, + KBTS_WORD_BREAK_CLASS_CR, + KBTS_WORD_BREAK_CLASS_LF, + KBTS_WORD_BREAK_CLASS_NL, + KBTS_WORD_BREAK_CLASS_EX, + KBTS_WORD_BREAK_CLASS_ZWJ, + KBTS_WORD_BREAK_CLASS_RI, + KBTS_WORD_BREAK_CLASS_FO, + KBTS_WORD_BREAK_CLASS_KA, + KBTS_WORD_BREAK_CLASS_HL, + KBTS_WORD_BREAK_CLASS_ALnep, + KBTS_WORD_BREAK_CLASS_ALep, + KBTS_WORD_BREAK_CLASS_SQ, + KBTS_WORD_BREAK_CLASS_DQ, + KBTS_WORD_BREAK_CLASS_MNL, + KBTS_WORD_BREAK_CLASS_ML, + KBTS_WORD_BREAK_CLASS_MN, + KBTS_WORD_BREAK_CLASS_NM, + KBTS_WORD_BREAK_CLASS_ENL, + KBTS_WORD_BREAK_CLASS_WSS, + + KBTS_WORD_BREAK_CLASS_SOT, +}; + +// Unicode defines scripts and languages. +// A language belongs to a single script, and a script belongs to a single writing system. +// On top of these, OpenType defines shapers, which are basically just designations for +// specific code paths that are taken depending on which script is being shapen. +// +// Some scripts, like Latin and Cyrillic, need relatively few operations, while complex +// scripts like Arabic and Indic scripts have specific processing steps that need to happen +// in order to obtain a correct result. +// +// These sequences of operations are _not_ described in the font file itself. The shaping +// code needs to know which script it is shaping, and implement all of those passes itself. +// That is why you, as a user, have to care about this. +// +// When creating shape_config, you can either pass in a known script, or you can specify +// SCRIPT_DONT_KNOW and let the library figure it out. +// While SCRIPT_DONT_KNOW may look appealing, it is worth noting that we can only infer +// the _script_, and not the language, of the text you pass in. +// This means that you might miss out on language-specific features when you use it. +typedef kbts_u32 kbts_shaper; +enum kbts_shaper_enum +{ + KBTS_SHAPER_DEFAULT, + KBTS_SHAPER_ARABIC, + KBTS_SHAPER_HANGUL, + KBTS_SHAPER_HEBREW, + KBTS_SHAPER_INDIC, + KBTS_SHAPER_KHMER, + KBTS_SHAPER_MYANMAR, + KBTS_SHAPER_TIBETAN, + KBTS_SHAPER_USE, + + KBTS_SHAPER_COUNT, +}; +typedef kbts_u32 kbts_script; +enum kbts_script_enum { + KBTS_SCRIPT_DONT_KNOW, + KBTS_SCRIPT_ADLAM, + KBTS_SCRIPT_AHOM, + KBTS_SCRIPT_ANATOLIAN_HIEROGLYPHS, + KBTS_SCRIPT_ARABIC, + KBTS_SCRIPT_ARMENIAN, + KBTS_SCRIPT_AVESTAN, + KBTS_SCRIPT_BALINESE, + KBTS_SCRIPT_BAMUM, + KBTS_SCRIPT_BASSA_VAH, + KBTS_SCRIPT_BATAK, + KBTS_SCRIPT_BENGALI, + KBTS_SCRIPT_BHAIKSUKI, + KBTS_SCRIPT_BOPOMOFO, + KBTS_SCRIPT_BRAHMI, + KBTS_SCRIPT_BUGINESE, + KBTS_SCRIPT_BUHID, + KBTS_SCRIPT_CANADIAN_SYLLABICS, + KBTS_SCRIPT_CARIAN, + KBTS_SCRIPT_CAUCASIAN_ALBANIAN, + KBTS_SCRIPT_CHAKMA, + KBTS_SCRIPT_CHAM, + KBTS_SCRIPT_CHEROKEE, + KBTS_SCRIPT_CHORASMIAN, + KBTS_SCRIPT_CJK_IDEOGRAPHIC, + KBTS_SCRIPT_COPTIC, + KBTS_SCRIPT_CYPRIOT_SYLLABARY, + KBTS_SCRIPT_CYPRO_MINOAN, + KBTS_SCRIPT_CYRILLIC, + KBTS_SCRIPT_DEFAULT, + KBTS_SCRIPT_DEFAULT2, + KBTS_SCRIPT_DESERET, + KBTS_SCRIPT_DEVANAGARI, + KBTS_SCRIPT_DIVES_AKURU, + KBTS_SCRIPT_DOGRA, + KBTS_SCRIPT_DUPLOYAN, + KBTS_SCRIPT_EGYPTIAN_HIEROGLYPHS, + KBTS_SCRIPT_ELBASAN, + KBTS_SCRIPT_ELYMAIC, + KBTS_SCRIPT_ETHIOPIC, + KBTS_SCRIPT_GARAY, + KBTS_SCRIPT_GEORGIAN, + KBTS_SCRIPT_GLAGOLITIC, + KBTS_SCRIPT_GOTHIC, + KBTS_SCRIPT_GRANTHA, + KBTS_SCRIPT_GREEK, + KBTS_SCRIPT_GUJARATI, + KBTS_SCRIPT_GUNJALA_GONDI, + KBTS_SCRIPT_GURMUKHI, + KBTS_SCRIPT_GURUNG_KHEMA, + KBTS_SCRIPT_HANGUL, + KBTS_SCRIPT_HANIFI_ROHINGYA, + KBTS_SCRIPT_HANUNOO, + KBTS_SCRIPT_HATRAN, + KBTS_SCRIPT_HEBREW, + KBTS_SCRIPT_HIRAGANA, + KBTS_SCRIPT_IMPERIAL_ARAMAIC, + KBTS_SCRIPT_INSCRIPTIONAL_PAHLAVI, + KBTS_SCRIPT_INSCRIPTIONAL_PARTHIAN, + KBTS_SCRIPT_JAVANESE, + KBTS_SCRIPT_KAITHI, + KBTS_SCRIPT_KANNADA, + KBTS_SCRIPT_KATAKANA, + KBTS_SCRIPT_KAWI, + KBTS_SCRIPT_KAYAH_LI, + KBTS_SCRIPT_KHAROSHTHI, + KBTS_SCRIPT_KHITAN_SMALL_SCRIPT, + KBTS_SCRIPT_KHMER, + KBTS_SCRIPT_KHOJKI, + KBTS_SCRIPT_KHUDAWADI, + KBTS_SCRIPT_KIRAT_RAI, + KBTS_SCRIPT_LAO, + KBTS_SCRIPT_LATIN, + KBTS_SCRIPT_LEPCHA, + KBTS_SCRIPT_LIMBU, + KBTS_SCRIPT_LINEAR_A, + KBTS_SCRIPT_LINEAR_B, + KBTS_SCRIPT_LISU, + KBTS_SCRIPT_LYCIAN, + KBTS_SCRIPT_LYDIAN, + KBTS_SCRIPT_MAHAJANI, + KBTS_SCRIPT_MAKASAR, + KBTS_SCRIPT_MALAYALAM, + KBTS_SCRIPT_MANDAIC, + KBTS_SCRIPT_MANICHAEAN, + KBTS_SCRIPT_MARCHEN, + KBTS_SCRIPT_MASARAM_GONDI, + KBTS_SCRIPT_MEDEFAIDRIN, + KBTS_SCRIPT_MEETEI_MAYEK, + KBTS_SCRIPT_MENDE_KIKAKUI, + KBTS_SCRIPT_MEROITIC_CURSIVE, + KBTS_SCRIPT_MEROITIC_HIEROGLYPHS, + KBTS_SCRIPT_MIAO, + KBTS_SCRIPT_MODI, + KBTS_SCRIPT_MONGOLIAN, + KBTS_SCRIPT_MRO, + KBTS_SCRIPT_MULTANI, + KBTS_SCRIPT_MYANMAR, + KBTS_SCRIPT_NABATAEAN, + KBTS_SCRIPT_NAG_MUNDARI, + KBTS_SCRIPT_NANDINAGARI, + KBTS_SCRIPT_NEWA, + KBTS_SCRIPT_NEW_TAI_LUE, + KBTS_SCRIPT_NKO, + KBTS_SCRIPT_NUSHU, + KBTS_SCRIPT_NYIAKENG_PUACHUE_HMONG, + KBTS_SCRIPT_OGHAM, + KBTS_SCRIPT_OL_CHIKI, + KBTS_SCRIPT_OL_ONAL, + KBTS_SCRIPT_OLD_ITALIC, + KBTS_SCRIPT_OLD_HUNGARIAN, + KBTS_SCRIPT_OLD_NORTH_ARABIAN, + KBTS_SCRIPT_OLD_PERMIC, + KBTS_SCRIPT_OLD_PERSIAN_CUNEIFORM, + KBTS_SCRIPT_OLD_SOGDIAN, + KBTS_SCRIPT_OLD_SOUTH_ARABIAN, + KBTS_SCRIPT_OLD_TURKIC, + KBTS_SCRIPT_OLD_UYGHUR, + KBTS_SCRIPT_ODIA, + KBTS_SCRIPT_OSAGE, + KBTS_SCRIPT_OSMANYA, + KBTS_SCRIPT_PAHAWH_HMONG, + KBTS_SCRIPT_PALMYRENE, + KBTS_SCRIPT_PAU_CIN_HAU, + KBTS_SCRIPT_PHAGS_PA, + KBTS_SCRIPT_PHOENICIAN, + KBTS_SCRIPT_PSALTER_PAHLAVI, + KBTS_SCRIPT_REJANG, + KBTS_SCRIPT_RUNIC, + KBTS_SCRIPT_SAMARITAN, + KBTS_SCRIPT_SAURASHTRA, + KBTS_SCRIPT_SHARADA, + KBTS_SCRIPT_SHAVIAN, + KBTS_SCRIPT_SIDDHAM, + KBTS_SCRIPT_SIGN_WRITING, + KBTS_SCRIPT_SOGDIAN, + KBTS_SCRIPT_SINHALA, + KBTS_SCRIPT_SORA_SOMPENG, + KBTS_SCRIPT_SOYOMBO, + KBTS_SCRIPT_SUMERO_AKKADIAN_CUNEIFORM, + KBTS_SCRIPT_SUNDANESE, + KBTS_SCRIPT_SUNUWAR, + KBTS_SCRIPT_SYLOTI_NAGRI, + KBTS_SCRIPT_SYRIAC, + KBTS_SCRIPT_TAGALOG, + KBTS_SCRIPT_TAGBANWA, + KBTS_SCRIPT_TAI_LE, + KBTS_SCRIPT_TAI_THAM, + KBTS_SCRIPT_TAI_VIET, + KBTS_SCRIPT_TAKRI, + KBTS_SCRIPT_TAMIL, + KBTS_SCRIPT_TANGSA, + KBTS_SCRIPT_TANGUT, + KBTS_SCRIPT_TELUGU, + KBTS_SCRIPT_THAANA, + KBTS_SCRIPT_THAI, + KBTS_SCRIPT_TIBETAN, + KBTS_SCRIPT_TIFINAGH, + KBTS_SCRIPT_TIRHUTA, + KBTS_SCRIPT_TODHRI, + KBTS_SCRIPT_TOTO, + KBTS_SCRIPT_TULU_TIGALARI, + KBTS_SCRIPT_UGARITIC_CUNEIFORM, + KBTS_SCRIPT_VAI, + KBTS_SCRIPT_VITHKUQI, + KBTS_SCRIPT_WANCHO, + KBTS_SCRIPT_WARANG_CITI, + KBTS_SCRIPT_YEZIDI, + KBTS_SCRIPT_YI, + KBTS_SCRIPT_ZANABAZAR_SQUARE, + KBTS_SCRIPT_COUNT, +}; + +typedef kbts_u32 kbts_feature_tag; +enum kbts_feature_tag_enum +{ + KBTS_FEATURE_TAG_isol = KBTS_FOURCC('i', 's', 'o', 'l'), // Isolated Forms + KBTS_FEATURE_TAG_fina = KBTS_FOURCC('f', 'i', 'n', 'a'), // Terminal Forms + KBTS_FEATURE_TAG_fin2 = KBTS_FOURCC('f', 'i', 'n', '2'), // Terminal Forms #2 + KBTS_FEATURE_TAG_fin3 = KBTS_FOURCC('f', 'i', 'n', '3'), // Terminal Forms #3 + KBTS_FEATURE_TAG_medi = KBTS_FOURCC('m', 'e', 'd', 'i'), // Medial Forms + KBTS_FEATURE_TAG_med2 = KBTS_FOURCC('m', 'e', 'd', '2'), // Medial Forms #2 + KBTS_FEATURE_TAG_init = KBTS_FOURCC('i', 'n', 'i', 't'), // Initial Forms + KBTS_FEATURE_TAG_ljmo = KBTS_FOURCC('l', 'j', 'm', 'o'), // Leading Jamo Forms + KBTS_FEATURE_TAG_vjmo = KBTS_FOURCC('v', 'j', 'm', 'o'), // Vowel Jamo Forms + KBTS_FEATURE_TAG_tjmo = KBTS_FOURCC('t', 'j', 'm', 'o'), // Trailing Jamo Forms + KBTS_FEATURE_TAG_rphf = KBTS_FOURCC('r', 'p', 'h', 'f'), // Reph Form + KBTS_FEATURE_TAG_blwf = KBTS_FOURCC('b', 'l', 'w', 'f'), // Below-base Forms + KBTS_FEATURE_TAG_half = KBTS_FOURCC('h', 'a', 'l', 'f'), // Half Forms + KBTS_FEATURE_TAG_pstf = KBTS_FOURCC('p', 's', 't', 'f'), // Post-base Forms + KBTS_FEATURE_TAG_abvf = KBTS_FOURCC('a', 'b', 'v', 'f'), // Above-base Forms + KBTS_FEATURE_TAG_pref = KBTS_FOURCC('p', 'r', 'e', 'f'), // Pre-base Forms + KBTS_FEATURE_TAG_numr = KBTS_FOURCC('n', 'u', 'm', 'r'), // Numerators + KBTS_FEATURE_TAG_frac = KBTS_FOURCC('f', 'r', 'a', 'c'), // Fractions + KBTS_FEATURE_TAG_dnom = KBTS_FOURCC('d', 'n', 'o', 'm'), // Denominators + KBTS_FEATURE_TAG_cfar = KBTS_FOURCC('c', 'f', 'a', 'r'), // Conjunct Form After Ro + KBTS_FEATURE_TAG_aalt = KBTS_FOURCC('a', 'a', 'l', 't'), // Access All Alternates + KBTS_FEATURE_TAG_abvm = KBTS_FOURCC('a', 'b', 'v', 'm'), // Above-base Mark Positioning + KBTS_FEATURE_TAG_abvs = KBTS_FOURCC('a', 'b', 'v', 's'), // Above-base Substitutions + KBTS_FEATURE_TAG_afrc = KBTS_FOURCC('a', 'f', 'r', 'c'), // Alternative Fractions + KBTS_FEATURE_TAG_akhn = KBTS_FOURCC('a', 'k', 'h', 'n'), // Akhand + KBTS_FEATURE_TAG_apkn = KBTS_FOURCC('a', 'p', 'k', 'n'), // Kerning for Alternate Proportional Widths + KBTS_FEATURE_TAG_blwm = KBTS_FOURCC('b', 'l', 'w', 'm'), // Below-base Mark Positioning + KBTS_FEATURE_TAG_blws = KBTS_FOURCC('b', 'l', 'w', 's'), // Below-base Substitutions + KBTS_FEATURE_TAG_calt = KBTS_FOURCC('c', 'a', 'l', 't'), // Contextual Alternates + KBTS_FEATURE_TAG_case = KBTS_FOURCC('c', 'a', 's', 'e'), // Case-sensitive Forms + KBTS_FEATURE_TAG_ccmp = KBTS_FOURCC('c', 'c', 'm', 'p'), // Glyph Composition / Decomposition + KBTS_FEATURE_TAG_chws = KBTS_FOURCC('c', 'h', 'w', 's'), // Contextual Half-width Spacing + KBTS_FEATURE_TAG_cjct = KBTS_FOURCC('c', 'j', 'c', 't'), // Conjunct Forms + KBTS_FEATURE_TAG_clig = KBTS_FOURCC('c', 'l', 'i', 'g'), // Contextual Ligatures + KBTS_FEATURE_TAG_cpct = KBTS_FOURCC('c', 'p', 'c', 't'), // Centered CJK Punctuation + KBTS_FEATURE_TAG_cpsp = KBTS_FOURCC('c', 'p', 's', 'p'), // Capital Spacing + KBTS_FEATURE_TAG_cswh = KBTS_FOURCC('c', 's', 'w', 'h'), // Contextual Swash + KBTS_FEATURE_TAG_curs = KBTS_FOURCC('c', 'u', 'r', 's'), // Cursive Positioning + KBTS_FEATURE_TAG_cv01 = KBTS_FOURCC('c', 'v', '0', '1'), // Character Variant 1 + KBTS_FEATURE_TAG_cv02 = KBTS_FOURCC('c', 'v', '0', '2'), // Character Variant 2 + KBTS_FEATURE_TAG_cv03 = KBTS_FOURCC('c', 'v', '0', '3'), // Character Variant 3 + KBTS_FEATURE_TAG_cv04 = KBTS_FOURCC('c', 'v', '0', '4'), // Character Variant 4 + KBTS_FEATURE_TAG_cv05 = KBTS_FOURCC('c', 'v', '0', '5'), // Character Variant 5 + KBTS_FEATURE_TAG_cv06 = KBTS_FOURCC('c', 'v', '0', '6'), // Character Variant 6 + KBTS_FEATURE_TAG_cv07 = KBTS_FOURCC('c', 'v', '0', '7'), // Character Variant 7 + KBTS_FEATURE_TAG_cv08 = KBTS_FOURCC('c', 'v', '0', '8'), // Character Variant 8 + KBTS_FEATURE_TAG_cv09 = KBTS_FOURCC('c', 'v', '0', '9'), // Character Variant 9 + KBTS_FEATURE_TAG_cv10 = KBTS_FOURCC('c', 'v', '1', '0'), // Character Variant 10 + KBTS_FEATURE_TAG_cv11 = KBTS_FOURCC('c', 'v', '1', '1'), // Character Variant 11 + KBTS_FEATURE_TAG_cv12 = KBTS_FOURCC('c', 'v', '1', '2'), // Character Variant 12 + KBTS_FEATURE_TAG_cv13 = KBTS_FOURCC('c', 'v', '1', '3'), // Character Variant 13 + KBTS_FEATURE_TAG_cv14 = KBTS_FOURCC('c', 'v', '1', '4'), // Character Variant 14 + KBTS_FEATURE_TAG_cv15 = KBTS_FOURCC('c', 'v', '1', '5'), // Character Variant 15 + KBTS_FEATURE_TAG_cv16 = KBTS_FOURCC('c', 'v', '1', '6'), // Character Variant 16 + KBTS_FEATURE_TAG_cv17 = KBTS_FOURCC('c', 'v', '1', '7'), // Character Variant 17 + KBTS_FEATURE_TAG_cv18 = KBTS_FOURCC('c', 'v', '1', '8'), // Character Variant 18 + KBTS_FEATURE_TAG_cv19 = KBTS_FOURCC('c', 'v', '1', '9'), // Character Variant 19 + KBTS_FEATURE_TAG_cv20 = KBTS_FOURCC('c', 'v', '2', '0'), // Character Variant 20 + KBTS_FEATURE_TAG_cv21 = KBTS_FOURCC('c', 'v', '2', '1'), // Character Variant 21 + KBTS_FEATURE_TAG_cv22 = KBTS_FOURCC('c', 'v', '2', '2'), // Character Variant 22 + KBTS_FEATURE_TAG_cv23 = KBTS_FOURCC('c', 'v', '2', '3'), // Character Variant 23 + KBTS_FEATURE_TAG_cv24 = KBTS_FOURCC('c', 'v', '2', '4'), // Character Variant 24 + KBTS_FEATURE_TAG_cv25 = KBTS_FOURCC('c', 'v', '2', '5'), // Character Variant 25 + KBTS_FEATURE_TAG_cv26 = KBTS_FOURCC('c', 'v', '2', '6'), // Character Variant 26 + KBTS_FEATURE_TAG_cv27 = KBTS_FOURCC('c', 'v', '2', '7'), // Character Variant 27 + KBTS_FEATURE_TAG_cv28 = KBTS_FOURCC('c', 'v', '2', '8'), // Character Variant 28 + KBTS_FEATURE_TAG_cv29 = KBTS_FOURCC('c', 'v', '2', '9'), // Character Variant 29 + KBTS_FEATURE_TAG_cv30 = KBTS_FOURCC('c', 'v', '3', '0'), // Character Variant 30 + KBTS_FEATURE_TAG_cv31 = KBTS_FOURCC('c', 'v', '3', '1'), // Character Variant 31 + KBTS_FEATURE_TAG_cv32 = KBTS_FOURCC('c', 'v', '3', '2'), // Character Variant 32 + KBTS_FEATURE_TAG_cv33 = KBTS_FOURCC('c', 'v', '3', '3'), // Character Variant 33 + KBTS_FEATURE_TAG_cv34 = KBTS_FOURCC('c', 'v', '3', '4'), // Character Variant 34 + KBTS_FEATURE_TAG_cv35 = KBTS_FOURCC('c', 'v', '3', '5'), // Character Variant 35 + KBTS_FEATURE_TAG_cv36 = KBTS_FOURCC('c', 'v', '3', '6'), // Character Variant 36 + KBTS_FEATURE_TAG_cv37 = KBTS_FOURCC('c', 'v', '3', '7'), // Character Variant 37 + KBTS_FEATURE_TAG_cv38 = KBTS_FOURCC('c', 'v', '3', '8'), // Character Variant 38 + KBTS_FEATURE_TAG_cv39 = KBTS_FOURCC('c', 'v', '3', '9'), // Character Variant 39 + KBTS_FEATURE_TAG_cv40 = KBTS_FOURCC('c', 'v', '4', '0'), // Character Variant 40 + KBTS_FEATURE_TAG_cv41 = KBTS_FOURCC('c', 'v', '4', '1'), // Character Variant 41 + KBTS_FEATURE_TAG_cv42 = KBTS_FOURCC('c', 'v', '4', '2'), // Character Variant 42 + KBTS_FEATURE_TAG_cv43 = KBTS_FOURCC('c', 'v', '4', '3'), // Character Variant 43 + KBTS_FEATURE_TAG_cv44 = KBTS_FOURCC('c', 'v', '4', '4'), // Character Variant 44 + KBTS_FEATURE_TAG_cv45 = KBTS_FOURCC('c', 'v', '4', '5'), // Character Variant 45 + KBTS_FEATURE_TAG_cv46 = KBTS_FOURCC('c', 'v', '4', '6'), // Character Variant 46 + KBTS_FEATURE_TAG_cv47 = KBTS_FOURCC('c', 'v', '4', '7'), // Character Variant 47 + KBTS_FEATURE_TAG_cv48 = KBTS_FOURCC('c', 'v', '4', '8'), // Character Variant 48 + KBTS_FEATURE_TAG_cv49 = KBTS_FOURCC('c', 'v', '4', '9'), // Character Variant 49 + KBTS_FEATURE_TAG_cv50 = KBTS_FOURCC('c', 'v', '5', '0'), // Character Variant 50 + KBTS_FEATURE_TAG_cv51 = KBTS_FOURCC('c', 'v', '5', '1'), // Character Variant 51 + KBTS_FEATURE_TAG_cv52 = KBTS_FOURCC('c', 'v', '5', '2'), // Character Variant 52 + KBTS_FEATURE_TAG_cv53 = KBTS_FOURCC('c', 'v', '5', '3'), // Character Variant 53 + KBTS_FEATURE_TAG_cv54 = KBTS_FOURCC('c', 'v', '5', '4'), // Character Variant 54 + KBTS_FEATURE_TAG_cv55 = KBTS_FOURCC('c', 'v', '5', '5'), // Character Variant 55 + KBTS_FEATURE_TAG_cv56 = KBTS_FOURCC('c', 'v', '5', '6'), // Character Variant 56 + KBTS_FEATURE_TAG_cv57 = KBTS_FOURCC('c', 'v', '5', '7'), // Character Variant 57 + KBTS_FEATURE_TAG_cv58 = KBTS_FOURCC('c', 'v', '5', '8'), // Character Variant 58 + KBTS_FEATURE_TAG_cv59 = KBTS_FOURCC('c', 'v', '5', '9'), // Character Variant 59 + KBTS_FEATURE_TAG_cv60 = KBTS_FOURCC('c', 'v', '6', '0'), // Character Variant 60 + KBTS_FEATURE_TAG_cv61 = KBTS_FOURCC('c', 'v', '6', '1'), // Character Variant 61 + KBTS_FEATURE_TAG_cv62 = KBTS_FOURCC('c', 'v', '6', '2'), // Character Variant 62 + KBTS_FEATURE_TAG_cv63 = KBTS_FOURCC('c', 'v', '6', '3'), // Character Variant 63 + KBTS_FEATURE_TAG_cv64 = KBTS_FOURCC('c', 'v', '6', '4'), // Character Variant 64 + KBTS_FEATURE_TAG_cv65 = KBTS_FOURCC('c', 'v', '6', '5'), // Character Variant 65 + KBTS_FEATURE_TAG_cv66 = KBTS_FOURCC('c', 'v', '6', '6'), // Character Variant 66 + KBTS_FEATURE_TAG_cv67 = KBTS_FOURCC('c', 'v', '6', '7'), // Character Variant 67 + KBTS_FEATURE_TAG_cv68 = KBTS_FOURCC('c', 'v', '6', '8'), // Character Variant 68 + KBTS_FEATURE_TAG_cv69 = KBTS_FOURCC('c', 'v', '6', '9'), // Character Variant 69 + KBTS_FEATURE_TAG_cv70 = KBTS_FOURCC('c', 'v', '7', '0'), // Character Variant 70 + KBTS_FEATURE_TAG_cv71 = KBTS_FOURCC('c', 'v', '7', '1'), // Character Variant 71 + KBTS_FEATURE_TAG_cv72 = KBTS_FOURCC('c', 'v', '7', '2'), // Character Variant 72 + KBTS_FEATURE_TAG_cv73 = KBTS_FOURCC('c', 'v', '7', '3'), // Character Variant 73 + KBTS_FEATURE_TAG_cv74 = KBTS_FOURCC('c', 'v', '7', '4'), // Character Variant 74 + KBTS_FEATURE_TAG_cv75 = KBTS_FOURCC('c', 'v', '7', '5'), // Character Variant 75 + KBTS_FEATURE_TAG_cv76 = KBTS_FOURCC('c', 'v', '7', '6'), // Character Variant 76 + KBTS_FEATURE_TAG_cv77 = KBTS_FOURCC('c', 'v', '7', '7'), // Character Variant 77 + KBTS_FEATURE_TAG_cv78 = KBTS_FOURCC('c', 'v', '7', '8'), // Character Variant 78 + KBTS_FEATURE_TAG_cv79 = KBTS_FOURCC('c', 'v', '7', '9'), // Character Variant 79 + KBTS_FEATURE_TAG_cv80 = KBTS_FOURCC('c', 'v', '8', '0'), // Character Variant 80 + KBTS_FEATURE_TAG_cv81 = KBTS_FOURCC('c', 'v', '8', '1'), // Character Variant 81 + KBTS_FEATURE_TAG_cv82 = KBTS_FOURCC('c', 'v', '8', '2'), // Character Variant 82 + KBTS_FEATURE_TAG_cv83 = KBTS_FOURCC('c', 'v', '8', '3'), // Character Variant 83 + KBTS_FEATURE_TAG_cv84 = KBTS_FOURCC('c', 'v', '8', '4'), // Character Variant 84 + KBTS_FEATURE_TAG_cv85 = KBTS_FOURCC('c', 'v', '8', '5'), // Character Variant 85 + KBTS_FEATURE_TAG_cv86 = KBTS_FOURCC('c', 'v', '8', '6'), // Character Variant 86 + KBTS_FEATURE_TAG_cv87 = KBTS_FOURCC('c', 'v', '8', '7'), // Character Variant 87 + KBTS_FEATURE_TAG_cv88 = KBTS_FOURCC('c', 'v', '8', '8'), // Character Variant 88 + KBTS_FEATURE_TAG_cv89 = KBTS_FOURCC('c', 'v', '8', '9'), // Character Variant 89 + KBTS_FEATURE_TAG_cv90 = KBTS_FOURCC('c', 'v', '9', '0'), // Character Variant 90 + KBTS_FEATURE_TAG_cv91 = KBTS_FOURCC('c', 'v', '9', '1'), // Character Variant 91 + KBTS_FEATURE_TAG_cv92 = KBTS_FOURCC('c', 'v', '9', '2'), // Character Variant 92 + KBTS_FEATURE_TAG_cv93 = KBTS_FOURCC('c', 'v', '9', '3'), // Character Variant 93 + KBTS_FEATURE_TAG_cv94 = KBTS_FOURCC('c', 'v', '9', '4'), // Character Variant 94 + KBTS_FEATURE_TAG_cv95 = KBTS_FOURCC('c', 'v', '9', '5'), // Character Variant 95 + KBTS_FEATURE_TAG_cv96 = KBTS_FOURCC('c', 'v', '9', '6'), // Character Variant 96 + KBTS_FEATURE_TAG_cv97 = KBTS_FOURCC('c', 'v', '9', '7'), // Character Variant 97 + KBTS_FEATURE_TAG_cv98 = KBTS_FOURCC('c', 'v', '9', '8'), // Character Variant 98 + KBTS_FEATURE_TAG_cv99 = KBTS_FOURCC('c', 'v', '9', '9'), // Character Variant 99 + KBTS_FEATURE_TAG_c2pc = KBTS_FOURCC('c', '2', 'p', 'c'), // Petite Capitals From Capitals + KBTS_FEATURE_TAG_c2sc = KBTS_FOURCC('c', '2', 's', 'c'), // Small Capitals From Capitals + KBTS_FEATURE_TAG_dist = KBTS_FOURCC('d', 'i', 's', 't'), // Distances + KBTS_FEATURE_TAG_dlig = KBTS_FOURCC('d', 'l', 'i', 'g'), // Discretionary Ligatures + KBTS_FEATURE_TAG_dtls = KBTS_FOURCC('d', 't', 'l', 's'), // Dotless Forms + KBTS_FEATURE_TAG_expt = KBTS_FOURCC('e', 'x', 'p', 't'), // Expert Forms + KBTS_FEATURE_TAG_falt = KBTS_FOURCC('f', 'a', 'l', 't'), // Final Glyph on Line Alternates + KBTS_FEATURE_TAG_flac = KBTS_FOURCC('f', 'l', 'a', 'c'), // Flattened Accent Forms + KBTS_FEATURE_TAG_fwid = KBTS_FOURCC('f', 'w', 'i', 'd'), // Full Widths + KBTS_FEATURE_TAG_haln = KBTS_FOURCC('h', 'a', 'l', 'n'), // Halant Forms + KBTS_FEATURE_TAG_halt = KBTS_FOURCC('h', 'a', 'l', 't'), // Alternate Half Widths + KBTS_FEATURE_TAG_hist = KBTS_FOURCC('h', 'i', 's', 't'), // Historical Forms + KBTS_FEATURE_TAG_hkna = KBTS_FOURCC('h', 'k', 'n', 'a'), // Horizontal Kana Alternates + KBTS_FEATURE_TAG_hlig = KBTS_FOURCC('h', 'l', 'i', 'g'), // Historical Ligatures + KBTS_FEATURE_TAG_hngl = KBTS_FOURCC('h', 'n', 'g', 'l'), // Hangul + KBTS_FEATURE_TAG_hojo = KBTS_FOURCC('h', 'o', 'j', 'o'), // Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms) + KBTS_FEATURE_TAG_hwid = KBTS_FOURCC('h', 'w', 'i', 'd'), // Half Widths + KBTS_FEATURE_TAG_ital = KBTS_FOURCC('i', 't', 'a', 'l'), // Italics + KBTS_FEATURE_TAG_jalt = KBTS_FOURCC('j', 'a', 'l', 't'), // Justification Alternates + KBTS_FEATURE_TAG_jp78 = KBTS_FOURCC('j', 'p', '7', '8'), // JIS78 Forms + KBTS_FEATURE_TAG_jp83 = KBTS_FOURCC('j', 'p', '8', '3'), // JIS83 Forms + KBTS_FEATURE_TAG_jp90 = KBTS_FOURCC('j', 'p', '9', '0'), // JIS90 Forms + KBTS_FEATURE_TAG_jp04 = KBTS_FOURCC('j', 'p', '0', '4'), // JIS2004 Forms + KBTS_FEATURE_TAG_kern = KBTS_FOURCC('k', 'e', 'r', 'n'), // Kerning + KBTS_FEATURE_TAG_lfbd = KBTS_FOURCC('l', 'f', 'b', 'd'), // Left Bounds + KBTS_FEATURE_TAG_liga = KBTS_FOURCC('l', 'i', 'g', 'a'), // Standard Ligatures + KBTS_FEATURE_TAG_lnum = KBTS_FOURCC('l', 'n', 'u', 'm'), // Lining Figures + KBTS_FEATURE_TAG_locl = KBTS_FOURCC('l', 'o', 'c', 'l'), // Localized Forms + KBTS_FEATURE_TAG_ltra = KBTS_FOURCC('l', 't', 'r', 'a'), // Left-to-right Alternates + KBTS_FEATURE_TAG_ltrm = KBTS_FOURCC('l', 't', 'r', 'm'), // Left-to-right Mirrored Forms + KBTS_FEATURE_TAG_mark = KBTS_FOURCC('m', 'a', 'r', 'k'), // Mark Positioning + KBTS_FEATURE_TAG_mgrk = KBTS_FOURCC('m', 'g', 'r', 'k'), // Mathematical Greek + KBTS_FEATURE_TAG_mkmk = KBTS_FOURCC('m', 'k', 'm', 'k'), // Mark to Mark Positioning + KBTS_FEATURE_TAG_mset = KBTS_FOURCC('m', 's', 'e', 't'), // Mark Positioning via Substitution + KBTS_FEATURE_TAG_nalt = KBTS_FOURCC('n', 'a', 'l', 't'), // Alternate Annotation Forms + KBTS_FEATURE_TAG_nlck = KBTS_FOURCC('n', 'l', 'c', 'k'), // NLC Kanji Forms + KBTS_FEATURE_TAG_nukt = KBTS_FOURCC('n', 'u', 'k', 't'), // Nukta Forms + KBTS_FEATURE_TAG_onum = KBTS_FOURCC('o', 'n', 'u', 'm'), // Oldstyle Figures + KBTS_FEATURE_TAG_opbd = KBTS_FOURCC('o', 'p', 'b', 'd'), // Optical Bounds + KBTS_FEATURE_TAG_ordn = KBTS_FOURCC('o', 'r', 'd', 'n'), // Ordinals + KBTS_FEATURE_TAG_ornm = KBTS_FOURCC('o', 'r', 'n', 'm'), // Ornaments + KBTS_FEATURE_TAG_palt = KBTS_FOURCC('p', 'a', 'l', 't'), // Proportional Alternate Widths + KBTS_FEATURE_TAG_pcap = KBTS_FOURCC('p', 'c', 'a', 'p'), // Petite Capitals + KBTS_FEATURE_TAG_pkna = KBTS_FOURCC('p', 'k', 'n', 'a'), // Proportional Kana + KBTS_FEATURE_TAG_pnum = KBTS_FOURCC('p', 'n', 'u', 'm'), // Proportional Figures + KBTS_FEATURE_TAG_pres = KBTS_FOURCC('p', 'r', 'e', 's'), // Pre-base Substitutions + KBTS_FEATURE_TAG_psts = KBTS_FOURCC('p', 's', 't', 's'), // Post-base Substitutions + KBTS_FEATURE_TAG_pwid = KBTS_FOURCC('p', 'w', 'i', 'd'), // Proportional Widths + KBTS_FEATURE_TAG_qwid = KBTS_FOURCC('q', 'w', 'i', 'd'), // Quarter Widths + KBTS_FEATURE_TAG_rand = KBTS_FOURCC('r', 'a', 'n', 'd'), // Randomize + KBTS_FEATURE_TAG_rclt = KBTS_FOURCC('r', 'c', 'l', 't'), // Required Contextual Alternates + KBTS_FEATURE_TAG_rkrf = KBTS_FOURCC('r', 'k', 'r', 'f'), // Rakar Forms + KBTS_FEATURE_TAG_rlig = KBTS_FOURCC('r', 'l', 'i', 'g'), // Required Ligatures + KBTS_FEATURE_TAG_rtbd = KBTS_FOURCC('r', 't', 'b', 'd'), // Right Bounds + KBTS_FEATURE_TAG_rtla = KBTS_FOURCC('r', 't', 'l', 'a'), // Right-to-left Alternates + KBTS_FEATURE_TAG_rtlm = KBTS_FOURCC('r', 't', 'l', 'm'), // Right-to-left Mirrored Forms + KBTS_FEATURE_TAG_ruby = KBTS_FOURCC('r', 'u', 'b', 'y'), // Ruby Notation Forms + KBTS_FEATURE_TAG_rvrn = KBTS_FOURCC('r', 'v', 'r', 'n'), // Required Variation Alternates + KBTS_FEATURE_TAG_salt = KBTS_FOURCC('s', 'a', 'l', 't'), // Stylistic Alternates + KBTS_FEATURE_TAG_sinf = KBTS_FOURCC('s', 'i', 'n', 'f'), // Scientific Inferiors + KBTS_FEATURE_TAG_size = KBTS_FOURCC('s', 'i', 'z', 'e'), // Optical size + KBTS_FEATURE_TAG_smcp = KBTS_FOURCC('s', 'm', 'c', 'p'), // Small Capitals + KBTS_FEATURE_TAG_smpl = KBTS_FOURCC('s', 'm', 'p', 'l'), // Simplified Forms + KBTS_FEATURE_TAG_ss01 = KBTS_FOURCC('s', 's', '0', '1'), // Stylistic Set 1 + KBTS_FEATURE_TAG_ss02 = KBTS_FOURCC('s', 's', '0', '2'), // Stylistic Set 2 + KBTS_FEATURE_TAG_ss03 = KBTS_FOURCC('s', 's', '0', '3'), // Stylistic Set 3 + KBTS_FEATURE_TAG_ss04 = KBTS_FOURCC('s', 's', '0', '4'), // Stylistic Set 4 + KBTS_FEATURE_TAG_ss05 = KBTS_FOURCC('s', 's', '0', '5'), // Stylistic Set 5 + KBTS_FEATURE_TAG_ss06 = KBTS_FOURCC('s', 's', '0', '6'), // Stylistic Set 6 + KBTS_FEATURE_TAG_ss07 = KBTS_FOURCC('s', 's', '0', '7'), // Stylistic Set 7 + KBTS_FEATURE_TAG_ss08 = KBTS_FOURCC('s', 's', '0', '8'), // Stylistic Set 8 + KBTS_FEATURE_TAG_ss09 = KBTS_FOURCC('s', 's', '0', '9'), // Stylistic Set 9 + KBTS_FEATURE_TAG_ss10 = KBTS_FOURCC('s', 's', '1', '0'), // Stylistic Set 10 + KBTS_FEATURE_TAG_ss11 = KBTS_FOURCC('s', 's', '1', '1'), // Stylistic Set 11 + KBTS_FEATURE_TAG_ss12 = KBTS_FOURCC('s', 's', '1', '2'), // Stylistic Set 12 + KBTS_FEATURE_TAG_ss13 = KBTS_FOURCC('s', 's', '1', '3'), // Stylistic Set 13 + KBTS_FEATURE_TAG_ss14 = KBTS_FOURCC('s', 's', '1', '4'), // Stylistic Set 14 + KBTS_FEATURE_TAG_ss15 = KBTS_FOURCC('s', 's', '1', '5'), // Stylistic Set 15 + KBTS_FEATURE_TAG_ss16 = KBTS_FOURCC('s', 's', '1', '6'), // Stylistic Set 16 + KBTS_FEATURE_TAG_ss17 = KBTS_FOURCC('s', 's', '1', '7'), // Stylistic Set 17 + KBTS_FEATURE_TAG_ss18 = KBTS_FOURCC('s', 's', '1', '8'), // Stylistic Set 18 + KBTS_FEATURE_TAG_ss19 = KBTS_FOURCC('s', 's', '1', '9'), // Stylistic Set 19 + KBTS_FEATURE_TAG_ss20 = KBTS_FOURCC('s', 's', '2', '0'), // Stylistic Set 20 + KBTS_FEATURE_TAG_ssty = KBTS_FOURCC('s', 's', 't', 'y'), // Math Script-style Alternates + KBTS_FEATURE_TAG_stch = KBTS_FOURCC('s', 't', 'c', 'h'), // Stretching Glyph Decomposition + KBTS_FEATURE_TAG_subs = KBTS_FOURCC('s', 'u', 'b', 's'), // Subscript + KBTS_FEATURE_TAG_sups = KBTS_FOURCC('s', 'u', 'p', 's'), // Superscript + KBTS_FEATURE_TAG_swsh = KBTS_FOURCC('s', 'w', 's', 'h'), // Swash + KBTS_FEATURE_TAG_test = KBTS_FOURCC('t', 'e', 's', 't'), // Test features, only for development + KBTS_FEATURE_TAG_titl = KBTS_FOURCC('t', 'i', 't', 'l'), // Titling + KBTS_FEATURE_TAG_tnam = KBTS_FOURCC('t', 'n', 'a', 'm'), // Traditional Name Forms + KBTS_FEATURE_TAG_tnum = KBTS_FOURCC('t', 'n', 'u', 'm'), // Tabular Figures + KBTS_FEATURE_TAG_trad = KBTS_FOURCC('t', 'r', 'a', 'd'), // Traditional Forms + KBTS_FEATURE_TAG_twid = KBTS_FOURCC('t', 'w', 'i', 'd'), // Third Widths + KBTS_FEATURE_TAG_unic = KBTS_FOURCC('u', 'n', 'i', 'c'), // Unicase + KBTS_FEATURE_TAG_valt = KBTS_FOURCC('v', 'a', 'l', 't'), // Alternate Vertical Metrics + KBTS_FEATURE_TAG_vapk = KBTS_FOURCC('v', 'a', 'p', 'k'), // Kerning for Alternate Proportional Vertical Metrics + KBTS_FEATURE_TAG_vatu = KBTS_FOURCC('v', 'a', 't', 'u'), // Vattu Variants + KBTS_FEATURE_TAG_vchw = KBTS_FOURCC('v', 'c', 'h', 'w'), // Vertical Contextual Half-width Spacing + KBTS_FEATURE_TAG_vert = KBTS_FOURCC('v', 'e', 'r', 't'), // Vertical Alternates + KBTS_FEATURE_TAG_vhal = KBTS_FOURCC('v', 'h', 'a', 'l'), // Alternate Vertical Half Metrics + KBTS_FEATURE_TAG_vkna = KBTS_FOURCC('v', 'k', 'n', 'a'), // Vertical Kana Alternates + KBTS_FEATURE_TAG_vkrn = KBTS_FOURCC('v', 'k', 'r', 'n'), // Vertical Kerning + KBTS_FEATURE_TAG_vpal = KBTS_FOURCC('v', 'p', 'a', 'l'), // Proportional Alternate Vertical Metrics + KBTS_FEATURE_TAG_vrt2 = KBTS_FOURCC('v', 'r', 't', '2'), // Vertical Alternates and Rotation + KBTS_FEATURE_TAG_vrtr = KBTS_FOURCC('v', 'r', 't', 'r'), // Vertical Alternates for Rotation + KBTS_FEATURE_TAG_zero = KBTS_FOURCC('z', 'e', 'r', 'o'), // Slashed Zero +}; + +typedef kbts_u32 kbts_feature_id; +enum kbts_feature_id_enum +{ + KBTS_FEATURE_ID_isol, // Isolated Forms + KBTS_FEATURE_ID_fina, // Terminal Forms + KBTS_FEATURE_ID_fin2, // Terminal Forms #2 + KBTS_FEATURE_ID_fin3, // Terminal Forms #3 + KBTS_FEATURE_ID_medi, // Medial Forms + KBTS_FEATURE_ID_med2, // Medial Forms #2 + KBTS_FEATURE_ID_init, // Initial Forms + KBTS_FEATURE_ID_ljmo, // Leading Jamo Forms + KBTS_FEATURE_ID_vjmo, // Vowel Jamo Forms + KBTS_FEATURE_ID_tjmo, // Trailing Jamo Forms + KBTS_FEATURE_ID_rphf, // Reph Form + KBTS_FEATURE_ID_blwf, // Below-base Forms + KBTS_FEATURE_ID_half, // Half Forms + KBTS_FEATURE_ID_pstf, // Post-base Forms + KBTS_FEATURE_ID_abvf, // Above-base Forms + KBTS_FEATURE_ID_pref, // Pre-base Forms + KBTS_FEATURE_ID_numr, // Numerators + KBTS_FEATURE_ID_frac, // Fractions + KBTS_FEATURE_ID_dnom, // Denominators + KBTS_FEATURE_ID_cfar, // Conjunct Form After Ro + KBTS_FEATURE_ID_aalt, // Access All Alternates + KBTS_FEATURE_ID_abvm, // Above-base Mark Positioning + KBTS_FEATURE_ID_abvs, // Above-base Substitutions + KBTS_FEATURE_ID_afrc, // Alternative Fractions + KBTS_FEATURE_ID_akhn, // Akhand + KBTS_FEATURE_ID_apkn, // Kerning for Alternate Proportional Widths + KBTS_FEATURE_ID_blwm, // Below-base Mark Positioning + KBTS_FEATURE_ID_blws, // Below-base Substitutions + KBTS_FEATURE_ID_calt, // Contextual Alternates + KBTS_FEATURE_ID_case, // Case-sensitive Forms + KBTS_FEATURE_ID_ccmp, // Glyph Composition / Decomposition + KBTS_FEATURE_ID_chws, // Contextual Half-width Spacing + KBTS_FEATURE_ID_cjct, // Conjunct Forms + KBTS_FEATURE_ID_clig, // Contextual Ligatures + KBTS_FEATURE_ID_cpct, // Centered CJK Punctuation + KBTS_FEATURE_ID_cpsp, // Capital Spacing + KBTS_FEATURE_ID_cswh, // Contextual Swash + KBTS_FEATURE_ID_curs, // Cursive Positioning + KBTS_FEATURE_ID_cv01, // Character Variant 1 + KBTS_FEATURE_ID_cv02, // Character Variant 2 + KBTS_FEATURE_ID_cv03, // Character Variant 3 + KBTS_FEATURE_ID_cv04, // Character Variant 4 + KBTS_FEATURE_ID_cv05, // Character Variant 5 + KBTS_FEATURE_ID_cv06, // Character Variant 6 + KBTS_FEATURE_ID_cv07, // Character Variant 7 + KBTS_FEATURE_ID_cv08, // Character Variant 8 + KBTS_FEATURE_ID_cv09, // Character Variant 9 + KBTS_FEATURE_ID_cv10, // Character Variant 10 + KBTS_FEATURE_ID_cv11, // Character Variant 11 + KBTS_FEATURE_ID_cv12, // Character Variant 12 + KBTS_FEATURE_ID_cv13, // Character Variant 13 + KBTS_FEATURE_ID_cv14, // Character Variant 14 + KBTS_FEATURE_ID_cv15, // Character Variant 15 + KBTS_FEATURE_ID_cv16, // Character Variant 16 + KBTS_FEATURE_ID_cv17, // Character Variant 17 + KBTS_FEATURE_ID_cv18, // Character Variant 18 + KBTS_FEATURE_ID_cv19, // Character Variant 19 + KBTS_FEATURE_ID_cv20, // Character Variant 20 + KBTS_FEATURE_ID_cv21, // Character Variant 21 + KBTS_FEATURE_ID_cv22, // Character Variant 22 + KBTS_FEATURE_ID_cv23, // Character Variant 23 + KBTS_FEATURE_ID_cv24, // Character Variant 24 + KBTS_FEATURE_ID_cv25, // Character Variant 25 + KBTS_FEATURE_ID_cv26, // Character Variant 26 + KBTS_FEATURE_ID_cv27, // Character Variant 27 + KBTS_FEATURE_ID_cv28, // Character Variant 28 + KBTS_FEATURE_ID_cv29, // Character Variant 29 + KBTS_FEATURE_ID_cv30, // Character Variant 30 + KBTS_FEATURE_ID_cv31, // Character Variant 31 + KBTS_FEATURE_ID_cv32, // Character Variant 32 + KBTS_FEATURE_ID_cv33, // Character Variant 33 + KBTS_FEATURE_ID_cv34, // Character Variant 34 + KBTS_FEATURE_ID_cv35, // Character Variant 35 + KBTS_FEATURE_ID_cv36, // Character Variant 36 + KBTS_FEATURE_ID_cv37, // Character Variant 37 + KBTS_FEATURE_ID_cv38, // Character Variant 38 + KBTS_FEATURE_ID_cv39, // Character Variant 39 + KBTS_FEATURE_ID_cv40, // Character Variant 40 + KBTS_FEATURE_ID_cv41, // Character Variant 41 + KBTS_FEATURE_ID_cv42, // Character Variant 42 + KBTS_FEATURE_ID_cv43, // Character Variant 43 + KBTS_FEATURE_ID_cv44, // Character Variant 44 + KBTS_FEATURE_ID_cv45, // Character Variant 45 + KBTS_FEATURE_ID_cv46, // Character Variant 46 + KBTS_FEATURE_ID_cv47, // Character Variant 47 + KBTS_FEATURE_ID_cv48, // Character Variant 48 + KBTS_FEATURE_ID_cv49, // Character Variant 49 + KBTS_FEATURE_ID_cv50, // Character Variant 50 + KBTS_FEATURE_ID_cv51, // Character Variant 51 + KBTS_FEATURE_ID_cv52, // Character Variant 52 + KBTS_FEATURE_ID_cv53, // Character Variant 53 + KBTS_FEATURE_ID_cv54, // Character Variant 54 + KBTS_FEATURE_ID_cv55, // Character Variant 55 + KBTS_FEATURE_ID_cv56, // Character Variant 56 + KBTS_FEATURE_ID_cv57, // Character Variant 57 + KBTS_FEATURE_ID_cv58, // Character Variant 58 + KBTS_FEATURE_ID_cv59, // Character Variant 59 + KBTS_FEATURE_ID_cv60, // Character Variant 60 + KBTS_FEATURE_ID_cv61, // Character Variant 61 + KBTS_FEATURE_ID_cv62, // Character Variant 62 + KBTS_FEATURE_ID_cv63, // Character Variant 63 + KBTS_FEATURE_ID_cv64, // Character Variant 64 + KBTS_FEATURE_ID_cv65, // Character Variant 65 + KBTS_FEATURE_ID_cv66, // Character Variant 66 + KBTS_FEATURE_ID_cv67, // Character Variant 67 + KBTS_FEATURE_ID_cv68, // Character Variant 68 + KBTS_FEATURE_ID_cv69, // Character Variant 69 + KBTS_FEATURE_ID_cv70, // Character Variant 70 + KBTS_FEATURE_ID_cv71, // Character Variant 71 + KBTS_FEATURE_ID_cv72, // Character Variant 72 + KBTS_FEATURE_ID_cv73, // Character Variant 73 + KBTS_FEATURE_ID_cv74, // Character Variant 74 + KBTS_FEATURE_ID_cv75, // Character Variant 75 + KBTS_FEATURE_ID_cv76, // Character Variant 76 + KBTS_FEATURE_ID_cv77, // Character Variant 77 + KBTS_FEATURE_ID_cv78, // Character Variant 78 + KBTS_FEATURE_ID_cv79, // Character Variant 79 + KBTS_FEATURE_ID_cv80, // Character Variant 80 + KBTS_FEATURE_ID_cv81, // Character Variant 81 + KBTS_FEATURE_ID_cv82, // Character Variant 82 + KBTS_FEATURE_ID_cv83, // Character Variant 83 + KBTS_FEATURE_ID_cv84, // Character Variant 84 + KBTS_FEATURE_ID_cv85, // Character Variant 85 + KBTS_FEATURE_ID_cv86, // Character Variant 86 + KBTS_FEATURE_ID_cv87, // Character Variant 87 + KBTS_FEATURE_ID_cv88, // Character Variant 88 + KBTS_FEATURE_ID_cv89, // Character Variant 89 + KBTS_FEATURE_ID_cv90, // Character Variant 90 + KBTS_FEATURE_ID_cv91, // Character Variant 91 + KBTS_FEATURE_ID_cv92, // Character Variant 92 + KBTS_FEATURE_ID_cv93, // Character Variant 93 + KBTS_FEATURE_ID_cv94, // Character Variant 94 + KBTS_FEATURE_ID_cv95, // Character Variant 95 + KBTS_FEATURE_ID_cv96, // Character Variant 96 + KBTS_FEATURE_ID_cv97, // Character Variant 97 + KBTS_FEATURE_ID_cv98, // Character Variant 98 + KBTS_FEATURE_ID_cv99, // Character Variant 99 + KBTS_FEATURE_ID_c2pc, // Petite Capitals From Capitals + KBTS_FEATURE_ID_c2sc, // Small Capitals From Capitals + KBTS_FEATURE_ID_dist, // Distances + KBTS_FEATURE_ID_dlig, // Discretionary Ligatures + KBTS_FEATURE_ID_dtls, // Dotless Forms + KBTS_FEATURE_ID_expt, // Expert Forms + KBTS_FEATURE_ID_falt, // Final Glyph on Line Alternates + KBTS_FEATURE_ID_flac, // Flattened Accent Forms + KBTS_FEATURE_ID_fwid, // Full Widths + KBTS_FEATURE_ID_haln, // Halant Forms + KBTS_FEATURE_ID_halt, // Alternate Half Widths + KBTS_FEATURE_ID_hist, // Historical Forms + KBTS_FEATURE_ID_hkna, // Horizontal Kana Alternates + KBTS_FEATURE_ID_hlig, // Historical Ligatures + KBTS_FEATURE_ID_hngl, // Hangul + KBTS_FEATURE_ID_hojo, // Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms) + KBTS_FEATURE_ID_hwid, // Half Widths + KBTS_FEATURE_ID_ital, // Italics + KBTS_FEATURE_ID_jalt, // Justification Alternates + KBTS_FEATURE_ID_jp78, // JIS78 Forms + KBTS_FEATURE_ID_jp83, // JIS83 Forms + KBTS_FEATURE_ID_jp90, // JIS90 Forms + KBTS_FEATURE_ID_jp04, // JIS2004 Forms + KBTS_FEATURE_ID_kern, // Kerning + KBTS_FEATURE_ID_lfbd, // Left Bounds + KBTS_FEATURE_ID_liga, // Standard Ligatures + KBTS_FEATURE_ID_lnum, // Lining Figures + KBTS_FEATURE_ID_locl, // Localized Forms + KBTS_FEATURE_ID_ltra, // Left-to-right Alternates + KBTS_FEATURE_ID_ltrm, // Left-to-right Mirrored Forms + KBTS_FEATURE_ID_mark, // Mark Positioning + KBTS_FEATURE_ID_mgrk, // Mathematical Greek + KBTS_FEATURE_ID_mkmk, // Mark to Mark Positioning + KBTS_FEATURE_ID_mset, // Mark Positioning via Substitution + KBTS_FEATURE_ID_nalt, // Alternate Annotation Forms + KBTS_FEATURE_ID_nlck, // NLC Kanji Forms + KBTS_FEATURE_ID_nukt, // Nukta Forms + KBTS_FEATURE_ID_onum, // Oldstyle Figures + KBTS_FEATURE_ID_opbd, // Optical Bounds + KBTS_FEATURE_ID_ordn, // Ordinals + KBTS_FEATURE_ID_ornm, // Ornaments + KBTS_FEATURE_ID_palt, // Proportional Alternate Widths + KBTS_FEATURE_ID_pcap, // Petite Capitals + KBTS_FEATURE_ID_pkna, // Proportional Kana + KBTS_FEATURE_ID_pnum, // Proportional Figures + KBTS_FEATURE_ID_pres, // Pre-base Substitutions + KBTS_FEATURE_ID_psts, // Post-base Substitutions + KBTS_FEATURE_ID_pwid, // Proportional Widths + KBTS_FEATURE_ID_qwid, // Quarter Widths + KBTS_FEATURE_ID_rand, // Randomize + KBTS_FEATURE_ID_rclt, // Required Contextual Alternates + KBTS_FEATURE_ID_rkrf, // Rakar Forms + KBTS_FEATURE_ID_rlig, // Required Ligatures + KBTS_FEATURE_ID_rtbd, // Right Bounds + KBTS_FEATURE_ID_rtla, // Right-to-left Alternates + KBTS_FEATURE_ID_rtlm, // Right-to-left Mirrored Forms + KBTS_FEATURE_ID_ruby, // Ruby Notation Forms + KBTS_FEATURE_ID_rvrn, // Required Variation Alternates + KBTS_FEATURE_ID_salt, // Stylistic Alternates + KBTS_FEATURE_ID_sinf, // Scientific Inferiors + KBTS_FEATURE_ID_size, // Optical size + KBTS_FEATURE_ID_smcp, // Small Capitals + KBTS_FEATURE_ID_smpl, // Simplified Forms + KBTS_FEATURE_ID_ss01, // Stylistic Set 1 + KBTS_FEATURE_ID_ss02, // Stylistic Set 2 + KBTS_FEATURE_ID_ss03, // Stylistic Set 3 + KBTS_FEATURE_ID_ss04, // Stylistic Set 4 + KBTS_FEATURE_ID_ss05, // Stylistic Set 5 + KBTS_FEATURE_ID_ss06, // Stylistic Set 6 + KBTS_FEATURE_ID_ss07, // Stylistic Set 7 + KBTS_FEATURE_ID_ss08, // Stylistic Set 8 + KBTS_FEATURE_ID_ss09, // Stylistic Set 9 + KBTS_FEATURE_ID_ss10, // Stylistic Set 10 + KBTS_FEATURE_ID_ss11, // Stylistic Set 11 + KBTS_FEATURE_ID_ss12, // Stylistic Set 12 + KBTS_FEATURE_ID_ss13, // Stylistic Set 13 + KBTS_FEATURE_ID_ss14, // Stylistic Set 14 + KBTS_FEATURE_ID_ss15, // Stylistic Set 15 + KBTS_FEATURE_ID_ss16, // Stylistic Set 16 + KBTS_FEATURE_ID_ss17, // Stylistic Set 17 + KBTS_FEATURE_ID_ss18, // Stylistic Set 18 + KBTS_FEATURE_ID_ss19, // Stylistic Set 19 + KBTS_FEATURE_ID_ss20, // Stylistic Set 20 + KBTS_FEATURE_ID_ssty, // Math Script-style Alternates + KBTS_FEATURE_ID_stch, // Stretching Glyph Decomposition + KBTS_FEATURE_ID_subs, // Subscript + KBTS_FEATURE_ID_sups, // Superscript + KBTS_FEATURE_ID_swsh, // Swash + KBTS_FEATURE_ID_test, // Test features, only for development + KBTS_FEATURE_ID_titl, // Titling + KBTS_FEATURE_ID_tnam, // Traditional Name Forms + KBTS_FEATURE_ID_tnum, // Tabular Figures + KBTS_FEATURE_ID_trad, // Traditional Forms + KBTS_FEATURE_ID_twid, // Third Widths + KBTS_FEATURE_ID_unic, // Unicase + KBTS_FEATURE_ID_valt, // Alternate Vertical Metrics + KBTS_FEATURE_ID_vapk, // Kerning for Alternate Proportional Vertical Metrics + KBTS_FEATURE_ID_vatu, // Vattu Variants + KBTS_FEATURE_ID_vchw, // Vertical Contextual Half-width Spacing + KBTS_FEATURE_ID_vert, // Vertical Alternates + KBTS_FEATURE_ID_vhal, // Alternate Vertical Half Metrics + KBTS_FEATURE_ID_vkna, // Vertical Kana Alternates + KBTS_FEATURE_ID_vkrn, // Vertical Kerning + KBTS_FEATURE_ID_vpal, // Proportional Alternate Vertical Metrics + KBTS_FEATURE_ID_vrt2, // Vertical Alternates and Rotation + KBTS_FEATURE_ID_vrtr, // Vertical Alternates for Rotation + KBTS_FEATURE_ID_zero, // Slashed Zero + KBTS_FEATURE_ID_COUNT, +}; + +typedef kbts_u8 kbts_shaping_table; +enum kbts_shaping_table_enum +{ + KBTS_SHAPING_TABLE_GSUB, + KBTS_SHAPING_TABLE_GPOS, + KBTS_SHAPING_TABLE_COUNT, +}; + +typedef struct kbts_lookup_info +{ + kbts_u32 MaximumBacktrackWithoutSkippingGlyphs; + kbts_u32 MaximumLookaheadWithoutSkippingGlyphs; + kbts_u32 MaximumSubstitutionOutputSize; + kbts_u32 MaximumInputSequenceLength; + kbts_u32 MaximumLookupStackSize; +} kbts_lookup_info; + +typedef struct kbts_op_state kbts_op_state; +typedef struct kbts_gdef kbts_gdef; +typedef struct kbts_cmap_14 kbts_cmap_14; +typedef struct kbts_gsub_gpos kbts_gsub_gpos; +typedef struct kbts_maxp kbts_maxp; +typedef struct kbts_hea kbts_hea; +typedef struct kbts_iterate_features kbts_iterate_features; +typedef struct kbts_shape_state kbts_shape_state; +typedef struct kbts_shaper_properties kbts_shaper_properties; +typedef struct kbts_feature kbts_feature; +typedef struct kbts_head kbts_head; + +typedef struct kbts_lookup_subtable_info +{ + kbts_u32 MinimumBacktrackPlusOne; + kbts_u32 MinimumFollowupPlusOne; +} kbts_lookup_subtable_info; + +typedef struct kbts_font +{ + char *FileBase; + kbts_head *Head; + kbts_u16 *Cmap; + kbts_gdef *Gdef; + kbts_cmap_14 *Cmap14; + kbts_gsub_gpos *ShapingTables[KBTS_SHAPING_TABLE_COUNT]; + void *Fvar; + kbts_maxp *Maxp; + + kbts_hea *Hea[KBTS_ORIENTATION_COUNT]; + kbts_u16 *Mtx[KBTS_ORIENTATION_COUNT]; + + kbts_lookup_info LookupInfo; + + kbts_u32 GlyphCount; + kbts_u32 LookupCount; + kbts_u32 SubtableCount; + + kbts_u32 *GlyphLookupMatrix; // [LookupCount * GlyphCount] bitmap + kbts_u32 *GlyphLookupSubtableMatrix; // [LookupSubtableCount * GlyphCount] bitmap + kbts_u32 *LookupSubtableIndexOffsets; // [LookupCount] + kbts_lookup_subtable_info *SubtableInfos; // [LookupSubtableCount] + kbts_u32 GposLookupIndexOffset; + + int Error; +} kbts_font; + +typedef struct kbts_glyph_classes +{ + kbts_u16 Class; + kbts_u16 MarkAttachmentClass; +} kbts_glyph_classes; + +typedef struct kbts_feature_set +{ + kbts_u64 Flags[(KBTS_FEATURE_ID_COUNT + 63) / 64]; +} kbts_feature_set; + +typedef struct kbts_feature_override +{ + kbts_feature_id Id; + kbts_u32 EnabledOrAlternatePlusOne; +} kbts_feature_override; + +typedef struct kbts_glyph_config +{ + kbts_feature_set EnabledFeatures; + kbts_feature_set DisabledFeatures; + kbts_u32 FeatureOverrideCount; + kbts_feature_override *FeatureOverrides; // [FeatureOverrideCount] +} kbts_glyph_config; + +typedef struct kbts_glyph +{ + kbts_u32 Codepoint; + kbts_u16 Id; // Glyph index. This is what you want to use to query outline data. + kbts_u16 Uid; + kbts_glyph_classes Classes; + + kbts_u64 Decomposition; + + kbts_glyph_config *Config; + + kbts_glyph_flags Flags; + + // These fields are the glyph's final positioning data. + // For normal usage, you should not have to use these directly yourself. + // In case you are curious or have a specific need, see kbts_PositionGlyph() to see how these are used. + kbts_s32 OffsetX; + kbts_s32 OffsetY; + kbts_s32 AdvanceX; + kbts_s32 AdvanceY; + + kbts_u32 ParentInfo; + + // This is set by GSUB and used by GPOS. + // A 0-index means that we should attach to the last component in the ligature. + // + // From the Microsoft docs: + // To correctly access the subtables, the client must keep track of the component associated with the mark. + // + // For a given mark assigned to a particular class, the appropriate base attachment point is determined by which + // ligature component the mark is associated with. This is dependent on the original character string and subsequent + // character- or glyph-sequence processing, not the font data alone. While a text-layout client is performing any + // character-based preprocessing or any glyph-substitution operations using the GSUB table, the text-layout client + // must keep track of associations of marks to particular ligature-glyph components. + kbts_u16 LigatureUid; + kbts_u16 LigatureComponentIndexPlusOne; + + // Earlier on, we used to assume that, if a glyph had no advance, or had the MARK glyph class, then + // it could be handled as a mark in layout operations. This is inaccurate. + // Unicode makes a distinction between attached marks and standalone marks. For our purposes, attached + // marks are marks that have found a valid base character to attach to. In practice, this means that the + // font contains a valid display position/configuration for it in the current context. + // In contrast, standalone marks are marks that aren't attached to anything. Fonts may still have glyphs + // for them, in which case we want to display those just like regular glyphs that take up horizontal space + // on the line. When fonts don't have glyphs for them, they simply stay around as zero-width glyphs. + // Standalone marks have notably different behavior compared to attached marks, and so, once we start + // applying positioning features, it becomes worthwhile to track exactly which glyph has attached to which. + kbts_u16 AttachGlyphIndexPlusOne; // Set by GPOS attachments. + + // Set in GSUB and used in GPOS, for STCH. + kbts_joining_feature JoiningFeature; + + // Unicode properties filled in by CodepointToGlyph. + kbts_unicode_joining_type JoiningType; + kbts_u8 Script; + kbts_u8 UnicodeFlags; + kbts_u8 SyllabicClass; + kbts_u8 SyllabicPosition; + kbts_u8 UseClass; + kbts_u8 CombiningClass; + + kbts_u8 MarkOrdering; // Only used temporarily in NORMALIZE for Arabic mark reordering. +} kbts_glyph; + +typedef struct kbts_glyph_array +{ + kbts_glyph *Glyphs; + kbts_u32 Count; + kbts_u32 TotalCount; + kbts_u32 Capacity; + kbts_u32 RequiredCapacity; +} kbts_glyph_array; + +typedef struct kbts_op_state_normalize +{ + kbts_un CodepointsToDecomposeCount; + kbts_un AboveBaseGlyphCount; +} kbts_op_state_normalize; + +typedef struct kbts_op_state_gsub +{ + kbts_feature_set LookupFeatures; + kbts_un LookupIndex; + kbts_u32 GlyphFilter; + kbts_u32 SkipFlags; +} kbts_op_state_gsub; + +typedef struct kbts_op_state_normalize_hangul +{ + kbts_glyph LvtGlyphs[4]; + kbts_un LvtGlyphCount; +} kbts_op_state_normalize_hangul; + +typedef union kbts_op_state_op_specific +{ + kbts_op_state_normalize Normalize; + kbts_op_state_gsub Gsub; + kbts_op_state_normalize_hangul NormalizeHangul; +} kbts_op_state_op_specific; + +typedef struct kbts_lookup_indices +{ + kbts_u32 FeatureId; + kbts_u32 SkipFlags; + kbts_u32 GlyphFilter; + kbts_u32 Count; + kbts_u16 *Indices; +} kbts_lookup_indices; + +typedef struct kbts_op +{ + kbts_op_kind Kind; + kbts_feature_set Features; +} kbts_op; + +// This needs to be updated when we change the op lists! +#define KBTS_MAX_SIMULTANEOUS_FEATURES 16 +typedef struct kbts_op_state +{ + kbts_un WrittenCount; + kbts_un GlyphIndex; + kbts_u32 FrameCount; + kbts_u32 ResumePoint; + + kbts_u32 FeatureCount; + kbts_lookup_indices FeatureLookupIndices[KBTS_MAX_SIMULTANEOUS_FEATURES]; + + kbts_op_state_op_specific OpSpecific; + + // Ops are free to use the following as they please: + // kbts_u8 LeftoverMemory[LeftoverMemorySize]; +} kbts_op_state; + +typedef struct kbts_op_list +{ + kbts_u8 *Ops; + kbts_un Length; +} kbts_op_list; + +typedef struct kbts_indic_script_properties +{ + kbts_u32 ViramaCodepoint; + kbts_u8 BlwfPostOnly; + kbts_reph_position RephPosition; + kbts_reph_encoding RephEncoding; + kbts_syllabic_position RightSideMatraPosition; + kbts_syllabic_position AboveBaseMatraPosition; + kbts_syllabic_position BelowBaseMatraPosition; +} kbts_indic_script_properties; + +typedef struct kbts_langsys kbts_langsys; +typedef struct kbts_shape_config +{ + kbts_font *Font; + kbts_script Script; + kbts_language Language; + kbts_langsys *Langsys[KBTS_SHAPING_TABLE_COUNT]; + kbts_op_list OpLists[4]; + + kbts_feature_set *Features; + + kbts_shaper Shaper; + kbts_shaper_properties *ShaperProperties; + + kbts_indic_script_properties IndicScriptProperties; + kbts_feature *Blwf; + kbts_feature *Pref; + kbts_feature *Pstf; + kbts_feature *Locl; + kbts_feature *Rphf; + kbts_feature *Half; + kbts_feature *Vatu; + + // Indic + kbts_glyph Virama; + + kbts_glyph DottedCircle; + kbts_glyph Whitespace; + + // Thai + kbts_glyph Nikhahit; + kbts_glyph SaraAa; +} kbts_shape_config; + +typedef struct kbts_shape_state +{ + kbts_op Op; + kbts_shape_config *Config; + kbts_direction MainDirection; + kbts_direction RunDirection; + + kbts_feature_set UserFeatures; + + kbts_glyph_array GlyphArray; + kbts_glyph_array ClusterGlyphArray; + + kbts_u32 DottedCircleInsertIndex; + + kbts_u32 GlyphCountStartingFromCurrentCluster; + + kbts_u32 At; + kbts_u32 ResumePoint; + kbts_u32 OpGlyphOffset; + kbts_u32 ClusterGlyphCount; + kbts_u32 Ip; + kbts_u32 NextGlyphUid; + + kbts_u32 RequiredGlyphCapacity; + + int RealCluster; + int ClusterAtStartOfWord; + int WordBreak; + + // This must always be the last member! + kbts_op_state OpState; +} kbts_shape_state; + +typedef struct kbts_cursor +{ + kbts_direction Direction; + kbts_s32 LastAdvanceX; + kbts_s32 X; + kbts_s32 Y; +} kbts_cursor; + +typedef struct kbts_break +{ + // The break code mostly works in relative positions, but we convert to absolute positions for the user. + // That way, breaks can be trivially stored and compared and such and it just works. + kbts_u32 Position; + kbts_break_flags Flags; + kbts_direction Direction; // Only valid if (Flags & KBTS_BREAK_FLAG_DIRECTION). + kbts_script Script; // Only valid if (Flags & KBTS_BREAK_FLAG_SCRIPT). +} kbts_break; + +typedef struct kbts_bracket +{ + kbts_u32 Codepoint; + kbts_u8 Direction; + kbts_u8 Script; +} kbts_bracket; + +typedef kbts_u32 kbts_break_state_flags; +enum kbts_break_state_flags_enum +{ + KBTS_BREAK_STATE_FLAG_STARTED = 1, + KBTS_BREAK_STATE_FLAG_END = 2, + KBTS_BREAK_STATE_FLAG_RAN_OUT_OF_REORDER_BUFFER_SPACE = 4, + + // Bidirectional flags + KBTS_BREAK_STATE_FLAG_SAW_R_AFTER_L = 8, + KBTS_BREAK_STATE_FLAG_SAW_AL_AFTER_LR = 0x10, + KBTS_BREAK_STATE_FLAG_LAST_WAS_BRACKET = 0x20, +}; + +// In the worst case, a single call to BreakAddCodepoint would generate 4 breaks. +// We buffer breaks to reorder them before returning them to the user. +// This potentially requires infinite memory, which we don't have, so you may want to tweak this constant, +// although, really, if the defaults don't work, then you have likely found very strange/adversarial text. +#define KBTS_BREAK_REORDER_BUFFER_FLUSH_THRESHOLD 4 +#define KBTS_BREAK_REORDER_BUFFER_SIZE (KBTS_BREAK_REORDER_BUFFER_FLUSH_THRESHOLD * 2) +typedef struct kbts_break_state +{ + kbts_break Breaks[KBTS_BREAK_REORDER_BUFFER_SIZE]; + kbts_u32 BreakCount; + kbts_direction MainDirection; + + kbts_u32 LastFlushedBreakPosition; + kbts_u32 CurrentPosition; + + kbts_u8 LastScripts[2]; + + kbts_bracket Brackets[64]; + kbts_u32 BracketCount; + kbts_break_state_flags Flags; + + kbts_u32 FlagState; // u8(kbts_break_flags)x4 + kbts_s16 PositionOffset2; + kbts_s16 PositionOffset3; + + kbts_u32 WordBreakHistory; // u8x4 + kbts_u16 WordBreaks; // u4x4 + kbts_u16 WordUnbreaks; // u4x4 + kbts_s16 WordBreak2PositionOffset; + + kbts_u64 LineBreaks; // u16x4 + // Instead of staying synchronized with LineBreaks/LineUnbreaks, + // this advances every character always. + // (This is only needed because ZWJ can create an unbreak while simultaneously being ignored.) + kbts_u64 LineUnbreaksAsync; // u16x4 + kbts_u64 LineUnbreaks; // u16x4 + kbts_u32 LineBreakHistory; // u8(line_break_class)x4 + kbts_s16 LineBreak2PositionOffset; + kbts_s16 LineBreak3PositionOffset; + + kbts_u8 LastDirection; + kbts_u8 BidirectionalClass2; + kbts_u8 BidirectionalClass1; + + kbts_japanese_line_break_style JapaneseLineBreakStyle; + kbts_u8 GraphemeBreakState; + kbts_u8 LastLineBreakClass; + kbts_u8 LastWordBreakClass; + kbts_u8 LastWordBreakClassIncludingIgnored; +} kbts_break_state; + +typedef struct kbts_decode +{ + kbts_u32 Codepoint; + + kbts_u32 SourceCharactersConsumed; + kbts_u32 Valid; +} kbts_decode; + +// Shaping +#ifndef KB_TEXT_SHAPE_NO_CRT +KBTS_EXPORT kbts_feature_override kbts_FeatureOverride(kbts_feature_id Id, int Alternate, kbts_u32 Value); +KBTS_EXPORT kbts_glyph_config kbts_GlyphConfig(kbts_feature_override *FeatureOverrides, kbts_u32 FeatureOverrideCount); +KBTS_EXPORT kbts_font kbts_FontFromFile(const char *FileName); +KBTS_EXPORT void kbts_FreeFont(kbts_font *Font); +KBTS_EXPORT kbts_shape_state *kbts_CreateShapeState(kbts_font *Font); +KBTS_EXPORT void kbts_FreeShapeState(kbts_shape_state *State); +#endif +KBTS_EXPORT int kbts_FontIsValid(kbts_font *Font); +KBTS_EXPORT kbts_un kbts_ReadFontHeader(kbts_font *Font, void *Data, kbts_un Size); +KBTS_EXPORT kbts_un kbts_ReadFontData(kbts_font *Font, void *Scratch, kbts_un ScratchSize); +KBTS_EXPORT int kbts_PostReadFontInitialize(kbts_font *Font, void *Memory, kbts_un MemorySize); +KBTS_EXPORT kbts_un kbts_SizeOfShapeState(kbts_font *Font); +KBTS_EXPORT kbts_shape_state *kbts_PlaceShapeState(void *Address, kbts_un Size); +KBTS_EXPORT void kbts_ResetShapeState(kbts_shape_state *State); +KBTS_EXPORT kbts_shape_config kbts_ShapeConfig(kbts_font *Font, kbts_script Script, kbts_language Language); +KBTS_EXPORT int kbts_ShaperIsComplex(kbts_shaper Shaper); +KBTS_EXPORT int kbts_Shape(kbts_shape_state *State, kbts_shape_config *Config, kbts_direction MainDirection, kbts_direction RunDirection, kbts_glyph *Glyphs, kbts_u32 *GlyphCount, kbts_u32 GlyphCapacity); +KBTS_EXPORT kbts_cursor kbts_Cursor(kbts_direction Direction); +KBTS_EXPORT void kbts_PositionGlyph(kbts_cursor *Cursor, kbts_glyph *Glyph, kbts_s32 *X, kbts_s32 *Y); +KBTS_EXPORT void kbts_BeginBreak(kbts_break_state *State, kbts_direction MainDirection, kbts_japanese_line_break_style JapaneseLineBreakStyle); +KBTS_EXPORT int kbts_BreakStateIsValid(kbts_break_state *State); +KBTS_EXPORT void kbts_BreakAddCodepoint(kbts_break_state *State, kbts_u32 Codepoint, kbts_u32 PositionIncrement, int EndOfText); +KBTS_EXPORT void kbts_BreakFlush(kbts_break_state *State); +KBTS_EXPORT int kbts_Break(kbts_break_state *State, kbts_break *Break); +KBTS_EXPORT kbts_decode kbts_DecodeUtf8(const char *Utf8, kbts_un Length); +KBTS_EXPORT kbts_glyph kbts_CodepointToGlyph(kbts_font *Font, kbts_u32 Codepoint); +KBTS_EXPORT void kbts_InferScript(kbts_direction *Direction, kbts_script *Script, kbts_script GlyphScript); +KBTS_EXPORT int kbts_ScriptIsComplex(kbts_script Script); +#endif + +#ifdef KB_TEXT_SHAPE_IMPLEMENTATION +#ifdef _MSC_VER +#define KBTS_UNUSED(X) (void)sizeof((X)) +#else +#define KBTS_UNUSED(X) (void)(X) +#endif +# define KBTS_FOR(I, Start, End) for(kbts_un I = (Start); I < (End); ++I) +# ifdef __cplusplus +# define KBTS_ZERO {} +# define KBTS_ZERO_TYPE(T) T{} +# else +# define KBTS_ZERO {0} +# define KBTS_ZERO_TYPE(T) (T){0} +# endif +# define KBTS_MAX(A, B) (((A) < (B)) ? (B) : (A)) +# define KBTS_MIN(A, B) (((A) < (B)) ? (A) : (B)) +# define KBTS_ARRAY_LENGTH(A) (sizeof(A)/sizeof(*(A))) +# define KBTS_POINTER_AFTER(Type, X) ((Type *)((X) + 1)) +# define KBTS_POINTER_OFFSET(Type, Base, Offset) ((Type *)((char *)(Base) + (Offset))) +# define KBTS_POINTER_DIFF32(Pointer, Base) ((kbts_u32)((char *)(Pointer) - (char *)(Base))) +# define KBTS_PASTE_1(A, B) A##B +# define KBTS_PASTE_0(A, B) KBTS_PASTE_1(A, B) +# define KBTS_PASTE(A, B) KBTS_PASTE_0(A, B) +# define KBTS_IN_SET(X, Set) ((1u << (X)) & (Set)) +# define KBTS_SET32_0(Arg) | (1u << (Arg)) KBTS_SET32_1 +# define KBTS_SET32_1(Arg) | (1u << (Arg)) KBTS_SET32_0 +# define KBTS_SET32_0End +# define KBTS_SET32_1End +# define KBTS_SET32(Args) (0u KBTS_PASTE(KBTS_SET32_0 Args, End)) +# define KBTS_IN_SET64(X, Set) ((1ull << (X)) & (Set)) +# define KBTS_SET64_0(Arg) | (1ull << (Arg)) KBTS_SET64_1 +# define KBTS_SET64_1(Arg) | (1ull << (Arg)) KBTS_SET64_0 +# define KBTS_SET64_0End +# define KBTS_SET64_1End +# define KBTS_SET64(Args) (0u KBTS_PASTE(KBTS_SET64_0 Args, End)) + +# ifndef KBTS_ASSERT +#ifndef KB_TEXT_SHAPE_NO_CRT +# include +# define KBTS_ASSERT(Cond) assert(Cond) +#else +#define KBTS_ASSERT(Cond) +#endif +# endif + +#ifndef KB_TEXT_SHAPE_NO_CRT +#include +#endif + +#ifndef kbts_ByteSwap16 +# if defined(_MSC_VER) && !defined(__clang__) +# define kbts_ByteSwap16(X) _byteswap_ushort(X) +# define kbts_ByteSwap32(X) _byteswap_ulong(X) +# define kbts_PopCount32(X) (kbts_un)__popcnt(X) +# elif defined(__clang__) || defined(__GNUC__) +# define kbts_ByteSwap16(X) __builtin_bswap16(X) +# define kbts_ByteSwap32(X) __builtin_bswap32(X) +# define kbts_PopCount32(X) (kbts_un)__builtin_popcount(X) +# else +# error Unsupported compiler! +# endif +#endif + +#define KBTS_FEATURE_FLAG0(Feature) (1ull << KBTS_FEATURE_ID_##Feature) +#define KBTS_FEATURE_FLAG1(Feature) (1ull << (KBTS_FEATURE_ID_##Feature - 64)) +#define KBTS_FEATURE_FLAG2(Feature) (1ull << (KBTS_FEATURE_ID_##Feature - 128)) +#define KBTS_FEATURE_FLAG3(Feature) (1ull << (KBTS_FEATURE_ID_##Feature - 192)) + +// # define KBTS_DUMP +# ifdef KBTS_DUMP +# define KBTS_DUMPF(...) printf(__VA_ARGS__), fflush(stdout) +# else +# define KBTS_DUMPF(...) +# endif + +# define KBTS_GROW_BUFFER_MARGIN 16 + +#ifndef KBTS_INSTRUMENT_BLOCK_BEGIN +#define KBTS_INSTRUMENT_BLOCK_BEGIN(Name) +#define KBTS_INSTRUMENT_FUNCTION_BEGIN +#define KBTS_INSTRUMENT_END +#endif + +#define KBTS_MAXIMUM_DECOMPOSITION_CODEPOINTS 6 +typedef struct kbts_script_properties { + kbts_u32 Tag; + kbts_shaper Shaper; +} kbts_script_properties; + +static kbts_script_properties kbts_ScriptProperties[KBTS_SCRIPT_COUNT] = { + {KBTS_FOURCC(' ', ' ', ' ', ' '),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('a', 'd', 'l', 'm'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('a', 'h', 'o', 'm'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('h', 'l', 'u', 'w'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('a', 'r', 'a', 'b'),KBTS_SHAPER_ARABIC}, + {KBTS_FOURCC('a', 'r', 'm', 'n'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('a', 'v', 's', 't'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('b', 'a', 'l', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('b', 'a', 'm', 'u'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('b', 'a', 's', 's'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('b', 'a', 't', 'k'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('b', 'n', 'g', '2'),KBTS_SHAPER_INDIC}, + {KBTS_FOURCC('b', 'h', 'k', 's'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('b', 'o', 'p', 'o'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('b', 'r', 'a', 'h'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('b', 'u', 'g', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('b', 'u', 'h', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('c', 'a', 'n', 's'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('c', 'a', 'r', 'i'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('a', 'g', 'h', 'b'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('c', 'a', 'k', 'm'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('c', 'h', 'a', 'm'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('c', 'h', 'e', 'r'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('c', 'h', 'r', 's'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('h', 'a', 'n', 'i'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('c', 'o', 'p', 't'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('c', 'p', 'r', 't'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('c', 'p', 'm', 'n'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('c', 'y', 'r', 'l'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('D', 'F', 'L', 'T'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('D', 'F', 'L', 'T'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('d', 's', 'r', 't'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('d', 'e', 'v', '2'),KBTS_SHAPER_INDIC}, + {KBTS_FOURCC('d', 'i', 'a', 'k'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('d', 'o', 'g', 'r'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('d', 'u', 'p', 'l'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('e', 'g', 'y', 'p'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('e', 'l', 'b', 'a'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('e', 'l', 'y', 'm'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('e', 't', 'h', 'i'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('g', 'a', 'r', 'a'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('g', 'e', 'o', 'r'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('g', 'l', 'a', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('g', 'o', 't', 'h'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('g', 'r', 'a', 'n'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('g', 'r', 'e', 'k'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('g', 'j', 'r', '2'),KBTS_SHAPER_INDIC}, + {KBTS_FOURCC('g', 'o', 'n', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('g', 'u', 'r', '2'),KBTS_SHAPER_INDIC}, + {KBTS_FOURCC('g', 'u', 'k', 'h'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('h', 'a', 'n', 'g'),KBTS_SHAPER_HANGUL}, + {KBTS_FOURCC('r', 'o', 'h', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('h', 'a', 'n', 'o'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('h', 'a', 't', 'r'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('h', 'e', 'b', 'r'),KBTS_SHAPER_HEBREW}, + {KBTS_FOURCC('k', 'a', 'n', 'a'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('a', 'r', 'm', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('p', 'h', 'l', 'i'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('p', 'r', 't', 'i'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('j', 'a', 'v', 'a'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('k', 't', 'h', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('k', 'n', 'd', '2'),KBTS_SHAPER_INDIC}, + {KBTS_FOURCC('k', 'a', 'n', 'a'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('k', 'a', 'w', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('k', 'a', 'l', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('k', 'h', 'a', 'r'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('k', 'i', 't', 's'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('k', 'h', 'm', 'r'),KBTS_SHAPER_KHMER}, + {KBTS_FOURCC('k', 'h', 'o', 'j'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'i', 'n', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('k', 'r', 'a', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('l', 'a', 'o', ' '),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('l', 'a', 't', 'n'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('l', 'e', 'p', 'c'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('l', 'i', 'm', 'b'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('l', 'i', 'n', 'a'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('l', 'i', 'n', 'b'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('l', 'i', 's', 'u'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('l', 'y', 'c', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('l', 'y', 'd', 'i'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('m', 'a', 'h', 'j'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'a', 'k', 'a'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'l', 'm', '2'),KBTS_SHAPER_INDIC}, + {KBTS_FOURCC('m', 'a', 'n', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'a', 'n', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'a', 'r', 'c'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('g', 'o', 'n', 'm'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'e', 'd', 'f'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 't', 'e', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'e', 'n', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'e', 'r', 'c'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'e', 'r', 'o'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('p', 'l', 'r', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'o', 'd', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'o', 'n', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'r', 'o', 'o'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('m', 'u', 'l', 't'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('m', 'y', 'm', '2'),KBTS_SHAPER_MYANMAR}, + {KBTS_FOURCC('n', 'b', 'a', 't'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('n', 'a', 'g', 'm'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('n', 'a', 'n', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('n', 'e', 'w', 'a'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'a', 'l', 'u'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('n', 'k', 'o', ' '),KBTS_SHAPER_USE}, + {KBTS_FOURCC('n', 's', 'h', 'u'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('h', 'm', 'n', 'p'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('o', 'g', 'a', 'm'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('o', 'l', 'c', 'k'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('o', 'n', 'a', 'o'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('i', 't', 'a', 'l'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('h', 'u', 'n', 'g'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('n', 'a', 'r', 'b'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('p', 'e', 'r', 'm'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('x', 'p', 'e', 'o'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'o', 'g', 'o'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'a', 'r', 'b'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('o', 'r', 'k', 'h'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('o', 'u', 'g', 'r'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('o', 'r', 'y', '2'),KBTS_SHAPER_INDIC}, + {KBTS_FOURCC('o', 's', 'g', 'e'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('o', 's', 'm', 'a'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('h', 'm', 'n', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('p', 'a', 'l', 'm'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('p', 'a', 'u', 'c'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('p', 'h', 'a', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('p', 'h', 'n', 'x'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('p', 'h', 'l', 'p'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('r', 'j', 'n', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('r', 'u', 'n', 'r'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('s', 'a', 'm', 'r'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('s', 'a', 'u', 'r'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'h', 'r', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'h', 'a', 'w'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('s', 'i', 'd', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'g', 'n', 'w'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'o', 'g', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'i', 'n', 'h'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'o', 'r', 'a'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'o', 'y', 'o'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('x', 's', 'u', 'x'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'u', 'n', 'd'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'u', 'n', 'u'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'y', 'l', 'o'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('s', 'y', 'r', 'c'),KBTS_SHAPER_ARABIC}, + {KBTS_FOURCC('t', 'g', 'l', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'a', 'g', 'b'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'a', 'l', 'e'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('l', 'a', 'n', 'a'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'a', 'v', 't'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'a', 'k', 'r'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'm', 'l', '2'),KBTS_SHAPER_INDIC}, + {KBTS_FOURCC('t', 'n', 's', 'a'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'a', 'n', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'e', 'l', '2'),KBTS_SHAPER_INDIC}, + {KBTS_FOURCC('t', 'h', 'a', 'a'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('t', 'h', 'a', 'i'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('t', 'i', 'b', 't'),KBTS_SHAPER_TIBETAN}, + {KBTS_FOURCC('t', 'f', 'n', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'i', 'r', 'h'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'o', 'd', 'r'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'o', 't', 'o'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('t', 'u', 't', 'g'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('u', 'g', 'a', 'r'),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('v', 'a', 'i', ' '),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('v', 'i', 't', 'h'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('w', 'c', 'h', 'o'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('w', 'a', 'r', 'a'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('y', 'e', 'z', 'i'),KBTS_SHAPER_USE}, + {KBTS_FOURCC('y', 'i', ' ', ' '),KBTS_SHAPER_DEFAULT}, + {KBTS_FOURCC('z', 'a', 'n', 'b'),KBTS_SHAPER_USE}, +}; + +static kbts_feature_id kbts_FeatureToId(kbts_feature_tag Feature) +{ + kbts_feature_id Result = 0; + switch(Feature) + { + case KBTS_FEATURE_TAG_isol: Result = KBTS_FEATURE_ID_isol; break; + case KBTS_FEATURE_TAG_fina: Result = KBTS_FEATURE_ID_fina; break; + case KBTS_FEATURE_TAG_fin2: Result = KBTS_FEATURE_ID_fin2; break; + case KBTS_FEATURE_TAG_fin3: Result = KBTS_FEATURE_ID_fin3; break; + case KBTS_FEATURE_TAG_medi: Result = KBTS_FEATURE_ID_medi; break; + case KBTS_FEATURE_TAG_med2: Result = KBTS_FEATURE_ID_med2; break; + case KBTS_FEATURE_TAG_init: Result = KBTS_FEATURE_ID_init; break; + case KBTS_FEATURE_TAG_ljmo: Result = KBTS_FEATURE_ID_ljmo; break; + case KBTS_FEATURE_TAG_vjmo: Result = KBTS_FEATURE_ID_vjmo; break; + case KBTS_FEATURE_TAG_tjmo: Result = KBTS_FEATURE_ID_tjmo; break; + case KBTS_FEATURE_TAG_rphf: Result = KBTS_FEATURE_ID_rphf; break; + case KBTS_FEATURE_TAG_blwf: Result = KBTS_FEATURE_ID_blwf; break; + case KBTS_FEATURE_TAG_half: Result = KBTS_FEATURE_ID_half; break; + case KBTS_FEATURE_TAG_pstf: Result = KBTS_FEATURE_ID_pstf; break; + case KBTS_FEATURE_TAG_abvf: Result = KBTS_FEATURE_ID_abvf; break; + case KBTS_FEATURE_TAG_pref: Result = KBTS_FEATURE_ID_pref; break; + case KBTS_FEATURE_TAG_numr: Result = KBTS_FEATURE_ID_numr; break; + case KBTS_FEATURE_TAG_frac: Result = KBTS_FEATURE_ID_frac; break; + case KBTS_FEATURE_TAG_dnom: Result = KBTS_FEATURE_ID_dnom; break; + case KBTS_FEATURE_TAG_cfar: Result = KBTS_FEATURE_ID_cfar; break; + case KBTS_FEATURE_TAG_aalt: Result = KBTS_FEATURE_ID_aalt; break; + case KBTS_FEATURE_TAG_abvm: Result = KBTS_FEATURE_ID_abvm; break; + case KBTS_FEATURE_TAG_abvs: Result = KBTS_FEATURE_ID_abvs; break; + case KBTS_FEATURE_TAG_afrc: Result = KBTS_FEATURE_ID_afrc; break; + case KBTS_FEATURE_TAG_akhn: Result = KBTS_FEATURE_ID_akhn; break; + case KBTS_FEATURE_TAG_apkn: Result = KBTS_FEATURE_ID_apkn; break; + case KBTS_FEATURE_TAG_blwm: Result = KBTS_FEATURE_ID_blwm; break; + case KBTS_FEATURE_TAG_blws: Result = KBTS_FEATURE_ID_blws; break; + case KBTS_FEATURE_TAG_calt: Result = KBTS_FEATURE_ID_calt; break; + case KBTS_FEATURE_TAG_case: Result = KBTS_FEATURE_ID_case; break; + case KBTS_FEATURE_TAG_ccmp: Result = KBTS_FEATURE_ID_ccmp; break; + case KBTS_FEATURE_TAG_chws: Result = KBTS_FEATURE_ID_chws; break; + case KBTS_FEATURE_TAG_cjct: Result = KBTS_FEATURE_ID_cjct; break; + case KBTS_FEATURE_TAG_clig: Result = KBTS_FEATURE_ID_clig; break; + case KBTS_FEATURE_TAG_cpct: Result = KBTS_FEATURE_ID_cpct; break; + case KBTS_FEATURE_TAG_cpsp: Result = KBTS_FEATURE_ID_cpsp; break; + case KBTS_FEATURE_TAG_cswh: Result = KBTS_FEATURE_ID_cswh; break; + case KBTS_FEATURE_TAG_curs: Result = KBTS_FEATURE_ID_curs; break; + case KBTS_FEATURE_TAG_cv01: Result = KBTS_FEATURE_ID_cv01; break; + case KBTS_FEATURE_TAG_cv02: Result = KBTS_FEATURE_ID_cv02; break; + case KBTS_FEATURE_TAG_cv03: Result = KBTS_FEATURE_ID_cv03; break; + case KBTS_FEATURE_TAG_cv04: Result = KBTS_FEATURE_ID_cv04; break; + case KBTS_FEATURE_TAG_cv05: Result = KBTS_FEATURE_ID_cv05; break; + case KBTS_FEATURE_TAG_cv06: Result = KBTS_FEATURE_ID_cv06; break; + case KBTS_FEATURE_TAG_cv07: Result = KBTS_FEATURE_ID_cv07; break; + case KBTS_FEATURE_TAG_cv08: Result = KBTS_FEATURE_ID_cv08; break; + case KBTS_FEATURE_TAG_cv09: Result = KBTS_FEATURE_ID_cv09; break; + case KBTS_FEATURE_TAG_cv10: Result = KBTS_FEATURE_ID_cv10; break; + case KBTS_FEATURE_TAG_cv11: Result = KBTS_FEATURE_ID_cv11; break; + case KBTS_FEATURE_TAG_cv12: Result = KBTS_FEATURE_ID_cv12; break; + case KBTS_FEATURE_TAG_cv13: Result = KBTS_FEATURE_ID_cv13; break; + case KBTS_FEATURE_TAG_cv14: Result = KBTS_FEATURE_ID_cv14; break; + case KBTS_FEATURE_TAG_cv15: Result = KBTS_FEATURE_ID_cv15; break; + case KBTS_FEATURE_TAG_cv16: Result = KBTS_FEATURE_ID_cv16; break; + case KBTS_FEATURE_TAG_cv17: Result = KBTS_FEATURE_ID_cv17; break; + case KBTS_FEATURE_TAG_cv18: Result = KBTS_FEATURE_ID_cv18; break; + case KBTS_FEATURE_TAG_cv19: Result = KBTS_FEATURE_ID_cv19; break; + case KBTS_FEATURE_TAG_cv20: Result = KBTS_FEATURE_ID_cv20; break; + case KBTS_FEATURE_TAG_cv21: Result = KBTS_FEATURE_ID_cv21; break; + case KBTS_FEATURE_TAG_cv22: Result = KBTS_FEATURE_ID_cv22; break; + case KBTS_FEATURE_TAG_cv23: Result = KBTS_FEATURE_ID_cv23; break; + case KBTS_FEATURE_TAG_cv24: Result = KBTS_FEATURE_ID_cv24; break; + case KBTS_FEATURE_TAG_cv25: Result = KBTS_FEATURE_ID_cv25; break; + case KBTS_FEATURE_TAG_cv26: Result = KBTS_FEATURE_ID_cv26; break; + case KBTS_FEATURE_TAG_cv27: Result = KBTS_FEATURE_ID_cv27; break; + case KBTS_FEATURE_TAG_cv28: Result = KBTS_FEATURE_ID_cv28; break; + case KBTS_FEATURE_TAG_cv29: Result = KBTS_FEATURE_ID_cv29; break; + case KBTS_FEATURE_TAG_cv30: Result = KBTS_FEATURE_ID_cv30; break; + case KBTS_FEATURE_TAG_cv31: Result = KBTS_FEATURE_ID_cv31; break; + case KBTS_FEATURE_TAG_cv32: Result = KBTS_FEATURE_ID_cv32; break; + case KBTS_FEATURE_TAG_cv33: Result = KBTS_FEATURE_ID_cv33; break; + case KBTS_FEATURE_TAG_cv34: Result = KBTS_FEATURE_ID_cv34; break; + case KBTS_FEATURE_TAG_cv35: Result = KBTS_FEATURE_ID_cv35; break; + case KBTS_FEATURE_TAG_cv36: Result = KBTS_FEATURE_ID_cv36; break; + case KBTS_FEATURE_TAG_cv37: Result = KBTS_FEATURE_ID_cv37; break; + case KBTS_FEATURE_TAG_cv38: Result = KBTS_FEATURE_ID_cv38; break; + case KBTS_FEATURE_TAG_cv39: Result = KBTS_FEATURE_ID_cv39; break; + case KBTS_FEATURE_TAG_cv40: Result = KBTS_FEATURE_ID_cv40; break; + case KBTS_FEATURE_TAG_cv41: Result = KBTS_FEATURE_ID_cv41; break; + case KBTS_FEATURE_TAG_cv42: Result = KBTS_FEATURE_ID_cv42; break; + case KBTS_FEATURE_TAG_cv43: Result = KBTS_FEATURE_ID_cv43; break; + case KBTS_FEATURE_TAG_cv44: Result = KBTS_FEATURE_ID_cv44; break; + case KBTS_FEATURE_TAG_cv45: Result = KBTS_FEATURE_ID_cv45; break; + case KBTS_FEATURE_TAG_cv46: Result = KBTS_FEATURE_ID_cv46; break; + case KBTS_FEATURE_TAG_cv47: Result = KBTS_FEATURE_ID_cv47; break; + case KBTS_FEATURE_TAG_cv48: Result = KBTS_FEATURE_ID_cv48; break; + case KBTS_FEATURE_TAG_cv49: Result = KBTS_FEATURE_ID_cv49; break; + case KBTS_FEATURE_TAG_cv50: Result = KBTS_FEATURE_ID_cv50; break; + case KBTS_FEATURE_TAG_cv51: Result = KBTS_FEATURE_ID_cv51; break; + case KBTS_FEATURE_TAG_cv52: Result = KBTS_FEATURE_ID_cv52; break; + case KBTS_FEATURE_TAG_cv53: Result = KBTS_FEATURE_ID_cv53; break; + case KBTS_FEATURE_TAG_cv54: Result = KBTS_FEATURE_ID_cv54; break; + case KBTS_FEATURE_TAG_cv55: Result = KBTS_FEATURE_ID_cv55; break; + case KBTS_FEATURE_TAG_cv56: Result = KBTS_FEATURE_ID_cv56; break; + case KBTS_FEATURE_TAG_cv57: Result = KBTS_FEATURE_ID_cv57; break; + case KBTS_FEATURE_TAG_cv58: Result = KBTS_FEATURE_ID_cv58; break; + case KBTS_FEATURE_TAG_cv59: Result = KBTS_FEATURE_ID_cv59; break; + case KBTS_FEATURE_TAG_cv60: Result = KBTS_FEATURE_ID_cv60; break; + case KBTS_FEATURE_TAG_cv61: Result = KBTS_FEATURE_ID_cv61; break; + case KBTS_FEATURE_TAG_cv62: Result = KBTS_FEATURE_ID_cv62; break; + case KBTS_FEATURE_TAG_cv63: Result = KBTS_FEATURE_ID_cv63; break; + case KBTS_FEATURE_TAG_cv64: Result = KBTS_FEATURE_ID_cv64; break; + case KBTS_FEATURE_TAG_cv65: Result = KBTS_FEATURE_ID_cv65; break; + case KBTS_FEATURE_TAG_cv66: Result = KBTS_FEATURE_ID_cv66; break; + case KBTS_FEATURE_TAG_cv67: Result = KBTS_FEATURE_ID_cv67; break; + case KBTS_FEATURE_TAG_cv68: Result = KBTS_FEATURE_ID_cv68; break; + case KBTS_FEATURE_TAG_cv69: Result = KBTS_FEATURE_ID_cv69; break; + case KBTS_FEATURE_TAG_cv70: Result = KBTS_FEATURE_ID_cv70; break; + case KBTS_FEATURE_TAG_cv71: Result = KBTS_FEATURE_ID_cv71; break; + case KBTS_FEATURE_TAG_cv72: Result = KBTS_FEATURE_ID_cv72; break; + case KBTS_FEATURE_TAG_cv73: Result = KBTS_FEATURE_ID_cv73; break; + case KBTS_FEATURE_TAG_cv74: Result = KBTS_FEATURE_ID_cv74; break; + case KBTS_FEATURE_TAG_cv75: Result = KBTS_FEATURE_ID_cv75; break; + case KBTS_FEATURE_TAG_cv76: Result = KBTS_FEATURE_ID_cv76; break; + case KBTS_FEATURE_TAG_cv77: Result = KBTS_FEATURE_ID_cv77; break; + case KBTS_FEATURE_TAG_cv78: Result = KBTS_FEATURE_ID_cv78; break; + case KBTS_FEATURE_TAG_cv79: Result = KBTS_FEATURE_ID_cv79; break; + case KBTS_FEATURE_TAG_cv80: Result = KBTS_FEATURE_ID_cv80; break; + case KBTS_FEATURE_TAG_cv81: Result = KBTS_FEATURE_ID_cv81; break; + case KBTS_FEATURE_TAG_cv82: Result = KBTS_FEATURE_ID_cv82; break; + case KBTS_FEATURE_TAG_cv83: Result = KBTS_FEATURE_ID_cv83; break; + case KBTS_FEATURE_TAG_cv84: Result = KBTS_FEATURE_ID_cv84; break; + case KBTS_FEATURE_TAG_cv85: Result = KBTS_FEATURE_ID_cv85; break; + case KBTS_FEATURE_TAG_cv86: Result = KBTS_FEATURE_ID_cv86; break; + case KBTS_FEATURE_TAG_cv87: Result = KBTS_FEATURE_ID_cv87; break; + case KBTS_FEATURE_TAG_cv88: Result = KBTS_FEATURE_ID_cv88; break; + case KBTS_FEATURE_TAG_cv89: Result = KBTS_FEATURE_ID_cv89; break; + case KBTS_FEATURE_TAG_cv90: Result = KBTS_FEATURE_ID_cv90; break; + case KBTS_FEATURE_TAG_cv91: Result = KBTS_FEATURE_ID_cv91; break; + case KBTS_FEATURE_TAG_cv92: Result = KBTS_FEATURE_ID_cv92; break; + case KBTS_FEATURE_TAG_cv93: Result = KBTS_FEATURE_ID_cv93; break; + case KBTS_FEATURE_TAG_cv94: Result = KBTS_FEATURE_ID_cv94; break; + case KBTS_FEATURE_TAG_cv95: Result = KBTS_FEATURE_ID_cv95; break; + case KBTS_FEATURE_TAG_cv96: Result = KBTS_FEATURE_ID_cv96; break; + case KBTS_FEATURE_TAG_cv97: Result = KBTS_FEATURE_ID_cv97; break; + case KBTS_FEATURE_TAG_cv98: Result = KBTS_FEATURE_ID_cv98; break; + case KBTS_FEATURE_TAG_cv99: Result = KBTS_FEATURE_ID_cv99; break; + case KBTS_FEATURE_TAG_c2pc: Result = KBTS_FEATURE_ID_c2pc; break; + case KBTS_FEATURE_TAG_c2sc: Result = KBTS_FEATURE_ID_c2sc; break; + case KBTS_FEATURE_TAG_dist: Result = KBTS_FEATURE_ID_dist; break; + case KBTS_FEATURE_TAG_dlig: Result = KBTS_FEATURE_ID_dlig; break; + case KBTS_FEATURE_TAG_dtls: Result = KBTS_FEATURE_ID_dtls; break; + case KBTS_FEATURE_TAG_expt: Result = KBTS_FEATURE_ID_expt; break; + case KBTS_FEATURE_TAG_falt: Result = KBTS_FEATURE_ID_falt; break; + case KBTS_FEATURE_TAG_flac: Result = KBTS_FEATURE_ID_flac; break; + case KBTS_FEATURE_TAG_fwid: Result = KBTS_FEATURE_ID_fwid; break; + case KBTS_FEATURE_TAG_haln: Result = KBTS_FEATURE_ID_haln; break; + case KBTS_FEATURE_TAG_halt: Result = KBTS_FEATURE_ID_halt; break; + case KBTS_FEATURE_TAG_hist: Result = KBTS_FEATURE_ID_hist; break; + case KBTS_FEATURE_TAG_hkna: Result = KBTS_FEATURE_ID_hkna; break; + case KBTS_FEATURE_TAG_hlig: Result = KBTS_FEATURE_ID_hlig; break; + case KBTS_FEATURE_TAG_hngl: Result = KBTS_FEATURE_ID_hngl; break; + case KBTS_FEATURE_TAG_hojo: Result = KBTS_FEATURE_ID_hojo; break; + case KBTS_FEATURE_TAG_hwid: Result = KBTS_FEATURE_ID_hwid; break; + case KBTS_FEATURE_TAG_ital: Result = KBTS_FEATURE_ID_ital; break; + case KBTS_FEATURE_TAG_jalt: Result = KBTS_FEATURE_ID_jalt; break; + case KBTS_FEATURE_TAG_jp78: Result = KBTS_FEATURE_ID_jp78; break; + case KBTS_FEATURE_TAG_jp83: Result = KBTS_FEATURE_ID_jp83; break; + case KBTS_FEATURE_TAG_jp90: Result = KBTS_FEATURE_ID_jp90; break; + case KBTS_FEATURE_TAG_jp04: Result = KBTS_FEATURE_ID_jp04; break; + case KBTS_FEATURE_TAG_kern: Result = KBTS_FEATURE_ID_kern; break; + case KBTS_FEATURE_TAG_lfbd: Result = KBTS_FEATURE_ID_lfbd; break; + case KBTS_FEATURE_TAG_liga: Result = KBTS_FEATURE_ID_liga; break; + case KBTS_FEATURE_TAG_lnum: Result = KBTS_FEATURE_ID_lnum; break; + case KBTS_FEATURE_TAG_locl: Result = KBTS_FEATURE_ID_locl; break; + case KBTS_FEATURE_TAG_ltra: Result = KBTS_FEATURE_ID_ltra; break; + case KBTS_FEATURE_TAG_ltrm: Result = KBTS_FEATURE_ID_ltrm; break; + case KBTS_FEATURE_TAG_mark: Result = KBTS_FEATURE_ID_mark; break; + case KBTS_FEATURE_TAG_mgrk: Result = KBTS_FEATURE_ID_mgrk; break; + case KBTS_FEATURE_TAG_mkmk: Result = KBTS_FEATURE_ID_mkmk; break; + case KBTS_FEATURE_TAG_mset: Result = KBTS_FEATURE_ID_mset; break; + case KBTS_FEATURE_TAG_nalt: Result = KBTS_FEATURE_ID_nalt; break; + case KBTS_FEATURE_TAG_nlck: Result = KBTS_FEATURE_ID_nlck; break; + case KBTS_FEATURE_TAG_nukt: Result = KBTS_FEATURE_ID_nukt; break; + case KBTS_FEATURE_TAG_onum: Result = KBTS_FEATURE_ID_onum; break; + case KBTS_FEATURE_TAG_opbd: Result = KBTS_FEATURE_ID_opbd; break; + case KBTS_FEATURE_TAG_ordn: Result = KBTS_FEATURE_ID_ordn; break; + case KBTS_FEATURE_TAG_ornm: Result = KBTS_FEATURE_ID_ornm; break; + case KBTS_FEATURE_TAG_palt: Result = KBTS_FEATURE_ID_palt; break; + case KBTS_FEATURE_TAG_pcap: Result = KBTS_FEATURE_ID_pcap; break; + case KBTS_FEATURE_TAG_pkna: Result = KBTS_FEATURE_ID_pkna; break; + case KBTS_FEATURE_TAG_pnum: Result = KBTS_FEATURE_ID_pnum; break; + case KBTS_FEATURE_TAG_pres: Result = KBTS_FEATURE_ID_pres; break; + case KBTS_FEATURE_TAG_psts: Result = KBTS_FEATURE_ID_psts; break; + case KBTS_FEATURE_TAG_pwid: Result = KBTS_FEATURE_ID_pwid; break; + case KBTS_FEATURE_TAG_qwid: Result = KBTS_FEATURE_ID_qwid; break; + case KBTS_FEATURE_TAG_rand: Result = KBTS_FEATURE_ID_rand; break; + case KBTS_FEATURE_TAG_rclt: Result = KBTS_FEATURE_ID_rclt; break; + case KBTS_FEATURE_TAG_rkrf: Result = KBTS_FEATURE_ID_rkrf; break; + case KBTS_FEATURE_TAG_rlig: Result = KBTS_FEATURE_ID_rlig; break; + case KBTS_FEATURE_TAG_rtbd: Result = KBTS_FEATURE_ID_rtbd; break; + case KBTS_FEATURE_TAG_rtla: Result = KBTS_FEATURE_ID_rtla; break; + case KBTS_FEATURE_TAG_rtlm: Result = KBTS_FEATURE_ID_rtlm; break; + case KBTS_FEATURE_TAG_ruby: Result = KBTS_FEATURE_ID_ruby; break; + case KBTS_FEATURE_TAG_rvrn: Result = KBTS_FEATURE_ID_rvrn; break; + case KBTS_FEATURE_TAG_salt: Result = KBTS_FEATURE_ID_salt; break; + case KBTS_FEATURE_TAG_sinf: Result = KBTS_FEATURE_ID_sinf; break; + case KBTS_FEATURE_TAG_size: Result = KBTS_FEATURE_ID_size; break; + case KBTS_FEATURE_TAG_smcp: Result = KBTS_FEATURE_ID_smcp; break; + case KBTS_FEATURE_TAG_smpl: Result = KBTS_FEATURE_ID_smpl; break; + case KBTS_FEATURE_TAG_ss01: Result = KBTS_FEATURE_ID_ss01; break; + case KBTS_FEATURE_TAG_ss02: Result = KBTS_FEATURE_ID_ss02; break; + case KBTS_FEATURE_TAG_ss03: Result = KBTS_FEATURE_ID_ss03; break; + case KBTS_FEATURE_TAG_ss04: Result = KBTS_FEATURE_ID_ss04; break; + case KBTS_FEATURE_TAG_ss05: Result = KBTS_FEATURE_ID_ss05; break; + case KBTS_FEATURE_TAG_ss06: Result = KBTS_FEATURE_ID_ss06; break; + case KBTS_FEATURE_TAG_ss07: Result = KBTS_FEATURE_ID_ss07; break; + case KBTS_FEATURE_TAG_ss08: Result = KBTS_FEATURE_ID_ss08; break; + case KBTS_FEATURE_TAG_ss09: Result = KBTS_FEATURE_ID_ss09; break; + case KBTS_FEATURE_TAG_ss10: Result = KBTS_FEATURE_ID_ss10; break; + case KBTS_FEATURE_TAG_ss11: Result = KBTS_FEATURE_ID_ss11; break; + case KBTS_FEATURE_TAG_ss12: Result = KBTS_FEATURE_ID_ss12; break; + case KBTS_FEATURE_TAG_ss13: Result = KBTS_FEATURE_ID_ss13; break; + case KBTS_FEATURE_TAG_ss14: Result = KBTS_FEATURE_ID_ss14; break; + case KBTS_FEATURE_TAG_ss15: Result = KBTS_FEATURE_ID_ss15; break; + case KBTS_FEATURE_TAG_ss16: Result = KBTS_FEATURE_ID_ss16; break; + case KBTS_FEATURE_TAG_ss17: Result = KBTS_FEATURE_ID_ss17; break; + case KBTS_FEATURE_TAG_ss18: Result = KBTS_FEATURE_ID_ss18; break; + case KBTS_FEATURE_TAG_ss19: Result = KBTS_FEATURE_ID_ss19; break; + case KBTS_FEATURE_TAG_ss20: Result = KBTS_FEATURE_ID_ss20; break; + case KBTS_FEATURE_TAG_ssty: Result = KBTS_FEATURE_ID_ssty; break; + case KBTS_FEATURE_TAG_stch: Result = KBTS_FEATURE_ID_stch; break; + case KBTS_FEATURE_TAG_subs: Result = KBTS_FEATURE_ID_subs; break; + case KBTS_FEATURE_TAG_sups: Result = KBTS_FEATURE_ID_sups; break; + case KBTS_FEATURE_TAG_swsh: Result = KBTS_FEATURE_ID_swsh; break; + case KBTS_FEATURE_TAG_test: Result = KBTS_FEATURE_ID_test; break; + case KBTS_FEATURE_TAG_titl: Result = KBTS_FEATURE_ID_titl; break; + case KBTS_FEATURE_TAG_tnam: Result = KBTS_FEATURE_ID_tnam; break; + case KBTS_FEATURE_TAG_tnum: Result = KBTS_FEATURE_ID_tnum; break; + case KBTS_FEATURE_TAG_trad: Result = KBTS_FEATURE_ID_trad; break; + case KBTS_FEATURE_TAG_twid: Result = KBTS_FEATURE_ID_twid; break; + case KBTS_FEATURE_TAG_unic: Result = KBTS_FEATURE_ID_unic; break; + case KBTS_FEATURE_TAG_valt: Result = KBTS_FEATURE_ID_valt; break; + case KBTS_FEATURE_TAG_vapk: Result = KBTS_FEATURE_ID_vapk; break; + case KBTS_FEATURE_TAG_vatu: Result = KBTS_FEATURE_ID_vatu; break; + case KBTS_FEATURE_TAG_vchw: Result = KBTS_FEATURE_ID_vchw; break; + case KBTS_FEATURE_TAG_vert: Result = KBTS_FEATURE_ID_vert; break; + case KBTS_FEATURE_TAG_vhal: Result = KBTS_FEATURE_ID_vhal; break; + case KBTS_FEATURE_TAG_vkna: Result = KBTS_FEATURE_ID_vkna; break; + case KBTS_FEATURE_TAG_vkrn: Result = KBTS_FEATURE_ID_vkrn; break; + case KBTS_FEATURE_TAG_vpal: Result = KBTS_FEATURE_ID_vpal; break; + case KBTS_FEATURE_TAG_vrt2: Result = KBTS_FEATURE_ID_vrt2; break; + case KBTS_FEATURE_TAG_vrtr: Result = KBTS_FEATURE_ID_vrtr; break; + case KBTS_FEATURE_TAG_zero: Result = KBTS_FEATURE_ID_zero; break; + default: break; + } +return Result; +} +static kbts_s32 kbts_UnicodeParentDeltas[1679] = { + 132,133,134,135,244,246,248,250,252,254,315,351,416,418,7678,7680,7682,7792,7794,132,133,134,135,275,277,279,281,283,285,346,382,447, + 449,7709,7711,7713,7823,7825,131,132,133,134,174,176,178,180,182,416,418,452,7604,7606,7764,7766,7768,131,132,133,134,205,207,209,211,213, + 447,449,483,7635,7637,7795,7797,7799,127,128,129,130,131,132,160,162,164,365,416,418,454,7584,7744,7746,127,128,129,130,131,132,191,193, + 195,396,447,449,485,7615,7775,7777,131,132,133,134,135,222,224,226,306,355,380,414,416,448,7774,7776,131,132,133,134,135,253,255,257, + 337,386,411,445,447,479,7805,7807,131,132,133,134,223,225,227,229,231,390,447,449,7651,7807,7809,131,132,133,134,192,194,196,198,359, + 416,418,7620,7776,7778,132,134,254,442,7702,7712,7802,7804,7806,7808,-10,17,7031,7032,7101,7173,7191,7192,7197,131,214,216,218,395,7639,7641,7643, + 7645,131,245,247,249,426,7670,7672,7674,7676,132,285,287,473,7733,7833,7835,7837,7839,227,229,231,415,417,7655,7657,7661,6,8,7051,7052,7093, + 7195,7196,7201,189,439,7611,7613,7615,7617,7619,7726,239,241,423,7671,7673,7675,7677,7715,-5,6991,6992,7103,7167,7168,7170,7173,258,260,262,446,448, + 7686,7688,7692,182,184,186,188,384,398,7610,213,215,217,219,415,429,7641,232,234,236,238,422,7662,7664,263,265,267,269,453,7693,7695,-15, + 17,7071,7072,7231,7232,7233,220,470,7642,7644,7646,7648,7650,-11,7031,7032,7207,7208,7209,7211,254,7690,7692,7694,7696,7698,7713,270,272,454,7702,7704, + 7706,7708,206,208,210,7627,7631,7633,-23,6,7092,7235,7236,7237,-26,7103,7104,7249,7251,7549,235,413,7653,7655,7657,8415,237,239,241,7658,7662,7664, + -9,7017,7018,7101,7180,7183,5,7063,7064,7091,7210,7213,256,258,260,7703,7705,7707,171,7591,7593,7595,7597,7599,287,289,291,7734,7736,7738,202,7622, + 7624,7626,7628,7630,285,7721,7723,7725,7727,7729,-3,-2,-1,3,4,1,2,3,4,5,132,164,166,168,170,-14,7057,7058,7219,7221,132,195, + 197,199,201,7481,7483,7485,7487,7489,7482,7484,7486,7488,7490,204,382,7622,7624,7626,2,4,6,64,3,4,5,7,-21,203,205,207,2,4, + 6,112,-11,1,202,204,2,4,6,128,1,37,171,173,-8,7003,7004,7101,-19,7081,7082,7257,27,172,174,176,-13,7043,7044,7219,218,220, + 222,224,249,251,253,255,13,7041,7042,7097,7596,7598,7600,7602,7619,7621,7623,7625,7637,7639,7641,7643,7645,7647,7649,7651,7650,7652,7654,7656,7668,7670, + 7672,7674,7676,7678,7680,7682,-33,-32,-31,-58,7176,7181,-27,7191,7196,-5,-4,-2,1,2,4,1,3,5,2,3,5,1,4,5,-21,-20, + 193,2,4,16,3,5,6,14,15,16,27,28,162,312,7512,7514,343,7543,7545,7585,7587,7589,733,7961,8005,7616,7618,7620,7634,7636,7638,7665, + 7667,7669,22891,22892,23346,31318,31405,162165,31650,31843,31932,35977,36182,166849,36278,36572,167227,36626,36698,36797,62785,62786,62816,25280,156147,156148,37394,37755,168385,38990,39065,169662, + 62814,62815,62816,39089,39163,169757,40312,40387,171144,173234,173235,173236,-29,-28,12,22,161,163,140,167,171,198,253,279,203,390,284,310,7109,7176,7111,7190, + 7087,7206,7203,7204,7426,7428,7428,7430,7684,7686,309,8294,7687,7689,7699,7701,7718,7720,7730,7732,25135,25233,25194,25291,25286,25458,25477,25572,27117,27183,27997,28089, + 28255,28607,28357,28407,28458,28550,28458,28610,28513,28603,28875,28962,30692,30693,24507,155384,32406,32493,27530,158375,28470,159303,33613,33756,28625,159459,29500,160322,34266,34388,34540,34678, + 29402,160600,30216,161096,35034,35118,30351,161459,32788,163609,32908,163783,35621,35704,37790,37917,32943,164035,33018,163837,40630,40631,41398,41506,42137,42203,33247,163972,54624,54625,33631,164350, + 33716,164428,33778,164808,34352,165055,34921,165612,35453,166134,35790,166464,62788,62816,62816,62826,36046,166794,62816,62834,62816,62838,37311,168029,37752,168382,37810,168510,62816,62843,161426,161674, + 38130,168825,38679,169659,39225,169818,39337,169999,39518,170436,40398,171018,42033,172614,42209,172718,164391,164392,169819,169821,42724,173276,42572,173332,42877,173358,42832,173379,170354,170355,42858,173405, + 42927,173406,43001,173641,43196,173670,43237,173761,171308,171309,43338,173859,172737,172738,43650,174167,47771,178448,178804,178805,48949,179530,-99324,-90618,-87924,-84098,-80132,-77179,-77172,-3295,-163,-70, + -60,-59,-36,-16,-6,9,10,26,32,34,41,48,51,55,56,59,60,63,66,67,78,81,100,118,169,187,200,278,282,294,340,720, + 835,7085,7086,7110,7112,7156,7234,7243,7261,7273,7276,7277,7434,7440,7452,7458,7519,7609,7640,8009,8079,8739,8753,8754,21533,21757,22403,22533,22797,22850,23095,23227, + 23233,23281,23298,23360,23371,23380,23445,23673,23963,24010,24281,24349,24361,24836,24879,24891,24946,24988,25094,25170,25195,25276,25316,25326,25344,25350,25352,25422,25430,25435,25464,25496, + 25532,25561,25674,25675,25959,26097,26171,26173,26193,26425,26493,26543,26589,26627,26653,26703,26718,26756,26801,26921,26923,26951,26960,26999,27073,27179,27192,27217,27250,27309,27312,27340, + 27464,27707,27770,27782,27832,28049,28122,28147,28267,28324,28331,28608,28656,28666,28698,28799,28894,28935,28936,28952,28977,29008,29015,29045,29116,29367,29393,29426,29487,29526,29684,29686, + 29710,29867,29894,29915,29989,30055,30069,30405,30408,30477,30542,30561,30734,30805,30831,30919,30920,31016,31027,31082,31114,31253,31329,31341,31401,31464,31513,31603,31641,31645,31768,31776, + 31816,31823,31892,31935,31972,32043,32045,32084,32095,32103,32104,32307,32472,32556,32570,32701,32715,32724,32763,32776,32859,32870,32873,32893,32949,32955,32965,32988,33012,33023,33028,33030, + 33038,33053,33123,33210,33356,33388,33445,33526,33630,33642,33663,33740,33795,33809,33908,33926,33927,34059,34105,34117,34135,34152,34204,34243,34270,34273,34299,34344,34351,34354,34532,34563, + 34594,34618,34800,34802,34846,34877,34890,35031,35039,35127,35170,35206,35327,35379,35391,35439,35457,35631,35634,35699,35773,35776,35820,35834,35882,35884,35898,35996,36049,36071,36074,36094, + 36206,36343,36373,36377,36443,36446,36636,36665,37113,37178,37315,37331,37334,37344,37389,37453,37469,37523,37573,37693,37694,37714,37822,37837,37846,37873,37925,37977,37984,37996,38049,38135, + 38202,38357,38441,38457,38461,38492,38514,38517,38540,38556,38590,38601,38700,38703,38730,38800,38820,38911,39000,39061,39126,39128,39210,39246,39296,39312,39342,39357,39397,39414,39487,39501, + 39574,39640,39641,39706,39707,39736,39771,39850,39856,39889,39921,40124,40165,40169,40314,40318,40374,40407,40575,40793,40888,40900,40928,40974,40990,41059,41074,41230,41259,41274,41362,41418, + 41465,41616,41648,41658,41772,41860,41936,42061,42273,42276,42288,42302,42407,42408,42447,42448,42577,42624,42634,42668,42735,42746,42814,42871,42872,42885,42889,42928,42932,42949,43023,43025, + 43050,43063,43086,43088,43108,43212,43233,43253,43257,43274,43311,43396,43418,43430,43431,43433,43562,43673,43716,43721,43731,43763,43813,43828,43837,43866,44106,44197,44287,45331,45553,45851, + 46452,46778,47491,47538,47676,47803,48104,48191,48639,48746,49225,49737,50294,50458,50655,50670,50678,50721,51392,52429,52652,53712,55046,55194,55959,56301,56665,56996,57719,57784,58229,60629, + 60936,61695,61907,61909,62155,62198,62454,62765,63201,154337,154373,154379,154388,154394,154398,154458,154792,154895,155083,155657,155716,155742,155867,155936,156119,156186,156370,156464,156729,156771,157143,157170, + 157457,157550,157615,157899,157907,157938,158030,158191,158474,158700,158735,158751,158816,158907,158996,159017,159101,159535,159951,159977,159983,160097,160099,160192,160223,160312,160338,160404,160427,160472,160526,160560, + 160589,160590,160611,160840,160916,160950,160951,161207,161223,161238,161239,161248,161262,161335,161357,161401,161404,161456,161496,161505,161506,161524,161534,161541,161672,161833,161863,161920,162000,162063,162077,162175, + 162275,162300,162603,162669,162727,162825,162922,162944,162950,162964,163226,163228,163441,163596,163600,163692,164096,164287,164650,164856,164880,164968,165036,165075,165095,165254,165278,165294,165520,165540,165586,165624, + 165762,165829,165847,165997,166043,166050,166093,166106,166138,166220,166305,166469,166555,166617,166677,166784,166796,166810,166850,166867,166889,166960,166973,167063,167084,167253,167297,167325,167374,167442,167491,167680, + 167750,167846,167890,168022,168079,168134,168165,168283,168317,168329,168377,168404,168505,168580,168680,168797,169000,169030,169039,169050,169117,169177,169211,169240,169273,169299,169319,169340,169406,169442,169476,169559, + 169624,169634,169681,169722,169727,169737,169776,169822,169950,170015,170150,170183,170192,170242,170273,170287,170295,170386,170455,170457,170459,170526,170569,170589,170631,170656,170756,170768,170772,170809,170937,170989, + 171031,171074,171091,171117,171123,171133,171158,171178,171361,171520,171581,171592,171638,171661,171729,171773,171836,171843,171862,171875,171876,171880,171948,172068,172070,172103,172127,172164,172234,172341,172342,172507, + 172541,172680,172694,172701,172769,172784,172850,172875,172958,173015,173046,173061,173109,173129,173134,173144,173164,173244,173268,173283,173348,173484,173488,173531,173541,173595,173608,173678,173684,173696,173704,173722, + 173740,173741,173755,173791,173884,173886,173888,173936,173966,174085,174155,174244,174413,174529,174531,174537,175296,175385,175393,175423,175674,175824,175946,176003,176010,176140,176218,176903,176911,177043,177097,177128, + 177223,177230,177233,177276,177406,177443,177529,177580,177691,177725,177772,177863,177981,178014,178217,178286,178358,178437,178487,178498,178712,178814,179072,179159,179364,179414,179605,179637,179656,179693,179803,179860, + 180071,180102,180152,180175,180238,180262,180308,180469,180588,180601,181007,181056,181082,181102,181519, +}; + +static kbts_u8 kbts_UnicodeDecomposition_PageIndices[17407] = { + 0,1,1,2,3,4,5,6,7,1,1,1,1,8,9,10,11,12,1,13,1,1,1,1,14,1,1,15,1,1,1,1, + 1,1,1,1,16,17,1,18,19,20,1,1,1,21,1,22,1,23,1,24,1,25,1,26,1,1,1,1,1,27,28,1, + 29,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,30,31, + 1,1,1,1,1,1,1,1,1,1,1,1,32,33,1,1,1,1,1,1,1,1,1,1,34,35,36,37,38,39,40,41, + 42,1,1,1,43,1,44,45,46,47,48,49,50,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,51,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,52,53,54,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,55,56,57,58,59,60,61,62,63,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,65,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,66,1,67,1,1,1,1,1,1,1,1,68,69,70,1,1,71,1,1,1,72,1,1,1,1,1,1,1,1,1, + 1,1,1,1,73,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,74,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,75,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,76,77,78,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 79,80,81,82,83,84,85,86,87,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +}; + +static kbts_u64 kbts_UnicodeDecomposition_Data[5632] = { + 52776558133248ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,343932928ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 6442451206ull,6450839814ull,6459228422ull,6467617030ull,6509560070ull,6526337286ull,0ull,6769606926ull,6442451222ull,6450839830ull,6459228438ull,6509560086ull,6442451238ull,6450839846ull,6459228454ull,6509560102ull,0ull,6467617082ull,6442451262ull,6450839870ull,6459228478ull,6467617086ull,6509560126ull,0ull,0ull,6442451286ull,6450839894ull,6459228502ull,6509560150ull,6450839910ull,0ull,0ull, + 6442451334ull,6450839942ull,6459228550ull,6467617158ull,6509560198ull,6526337414ull,0ull,6769607054ull,6442451350ull,6450839958ull,6459228566ull,6509560214ull,6442451366ull,6450839974ull,6459228582ull,6509560230ull,0ull,6467617210ull,6442451390ull,6450839998ull,6459228606ull,6467617214ull,6509560254ull,0ull,0ull,6442451414ull,6450840022ull,6459228630ull,6509560278ull,6450840038ull,0ull,6509560294ull, + 6476005638ull,6476005766ull,6492782854ull,6492782982ull,6777995526ull,6777995654ull,6450839822ull,6450839950ull,6459228430ull,6459228558ull,6501171470ull,6501171598ull,6543114510ull,6543114638ull,6543114514ull,6543114642ull,0ull,0ull,6476005654ull,6476005782ull,6492782870ull,6492782998ull,6501171478ull,6501171606ull,6777995542ull,6777995670ull,6543114518ull,6543114646ull,6459228446ull,6459228574ull,6492782878ull,6492783006ull, + 6501171486ull,6501171614ull,6769606942ull,6769607070ull,6459228450ull,6459228578ull,0ull,0ull,6467617062ull,6467617190ull,6476005670ull,6476005798ull,6492782886ull,6492783014ull,6777995558ull,6777995686ull,6501171494ull,0ull,0ull,0ull,6459228458ull,6459228586ull,6769606958ull,6769607086ull,0ull,6450839858ull,6450839986ull,6769606962ull,6769607090ull,6543114546ull,6543114674ull,0ull, + 0ull,0ull,0ull,6450839866ull,6450839994ull,6769606970ull,6769607098ull,6543114554ull,6543114682ull,0ull,0ull,0ull,6476005694ull,6476005822ull,6492782910ull,6492783038ull,6534725950ull,6534726078ull,0ull,0ull,6450839882ull,6450840010ull,6769606986ull,6769607114ull,6543114570ull,6543114698ull,6450839886ull,6450840014ull,6459228494ull,6459228622ull,6769606990ull,6769607118ull, + 6543114574ull,6543114702ull,6769606994ull,6769607122ull,6543114578ull,6543114706ull,0ull,0ull,6467617110ull,6467617238ull,6476005718ull,6476005846ull,6492782934ull,6492783062ull,6526337366ull,6526337494ull,6534725974ull,6534726102ull,6777995606ull,6777995734ull,6459228510ull,6459228638ull,6459228518ull,6459228646ull,6509560166ull,6450839914ull,6450840042ull,6501171562ull,6501171690ull,6543114602ull,6543114730ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 6668943678ull,6668943806ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6668943702ull,6668943830ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6543114502ull,6543114630ull,6543114534ull,6543114662ull,6543114558ull,6543114686ull,6543114582ull,6543114710ull,6476006258ull,6476006386ull,6450840434ull,6450840562ull,6543115122ull,6543115250ull,6442451826ull,6442451954ull,0ull,6476006162ull,6476006290ull, + 6476007578ull,6476007582ull,6476006170ull,6476006298ull,0ull,0ull,6543114526ull,6543114654ull,6543114542ull,6543114670ull,6777995582ull,6777995710ull,6476007338ull,6476007342ull,6543115998ull,6543116874ull,6543114666ull,0ull,0ull,0ull,6450839838ull,6450839966ull,0ull,0ull,6442451258ull,6442451386ull,6450840342ull,6450840470ull,6450840346ull,6450840474ull,6450840418ull,6450840546ull, + 6568280326ull,6568280454ull,6585057542ull,6585057670ull,6568280342ull,6568280470ull,6585057558ull,6585057686ull,6568280358ull,6568280486ull,6585057574ull,6585057702ull,6568280382ull,6568280510ull,6585057598ull,6585057726ull,6568280394ull,6568280522ull,6585057610ull,6585057738ull,6568280406ull,6568280534ull,6585057622ull,6585057750ull,6761218382ull,6761218510ull,6761218386ull,6761218514ull,0ull,0ull,6543114530ull,6543114658ull, + 0ull,0ull,0ull,0ull,0ull,0ull,6501171462ull,6501171590ull,6769606934ull,6769607062ull,6476006234ull,6476006362ull,6476006230ull,6476006358ull,6501171518ull,6501171646ull,6476007610ull,6476007614ull,6476005734ull,6476005862ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 3073ull,3077ull,0ull,3149ull,6450842658ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,2789ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,237ull,0ull, + 0ull,0ull,0ull,0ull,0ull,6450840226ull,6450843206ull,733ull,6450843222ull,6450843230ull,6450843238ull,0ull,6450843262ull,0ull,6450843286ull,6450843302ull,6450843434ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6509563494ull,6509563542ull,6450843334ull,6450843350ull,6450843358ull,6450843366ull,6450843438ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6509563622ull,6509563670ull,6450843390ull,6450843414ull,6450843430ull,0ull,0ull,0ull,0ull,6450843466ull,6509563722ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 6442455126ull,6509563990ull,0ull,6450843726ull,0ull,0ull,0ull,6509563930ull,0ull,0ull,0ull,0ull,6450843754ull,6442455138ull,6492786830ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6492786786ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6492786914ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6442455254ull,6509564118ull,0ull,6450843854ull,0ull,0ull,0ull,6509564250ull,0ull,0ull,0ull,0ull,6450843882ull,6442455266ull,6492786958ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6568284626ull,6568284630ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,6492786778ull,6492786906ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6492786754ull,6492786882ull,6509563970ull,6509564098ull,0ull,0ull,6492786774ull,6492786902ull,0ull,0ull,6509564770ull,6509564774ull,6509563994ull,6509564122ull,6509563998ull,6509564126ull, + 0ull,0ull,6476009570ull,6476009698ull,6509564002ull,6509564130ull,6509564026ull,6509564154ull,0ull,0ull,6509564834ull,6509564838ull,6509564086ull,6509564214ull,6476009614ull,6476009742ull,6509564046ull,6509564174ull,6534729870ull,6534729998ull,6509564062ull,6509564190ull,0ull,0ull,6509564078ull,6509564206ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,13581162654ull,13589551262ull,13589551394ull,13597939870ull,13589551402ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 13589551958ull,0ull,13589551878ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,13589551946ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,19830678690ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,19830678734ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,19830678614ull,19830678618ull,19830678622ull,19830678642ull,19830678662ull,19830678666ull,19830678702ull,19830678718ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,20921198366ull,21130913566ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,20904421054ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,21978163402ull,0ull,0ull,21978163426ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,21978163290ull,21978163294ull,21978163314ull,0ull,0ull,21978163374ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,24343751966ull,0ull,0ull,24142425374ull,24352140574ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,24125648006ull,24125648010ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,25216167706ull,25216167710ull,25425882906ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,26491236634ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 27556590334ull,0ull,0ull,0ull,0ull,0ull,0ull,27556590362ull,27564978970ull,0ull,27397206810ull,27556590378ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,28437394714ull,28437394718ull,28647109914ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,29611800422ull,0ull,29653743462ull,29611800434ull,29787961190ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,33747385610ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,33747385650ull,0ull,0ull,0ull,0ull,33747385670ull,0ull,0ull,0ull,0ull,33747385690ull,0ull,0ull,0ull,0ull,33747385710ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,33730608386ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,33168571846ull,0ull,33185349062ull,33286012618ull,0ull,33286012622ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,33286012358ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,33747385930ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,33747385970ull,0ull,0ull, + 0ull,0ull,33747385990ull,0ull,0ull,0ull,0ull,33747386010ull,0ull,0ull,0ull,0ull,33747386030ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,33730608706ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,34745630870ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,35235358072582ull,35235366461190ull, + 35235374849798ull,0ull,0ull,0ull,35235408404230ull,35235416792838ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,58426682390ull,0ull,58426682398ull,0ull,58426682406ull,0ull,58426682414ull,0ull,58426682422ull,0ull,0ull,0ull,58426682438ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,58426682602ull,0ull,58426682610ull,0ull,0ull, + 58426682618ull,58426682622ull,0ull,58426682634ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 6752829702ull,6752829830ull,6501171466ull,6501171594ull,6736052490ull,6736052618ull,6853493002ull,6853493130ull,6450840350ull,6450840478ull,6501171474ull,6501171602ull,6736052498ull,6736052626ull,6853493010ull,6853493138ull,6769606930ull,6769607058ull,6819938578ull,6819938706ull,6442452042ull,6442452046ull,6450840650ull,6450840654ull,6819938582ull,6819938710ull,6845104406ull,6845104534ull,6492784802ull,6492784806ull,6501171482ull,6501171610ull, + 6476005662ull,6476005790ull,6501171490ull,6501171618ull,6736052514ull,6736052642ull,6509560098ull,6509560226ull,6769606946ull,6769607074ull,6828327202ull,6828327330ull,6845104422ull,6845104550ull,6450840382ull,6450840510ull,6450839854ull,6450839982ull,6736052526ull,6736052654ull,6853493038ull,6853493166ull,6736052530ull,6736052658ull,6476036314ull,6476036318ull,6853493042ull,6853493170ull,6819938610ull,6819938738ull,6450839862ull,6450839990ull, + 6501171510ull,6501171638ull,6736052534ull,6736052662ull,6501171514ull,6501171642ull,6736052538ull,6736052666ull,6853493050ull,6853493178ull,6819938618ull,6819938746ull,6450840406ull,6450840534ull,6509560662ull,6509560790ull,6442452274ull,6442452278ull,6450840882ull,6450840886ull,6450839874ull,6450840002ull,6501171522ull,6501171650ull,6501171530ull,6501171658ull,6736052554ull,6736052682ull,6476036458ull,6476036462ull,6853493066ull,6853493194ull, + 6501171534ull,6501171662ull,6736052558ull,6736052686ull,6501172586ull,6501172590ull,6501172610ull,6501172614ull,6501202314ull,6501202318ull,6501171538ull,6501171666ull,6736052562ull,6736052690ull,6853493074ull,6853493202ull,6819938642ull,6819938770ull,6744441174ull,6744441302ull,6845104470ull,6845104598ull,6819938646ull,6819938774ull,6450840994ull,6450840998ull,6509561258ull,6509561262ull,6467617114ull,6467617242ull,6736052570ull,6736052698ull, + 6442451294ull,6442451422ull,6450839902ull,6450840030ull,6509560158ull,6509560286ull,6501171550ull,6501171678ull,6736052574ull,6736052702ull,6501171554ull,6501171682ull,6509560162ull,6509560290ull,6501171558ull,6501171686ull,6459228522ull,6459228650ull,6736052586ull,6736052714ull,6853493098ull,6853493226ull,6853493154ull,6509560274ull,6526337502ull,6526337510ull,0ull,6501172734ull,0ull,0ull,0ull,0ull, + 6736052486ull,6736052614ull,6517948678ull,6517948806ull,6450840330ull,6450840458ull,6442451722ull,6442451850ull,6517949194ull,6517949322ull,6467617546ull,6467617674ull,6459259522ull,6459259526ull,6450840586ull,6450840590ull,6442451978ull,6442451982ull,6517949450ull,6517949454ull,6467617802ull,6467617806ull,6492813954ull,6492813958ull,6736052502ull,6736052630ull,6517948694ull,6517948822ull,6467617046ull,6467617174ull,6450840362ull,6450840490ull, + 6442451754ull,6442451882ull,6517949226ull,6517949354ull,6467617578ull,6467617706ull,6459259618ull,6459259622ull,6517948710ull,6517948838ull,6736052518ull,6736052646ull,6736052542ull,6736052670ull,6517948734ull,6517948862ull,6450840402ull,6450840530ull,6442451794ull,6442451922ull,6517949266ull,6517949394ull,6467617618ull,6467617746ull,6459259698ull,6459259702ull,6450841218ull,6450841222ull,6442452610ull,6442452614ull,6517950082ull,6517950086ull, + 6467618434ull,6467618438ull,6736053890ull,6736053894ull,6736052566ull,6736052694ull,6517948758ull,6517948886ull,6450841278ull,6450841282ull,6442452670ull,6442452674ull,6517950142ull,6517950146ull,6467618494ull,6467618498ull,6736053950ull,6736053954ull,6442451302ull,6442451430ull,6736052582ull,6736052710ull,6517948774ull,6517948902ull,6467617126ull,6467617254ull,0ull,0ull,0ull,0ull,0ull,0ull, + 6601838278ull,6610226886ull,6442482690ull,6442482694ull,6450871298ull,6450871302ull,6996130818ull,6996130822ull,6601838150ull,6610226758ull,6442482722ull,6442482726ull,6450871330ull,6450871334ull,6996130850ull,6996130854ull,6601838294ull,6610226902ull,6442482754ull,6442482758ull,6450871362ull,6450871366ull,0ull,0ull,6601838166ull,6610226774ull,6442482786ull,6442482790ull,6450871394ull,6450871398ull,0ull,0ull, + 6601838302ull,6610226910ull,6442482818ull,6442482822ull,6450871426ull,6450871430ull,6996130946ull,6996130950ull,6601838174ull,6610226782ull,6442482850ull,6442482854ull,6450871458ull,6450871462ull,6996130978ull,6996130982ull,6601838310ull,6610226918ull,6442482882ull,6442482886ull,6450871490ull,6450871494ull,6996131010ull,6996131014ull,6601838182ull,6610226790ull,6442482914ull,6442482918ull,6450871522ull,6450871526ull,6996131042ull,6996131046ull, + 6601838334ull,6610226942ull,6442482946ull,6442482950ull,6450871554ull,6450871558ull,0ull,0ull,6601838206ull,6610226814ull,6442482978ull,6442482982ull,6450871586ull,6450871590ull,0ull,0ull,6601838358ull,6610226966ull,6442483010ull,6442483014ull,6450871618ull,6450871622ull,6996131138ull,6996131142ull,0ull,6610226838ull,0ull,6442483046ull,0ull,6450871654ull,0ull,6996131174ull, + 6601838374ull,6610226982ull,6442483074ull,6442483078ull,6450871682ull,6450871686ull,6996131202ull,6996131206ull,6601838246ull,6610226854ull,6442483106ull,6442483110ull,6450871714ull,6450871718ull,6996131234ull,6996131238ull,6442454726ull,3761ull,6442454742ull,3765ull,6442454750ull,3769ull,6442454758ull,3773ull,6442454782ull,3889ull,6442454806ull,3893ull,6442454822ull,3897ull,0ull,0ull, + 7021296642ull,7021296646ull,7021296650ull,7021296654ull,7021296658ull,7021296662ull,7021296666ull,7021296670ull,7021296674ull,7021296678ull,7021296682ull,7021296686ull,7021296690ull,7021296694ull,7021296698ull,7021296702ull,7021296770ull,7021296774ull,7021296778ull,7021296782ull,7021296786ull,7021296790ull,7021296794ull,7021296798ull,7021296802ull,7021296806ull,7021296810ull,7021296814ull,7021296818ull,7021296822ull,7021296826ull,7021296830ull, + 7021297026ull,7021297030ull,7021297034ull,7021297038ull,7021297042ull,7021297046ull,7021297050ull,7021297054ull,7021297058ull,7021297062ull,7021297066ull,7021297070ull,7021297074ull,7021297078ull,7021297082ull,7021297086ull,6492786374ull,6476009158ull,7021297090ull,7021268678ull,7021268658ull,0ull,6996102854ull,7021297370ull,6492786246ull,6476009030ull,6442454598ull,3609ull,7021268550ull,0ull,3813ull,0ull, + 0ull,6996099746ull,7021297106ull,7021268702ull,7021268666ull,0ull,6996102878ull,7021297434ull,6442454614ull,3617ull,6442454622ull,3621ull,7021268574ull,6442483454ull,6450872062ull,6996131582ull,6492786406ull,6476009190ull,6442454826ull,3649ull,0ull,0ull,6996102886ull,6996102954ull,6492786278ull,6476009062ull,6442454630ull,3625ull,0ull,6442483706ull,6450872314ull,6996131834ull, + 6492786454ull,6476009238ull,6442454830ull,3777ull,6601838342ull,6610226950ull,6996102934ull,6996102958ull,6492786326ull,6476009110ull,6442454678ull,3641ull,6610226822ull,6442451618ull,3605ull,385ull,0ull,0ull,7021297138ull,7021268774ull,7021268794ull,0ull,6996102950ull,7021297626ull,6442454654ull,3633ull,6442454694ull,3645ull,7021268646ull,721ull,0ull,0ull, + 32777ull,32781ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,32833ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,3749ull,0ull,0ull,0ull,301ull,789ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6912247362ull,6912247370ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6912247378ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6912247618ull,6912247634ull,6912247626ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,6912247822ull,0ull,0ull,0ull,0ull,6912247842ull,0ull,0ull,6912247854ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,6912247950ull,0ull,6912247958ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,6912248050ull,0ull,0ull,6912248078ull,0ull,0ull,6912248086ull,0ull,6912248098ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 6912213238ull,0ull,6912248198ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6912248118ull,6912213234ull,6912213242ull,6912248210ull,6912248214ull,0ull,0ull,6912248266ull,6912248270ull,0ull,0ull,6912248282ull,6912248286ull,0ull,0ull,0ull,0ull,0ull,0ull, + 6912248298ull,6912248302ull,0ull,0ull,6912248330ull,6912248334ull,0ull,0ull,6912248346ull,6912248350ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6912248458ull,6912248482ull,6912248486ull,6912248494ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 6912248306ull,6912248310ull,6912248390ull,6912248394ull,0ull,0ull,0ull,0ull,0ull,0ull,6912248522ull,6912248526ull,6912248530ull,6912248534ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,49185ull,49189ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6912256886ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,104362721582ull,0ull,104362721590ull,0ull,104362721598ull,0ull,104362721606ull,0ull,104362721614ull,0ull,104362721622ull,0ull,104362721630ull,0ull,104362721638ull,0ull,104362721646ull,0ull,104362721654ull,0ull, + 104362721662ull,0ull,104362721670ull,0ull,0ull,104362721682ull,0ull,104362721690ull,0ull,104362721698ull,0ull,0ull,0ull,0ull,0ull,0ull,104362721726ull,104371110334ull,0ull,104362721738ull,104371110346ull,0ull,104362721750ull,104371110358ull,0ull,104362721762ull,104371110370ull,0ull,104362721774ull,104371110382ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,104362721562ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,104362721910ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,104362721966ull,0ull,104362721974ull,0ull,104362721982ull,0ull,104362721990ull,0ull,104362721998ull,0ull,104362722006ull,0ull,104362722014ull,0ull,104362722022ull,0ull,104362722030ull,0ull,104362722038ull,0ull, + 104362722046ull,0ull,104362722054ull,0ull,0ull,104362722066ull,0ull,104362722074ull,0ull,104362722082ull,0ull,0ull,0ull,0ull,0ull,0ull,104362722110ull,104371110718ull,0ull,104362722122ull,104371110730ull,0ull,104362722134ull,104371110742ull,0ull,104362722146ull,104371110754ull,0ull,104362722158ull,104371110766ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,104362721946ull,0ull,0ull,104362722238ull,104362722242ull,104362722246ull,104362722250ull,0ull,0ull,0ull,104362722294ull,0ull, + 143649ull,105425ull,146217ull,144161ull,113477ull,80073ull,85909ull,163441ull,163441ull,91461ull,149317ull,87581ull,91425ull,100313ull,121253ull,130581ull,137469ull,138985ull,140257ull,148029ull,108553ull,111725ull,115557ull,118649ull,135413ull,148905ull,157637ull,80393ull,85461ull,109585ull,116845ull,137397ull, + 161913ull,95553ull,114605ull,137013ull,140689ull,101157ull,132961ull,139389ull,97065ull,105565ull,112041ull,117745ull,148281ull,81433ull,83677ull,84857ull,103185ull,109389ull,116801ull,121757ull,131077ull,137241ull,137585ull,145341ull,154825ull,159165ull,161769ull,123441ull,124413ull,128641ull,134949ull,150545ull, + 162301ull,142169ull,91005ull,97297ull,127361ull,131577ull,117129ull,123689ull,144137ull,154589ull,90977ull,94601ull,108621ull,112489ull,113725ull,128189ull,129245ull,153901ull,84809ull,131629ull,83825ull,83761ull,125041ull,128761ull,135109ull,154069ull,142849ull,101181ull,108553ull,142329ull,80101ull,94109ull, + 98377ull,118301ull,120257ull,85085ull,123885ull,81661ull,97957ull,79925ull,111409ull,103905ull,128137ull,85773ull,90489ull,121861ull,135461ull,141993ull,110313ull,147137ull,111137ull,101369ull,134037ull,102017ull,120213ull,80569ull,83365ull,83749ull,107013ull,127901ull,133565ull,142153ull,149309ull,84949ull, + 86281ull,91597ull,97201ull,104213ull,114681ull,124073ull,153269ull,158121ull,162397ull,162617ull,84589ull,105241ull,110045ull,146825ull,96721ull,99905ull,100353ull,103017ull,113805ull,116005ull,119333ull,124713ull,128977ull,131517ull,146585ull,136121ull,147597ull,150825ull,84061ull,84621ull,86773ull,115489ull, + 140041ull,141993ull,97061ull,98261ull,101869ull,110265ull,127225ull,118229ull,80785ull,89061ull,94109ull,95977ull,98417ull,118473ull,119205ull,130665ull,131353ull,149713ull,154585ull,154913ull,155745ull,81453ull,124601ull,149201ull,154337ull,99205ull,80409ull,82793ull,94137ull,94461ull,104037ull,108553ull, + 116537ull,121097ull,136177ull,147953ull,163381ull,104993ull,153785ull,84517ull,105965ull,106445ull,111877ull,113265ull,118821ull,120165ull,123309ull,128065ull,156025ull,83381ull,100537ull,154081ull,82093ull,95333ull,112553ull,146601ull,97837ull,99601ull,106589ull,118301ull,154137ull,84133ull,86077ull,94613ull, + 104525ull,105785ull,107169ull,111509ull,118809ull,120713ull,130533ull,140093ull,140165ull,149297ull,154505ull,85245ull,113385ull,86133ull,116545ull,119393ull,137193ull,154253ull,160093ull,162429ull,106077ull,112429ull,133025ull,125741ull,126081ull,127561ull,117505ull,115301ull,142689ull,80641ull,134361ull,84201ull, + 83997ull,96921ull,101197ull,127833ull,93717ull,111737ull,105169ull,146669ull,139569ull,153909ull,140845ull,97101ull,83201ull,87809ull,0ull,0ull,90473ull,0ull,104913ull,0ull,0ull,83833ull,117929ull,121641ull,124145ull,124281ull,124309ull,124477ull,154969ull,127737ull,130805ull,0ull, + 137289ull,0ull,142305ull,0ull,0ull,147681ull,148469ull,0ull,0ull,0ull,156605ull,156657ull,156833ull,161489ull,148345ull,154333ull,81593ull,82845ull,83253ull,84773ull,84881ull,85317ull,87669ull,88089ull,88481ull,90369ull,90785ull,94609ull,94649ull,98897ull,99745ull,99897ull, + 100297ull,103741ull,104329ull,105029ull,107029ull,112093ull,112745ull,113801ull,116153ull,116909ull,118921ull,123461ull,124153ull,124197ull,124193ull,124225ull,124249ull,124277ull,124469ull,124473ull,125185ull,125445ull,126721ull,128977ull,129061ull,129285ull,130505ull,131093ull,133045ull,133605ull,133605ull,135517ull, + 140353ull,140889ull,142341ull,142565ull,144205ull,144417ull,147161ull,147681ull,154509ull,155645ull,155885ull,98773ull,592825ull,133217ull,0ull,0ull,80025ull,83669ull,83361ull,81409ull,83221ull,83457ull,84765ull,84969ull,87669ull,87381ull,87653ull,87945ull,90473ull,90829ull,91409ull,91473ull, + 92553ull,93345ull,97097ull,97125ull,97701ull,97973ull,99169ull,99641ull,99361ull,99897ull,99713ull,100297ull,100561ull,102161ull,102513ull,102729ull,103769ull,104913ull,105565ull,105581ull,105817ull,110053ull,110313ull,111877ull,113517ull,113453ull,113801ull,114809ull,116153ull,122525ull,116949ull,117437ull, + 117929ull,119237ull,119833ull,120045ull,120949ull,120957ull,121641ull,121709ull,121809ull,122153ull,122113ull,123697ull,125637ull,126721ull,127469ull,128365ull,128977ull,130297ull,131093ull,134473ull,135101ull,138725ull,140549ull,140825ull,140889ull,142077ull,142305ull,142125ull,142341ull,142329ull,142261ull,142565ull, + 142889ull,144417ull,146657ull,147913ull,149093ull,149977ull,154097ull,154509ull,154969ull,155501ull,155645ull,155693ull,155885ull,158793ull,163441ull,565545ull,565521ull,577365ull,61045ull,65633ull,65765ull,608549ull,619329ull,654157ull,163085ull,163385ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,12247373670ull,0ull,12272539594ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,12356425638ull,12364814246ull,12356676902ull,12365065510ull,12272539458ull,12280928066ull,12314482498ull,12314482502ull,12314482506ull,12314482510ull,12314482514ull,12314482518ull,12314482522ull,0ull,12314482530ull,12314482534ull,12314482538ull,12314482542ull,12314482546ull,0ull,12314482554ull,0ull, + 12314482562ull,12314482566ull,0ull,12314482574ull,12314482578ull,0ull,12314482586ull,12314482590ull,12314482594ull,12314482598ull,12314482602ull,12289316694ull,12339648326ull,12339648366ull,12339648402ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,6501439306ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,6501439338ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,585676112486ull,0ull,585676112494ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,585676112534ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,586590471366ull,586590471370ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,591078378782ull,591288093982ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,592244395530ull,0ull,592126955026ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,592185675310ull,0ull,0ull,592244395586ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,592185675530ull,0ull,592101789450ull,592244395786ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,594266051302ull,594182165222ull,0ull,594291217126ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,596321261282ull,596321261286ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,603845846230ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,758313747578ull,758406022266ull,758322136186ull,758322136230ull,758330524794ull,758322136198ull,758322136202ull,758330524806ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,784695932318ull,784695932302ull,784695932326ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,999427622238ull,999427622242ull, + 999503119742ull,999511508350ull,999519896958ull,999528285566ull,999536674174ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,999427622630ull,999427622634ull,999503120110ull,999503120114ull,999511508718ull, + 999511508722ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, + 80117ull,80097ull,80133ull,525449ull,81281ull,81593ull,81645ull,81929ull,82409ull,82533ull,82845ull,82749ull,53881ull,530665ull,83253ull,83281ull,83345ull,83421ull,529521ull,53989ull,83357ull,83509ull,529709ull,83549ull,83601ull,80689ull,83633ull,83669ull,673661ull,83925ull,83981ull,54141ull, + 84205ull,84249ull,84425ull,84445ull,54357ull,84765ull,84773ull,84881ull,84969ull,85013ull,85017ull,85085ull,85285ull,85317ull,85353ull,85453ull,85493ull,85501ull,85501ull,85501ull,534705ull,115137ull,85801ull,85885ull,535949ull,85933ull,85957ull,86041ull,86649ull,86241ull,86305ull,86433ull, + 86665ull,87001ull,87105ull,87373ull,87437ull,87569ull,87569ull,87653ull,87725ull,87757ull,87817ull,89177ull,88089ull,89181ull,88389ull,88529ull,83997ull,91065ull,89913ull,90065ull,90165ull,89645ull,90313ull,90309ull,90801ull,545681ull,91081ull,91101ull,91161ull,91241ull,91273ull,91529ull, + 547489ull,547753ull,92081ull,92269ull,92317ull,92001ull,92569ull,56249ull,56305ull,93217ull,93433ull,93433ull,550689ull,93965ull,94049ull,94109ull,94157ull,552033ull,94205ull,94233ull,97613ull,94345ull,56837ull,94593ull,94649ull,94977ull,94773ull,554897ull,95501ull,554905ull,95673ull,95661ull, + 95729ull,96133ull,96137ull,57533ull,96245ull,96417ull,96501ull,96677ull,57737ull,558605ull,57841ull,96961ull,96973ull,96985ull,97065ull,691785ull,97273ull,560325ull,560325ull,133125ull,97417ull,97417ull,58141ull,576225ull,624489ull,97673ull,97709ull,58253ull,97897ull,98101ull,98141ull,98277ull, + 98821ull,58601ull,58481ull,98897ull,564049ull,99101ull,99617ull,99633ull,99641ull,99633ull,99817ull,99897ull,100041ull,99985ull,100029ull,100217ull,100297ull,100313ull,100417ull,100461ull,100725ull,101061ull,101201ull,101697ull,568369ull,101621ull,101361ull,101793ull,101901ull,102289ull,569285ull,102537ull, + 102165ull,102053ull,59577ull,102821ull,102905ull,103029ull,102877ull,59825ull,103741ull,103857ull,573481ull,104333ull,105441ull,104741ull,60517ull,105029ull,60449ull,60305ull,83529ull,83541ull,105473ull,105073ull,131765ull,69477ull,105565ull,105581ull,105605ull,105849ull,105805ull,577293ull,60709ull,106473ull, + 106005ull,106825ull,107029ull,577973ull,107065ull,106621ull,107601ull,61045ull,107785ull,108173ull,108457ull,109217ull,580237ull,109421ull,61537ull,109701ull,582301ull,109905ull,61753ull,110025ull,110205ull,110313ull,110317ull,584245ull,554029ull,584681ull,110905ull,586481ull,111357ull,111413ull,111005ull,111705ull, + 111865ull,112093ull,111877ull,112037ull,112097ull,112149ull,586873ull,111825ull,112829ull,113081ull,62669ull,113453ull,113437ull,588613ull,112613ull,114105ull,589177ull,589369ull,114457ull,114917ull,114809ull,114797ull,63065ull,114985ull,115189ull,115165ull,115381ull,529557ull,115989ull,592269ull,116337ull,593581ull, + 116897ull,116949ull,117057ull,596001ull,117249ull,117333ull,597205ull,598097ull,118249ull,118317ull,64177ull,118421ull,64225ull,64225ull,119069ull,119153ull,119237ull,119317ull,119593ull,64621ull,119953ull,602329ull,120057ull,602697ull,120257ull,558717ull,120897ull,605829ull,605921ull,606481ull,65521ull,65569ull, + 121809ull,607181ull,607177ull,607333ull,607437ull,121977ull,121981ull,121981ull,122153ull,65765ull,122413ull,65817ull,66137ull,610421ull,123193ull,123441ull,123697ull,66445ull,612505ull,124249ull,612969ull,613141ull,124477ull,124845ull,66749ull,125185ull,125225ull,125245ull,615921ull,617117ull,617117ull,125881ull, + 67593ull,618157ull,126745ull,126757ull,67741ull,619009ull,127817ull,68225ull,127905ull,127885ull,128001ull,622105ull,128397ull,68613ull,128797ull,129033ull,129301ull,68817ull,624801ull,624925ull,68965ull,625509ull,130537ull,625913ull,130645ull,131049ull,131093ull,627561ull,627853ull,131457ull,628385ull,131521ull, + 576893ull,69461ull,131785ull,132109ull,69677ull,132345ull,92885ull,630429ull,630485ull,577101ull,577137ull,133125ull,133137ull,147065ull,70061ull,133701ull,133677ull,133749ull,84685ull,133829ull,133837ull,133877ull,134041ull,634097ull,134037ull,134261ull,134541ull,134837ull,134285ull,134901ull,135069ull,135517ull, + 134477ull,134953ull,134961ull,135025ull,635097ull,636333ull,635733ull,70829ull,136133ull,136141ull,136281ull,642857ull,136593ull,638129ull,71029ull,71045ull,638661ull,639817ull,71085ull,137537ull,137585ull,137629ull,137637ull,137893ull,137761ull,138297ull,138121ull,138725ull,138401ull,138669ull,138777ull,71517ull, + 139141ull,139269ull,71653ull,139649ull,139661ull,645533ull,140125ull,140153ull,71893ull,140265ull,53997ull,647865ull,648601ull,72441ull,72477ull,141953ull,142261ull,142889ull,143701ull,651937ull,144045ull,144133ull,144493ull,144861ull,654525ull,532497ull,145197ull,145137ull,145345ull,533369ull,146257ull,146657ull, + 661321ull,661429ull,148049ull,148421ull,148549ull,662713ull,148589ull,149729ull,150365ull,150369ull,150001ull,151525ull,151637ull,667625ull,153133ull,75349ull,153309ull,669149ull,75673ull,154381ull,95945ull,154765ull,673045ull,673897ull,76217ull,76249ull,155521ull,675881ull,76489ull,676441ull,155693ull,155693ull, + 155813ull,677593ull,156553ull,77005ull,156837ull,157341ull,157449ull,157689ull,77625ull,683201ull,158793ull,160001ull,160757ull,78649ull,78773ull,161181ull,688953ull,78817ull,689173ull,690233ull,690757ull,162541ull,79193ull,162789ull,162809ull,162837ull,162877ull,162905ull,163053ull,694273ull,0ull,0ull, + 0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull,0ull, +}; + +KBTS_INLINE kbts_u64 kbts_GetUnicodeDecomposition(kbts_u32 Codepoint) +{ + return kbts_UnicodeDecomposition_Data[((kbts_un)kbts_UnicodeDecomposition_PageIndices[Codepoint/64] * 64) | (Codepoint & 63)]; +} + +static kbts_u8 kbts_UnicodeWordBreakClass_PageIndices[8703] = { + 0,1,2,2,2,3,4,5,2,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28, + 29,30,2,2,31,32,33,34,35,2,2,2,36,37,38,39,40,41,42,43,44,45,46,47,48,49,2,50,2,2,51,52, + 53,54,55,56,57,57,58,59,57,60,57,61,62,63,64,65,57,57,66,57,57,57,67,57,2,68,69,70,71,57,57,57, + 72,73,74,75,57,76,77,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 2,2,2,2,2,2,2,2,2,78,2,2,79,80,81,82,83,84,85,86,87,88,89,90,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,91,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,92,93,2,2,94,95,96,97,98,99, + 100,101,102,103,57,104,105,106,2,107,108,109,2,2,110,111,112,113,114,115,116,117,118,119,120,121,122,123,57,124,125,126, + 127,128,129,130,131,132,133,134,135,136,57,137,138,139,140,57,141,142,143,144,145,146,57,147,148,149,150,151,57,152,153,154, + 2,2,2,2,2,2,2,155,156,2,157,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,158, + 2,2,2,2,2,2,2,2,159,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,101,2,2,2,2,160,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,161,57,57,57,57,57,57,57,57,57,57,57,57,57,2,2,2,2,162,163,164,165,57,57,166,57,167,57,168,169, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,170, + 171,57,172,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,173,174,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,175,57,57,57,57,176,57, + 57,57,177,178,179,57,57,57,180,181,182,2,2,183,184,185,57,57,57,57,186,187,57,57,57,57,57,57,57,57,188,57, + 189,190,191,57,57,192,57,57,57,193,57,194,57,57,57,195,2,196,197,57,57,57,57,57,57,57,57,57,198,199,57,57, + 200,200,201,202,203,200,200,204,200,200,205,200,206,200,207,208,209,210,211,200,200,200,57,175,200,200,200,200,200,200,200,212, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 213,57,214,215,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, +}; + +static kbts_u8 kbts_UnicodeWordBreakClass_Data[27648] = { + 0,0,0,0,0,0,0,0,0,0,3,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,14,0,0,0,0,13,0,0,0,0,17,0,15,0,18,18,18,18,18,18,18,18,18,18,16,17,0,0,0,0, + 0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,19,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,0,0,8,1,0,0,0,0,0,0,11,0,16,0,0,11,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,11,11,11,11,0,11,11,0,0,11,11,11,11,17,11, + 0,0,0,0,0,0,11,16,11,11,11,0,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11, + 11,11,0,5,5,5,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,0,11,16,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,17,11,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5, + 0,5,5,0,5,5,0,5,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,10,10,10,10,11,16,0,0,0,0,0,0,0,0,0,0,0, + 18,18,18,18,18,18,0,0,0,0,0,0,17,17,0,0,5,5,5,5,5,5,5,5,5,5,5,0,8,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,18,18,18,18,18,18,18,18,18,18,0,18,17,0,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,5,5,5,5,5,5,5,18,0,5,5,5,5,5,5,11,11,5,5,0,5,5,5,5,11,11,18,18,18,18,18,18,18,18,18,18,11,11,11,0,0,11, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 18,18,18,18,18,18,18,18,18,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,11,11,0,0,17,0,11,0,0,5,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,5,5,5,5,5,5,5,5,5,11,5,5,5,11,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,0,18,18,0,0,0,0,0,5,5,5,5,5,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,18,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,11,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,5,5,5,5,5,5,5,11,11,11,11,11,11,11,11,11,11,5,5,0,0,18,18,18,18,18,18,18,18,18,18,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,5,5,5,0,11,11,11,11,11,11,11,11,0,0,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,0,0,0,11,11,11,11,0,0,5,11,5,5, + 5,5,5,5,5,0,0,5,5,0,0,5,5,5,11,0,0,0,0,0,0,0,0,5,0,0,0,0,11,11,0,11,11,11,5,5,0,0,18,18,18,18,18,18,18,18,18,18,11,11,0,0,0,0,0,0,0,0,0,0,11,0,5,0, + 0,5,5,5,0,11,11,11,11,11,11,0,0,0,0,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,0,11,11,0,11,11,0,0,5,0,5,5, + 5,5,5,0,0,0,0,5,5,0,0,5,5,5,0,0,0,5,0,0,0,0,0,0,0,11,11,11,11,0,11,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,5,5,11,11,11,5,0,0,0,0,0,0,0,0,0,0, + 0,5,5,5,0,11,11,11,11,11,11,11,11,11,0,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,0,11,11,11,11,11,0,0,5,11,5,5, + 5,5,5,5,5,5,0,5,5,5,0,5,5,5,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,5,5,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,11,5,5,5,5,5,5, + 0,5,5,5,0,11,11,11,11,11,11,11,11,0,0,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,0,11,11,11,11,11,0,0,5,11,5,5, + 5,5,5,5,5,0,0,5,5,0,0,5,5,5,0,0,0,0,0,0,0,5,5,5,0,0,0,0,11,11,0,11,11,11,5,5,0,0,18,18,18,18,18,18,18,18,18,18,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,5,11,0,11,11,11,11,11,11,0,0,0,11,11,11,0,11,11,11,11,0,0,0,11,11,0,11,0,11,11,0,0,0,11,11,0,0,0,11,11,11,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,5,5, + 5,5,5,0,0,0,5,5,5,0,5,5,5,5,0,0,11,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,11,11,11,11,11,11,11,11,0,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,5,11,5,5, + 5,5,5,5,5,0,5,5,5,0,5,5,5,5,0,0,0,0,0,0,0,5,5,0,11,11,11,0,0,11,0,0,11,11,5,5,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,5,5,5,0,11,11,11,11,11,11,11,11,0,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,0,0,5,11,5,5, + 5,5,5,5,5,0,5,5,5,0,5,5,5,5,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,11,11,0,11,11,5,5,0,0,18,18,18,18,18,18,18,18,18,18,0,11,11,5,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,11,11,11,11,11,11,11,11,11,0,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,5,5, + 5,5,5,5,5,0,5,5,5,0,5,5,5,5,11,0,0,0,0,0,11,11,11,5,0,0,0,0,0,0,0,11,11,11,5,5,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11, + 0,5,5,5,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,0,11,0,0, + 11,11,11,11,11,11,11,0,0,0,5,0,0,0,0,5,5,5,5,5,5,0,5,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,5,5,5,5,5,5,0,0,0,0,0, + 0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,5,5,5,5,5,5,5,5,0,0,0, + 0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,0,0,0,5,5, + 11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,0,5,5,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, + 0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, + 18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,5,5,5,0,5,5,5,0,0,5,5,5,5,5,5,5,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, + 0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,5,18,18,18,18,18,18,18,18,18,18,5,5,5,5,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,0,11,0,0,0,0,0,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,0,11,11,11,11,0,0,11,11,11,11,11,11,11,0,11,0,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,0,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,0,0,11,11,11,11,11,11,11,0, + 11,0,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,0,0, + 0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 20,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,5,5,5,8,5,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0, + 11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0, + 0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,5, + 18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,11,11,11,11,11,11,11,11,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,11,11,18,18,18,18,18,18,18,18,18,18,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0, + 18,18,18,18,18,18,18,18,18,18,0,0,0,11,11,11,18,18,18,18,18,18,18,18,18,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0, + 11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,11,11,11,5,11,11,11,11,11,11,5,11,11,5,5,5,11,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,0,0,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,0,11,0,11,0,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,0, + 0,0,11,11,11,0,11,11,11,11,11,11,11,0,0,0,11,11,11,11,0,0,11,11,11,11,11,11,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,11,11,11,0,11,11,11,11,11,11,11,0,0,0, + 20,20,20,20,20,20,20,0,20,20,20,0,5,6,8,8,0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,15,0,0,16,4,4,8,8,8,8,8,19,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,19, + 19,0,0,0,17,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,20,8,8,8,8,8,0,8,8,8,8,8,8,8,8,8,8,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,11, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,11,0,0,0,0,11,0,0,11,11,11,11,11,11,11,11,11,11,0,11,0,0,0,11,11,11,11,11,0,0,0,0,1,0,11,0,11,0,11,0,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,12,0,0,11,11,11,11, + 0,0,0,0,0,11,11,11,11,11,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11, + 11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0, + 1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,11,11,11,11,5,5,5,11,11,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,0,0,0,0,0,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0, + 11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 20,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,1,9,9,9,9,9,0,0,0,0,0,11,11,1,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,9,9,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,9,9,9,9, + 0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,18,18,18,18,18,18,18,18,18,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,0,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,0,11,0,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,5,11,11,11,5,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,11,11,11,11,11,0,0,0,11,0,11,11,5, + 18,18,18,18,18,18,18,18,18,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0, + 5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0, + 11,11,11,5,11,11,11,11,11,11,11,11,5,5,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,5,5,0,0,5,5,0,0,0,0,0,5,5, + 0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,0,0,11,11,11,5,5,0,0,0,0,0,0,0,0,0, + 0,11,11,11,11,11,11,0,0,11,11,11,11,11,11,0,0,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,0,5,5,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0, + 11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,0,0,0,0,0,10,5,10,10,10,10,10,10,10,10,10,10,0,10,10,10,10,10,10,10,10,10,10,10,10,10,0,10,10,10,10,10,0,10,0, + 10,10,0,10,10,0,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,19,19,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,19,17,0,15,0,17,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,8, + 0,0,0,0,0,0,0,15,0,0,0,0,17,0,15,0,18,18,18,18,18,18,18,18,18,18,16,17,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,19, + 0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0, + 0,0,11,11,11,11,11,11,0,0,11,11,11,11,11,11,0,0,11,11,11,11,11,11,0,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,0,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,0,0,0,0,11,11,11,11,11,11,11,11,0,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,0,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,0,0,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,0,0,0,11,0,0,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,11,11, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,5,5,5,0,5,5,0,0,0,0,0,5,5,5,5,11,11,11,11,0,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,5,5,5,0,0,0,0,5, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 18,18,18,18,18,18,18,18,18,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,5,5,5,5,5,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,5,5,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0, + 5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,5,11,11,5,5,11,0,0,0,0,0,0,0,0,0,5, + 5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,0,0,18,0,0, + 0,0,5,0,0,0,0,0,0,0,0,0,0,18,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,18,18,18,18,18,18,18,18,18,18, + 0,0,0,0,11,5,5,11,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,0,0,11,0,0,0,0,0,0,0,0,0, + 5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,11,11,11,11,0,0,0,0,5,5,5,5,0,5,5,18,18,18,18,18,18,18,18,18,18,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,11, + 11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,0,11,0,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 5,5,5,5,0,11,11,11,11,11,11,11,11,0,0,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,0,11,11,11,11,11,0,5,5,11,5,5, + 5,5,5,5,5,0,0,5,5,0,0,5,5,5,0,0,11,0,0,0,0,0,0,5,0,0,0,0,0,11,11,11,11,11,5,5,0,0,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,0,11,0,0,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,5,5,5,5,5,5,5,5, + 5,0,5,0,0,5,0,5,5,5,5,0,5,5,5,5,5,11,5,11,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,11,11,11,11,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,5,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,11,11,0,11,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,11,0,0,0,0,0,0,0, + 18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11, + 11,11,11,11,11,11,11,0,0,11,0,0,11,11,11,11,11,11,11,11,0,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,0,5,5,0,0,5,5,5,5,11, + 5,11,5,5,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,11,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,5,5,5,5,5,5,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,11,5,5,5,5,0, + 0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,11,5,5,5,5,5,5,5,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5, + 11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,0,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,0,0,0,5,0,5,5,0,5, + 5,5,5,5,5,5,11,5,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,11,11,11,11,11,11,0,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,0,5,5,0,5,5,5,5,5,11,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,0,0,0,0,0,0,0,0,0, + 5,5,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,0,0,0,5,5, + 5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 5,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0, + 18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0, + 11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,5,11,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,11,5,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,0,9,9,9,9,9,9,9,0,9,9,0, + 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0, + 11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,0,0,0,5,5,0,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,5,5,5,5,5,5,8,8,8,8,8,8,8,8,5,5,5,5,5, + 5,5,5,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,0,0,11,0,0,11,11,0,0,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,0,11,0,11,11,11, + 11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,0,11,11,11,11,0,0,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,0, + 11,11,11,11,11,0,11,0,0,0,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,0,11,11,11,11,11,11,11,11,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,5,5,5,5,5,5,5,11,11,11,11,11,11,11,0,0, + 18,18,18,18,18,18,18,18,18,18,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,0,11,11,11,11,0,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,5,5,5,5,5,5,5,11,0,0,0,0,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,0,11,0,0,11,0,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,0,11,0,11,0,0,0,0, + 0,0,11,0,0,0,0,11,0,11,0,11,0,11,11,11,0,11,11,0,11,0,0,11,0,11,0,11,0,11,0,11,0,11,11,0,11,0,0,11,11,11,11,0,11,11,11,11,11,11,11,0,11,11,11,11,0,11,11,11,11,0,11,0, + 11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,11,11,11,0,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,1,1,1,1,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12, + 11,11,11,11,11,11,11,11,11,11,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0, + 0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1, + 1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0, + 0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +KBTS_INLINE kbts_u8 kbts_GetUnicodeWordBreakClass(kbts_u32 Codepoint) +{ + return kbts_UnicodeWordBreakClass_Data[((kbts_un)kbts_UnicodeWordBreakClass_PageIndices[Codepoint/128] * 128) | (Codepoint & 127)]; +} + +static kbts_u8 kbts_UnicodeLineBreakClass_PageIndices[8703] = { + 0,1,2,2,2,3,4,2,2,5,2,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,2,2,31,2,32,2,2,2,2,33,34,35,36,37,38,39,40,41,42,43,44,45,2,46,2,2,2,47, + 48,49,50,2,51,52,53,54,2,2,2,55,56,57,58,59,2,2,2,60,2,2,61,2,2,62,63,64,65,66,67,68, + 69,70,71,72,73,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,74,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 75,67,67,67,67,67,67,67,67,76,2,2,77,78,2,2,79,80,81,82,83,84,2,85,86,87,88,89,90,91,92,86, + 87,88,89,90,91,92,86,87,88,89,90,91,92,86,87,88,89,90,91,92,86,87,88,89,90,91,92,86,87,88,89,90, + 91,92,86,87,88,89,90,91,92,86,87,88,89,90,91,92,86,87,88,89,90,91,92,86,87,88,89,90,91,92,86,87, + 88,89,90,91,92,86,87,88,89,90,91,92,86,87,88,93,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,67,67,67,67,95,2,2,2,96,97,98,99,100,101, + 2,2,102,103,2,104,105,106,2,107,2,2,2,2,2,2,108,2,109,2,110,111,112,2,2,2,113,2,2,114,115,116, + 117,118,119,120,121,122,123,124,125,126,2,127,128,129,130,2,131,132,133,134,135,136,137,138,139,140,141,142,2,143,144,145, + 2,2,2,2,2,2,2,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,147,148,149,2,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,152,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,153,154,155,2,2,2,156,2,2,157,158,159, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,160,67,67,67,67,67,67,161,161,161,162,163,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,164, + 67,67,165,67,67,166,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,167,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,138,2,2,2,2,168,2, + 2,2,169,170,171,2,172,2,2,2,2,2,2,2,2,173,2,2,2,2,174,175,2,2,2,2,2,2,2,2,2,2, + 176,177,178,2,2,179,2,2,2,180,2,181,2,2,2,2,2,182,183,2,2,2,2,2,2,184,2,2,2,2,2,2, + 185,186,2,187,188,189,190,191,192,193,194,195,196,197,198,199,2,2,200,201,202,203,2,138,189,189,189,189,189,189,189,204, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,205, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,205, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 206,2,207,208,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +}; + +static kbts_u8 kbts_UnicodeLineBreakClass_Data[26752] = { + 63,63,63,63,63,63,63,63,63,19,5,3,3,4,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,7,16,23,37,40,48,37,23,21,14,37,40,26,31,26,18,39,39,39,39,39,39,39,39,39,39,26,26,37,37,37,16, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,40,14,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,19,12,37,63, + 63,63,63,63,63,6,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,10,21,48,40,40,40,37,37,37,37,37,24,37,19,37,37,48,40,37,37,35,37,37,37,37,37,37,25,37,37,37,21, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,35,37,37,37,35,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,35,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,10,63,63,63,63,63,63,63,63,63,63,63,63,10,10,10,10,10,10,10,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,26,37, + 37,37,37,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,26,19,37,37,37,37,40,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,19,63, + 37,63,63,37,63,63,16,63,37,37,37,37,37,37,37,37,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,37,37,37,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,37, + 39,39,39,39,39,39,37,37,37,48,48,48,26,26,37,37,63,63,63,63,63,63,63,63,63,63,63,16,63,16,16,16,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,39,39,39,39,39,39,39,39,39,39,48,39,39,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,16,37,63,63,63,63,63,63,63,39,37,63,63,63,63,63,63,37,37,63,63,37,63,63,63,63,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,37,37,37,37,26,16,37,37,37,63,40,40, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,37,63,63,63,63,63,63,63,63,63,37,63,63,63,37,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,37,37,37,37,37,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,39,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,37,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,63,63,19,19,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,63,63, + 63,63,63,63,63,37,37,63,63,37,37,63,63,63,37,37,37,37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,63,63,37,37,39,39,39,39,39,39,39,39,39,39,37,37,48,48,37,37,37,37,37,48,37,40,37,37,63,37, + 37,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,63,63, + 63,63,63,37,37,37,37,63,63,37,37,63,63,63,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,63,63,37,37,37,63,37,37,37,37,37,37,37,37,37,37, + 37,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,63,63, + 63,63,63,63,63,63,37,63,63,63,37,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,37,37,39,39,39,39,39,39,39,39,39,39,37,40,37,37,37,37,37,37,37,37,63,63,63,63,63,63, + 37,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,63,63, + 63,63,63,63,63,37,37,63,63,37,37,63,63,63,37,37,37,37,37,37,37,63,63,63,37,37,37,37,37,37,37,37,37,37,63,63,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63, + 63,63,63,37,37,37,63,63,63,37,63,63,63,63,37,37,37,37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,40,37,37,37,37,37,37, + 63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,63,63, + 63,63,63,63,63,37,63,63,63,37,63,63,63,63,37,37,37,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,63,63,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,35,37,37,37,37,37,37,37,37, + 37,63,63,63,35,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,63,63, + 63,63,63,63,63,37,63,63,63,37,63,63,63,63,37,37,37,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,63,63,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37, + 63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,37,63,63, + 63,63,63,63,63,37,63,63,63,37,63,63,63,63,37,37,37,37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,63,63,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,48,37,37,37,37,37,37, + 37,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,63,37,37,37,37,63,63,63,63,63,63,37,63,37,63,63,63,63,63,63,63,63,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,40, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,35,35,35,35,37,35,35,10,35,35,19,10,16,16,16,16,16,10,37,16,37,37,37,63,63,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,19,63,37,63,37,63,21,12,21,12,63,63, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,19, + 63,63,63,63,63,19,63,63,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,19,19, + 37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,35,35,19,35,37,37,37,37,37,10,10,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 39,39,39,39,39,39,39,39,39,39,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50, + 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51, + 51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, + 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,37,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,19,19,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,19,27,37,19,37,19,40,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,16,16,19,19,35,37,16,16,37,63,63,63,10,63,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37, + 37,37,37,37,16,16,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63, + 39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 63,63,63,63,63,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,60,56,56,56,56,56,56,56,56,37,19,19,58,58,58,58,58,58,58,58,58,58,19,19,42,19,19,19,19,42,42,42,42,42,42,42,42,42,42,63,63,63,63,63,63,63,63,63,42,42,42,42,42,42,42,42,42,19,19,19, + 63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,63,63,63,63,63,63,63,63,63,63,63,63,59,59,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,19,19,19,19,19, + 39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,19, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,63,37,37,37,37,37,37,63,37,37,63,63,63,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 63,63,63,63,63,63,63,63,63,63,63,63,63,10,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,10,63,63,63, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,35,37,37, + 19,19,19,19,19,19,19,10,19,19,19,8,63,64,63,63,32,10,19,19,29,37,37,37,24,25,21,24,24,25,21,24,37,37,37,37,33,33,33,19,3,3,63,63,63,63,63,10,48,48,48,48,48,48,48,48,37,24,25,37,27,27,37,37, + 37,37,37,37,26,21,12,27,27,27,37,37,37,37,37,37,37,37,37,37,37,37,19,48,19,19,19,19,37,19,19,19,9,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,21,12,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,21,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,40,40,40,40,40,40,40,48,40,41,40,40,40,40,40,40,40,40,40,40,40,40,48,40,40,40,40,48,40,40,48,40, + 48,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,48,37,37,37,37,37,48,37,37,37,37,37,37,37,37,37,37,37,37,40,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,40,40,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,33,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,21,12,21,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,43,43,37,37,37,37,37,37,37,37,37,37,37,37,37,22,13,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,38,38,37,37,37,43,42,42,43,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,57,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,37, + 42,42,42,42,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,43,43,37,37,42,37,42,42,42,45,42,42,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,38,38,38,38,38,38,37,42,42,42,37,37,37,37, + 37,37,37,37,37,37,37,37,38,38,38,38,38,38,38,38,38,38,38,38,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,42,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,43, + 37,37,37,37,37,37,37,37,37,37,38,38,38,38,38,38,37,37,37,38,37,37,37,37,37,37,37,37,37,37,37,37,37,38,37,37,37,37,37,37,37,37,38,38,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,43,43,42, + 42,42,42,42,43,43,42,42,42,37,37,37,37,42,38,42,42,42,37,42,43,37,37,37,42,42,37,37,42,37,37,42,42,42,37,37,37,37,37,37,37,37,43,37,37,37,37,37,37,42,43,43,42,43,37,42,42,45,43,37,37,43,42,42, + 42,42,42,42,42,38,37,37,42,42,46,46,45,45,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,38,37,38,37,37,37,37,38,38,38,37,38,37,37,37,23,23,23,23,23,23,37,16,16,42,37,37,37,21,12,21,12,21,12,21,12,21,12,21,12,21,12,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,38,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38, + 37,37,37,37,37,21,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,12,21,12,21,12,21,12,21,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,21,12,21,12,21,12,21,12,21,12,21,12,21,12,21,12,21,12,21,12,21,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,12,21,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,12,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,37,37,37,37,38,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,37,37,37,37,37,37,37,16,19,19,19,37,16,19, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 23,23,24,25,24,25,23,23,23,24,25,23,24,25,19,19,19,19,19,19,19,19,37,19,21,19,37,37,24,25,37,37,24,25,21,12,21,12,21,12,21,12,19,19,19,19,16,37,19,19,37,19,19,37,37,37,37,37,29,29,19,19,19,37, + 19,19,21,19,19,19,19,19,19,19,19,37,19,37,19,19,37,37,37,16,16,21,14,21,14,21,14,21,14,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,37,37,37,37,37,37,37,37,37,37,37, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 20,13,13,43,43,28,43,43,22,13,22,13,22,13,22,13,22,13,43,43,22,13,22,13,22,13,22,13,28,22,13,13,43,43,43,43,43,43,43,43,43,43,63,63,63,63,63,63,43,43,43,43,43,63,43,43,43,43,43,28,28,43,43,42, + 37,65,43,65,43,65,43,65,43,65,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,65,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,65,43,65,43,65,43,43,43,43,43,43,65,43,43,43,43,43,43,65,65,37,37,63,63,28,28,28,28,43,28,65,43,65,43,65,43,65,43,65,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,65,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,65,43,65,43,65,43,43,43,43,43,43,65,43,43,43,43,43,43,65,65,43,43,43,43,28,65,28,28,43, + 37,37,37,37,37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,37,37,37,37,37,37,37,37,43,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,37,37,37,37,37,37,37,37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,28,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,37,37,37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,19, + 37,37,37,37,37,37,37,37,37,37,37,37,37,19,16,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,37,63,63,63,63,63,63,63,63,63,63,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,37,19,19,19,19,19,37,37,37,37,37,37,37,37, + 37,37,63,37,37,37,63,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,48,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,35,35,16,16,37,37,37,37,37,37,37,37, + 63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,37,37,37,37,37,37,37,37,19,19,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,35,37,37,63, + 39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,37,37,37, + 63,63,63,63,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,63,63,63,63,63,63,63,63,63,63,63,63,63, + 60,42,42,42,42,42,42,19,19,19,42,42,42,42,37,19,58,58,58,58,58,58,58,58,58,58,37,37,37,37,42,42,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37, + 19,19,19,63,19,19,19,19,19,19,19,19,63,63,37,37,58,58,58,58,58,58,58,58,58,58,37,37,42,19,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,19,19,37,37,37,63,63,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,19,63,63,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54, + 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, + 53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54, + 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,37,37,37,37,37,37,37,37,37,37,37,37,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51, + 51,51,51,51,51,51,51,37,37,37,37,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,37,37,37,37, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,63,36,36,36,36,36,36,36,36,36,36,37,36,36,36,36,36,36,36,36,36,36,36,36,36,37,36,36,36,36,36,37,36,37, + 36,36,37,36,36,37,36,36,36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,12,21, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,48,37,37,37, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,13,13,13,28,28,17,17,22,13,34,37,37,37,37,37,37,10,63,10,63,10,63,10,10,63,10,63,10,63,10,10,63,43,43,43,43,43,22,13,22,13,22,13,22,13,22,13,22, + 13,22,13,22,13,43,43,22,13,43,43,43,43,43,43,43,13,43,13,37,28,28,17,17,43,22,13,22,13,22,13,43,43,43,43,43,43,43,43,37,43,41,49,43,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,9, + 37,17,43,43,41,49,43,43,22,13,43,43,13,43,13,43,43,43,43,43,43,43,43,43,43,43,28,28,43,43,43,17,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,22,43,13,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,22,43,13,43,22,13,13,22,13,13,28,43,65,65,65,65,65,65,65,65,65,65,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,28,28,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37, + 37,37,43,43,43,43,43,43,37,37,43,43,43,43,43,43,37,37,43,43,43,43,43,43,37,37,43,43,43,37,37,37,49,41,43,43,43,41,41,37,38,38,38,38,38,38,38,37,37,37,37,37,37,37,37,37,37,63,63,63,30,37,37,37, + 19,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,63,63,63,37,63,63,37,37,37,37,37,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,37,37,37,37,63, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,19,19,19,19,19,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,19,19,19,19,19,19,33,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,19,19,19,19,19,19, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 63,63,63,55,55,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,60,19,19,42,42,42,42,42,37,37,37,37,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,58,58,58,58,58,58,58,58,58,58,63,56,56,63,63,56,37,37,37,37,37,37,37,37,37,10, + 63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,37,37,39,19,19, + 19,19,63,37,37,37,37,37,37,37,37,37,37,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,39,39,39,39,39,39,39,39,39,39, + 19,19,19,19,37,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,35,37,37,37,37,37,37,37,37,37,37, + 63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,37,37,37,37,19,19,37,19,63,63,63,63,37,63,63,39,39,39,39,39,39,39,39,39,39,37,35,37,19,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,19,19,37,19,19,37,63,37, + 37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 63,63,63,63,37,56,56,56,56,56,56,56,56,37,37,56,56,37,37,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,37,56,56,56,56,56,56,56,37,56,56,37,56,56,56,56,56,37,63,63,19,63,63, + 63,63,63,63,63,37,37,63,63,37,37,63,63,60,37,37,58,37,37,37,37,37,37,63,37,37,37,37,37,19,58,58,56,56,63,63,37,37,63,63,63,63,63,63,63,37,37,37,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37, + 58,58,58,58,58,58,58,58,58,58,37,58,37,37,58,37,58,58,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,37,42,63,63,63,63,63,63,63,63, + 63,37,63,37,37,63,37,63,63,63,63,37,63,63,63,63,60,55,63,42,42,42,37,42,42,37,37,37,37,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,37,37,37,37,19,19,19,19,37,39,39,39,39,39,39,39,39,39,39,19,19,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,37,37,63,63,63,63,63,63,63,63, + 63,35,19,19,16,16,37,37,37,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,35,35,35,35,35,35,35,35,35,35,35,35,35,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37, + 39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,19,19,19,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 56,56,56,56,56,56,56,37,37,56,37,37,56,56,56,56,56,56,56,56,37,56,56,37,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,63,63,63,63,63,63,37,63,63,37,37,63,63,63,60,55, + 63,55,63,63,19,19,19,37,37,37,37,37,37,37,37,37,58,58,58,58,58,58,58,58,58,58,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,37,37,63,63,63,63,63,63,63,37,35,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,37,63,63,63,63,35, + 37,19,19,19,19,35,37,63,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,19,19,19,37,35,35,35,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 35,35,35,35,35,35,35,35,35,35,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,37,63,63,63,63,63,63,63,63, + 37,19,19,19,19,19,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,35,16,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,37,37,37,63,37,63,63,37,63, + 63,63,63,63,63,63,37,63,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,37,63,63,37,63,63,63,63,63,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,19,63,63,63,63,19,19,37,37,37,37,37,37,37, + 63,63,55,63,56,56,56,56,56,56,56,56,56,56,56,56,56,37,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,63,63,63,63,63,63,63,37,37,37,63,63, + 63,63,60,19,19,42,42,42,42,42,42,42,42,42,42,42,58,58,58,58,58,58,58,58,58,58,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,48,48,48,48,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,19,19,19,19,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,21,21,12,12,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,12,37,37,37,21,12,21,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,12,12,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,10,10,10,10,10,10,10,21,12,10,10,10,21,12,21,12, + 63,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,21,12,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,58,58,58,58,58,58,58,58,58,58,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,19,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,19,19,19,37,37,37,37,37,37, + 37,37,37,37,19,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,19,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,28,28,28,28,11,37,37,37,37,37,37,37,37,37,37,37,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,37,37,37,37,37,37,37, + 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38, + 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38, + 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38, + 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38, + 43,43,43,43,43,43,43,43,43,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,38,38,37,38,38,38,38,38,38,38,37,38,38,37, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,65,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,65,65,65,37,37,65,37,37,37,37,37,37,37,37,37,37,37,37,37,37,65,65,65,65,37,37,37,37,37,37,37,37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,19,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,37,37,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38, + 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,37,37,37,37,37,37,37,37,37,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,63,63,63,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,63,37,37,19,19,19,19,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 63,63,63,63,63,63,63,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,63,63,63,63,63,63,63,37,63,63,37,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37, + 39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,40, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,63,63,63,63,63,63,63,37,37,37,37,37,39,39,39,39,39,39,39,39,39,39,37,37,37,37,21,21,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,48,37,37,37,48,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,44,44,44,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42, + 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42, + 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,44,44,44,44,44,44,44,44,44,44,44,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,44,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42, + 44,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,44,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,44,44,44,44,44,44,44,44,44, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,37,37,38,38,38,38,38,38,38,38,38,38,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, + 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44, + 43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, + 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, + 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,42,42,42,42,42,42,42,42,42,42,42,42,43,43,43,43,43,43,43,43,43,42,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,42,43,43, + 43,43,43,43,43,46,43,43,43,43,43,43,43,43,43,43,43,43,43,43,42,42,42,42,42,42,42,42,37,37,42,42,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,38,38,43,43,43,43,43,38,43,43,43, + 43,43,46,46,46,43,43,46,43,43,46,45,45,42,42,43,43,43,43,43,42,42,42,42,42,42,42,42,42,42,42,42,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,42,42,42,43,42,42,42,43,43,43,47,47,47,47,47, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,42, + 43,42,46,46,43,43,46,46,46,46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,43,43,43,46,43,43,43, + 43,46,46,46,43,46,46,46,43,43,43,43,43,43,43,46,43,46,43,43,43,43,43,43,43,43,43,43,43,43,43,43,38,43,38,43,38,43,43,43,43,43,46,43,43,43,43,38,43,38,38,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,42,42,43, + 38,38,38,38,38,38,38,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,38,38,38,38,38,38,38,38,38,38,38,38,38,38,43,43,43,43,43,43,43,43,43,43,43,43,43,38,38,38,38,38,38,38,38,38,38,38,38,37,37, + 37,37,37,37,37,37,37,37,37,37,42,43,43,43,43,42,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,42,42,42,42,42,42,42,42,42,42,42,42,45,45,42,42,42,42,46,42,42,42,42,42, + 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,45,42,42,42,42,46,46,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42, + 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,37,37,37,37,37,37,37,37,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,37,37,37,37,37,37,42,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,46,46,46,43,43,43,46,46,46,46,46,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,23,23,23,27,27,27,37,37,37,37, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,46,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,46,46,46,43,43,43,43,43,43,43,43,43, + 46,43,43,43,43,43,42,42,42,42,42,42,46,42,42,42,43,43,43,42,42,43,43,43,44,44,44,44,43,43,43,43,42,42,42,42,42,42,42,42,42,42,42,43,43,44,44,44,42,42,42,42,43,43,43,43,43,43,43,43,43,44,44,44, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,42,42,42,44,44,44,44,42,42,42,42,42, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,42,42,42,42,42,44,44,44,44,44,44,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, + 37,37,37,37,37,37,37,37,37,37,37,37,46,43,43,46,43,43,43,43,43,43,43,43,46,46,46,46,46,46,46,46,43,43,43,43,43,43,46,43,43,43,43,43,43,43,43,43,46,46,46,46,46,46,46,46,46,46,43,42,46,46,46,43, + 43,43,43,43,43,43,42,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,46,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,46,46,43,46,46,43,46,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,46,46,46,43,46,46,46,46,46,46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,44,44,44,44,44,44,44,44,44,44,44,44,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,44,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44, + 43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,46,46,46,43,44,44,44,44,44,44,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,46,46,46,46,46,46,46,46,46,44,44,44,44,44,44,44, + 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, + 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,37,37, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,37,37, + 37,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, +}; + +KBTS_INLINE kbts_u8 kbts_GetUnicodeLineBreakClass(kbts_u32 Codepoint) +{ + return kbts_UnicodeLineBreakClass_Data[((kbts_un)kbts_UnicodeLineBreakClass_PageIndices[Codepoint/128] * 128) | (Codepoint & 127)]; +} + +static kbts_u8 kbts_UnicodeGraphemeBreakClass_PageIndices[8703] = { + 0,1,2,2,2,2,3,2,2,4,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,2,2,30,2,2,2,2,2,2,2,31,32,33,34,35,2,36,37,38,39,40,41,2,42,2,2,2,2, + 43,44,45,46,2,2,47,48,2,49,2,50,51,52,53,54,2,2,55,2,2,2,56,2,2,57,58,59,2,2,2,2, + 60,61,2,2,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,63,64,2,2,65,66,67,68,69,70,2,71,72,73,74,75,76,77,78,79, + 73,74,75,76,77,78,79,73,74,75,76,77,78,79,73,74,75,76,77,78,79,73,74,75,76,77,78,79,73,74,75,76, + 77,78,79,73,74,75,76,77,78,79,73,74,75,76,77,78,79,73,74,75,76,77,78,79,73,74,75,76,77,78,79,73, + 74,75,76,77,78,79,73,74,75,76,77,78,79,73,74,80,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,81,2,2,2,2,2,82,83,2,84, + 2,2,2,85,2,86,87,2,2,2,2,2,2,2,2,2,2,2,2,2,88,89,2,2,2,2,90,2,2,91,92,93, + 94,95,96,97,98,99,100,101,102,103,2,104,105,106,107,2,108,2,109,110,111,112,2,2,113,114,115,116,2,117,118,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,120,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,121,122,2,2,2,123,2,2,2,124,125, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,126,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,127,2, + 2,2,128,129,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,131,132,2,2,2,2,2,2,2,2,2,2, + 133,134,122,2,2,135,2,2,2,136,2,137,2,2,2,2,2,138,139,2,2,2,2,2,2,2,2,2,2,2,2,2, + 140,140,141,142,143,140,140,144,140,140,145,140,146,140,147,148,149,150,151,140,140,140,2,2,140,140,140,140,140,140,140,152, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 153,154,155,156,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +}; + +static kbts_u8 kbts_UnicodeGraphemeBreakClass_Data[20096] = { + 3,3,3,3,3,3,3,3,3,3,2,0,3,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,16,0,0,0,3,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,14, + 0,14,14,0,14,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,12,0,14,14,14,14,14,14,0,0,14,14,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,14,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,14,14,14,14,14,14,14,14,14,0,14,14,14,0,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,6,14,0,6,6, + 6,14,14,14,14,14,14,14,14,6,6,6,6,15,6,6,0,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,13,13,13,13, + 0,14,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,13,13,13,13,13,13,13,0,13,0,0,0,13,13,13,13,0,0,14,0,14,6, + 6,14,14,14,14,0,0,6,6,0,0,6,6,15,0,0,0,0,0,0,0,0,0,14,0,0,0,0,13,13,0,13,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,14,0, + 0,14,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,6,6, + 6,14,14,0,0,0,0,14,14,0,0,14,14,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0, + 0,14,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,13,13,13,13,13,13,13,0,13,13,0,13,13,13,13,13,0,0,14,0,6,6, + 6,14,14,14,14,14,0,14,14,6,0,6,6,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,14,14,14,14,14,14, + 0,14,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,13,13,13,13,13,13,13,0,13,13,0,13,13,13,13,13,0,0,14,0,14,14, + 6,14,14,14,14,0,0,6,6,0,0,6,6,15,0,0,0,0,0,0,0,14,14,14,0,0,0,0,13,13,0,13,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6, + 14,6,6,0,0,0,6,6,6,0,6,6,6,14,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,6,6,6,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,0,14,0,14,14, + 14,6,6,6,6,0,14,14,14,0,14,14,14,15,0,0,0,0,0,0,0,14,14,0,13,13,13,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,14,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,6,14, + 14,6,14,6,6,0,14,14,14,0,14,14,14,14,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,0,14,6, + 6,14,14,14,14,0,6,6,6,0,6,6,6,15,12,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,14,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,14,6,6,14,14,14,0,14,0,6,6,6,6,6,6,6,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,6,14,14,14,14,14,14,14,0,0,0,0,0, + 0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,6,14,14,14,14,14,14,14,14,14,0,0,0, + 0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,0,14,0,0,0,0,6,6, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,6, + 14,14,14,14,14,0,14,14,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0, + 0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,6,14,14,14,14,14,14,0,14,14,6,6,14,14,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,14,14,0,0,0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0, + 0,0,14,0,6,14,14,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,6,14,14,14,14,14,14,14,6,6, + 6,6,6,6,6,6,14,6,6,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,14,14,14,3,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,6,6,6,6,14,14,6,6,6,0,0,0,0,6,6,14,6,6,6,6,6,6,14,14,14,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,6,6,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,14,6,14,14,14,14,14,14,14,0,14,0,14,0,0,14,14,14,14,14,14,14,14,6,6,6,6,6,6,14,14,14,14,14,14,14,14,14,14,0,0,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,14,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,6,6, + 6,6,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,14,14,14,14,6,6,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6,14,14,6,6,6,14,6,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,14,14,14,14,14,14,14,14,6,6,14,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,14,14,14,14,14,14,14,14,14,14,14,14,14,6,14,14,14,14,14,14,14,0,0,0,0,14,0,0,0,0,0,0,14,0,0,6,14,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 0,0,0,0,0,0,0,0,0,0,0,3,4,5,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0, + 0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0, + 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,0, + 16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,0,16,0,16,0,0,0,0,0,0,16,0,0,0,16,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,16,0,0,16,0,0,0,0,16,0,16,0,0,0,0,16,16,16,0,16,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,16,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,14,14,14,14,14,14,14,14,14,14,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,14,0,0,0,14,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,14,14,6,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,6,14,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0, + 14,14,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6,6,14,14,14,14,6,6,14,14,6,6, + 14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,6,6,14,14,6,6,14,14,0,0,0,0,0,0,0,0,0, + 0,0,0,14,0,0,0,0,0,0,0,0,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,14,14,0,0,14,14,0,0,0,0,0,14,14, + 0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,14,14,6,6,0,0,0,0,0,6,14,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,14,6,6,14,6,6,0,6,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,9,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,0,3,3,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,0,0,0,0,0, + 0,14,14,14,0,14,14,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,0,0,0,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 6,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,14,0,0,0,0,0,0,0,0,0,0,14, + 14,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,14,14,14,14,6,6,14,14,0,0,12,0,0, + 0,0,14,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,6,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,14,14,14,14,14,14,14,14,14,6, + 14,0,12,12,0,0,0,0,0,14,14,14,14,0,6,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,14,14,14,6,6,14,14,14,14,0,0,0,0,0,0,14,0, + 0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6,6,6,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,6, + 14,6,6,6,6,0,0,6,6,0,0,6,6,14,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,6,6,0,0,14,14,14,14,14,14,14,0,0,0,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6,6,14,14,14,14,14, + 14,0,14,0,0,14,0,14,14,14,6,0,6,6,14,14,14,12,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,14,14,14,14,14,14,14,14, + 6,6,14,14,14,6,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6,6,14,14,14,14,14,14,6,14,6,6,14,6,14, + 14,6,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6,6,14,14,14,14,0,0,6,6,6,6,14,14,6,14, + 14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,14,14,14,14,14,14,14,14,6,6,14,6,14, + 14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6,14,6,6,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6,14,0,0,14,14,14,14,6,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,14,14,14,14,14,14,14,14,14,6,14,14,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,6,6,6,6,6,0,6,6,0,0,14,14,14,14,12, + 6,12,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,14,14,14,14,0,0,14,14,6,6,6,6,14,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,6,12,14,14,14,14,0, + 0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,6,6,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,6,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,14,14,14,14,14,14,14,0,14,14,14,14,14,14,6,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,6,14,14,14,14,14,14,14,6,14,14,6,14,14,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,0,0,0,14,0,14,14,0,14, + 14,14,14,14,14,14,12,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,14,14,0,6,6,14,6,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,6,6,0,0,0,0,0,0,0,0,0, + 14,14,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,14,14,14,14,14,0,0,0,6,6, + 14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 14,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,6,6,6,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,0,0,0,14,14,14,14,14,14,3,3,3,3,3,3,3,3,14,14,14,14,14, + 14,14,14,0,0,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 14,14,14,14,14,14,14,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,14,14,14,14,14,14,14,0,14,14,0,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,16,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, + 0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,16,16,16,16,16,16,16,16,16,0,16,16,16,16, + 0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0, + 0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16, + 16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0, + 3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +}; + +KBTS_INLINE kbts_u8 kbts_GetUnicodeGraphemeBreakClass(kbts_u32 Codepoint) +{ + return kbts_UnicodeGraphemeBreakClass_Data[((kbts_un)kbts_UnicodeGraphemeBreakClass_PageIndices[Codepoint/128] * 128) | (Codepoint & 127)]; +} + +static kbts_u8 kbts_UnicodeSyllabicInfo_PageIndices[8703] = { + 0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18, + 19,20,2,2,2,2,2,2,2,2,2,2,2,2,21,22,23,24,25,26,27,28,29,30,31,32,2,33,2,2,2,2, + 34,35,2,2,2,2,2,2,2,2,2,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,37,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,38,39,40,41,42,43,2,44,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,45,2,2,2, + 2,2,2,2,2,2,2,2,2,2,46,47,2,2,2,2,2,2,2,2,48,49,2,2,2,2,50,51,2,52,53,54, + 55,56,57,58,59,60,61,62,63,64,2,65,66,67,68,2,69,2,70,71,72,73,2,2,74,75,76,77,2,78,79,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,80,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,81,82,2,2,2,83,2,2,2,84,85, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,86,86,86,87,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,88,89,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,90,2,2,91,2,2,2,92,2,93,2,2,2,2,2,2,94,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +}; + +static kbts_u16 kbts_UnicodeSyllabicInfo_Data[12160] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,1034,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3592,3592,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1034,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,3,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3,3,3,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,3592,3592,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1039,1025,1025,1025,1025,1025,1025,1025,1025,1025,2311,2311,2307,3601,2311,519, + 2311,2311,2311,2311,2311,2311,2311,2311,2311,2311,2311,2311,2311,2308,519,2311,0,3593,3593,3592,3592,2311,2311,2311,1025,1025,1025,1025,1025,1025,1025,1025, + 1026,1026,2311,2311,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025, + 1034,3592,3592,3592,0,1026,1026,1026,1026,1026,1026,1026,1026,0,0,1026,1026,0,0,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1039,0,1025,0,0,0,1025,1025,1025,1025,0,0,2307,3601,3079,519, + 3079,2311,2311,2311,2311,0,0,519,519,0,0,3079,3079,2308,1025,0,0,0,0,0,0,0,0,3079,0,0,0,0,1025,1025,0,1025, + 1026,1026,2311,2311,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1025,1025,0,0,0,0,0,0,0,0,0,0,1034,0,3592,0, + 0,3592,3592,3592,0,1026,1026,1026,1026,1026,1026,0,0,0,0,1026,1026,0,0,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1039,0,1025,1025,0,1025,1025,0,1025,1025,0,0,3075,0,3079,519, + 3085,3079,3079,0,0,0,0,3079,3079,0,0,3079,3079,3076,0,0,0,2055,0,0,0,0,0,0,0,1025,1025,1025,1025,0,1025,0, + 0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,3592,3592,1025,1025,0,1040,0,0,0,0,0,0,0,0,0,0, + 0,3592,3592,3592,0,1026,1026,1026,1026,1026,1026,1026,1026,1026,0,1026,1026,1026,0,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1039,0,1025,1025,0,1025,1025,1025,1025,1025,0,0,3075,3601,3079,519, + 3079,3079,3079,3079,3079,2311,0,2311,2311,3079,0,3079,3079,3076,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,3079,3079,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,1025,3593,2307,3593,2307,2307,2307, + 0,1800,3592,3592,0,1026,1026,1026,1026,1026,1026,1026,1026,0,0,1026,1026,0,0,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1039,0,1025,1025,0,1025,1025,1025,1025,1025,0,0,2307,3601,3079,1287, + 3079,2311,2311,2311,2311,0,0,519,1287,0,0,3079,3079,2308,0,0,0,0,0,0,0,1283,1287,3079,0,0,0,0,1025,1025,0,1025, + 1026,1026,2311,2311,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3592,0,0,1026,1026,1026,1026,1026,1026,0,0,0,1026,1026,1026,0,1026,1026,1026,1025,0,0,0,1025,1025,0,1025,0,1025,1025, + 0,0,0,1025,1025,0,0,0,1025,1025,1025,0,0,0,1025,1025,1039,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,3079,3079, + 2311,3079,3079,0,0,0,519,519,519,0,3079,3079,3079,2308,0,0,0,0,0,0,0,0,0,3079,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,3592,3592,3592,1026,1026,1026,1026,1026,1026,1026,1026,0,1026,1026,1026,0,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1039,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,1795,3601,1799,1799, + 1799,1799,1799,2311,2311,0,1799,1799,1799,0,1799,1799,1799,1796,0,0,0,0,0,0,0,1799,1799,0,1025,1025,1025,0,0,1025,0,0, + 1026,1026,1799,1799,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1034,3592,3592,3592,0,1026,1026,1026,1026,1026,1026,1026,1026,0,1026,1026,1026,0,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1039,1025,1025,1025,0,1025,1025,1025,1025,1025,0,0,1795,3601,1799,1799, + 1799,1799,1799,2311,2311,0,1799,2311,2311,0,2311,2311,1799,1796,0,0,0,0,0,0,0,2311,2311,0,0,0,0,0,0,1025,1025,0, + 1026,1026,1799,1799,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,1042,1042,3592,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,3592,3592,1034,1026,1026,1026,1026,1026,1026,1026,1026,0,1026,1026,1026,0,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1039,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,3601,3079,3079, + 3079,3079,3079,3079,3079,0,519,519,519,0,3079,3079,3079,4,14,0,0,0,0,0,1025,1025,1025,3079,0,0,0,0,0,0,0,1026, + 1026,1026,3079,3079,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025, + 0,3592,3592,3592,0,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,0,0,0,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,0,0, + 1025,1025,1025,1025,1025,1025,1025,0,0,0,2308,0,0,0,0,2311,2311,2311,2311,2311,2311,0,2311,0,2311,519,2311,519,2311,2311,2311,2311, + 0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,2311,2311,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0, + 519,519,519,519,519,7,0,7,3,3,3,3,7,3592,7,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1025,1025,0,1025,0,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,0,1025,0,1025,1025,1025,1025,1025,1025,1025,1025,0,7,7,7,7,7,7,7,7,7,7,7,7,1040,1040,0,0, + 519,519,519,519,519,0,0,0,3,3,3,3,0,3592,3592,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,1025,1025,1025,1025, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,0,0,1025,1025,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,3592,0,3592,0,3,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,3,7,7,7,7,7,7,7,7,7,7,7,7,3592,1025, + 7,7,3592,3592,7,3601,3,3,1025,1025,1025,1025,1025,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,0,1040,1040,1040,1040,1040,1040,1040, + 1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,0,0,0, + 0,0,0,0,0,0,3592,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1039,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1039,1025,1025,1025,1025, + 1025,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,23,23,20,20,21,21,22,3593,20,20,20,3593,3,1034,4,27,33,31,32,30,1025, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,1025,0,1025,1025,1026,1026,1026,1026,23,23,21,21,1039,1025,1025,1025,33,33, + 36,1025,23,34,34,1025,1025,23,23,34,34,34,34,34,1025,1025,1025,20,20,20,20,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,32,23,22,20,20,1034,1034,1034,1034,1034,1034,1034,1025,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,20,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,0,0,0,0,0,0,0,0,0,1025, + 1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1039,1025,1025,1025,1025,1025, + 1025,1025,1025,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,0,0,23,20,20,20,20,21,21,21,20,23, + 23,22,22,22,23,23,25,25,25,24,24,25,24,25,25,25,25,25,4,25,0,0,0,0,0,1034,0,0,3601,25,0,0, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,0,0,0,0,0,0,1025,0,0,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,0,0,0, + 1034,1034,1034,1034,1034,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1034,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0, + 7,7,7,7,7,7,7,7,7,1040,1040,1040,0,0,0,0,1040,1040,3592,1040,1040,1040,1040,1040,1040,1040,3592,3592,0,0,0,0, + 0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,7,7,7,7,7,519,519,519,7,7,519,7,7,7,7,7, + 7,1025,1025,1025,1025,1025,1025,1025,3,3,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1026,1026,1026,1026,1026,1026,1025,1025,1040,1040,1040,1040,1040,1025,1040,1040,1040,1040,0, + 4,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3592,3,3,3,3,3,7,3,3,0,0,3, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,3592,1040,3592,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,4,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,1040,3592,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1040,1040,1040,7,7,7,7,7,7,7,4,1040,1040,1025,1025,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,3601,1025,1025,1025,1040,1040, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1026,1026,3,7,7,7,7,7,7,7,7,7,1040,1040,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1040,1040,7,7,7,7,7,7,7,1040,1040,1040,1040,1040,1040,1040,3592,3592,0,3,0,0,0,0,0,0,0,0, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,1025,1025,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3593,3593,3593,0,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593, + 3593,3593,3593,3593,3593,3593,3593,3593,3593,3601,3601,3601,3601,3593,3601,3601,3601,3601,1025,1025,3593,1025,1025,3593,3593,3593,1034,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3592,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,5,6,0,0,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0, + 0,0,1034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3592,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3592,3592,3592,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3593,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,1035,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1034,1034,1034,1034,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,0,0,0,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, + 1026,1026,7,1026,1026,1026,4,1025,1025,1025,1025,3592,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,7,7,7,7,7,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1026,1026, + 1026,1026,1025,1025,1025,1025,1026,1040,1040,1025,1025,1025,1025,1025,1025,1025,1025,1040,1025,3592,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1040,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,4,3592,0,0,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3593,3601,3601,3601,3601,3601,3601,0,0,0,0,0,0,1026,2311, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1026,1026,1026,1026,1026,1026,1026,1026,1026,3,3,3,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,1040,1040,1040,1040,7,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,1040,3592,1026,1026,1026,1026,1026,1025,1025,1025,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3,7,7,7,7,7,7,7,7,7,1040,1040,1040, + 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,20,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1025,1025,1025,1025,1025,0, + 1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,3592,7,7,7,7,7,7,7,7,7,1040,1040,1040,1040,0,0,0,0,0,0,0,0,0, + 1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1034,1034,1034,0,0,0,1025,34,3,3,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,1026,7,7,7,519,519,7,7,519,1026,519,519,1026,7,3, + 0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,0,0,0,0,0,3592,4,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1026,1026,1025,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1040,1040,1040,1040,1040, + 1040,1040,1040,7,7,7,7,7,7,7,7,0,3,7,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1287,7,7,0,7,1287,0,0,0,0,0,7,3592,3592,3592,1025,1025,1025,1025,0,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,3,3,3,0,0,0,0,4, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,3,3,3,3592,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,0,0,0,7,7,7,7,7,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,7,7,0,0,0,1025,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,3,3,3,3,3,3,3,3,3,3,3,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,3592,1042,1042,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,4,0,0,0,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,7,1026,1026,7,7,1025,0,0,0,0,0,0,0,0,0,1034, + 3592,3592,3592,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,7,4,3,0,0,0,0,0, + 0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,3592,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,7,7,7,7,4,3592,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034, + 0,0,0,0,1025,7,7,1025,0,0,0,0,0,0,0,0,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,3592,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,7,7,7,7,7, + 4,3601,0,0,0,0,0,0,0,3592,3,7,7,0,7,3592,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1025,0,0,0,0,0, + 0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,3592,4,3,3592,0,0,0,0,0,0,3593,1025, + 1026,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1025,1025,1025,0,1025,0,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,0,0,0,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3592, + 7,7,7,7,7,7,7,7,7,3,7,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 3592,3592,3592,3592,0,1026,1026,1026,1026,1026,1026,1026,1026,0,0,1026,1026,0,0,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,0,1025,1025,1025,1025,1025,0,3,3,3601,7,7, + 7,7,7,7,7,0,0,7,7,0,0,7,7,4,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,3592,3592, + 1026,1026,7,7,0,0,3593,3593,3593,3593,3593,3593,3593,0,0,0,3593,3593,3593,3593,3593,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,0,1026,0,0,1026,0,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,3601,7,7,7,7,7,7,7,7, + 7,0,7,0,0,7,0,7,7,7,3592,0,3592,3592,3592,3,4,14,3592,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3593,3593,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,7,7,7, + 7,7,4,3592,3592,3592,3,3601,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,3592,3592, + 1042,1042,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3592, + 3592,3592,4,3,3601,0,0,0,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,0,0,7,7,7,7,3592,3592,3592,4, + 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1026,1026,1026,1026,7,7,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,7,7,7,7,7,3592,3592,4, + 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3592,3592,7,7,7,7,7,7,7,7,7,4,3,1025,0,0,0,0,0,0,0, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034, + 1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,1040,1040,1040, + 7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,7,7,7,3592,3592,4,3,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,0,0,1026,0,0,1025,1025,1025,1025,1025,1025,1025,1025,0,1025,1025,0,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,0,7,7,0,0,3592,3592,7,4,0, + 1040,14,1040,3,0,0,0,0,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,1026,0,0,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,0,0,7,7,7,7,3592,3592, + 4,3601,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,7,7,7,7,7,7,7,7,7,7,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3592,7,3592,3592,3592,3592,3592,1042,1040,1040,1040,1040,1034, + 0,0,0,0,0,1034,0,4,0,0,0,0,0,0,0,0,1026,7,7,7,7,7,7,7,7,7,7,7,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,0,0,0,0,0,0,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,3592,3592,3592,4,0,0,0,3601,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,1026,1026,0,1026,1026,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,7,0,7,7,7,7,3592,3592,3592,4, + 3601,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040, + 1040,1040,1040,1040,1040,1040,1040,1040,0,1040,1040,1040,1040,1040,1040,1040,7,7,7,7,7,3592,3592,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,1026,0,1026,1026,0,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,0,0,0,7,0,7,7,0,7, + 3592,3592,3,7,7,4,14,1040,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 1026,1026,1026,1026,1026,1026,0,1026,1026,0,1026,1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,0,7,7,0,7,7,3592,3592,4,0,0,0,0,0,0,0,0, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1034,7,7,7,7,0,0,0,0,0,0,0,0,0, + 3592,3592,14,3592,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,7,7,7,0,0,0,7,7, + 7,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,3,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1026,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7, + 7,7,7,7,7,7,7,7,7,7,1040,1040,1040,3592,1040,7,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3592,3592,3592,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,7,7,7,7,7,7,7,7,7,7,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,3,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,1283,1283,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,0,0,0,3,3,3,3,3,3,3,1025,1025,1025,1025,1025,1025,1025,0,0, + 1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,1025,1025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,3,3,3,3,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,7,7,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,7,7,1025,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025, + 1025,1025,1025,1025,3,3,3,3,3,3,3,1025,0,0,0,0,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +KBTS_INLINE kbts_u16 kbts_GetUnicodeSyllabicInfo(kbts_u32 Codepoint) +{ + return kbts_UnicodeSyllabicInfo_Data[((kbts_un)kbts_UnicodeSyllabicInfo_PageIndices[Codepoint/128] * 128) | (Codepoint & 127)]; +} + +static kbts_u8 kbts_UnicodeScript_PageIndices[8703] = { + 0,1,2,2,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29, + 30,31,32,32,33,34,35,36,37,37,37,37,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,2,2,53,54, + 55,56,57,58,59,59,59,59,60,59,59,59,59,59,59,59,61,61,59,59,59,59,62,63,64,65,66,67,68,61,61,69, + 70,71,72,73,74,75,76,59,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,77,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 78,78,78,78,78,78,78,78,78,79,80,80,81,82,83,84,85,86,87,88,89,90,91,92,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,93,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,94,95,96,96,97,98,99,100,101,102, + 103,104,105,106,61,107,108,109,110,111,112,113,114,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132, + 133,134,135,136,137,138,139,140,141,142,61,143,144,145,146,61,147,148,149,150,151,152,153,154,155,156,157,158,61,159,160,161, + 162,162,162,162,162,162,162,163,164,162,165,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,166, + 167,167,167,167,167,167,167,167,168,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167, + 167,167,167,167,167,167,167,169,170,170,170,170,171,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,172,61,61,61,61,61,61,61,61,61,61,61,61,61,173,173,173,173,174,175,176,177,61,61,178,61,179,180,181,182, + 183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183, + 183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,184,183,183,183,183,183,183,185,185,185,186,187,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,188, + 189,190,191,192,192,193,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,194,195,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,59,196,59,59,59,197,198,199, + 59,200,201,202,203,204,205,61,206,207,208,59,59,209,59,210,211,211,211,211,211,212,61,61,61,61,61,61,61,61,213,61, + 214,215,216,61,61,217,61,61,61,218,61,219,61,61,61,220,221,222,223,61,61,61,61,61,224,225,226,61,227,228,61,61, + 229,230,59,231,232,61,59,59,59,59,59,59,59,233,234,235,236,237,59,59,238,239,59,240,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 241,61,242,243,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, +}; + +static kbts_u8 kbts_UnicodeScript_Data[31232] = { + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,29,29,29,29,29,29,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,72,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,72,29,29,29,29,29, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,29,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,29,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,72,72,72,72,72,29,29,29,29,29,13,13,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,45,45,45,29,45,45,45,0,0,45,45,45,45,29,45, + 0,0,0,0,45,29,45,29,45,45,45,0,45,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, + 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,25,25,25,25,25,25,25,25,25,25,25,25,25,25,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,30,30,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,0,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, + 54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,0,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,0,0,0,0,54,54,54,54,54,54,0,0,0,0,0,0,0,0,0,0,0, + 4,4,4,4,4,29,4,4,4,4,4,4,29,4,4,4,4,4,4,4,4,4,4,4,4,4,4,29,4,4,4,29,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 29,4,4,4,4,4,4,4,4,4,4,30,30,30,30,30,30,30,30,30,30,30,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,30,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,29,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 143,143,143,143,143,143,143,143,143,143,143,143,143,143,0,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143, + 143,143,143,143,143,143,143,143,143,143,143,0,0,143,143,143,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,0,0,103,103,103, + 129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,0,0,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,0, + 83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,0,0,83,0,143,143,143,143,143,143,143,143,143,143,143,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,29,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,30,30,30,30,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,29,29,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 11,11,11,11,0,11,11,11,11,11,11,11,11,0,0,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,0,11,0,0,0,11,11,11,11,0,0,11,11,11,11, + 11,11,11,11,11,0,0,11,11,0,0,11,11,11,11,0,0,0,0,0,0,0,0,11,0,0,0,0,11,11,0,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0, + 0,48,48,48,0,48,48,48,48,48,48,0,0,0,0,48,48,0,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,0,48,48,48,48,48,48,48,0,48,48,0,48,48,0,48,48,0,0,48,0,48,48, + 48,48,48,0,0,0,0,48,48,0,0,48,48,48,0,0,0,48,0,0,0,0,0,0,0,48,48,48,48,0,48,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0, + 0,46,46,46,0,46,46,46,46,46,46,46,46,46,0,46,46,46,0,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,0,46,46,46,46,46,46,46,0,46,46,0,46,46,46,46,46,0,0,46,46,46,46, + 46,46,46,46,46,46,0,46,46,46,0,46,46,46,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,46,46,46,0,0,46,46,46,46,46,46,46,46,46,46,46,46,0,0,0,0,0,0,0,46,46,46,46,46,46,46, + 0,118,118,118,0,118,118,118,118,118,118,118,118,0,0,118,118,0,0,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,0,118,118,118,118,118,118,118,0,118,118,0,118,118,118,118,118,0,0,118,118,118,118, + 118,118,118,118,118,0,0,118,118,0,0,118,118,118,0,0,0,0,0,0,0,118,118,118,0,0,0,0,118,118,0,118,118,118,118,118,0,0,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,0,0,0,0,0,0,0,0, + 0,0,150,150,0,150,150,150,150,150,150,0,0,0,150,150,150,0,150,150,150,150,0,0,0,150,150,0,150,0,150,150,0,0,0,150,150,0,0,0,150,150,150,0,0,0,150,150,150,150,150,150,150,150,150,150,150,150,0,0,0,0,150,150, + 150,150,150,0,0,0,150,150,150,0,150,150,150,150,0,0,150,0,0,0,0,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,0,0,0,0,0, + 153,153,153,153,153,153,153,153,153,153,153,153,153,0,153,153,153,0,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,0,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,0,0,153,153,153,153, + 153,153,153,153,153,0,153,153,153,0,153,153,153,153,0,0,0,0,0,0,0,153,153,0,153,153,153,0,0,153,0,0,153,153,153,153,0,0,153,153,153,153,153,153,153,153,153,153,0,0,0,0,0,0,0,153,153,153,153,153,153,153,153,153, + 61,61,61,61,61,61,61,61,61,61,61,61,61,0,61,61,61,0,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,0,61,61,61,61,61,61,61,61,61,61,0,61,61,61,61,61,0,0,61,61,61,61, + 61,61,61,61,61,0,61,61,61,0,61,61,61,61,0,0,0,0,0,0,0,61,61,0,0,0,0,0,0,61,61,0,61,61,61,61,0,0,61,61,61,61,61,61,61,61,61,61,0,61,61,61,0,0,0,0,0,0,0,0,0,0,0,0, + 82,82,82,82,82,82,82,82,82,82,82,82,82,0,82,82,82,0,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82, + 82,82,82,82,82,0,82,82,82,0,82,82,82,82,82,82,0,0,0,0,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,0,0,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82, + 0,136,136,136,0,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,0,0,0,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,0,136,136,136,136,136,136,136,136,136,0,136,0,0, + 136,136,136,136,136,136,136,0,0,0,136,0,0,0,0,136,136,136,136,136,136,0,136,0,136,136,136,136,136,136,136,136,0,0,0,0,0,0,136,136,136,136,136,136,136,136,136,136,0,0,136,136,136,0,0,0,0,0,0,0,0,0,0,0, + 0,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,0,0,0,0,29, + 155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,71,71,0,71,0,71,71,71,71,71,0,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,0,71,0,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,0,0, + 71,71,71,71,71,0,71,0,71,71,71,71,71,71,71,0,71,71,71,71,71,71,71,71,71,71,0,0,71,71,71,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, + 156,156,156,156,156,156,156,156,0,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,0,0,0,0,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, + 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,0,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,0,156,156, + 156,156,156,156,156,156,156,156,156,156,156,156,156,0,156,156,156,156,156,156,156,29,29,29,29,156,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, + 97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, + 97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, + 41,41,41,41,41,41,0,41,0,0,0,0,0,41,0,0,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,29,41,41,41,41, + 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50, + 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50, + 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, + 39,39,39,39,39,39,39,39,39,0,39,39,39,39,0,0,39,39,39,39,39,39,39,0,39,0,39,39,39,39,0,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, + 39,39,39,39,39,39,39,39,39,0,39,39,39,39,0,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0,39,39,39,39,0,0,39,39,39,39,39,39,39,0, + 39,0,39,39,39,39,0,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, + 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0,39,39,39,39,0,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39, + 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0,0,0, + 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0,0,0,0,0,0,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, + 22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,0,0,22,22,22,22,22,22,0,0, + 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, + 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, + 106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,0,0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,29,29,29,128,128,128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,0, + 144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,0,0,0,0,0,0,0,0,0,144,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,29,29,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,145,145,145,145,145,145,145,145,145,145,145,145,145,0,145,145,145,0,145,145,0,0,0,0,0,0,0,0,0,0,0,0, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,0,0,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0, + 94,94,29,29,94,29,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94, + 94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,0,0,0,0,0,0, + 94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,0,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, + 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,0,0,0,0,0,0,0, + 74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,0,74,74,74,74,74,74,74,74,74,74,74,74,0,0,0,0,74,74,74,74,74,74,74,74,74,74,74,74,0,0,0,0, + 74,0,0,0,74,74,74,74,74,74,74,74,74,74,74,74,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,0,0,146,146,146,146,146,0,0,0,0,0,0,0,0,0,0,0, + 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,0,0,0,0,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, + 102,102,102,102,102,102,102,102,102,102,0,0,0,0,0,0,102,102,102,102,102,102,102,102,102,102,102,0,0,0,102,102,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,15,15,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147, + 147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,0,0,147, + 147,147,147,147,147,147,147,147,147,147,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,0,0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,10,10,10,10, + 73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,0,0,0,73,73,73,73,73, + 73,73,73,73,73,73,73,73,73,73,0,0,0,73,73,73,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, + 28,28,28,28,28,28,28,28,28,28,28,0,0,0,0,0,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,0,0,41,41,41, + 140,140,140,140,140,140,140,140,0,0,0,0,0,0,0,0,30,30,30,29,30,30,30,30,30,30,30,30,30,30,30,30,30,29,30,30,30,30,30,30,30,29,29,29,29,30,29,29,29,29,29,29,30,29,29,29,30,30,29,0,0,0,0,0, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,45,45,45,45,45,28,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,45,45,45,45,45,72,72,72,72,45,45,45,45,45,72,72,72,72,72,72,72,72,72,72,72,72,72,28,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,45, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,45,45,45,45,45,45,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, + 45,45,45,45,45,45,0,0,45,45,45,45,45,45,0,0,45,45,45,45,45,45,45,45,0,45,0,45,0,45,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0, + 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,45,45,45,45,45,45,45,45,45,45, + 45,45,45,45,45,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,45,45,45,45,45,45,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,45,45,45,0,45,45,45,45,45,45,45,45,45,0, + 29,29,29,29,29,29,29,29,29,29,29,29,30,30,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,72,0,0,29,29,29,29,29,29,29,29,29,29,29,72, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,72,72,72,72,72,72,72,72,72,72,72,72,72,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,45,29,29,29,72,72,29,29,29,29,29,29,72,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,72,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,29,29,29,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42, + 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, + 25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,25,25,25,25,25,25,25, + 41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,0,41,0,0,0,0,0,41,0,0,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, + 157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,0,0,0,0,0,0,0,157,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157, + 39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0,0,0,0,0,0,0,0,0,39,39,39,39,39,39,39,0,39,39,39,39,39,39,39,0,39,39,39,39,39,39,39,0,39,39,39,39,39,39,39,0, + 39,39,39,39,39,39,39,0,39,39,39,39,39,39,39,0,39,39,39,39,39,39,39,0,39,39,39,39,39,39,39,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,0,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,30,30,30,30,50,50,29,29,29,29,29,29,29,29,0,0,0,0,29,29,29,29, + 0,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55, + 55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,0,0,30,30,29,29,55,55,55,29,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,29,29,62,62,62, + 0,0,0,0,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50, + 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50, + 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,29,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,29, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168,168,168,168,0,0,0,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,0,0,0,0,0,0,0,0,0,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77, + 163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163, + 163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163, + 163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,29,29,29,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,0,0,72,72,0,72,0,72,72,72,72,72,72,72,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,0,0,0,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0, + 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,0,0,0,0,0,0,0,0, + 130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130, + 130,130,130,130,130,130,0,0,0,0,0,0,0,0,130,130,130,130,130,130,130,130,130,130,130,130,0,0,0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,29,64,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,0,0,0,0,0,0,0,0,0,0,0,127,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0,0,0, + 59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59, + 59,59,59,59,59,59,59,59,59,59,59,59,59,59,0,29,59,59,59,59,59,59,59,59,59,59,0,0,0,0,59,59,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0, + 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,0,0,0,0,0,0,0,0,0, + 21,21,21,21,21,21,21,21,21,21,21,21,21,21,0,0,21,21,21,21,21,21,21,21,21,21,0,0,21,21,21,21,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, + 148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, + 148,148,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,148,148,148,148,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,0,0,0,0,0,0,0,0,0, + 0,39,39,39,39,39,39,0,0,39,39,39,39,39,39,0,0,39,39,39,39,39,39,0,0,0,0,0,0,0,0,0,39,39,39,39,39,39,39,0,39,39,39,39,39,39,39,0,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,29,72,72,72,72,72,72,72,72,72,45,72,72,72,72,29,29,0,0,0,0,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, + 22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, + 88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,0,0,88,88,88,88,88,88,88,88,88,88,0,0,0,0,0,0, + 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50, + 50,50,50,50,50,50,50,0,0,0,0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0,0,0,0, + 72,72,72,72,72,72,72,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,0,54,54,54,54,54,0,54,0, + 54,54,0,54,54,0,54,54,54,54,54,54,54,54,54,54,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,29,29, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,29,29,29,29,0,0,0,0,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,29, + 0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,29,29,29,29,29, + 29,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,29,29,29,29,29,29,29,29,29,29,29,62,62,62,62,62,62,62,62,62,62,29,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,29,29,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0, + 0,0,50,50,50,50,50,50,0,0,50,50,50,50,50,50,0,0,50,50,50,50,50,50,0,0,50,50,50,0,0,0,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,0,0, + 76,76,76,76,76,76,76,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,76,76,0,76, + 76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, + 76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,0,0,0,0, + 29,29,29,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,29,29,29,29,29,29,29,29,29, + 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, + 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,0,0, + 78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0, + 109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,0,0,0,0,0,0,0,0,0,109,109,109,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43, + 43,43,43,43,43,43,43,43,43,43,43,0,0,0,0,0,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,0,0,0,0,0, + 162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,0,162,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, + 113,113,113,113,0,0,0,0,113,113,113,113,113,113,113,113,113,113,113,113,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, + 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,0,0,120,120,120,120,120,120,120,120,120,120,0,0,0,0,0,0,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119, + 119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,0,0,0,0,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,0,0,0,0, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,0,0,0,0,0,0,0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19, + 19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0,0,0,0,0,0,0,0,19,164,164,164,164,164,164,164,164,164,164,164,0,164,164,164,164, + 164,164,164,164,164,164,164,164,164,164,164,0,164,164,164,164,164,164,164,0,164,164,0,164,164,164,164,164,164,164,164,164,164,164,0,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,0,164,164,164,164,164,164,164,0,164,164,0,0,0, + 159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0, + 75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75, + 75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75, + 75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,0,0,0,0,0,0,0,0,0, + 75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,0,0,0,0,0,0,0,0,0,0,75,75,75,75,75,75,75,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 72,72,72,72,72,72,0,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,0,72,72,72,72,72,72,72,72,72,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 26,26,26,26,26,26,0,0,26,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,0,26,26,0,0,0,26,0,0,26, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,0,56,56,56,56,56,56,56,56,56,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122, + 98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,0,53,53,0,0,0,0,0,53,53,53,53,53, + 125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,0,0,0,125,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,79, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,0,0,0,0,90,90,90,90, + 90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,0,0,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90, + 65,65,65,65,0,65,65,0,0,0,0,0,65,65,65,65,65,65,65,65,0,65,65,65,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,0,0,65,65,65,0,0,0,0,65, + 65,65,65,65,65,65,65,65,65,0,0,0,0,0,0,0,65,65,65,65,65,65,65,65,65,0,0,0,0,0,0,0,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115, + 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,0,0,0,0,84,84,84,84,84,84,84,84,84,84,84,84,0,0,0,0,0,0,0,0,0, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,6,6,6,6,6,6,6, + 58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,0,0,58,58,58,58,58,58,58,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,0,0,0,0,0,57,57,57,57,57,57,57,57, + 126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,0,0,0,0,0,126,126,126,126,0,0,0,0,0,0,0,0,0,0,0,0,126,126,126,126,126,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, + 116,116,116,116,116,116,116,116,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,0,0,0,0,0,0,0,0,0,0,0,0,0, + 110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,0,0,0,0,0,0,0,110,110,110,110,110,110, + 51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,0,0,0,0,0,0,0,0,51,51,51,51,51,51,51,51,51,51,0,0,0,0,0,0, + 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,0,0,0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, + 40,40,40,40,40,40,0,0,0,0,0,0,0,0,40,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0, + 167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,0,167,167,167,0,0,167,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, + 114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,0,0,0,0,0,0,0,0,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135, + 135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, + 117,117,117,117,117,117,117,117,117,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, + 23,23,23,23,23,23,23,23,23,23,23,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,0,0,0,0,0,0,0,0,0, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,14, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,0,0,0,0,0,0,0,0,0,0,60,0,0,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,0,0,0,0,0,0,0,137,137,137,137,137,137,137,137,137,137,0,0,0,0,0,0, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,0,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,0,0, + 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131, + 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,0,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,0,0,0,0,0,0,0,0,0,0,0, + 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,0,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, + 68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 96,96,96,96,96,96,96,0,96,0,96,96,96,96,0,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,0,96,96,96,96,96,96,96,96,96,96,96,0,0,0,0,0,0,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, + 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,0,0,0,0,0,69,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0, + 44,44,44,44,0,44,44,44,44,44,44,44,44,0,0,44,44,0,0,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,0,44,44,44,44,44,44,44,0,44,44,0,44,44,44,44,44,0,30,44,44,44,44, + 44,44,44,44,44,0,0,44,44,0,0,44,44,44,0,0,44,0,0,0,0,0,0,44,0,0,0,0,0,44,44,44,44,44,44,44,0,0,44,44,44,44,44,44,44,0,0,0,44,44,44,44,44,0,0,0,0,0,0,0,0,0,0,0, + 161,161,161,161,161,161,161,161,161,161,0,161,0,0,161,0,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,0,161,161,161,161,161,161,161,161,161, + 161,0,161,0,0,161,0,161,161,161,161,0,161,161,161,161,161,161,161,161,161,161,0,161,161,0,0,0,0,0,0,0,0,161,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, + 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,0,101,101,101,101,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158, + 158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,0,0,133,133,133,133,133,133,133,133, + 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93, + 93,93,93,93,93,0,0,0,0,0,0,0,0,0,0,0,93,93,93,93,93,93,93,93,93,93,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,0,0,0,0,0,0, + 149,149,149,149,149,149,149,149,149,149,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166, + 166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,0,0,0,0,0,0,0,0,0,0,0,0,166, + 33,33,33,33,33,33,33,0,0,33,0,0,33,33,33,33,33,33,33,33,0,33,33,0,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,0,33,33,0,0,33,33,33,33,33, + 33,33,33,33,33,33,33,0,0,0,0,0,0,0,0,0,33,33,33,33,33,33,33,33,33,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,100,100,100,100,100,100,100,0,0,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,0,0,100,100,100,100,100,100,100,100,100,100,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, + 169,169,169,169,169,169,169,169,0,0,0,0,0,0,0,0,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138, + 138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, + 123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,0,0,0,0,0,0,0, + 32,32,32,32,32,32,32,32,32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0, + 12,12,12,12,12,12,12,12,12,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,0,0,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,0,85,85,85,85,85,85,85,85,85,85,85,85,85,85,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 86,86,86,86,86,86,86,0,86,86,0,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,0,0,0,86,0,86,86,0,86, + 86,86,86,86,86,86,86,86,0,0,0,0,0,0,0,0,86,86,86,86,86,86,86,86,86,86,0,0,0,0,0,0,47,47,47,47,47,47,0,47,47,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47, + 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,0,47,47,0,47,47,47,47,47,47,0,0,0,0,0,0,0,47,47,47,47,47,47,47,47,47,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,0,0,0,0,0,0,0, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,0,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,0,0,0,63,63, + 63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,0,0,0,0,0,0,0,0,0,0,0,0,0,150, + 139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139, + 139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139, + 139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139, + 139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,0,139,139,139,139,139,0,0,0,0,0,0,0,0,0,0,0, + 139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139, + 139,139,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27, + 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,0,0,0,0,0,0,0,0,0,0,0, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,0,0,0,0,0,0,0,0,0,0,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0, + 95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,95,95,95,95,95,95,95,95,95,95,0,0,0,0,95,95,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151, + 151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,0, + 151,151,151,151,151,151,151,151,151,151,0,0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0, + 121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, + 121,121,121,121,121,121,0,0,0,0,0,0,0,0,0,0,121,121,121,121,121,121,121,121,121,121,0,121,121,121,121,121,121,121,0,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,0,0,0,0,0,121,121,121, + 121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87, + 87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, + 92,92,92,92,92,92,92,92,92,92,92,0,0,0,0,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, + 92,92,92,92,92,92,92,92,0,0,0,0,0,0,0,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,104,0,0,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, + 152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, + 152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, + 152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,0,0,0,0,0,0,0,0, + 66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66, + 66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66, + 66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66, + 66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66, + 152,152,152,152,152,152,152,152,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,62,62,62,0,62,62,62,62,62,62,62,0,62,62,0, + 62,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55, + 55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55, + 55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55, + 55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55, + 55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,62,62,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,55,55,0,0,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,62,62,62,0,0,0,0,0,0,0,0,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, + 104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, + 104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, + 104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, + 104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,0,0,0,0, + 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35, + 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,0,0,0,0,0,35,35,35,35,35,35,35,35,35,35,35,35,35,0,0,0, + 35,35,35,35,35,35,35,35,35,0,0,0,0,0,0,0,35,35,35,35,35,35,35,35,35,35,0,0,35,35,35,35,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30, + 30,30,30,29,29,30,30,30,30,30,30,30,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, + 45,45,45,45,45,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,29,29,0,0,29,0,0,29,29,0,0,29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,0,29,0,29,29,29, + 29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,0,29,29,29,29,0,0,29,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,29,29,29,29,0, + 29,29,29,29,29,0,29,0,0,0,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134, + 134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134, + 134,134,134,134,134,134,134,134,134,134,134,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,134,134,134,134,0,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,0,0,0,0,0,0,72,72,72,72,72,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 42,42,42,42,42,42,42,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,0,0,42,42,42,42,42,42,42,0,42,42,0,42,42,42,42,42,0,0,0,0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,0,0,0,105,105,105,105,105,105,105,105,105,105,105,105,105,105,0,0, + 105,105,105,105,105,105,105,105,105,105,0,0,0,0,105,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,0,0,0,0,0,165, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,0,0,0,0,108, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,39,39,39,39,39,39,0,39,39,39,39,0,39,39,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0, + 89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, + 89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, + 89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, + 89,89,89,89,89,0,0,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4,0,4,0,0,4,0,4,4,4,4,4,4,4,4,4,4,0,4,4,4,4,0,4,0,4,0,0,0,0, + 0,0,4,0,0,0,0,4,0,4,0,4,0,4,4,4,0,4,4,0,4,0,0,4,0,4,0,4,0,4,0,4,0,4,4,0,4,0,0,4,4,4,4,0,4,4,4,4,4,4,4,0,4,4,4,4,0,4,4,4,4,0,4,0, + 4,4,4,4,4,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,4,4,4,0,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 55,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0, + 29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0, + 29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0, + 29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,0, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0, + 0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +KBTS_INLINE kbts_u8 kbts_GetUnicodeScript(kbts_u32 Codepoint) +{ + return kbts_UnicodeScript_Data[((kbts_un)kbts_UnicodeScript_PageIndices[Codepoint/128] * 128) | (Codepoint & 127)]; +} + +static kbts_u8 kbts_UnicodeFlags_PageIndices[8703] = { + 0,1,2,3,2,4,5,6,2,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29, + 30,31,32,33,34,35,36,37,38,33,33,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,2,2,2,55, + 56,57,58,59,33,33,60,33,61,33,33,33,33,33,62,63,33,33,33,64,33,33,65,66,67,68,69,70,71,72,33,73, + 74,75,76,77,78,33,33,33,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,80,79,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,81, + 33,33,33,33,33,33,33,33,33,82,33,33,83,84,85,86,87,88,89,90,91,92,93,94,79,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,95,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,81,33,33,96,97,98,99,33,33,100,101,102,103,104,105, + 106,107,108,109,2,110,111,112,113,114,115,116,33,33,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134, + 135,136,137,138,139,140,141,142,143,144,2,145,146,147,148,2,149,150,151,152,153,154,2,155,156,157,158,159,2,160,161,162, + 33,33,33,33,33,33,33,37,163,33,164,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,165, + 33,33,33,33,33,33,33,33,166,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, + 33,33,33,33,33,33,33,107,33,33,33,33,167,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,168,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33,33,169,170,171,172,2,2,173,2,2,174,175,176, + 79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,177,33,33,33,33,33,33,33,33,33,178,179,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,180, + 33,33,181,33,33,182,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,183,184,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,33,185,33,33,33,186,187,164, + 33,188,189,190,191,192,193,2,2,2,2,2,2,194,195,196,33,33,33,33,197,198,2,2,2,2,2,2,2,2,199,2, + 200,201,202,2,2,203,2,2,2,204,2,205,2,2,2,206,33,207,208,2,2,2,2,2,209,210,211,2,212,213,2,2, + 214,215,33,216,217,2,33,33,33,33,33,33,33,218,219,220,221,222,33,33,223,224,33,225,2,2,2,2,2,2,2,2, + 79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,226,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,227,2,228,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,229,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,230,2,2,2,2,231,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33,33,232,2,2,2,2,2,2,2,2,2,2,2, + 79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,233,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,234,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 235,235,236,237,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,238, + 79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +}; + +static kbts_u8 kbts_UnicodeFlags_Data[30592] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,4,0,0,16,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,16,16,16,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,0,16,16,16,0,16,2,16,16,16,16,16,16,16,0,0,0,16,16,16,0,16,16,16,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0, + 16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, + 80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,82,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,16,16,0,0,0,0,16,0,0,0,0,0, + 0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0, + 0,0,16,80,80,80,80,80,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,80, + 0,80,80,0,80,80,0,80,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,16,16,16,0,0,16,0,0,16,16,80,80,80,80,80,80,80,80,80,80,80,0,2,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,81,81,80,80,81,80,80,80,80,80,80,80,48,48,48,48,48,48,48,48,48,48,0,0,0,0,16,16,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,80,80,80,80,80,80,81,0,16,80,80,80,80,81,80,16,16,81,81,16,80,80,80,80,16,16,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, + 80,80,80,80,80,80,80,80,80,80,80,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,80,80,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,16,16,16,0,0,0,16,0,0,80,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,16,80,80,80,80,80,80,80,80,80,16,80,80,80,16,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,80,80,80,80,80,80,80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,81,81,80,81,81,81,80,80,80,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,80,80,80,80,80,80,80,80,80,80,80,80, + 80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,80,16,16,16, + 16,80,80,80,80,80,80,80,80,16,16,16,16,80,16,16,16,80,80,80,80,80,80,80,16,16,16,16,16,16,16,16,16,16,80,80,0,0,48,48,48,48,48,48,48,48,48,48,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,80,16,16,0,16,16,16,16,16,16,16,16,0,0,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,16,0,0,0,16,16,16,16,0,0,80,16,16,16, + 16,80,80,80,80,0,0,16,16,0,0,16,16,80,16,0,0,0,0,0,0,0,0,16,0,0,0,0,16,16,0,16,16,16,80,80,0,0,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,0,80,0, + 0,80,80,16,0,16,16,16,16,16,16,0,0,0,0,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,0,16,16,0,16,16,0,0,80,0,16,16, + 16,80,80,0,0,0,0,80,80,0,0,80,80,80,0,0,0,80,0,0,0,0,0,0,0,16,16,16,16,0,16,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,80,80,16,16,16,80,0,0,0,0,0,0,0,0,0,0, + 0,80,80,16,0,16,16,16,16,16,16,16,16,16,0,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,0,16,16,16,16,16,0,0,80,16,16,16, + 16,80,80,80,80,80,0,80,80,16,0,16,16,80,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,80,80,0,0,48,48,48,48,48,48,48,48,48,48,0,16,0,0,0,0,0,0,0,16,80,80,80,80,80,80, + 0,80,16,16,0,16,16,16,16,16,16,16,16,0,0,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,0,16,16,16,16,16,0,0,80,16,16,80, + 16,80,80,80,80,0,0,16,16,0,0,16,16,80,0,0,0,0,0,0,0,80,80,16,0,0,0,0,16,16,0,16,16,16,80,80,0,0,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0, + 0,0,80,16,0,16,16,16,16,16,16,0,0,0,16,16,16,0,16,16,16,16,0,0,0,16,16,0,16,0,16,16,0,0,0,16,16,0,0,0,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16, + 80,16,16,0,0,0,16,16,16,0,16,16,16,80,0,0,16,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0, + 80,16,16,16,80,16,16,16,16,16,16,16,16,0,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,80,16,80,80, + 80,16,16,16,16,0,80,80,80,0,80,80,80,80,0,0,0,0,0,0,0,80,80,0,16,16,16,0,0,16,0,0,16,16,80,80,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16, + 16,80,16,16,0,16,16,16,16,16,16,16,16,0,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,0,0,80,16,16,80, + 16,16,16,16,16,0,80,16,16,0,16,16,80,80,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,16,16,0,16,16,80,80,0,0,48,48,48,48,48,48,48,48,48,48,0,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0, + 80,80,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,16,16,16, + 16,80,80,80,80,0,16,16,16,0,16,16,16,80,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,0,0,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 0,80,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,0,16,0,0, + 16,16,16,16,16,16,16,0,0,0,80,0,0,0,0,16,16,16,80,80,80,0,80,0,16,16,16,16,16,16,16,16,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0, + 0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,16,80,80,80,80,80,80,80,0,0,0,0,16, + 16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,16,16,0,16,0,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,0,16,16,16,16,16,16,16,16,16,16,80,16,16,80,80,80,80,80,80,80,80,80,16,0,0, + 16,16,16,16,16,0,16,0,80,80,80,80,80,80,80,0,48,48,48,48,48,48,48,48,48,48,0,0,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,16,16,80,80,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,80,16,80,16,80,0,0,0,0,16,16, + 16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,16, + 80,80,80,80,80,0,80,80,16,16,16,16,16,80,80,80,80,80,80,80,80,80,80,80,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,16,16, + 16,16,16,16,16,16,80,16,16,16,16,16,16,0,16,16,0,0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,16,80,80,80,80,80,80,16,80,80,16,16,80,80,16, + 48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,16,16,16,16,16,16,16,16,80,80,16,16,16,16,80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,16,16,16,16,16,16,16,16,16,16,16, + 16,16,80,16,16,80,80,16,16,16,16,16,16,80,16,16,48,48,48,48,48,48,48,48,48,48,16,16,16,80,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,18,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,0,16,16,16,16,0,0,16,16,16,16,16,16,16,0,16,0,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,0,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,0,0,16,16,16,16,16,16,16,0, + 16,0,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,80,80,80,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,16,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,16,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,0,80,80,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,82,82,16,80,80,80,80,80,80,80,16,16, + 16,16,16,16,16,16,80,16,16,80,80,80,80,80,80,80,80,80,80,80,0,0,0,16,0,0,0,16,16,80,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,82,82,82,2,82,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0, + 16,16,16,16,16,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,80,80,80,16,16,16,16,80,80,16,16,16,0,0,0,0,16,16,80,16,16,16,16,16,16,80,80,80,0,0,0,0, + 16,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,16,16,80,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,80,80,80,80,80,80,80,0,80,16,80,16,16,80,80,80,80,80,80,80,80,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,80,0,0,80, + 48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,16,80, + 80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 80,80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,80,80,80,80,80,16,80,16,16,16, + 16,16,80,16,16,16,16,16,16,16,16,16,16,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,16,16,16,16,16,16,16,16,16,0,0,0, + 80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,16,16,80,80,16,80,80,80,16,16,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,80,80,16,16,16,80,16,80,80,80,16,16,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,16,16,80,80,0,0,0,0,0,0,0,0, + 48,48,48,48,48,48,48,48,48,48,0,0,0,16,16,16,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,80,80,0,80,80,80,80,80,80,80,80,80,80,80,80,80,16,80,80,80,80,80,80,80,16,16,16,16,80,16,16,16,16,16,16,80,16,16,16,80,80,16,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16, + 16,16,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0, + 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,16,16,0,0,16,16,16,16,16,16,16,16,16,0,0,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,16,16,16,16,80,16,16,16,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,0,16,16,16,16,0,16,16,0,0,0,0,0,0,0,0,0,0,16,0,16,16,16,0,0,0,0,0,16,16,16,16,16,16,0,16,0,16,0,16,0,0,0,0,16,0,0,0,0,0,0,16,16,16,16,0,16,16,0,0,0,0, + 16,16,16,16,16,0,0,0,0,0,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,0,0,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,0,0,0,0,80,80,80,0,0,0,0,0,0,0,0,0,0,0,16,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0, + 16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,80,80,80,80,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16, + 0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,80,80,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16, + 0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,16,16,16,0,80,80,80,80,80,80,80,80,80,80,0,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,16,16,16,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,16,16,16,0,16,16,16,16,16, + 16,16,80,16,16,16,80,16,16,16,16,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,16,16,16,16,16,80,0,0,0,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,80,80,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,16,16,16,16,16,16,0,0,0,16,0,16,16,80, + 48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,80,80,16,16,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0, + 80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,16,80,80,80,80,16,16,80,80,16,16, + 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,16,16,16,16,16,80,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,16,16,80,80,16,16,80,80,0,0,0,0,0,0,0,0,0, + 16,16,16,80,16,16,16,16,16,16,16,16,80,16,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,80,80,80,16,16,80,80,16,16,16,16,16,80,80, + 16,80,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,80,80,16,16,0,0,16,16,16,16,80,0,0,0,0,0,0,0,0,0, + 0,16,16,16,16,16,16,0,0,16,16,16,16,16,16,0,0,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,0,0,0,0,0,0,0,0,0,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,16,80,16,16,0,16,80,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,0,16,0, + 16,16,0,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,16,16,0,0,16,0,0,0,0,0,0,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,2, + 0,0,0,0,16,0,0,0,0,0,0,16,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0, + 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0, + 0,0,16,16,16,16,16,16,0,0,16,16,16,16,16,16,0,0,16,16,16,16,16,16,0,0,16,16,16,0,0,0,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,2,2,2,2,2,2,2,2,2,0,0,0,16,16,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,0,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0, + 0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,0,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,0,0,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,0,0,0,16,0,0,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,0,0,0,0,0,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,80,80,80,0,80,80,0,0,0,0,0,80,80,80,80,16,16,16,16,0,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,80,80,80,0,0,0,0,80, + 16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,0,0,0,0,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,80,80,80,80,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,80,80,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,80,80,80, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,80,80,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0, + 16,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80, + 80,80,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,80,16,16,80,80,16,0,0,0,0,0,0,0,0,0,80, + 80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,16,16,80,80,0,0,0,0,0, + 0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,16,80,80,80,80,80,80,80,80,0,48,48,48,48,48,48,48,48,48,48, + 0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,0,0,16,0,0,0,0,0,0,0,0,0, + 80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,16, + 16,16,16,16,16,0,0,0,0,80,80,80,80,0,16,80,48,48,48,48,48,48,48,48,48,48,16,0,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,16,16,80,16,80,80,0,0,0,0,0,0,80,16, + 16,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,0,16,0,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,16,16,80,80,80,80,80,80,80,80,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 80,80,16,16,0,16,16,16,16,16,16,16,16,0,0,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,0,16,16,16,16,16,0,80,80,16,16,16, + 80,16,16,16,16,0,0,16,16,0,0,16,16,16,0,0,16,0,0,0,0,0,0,16,0,0,0,0,0,16,16,16,16,16,16,16,0,0,80,80,80,80,80,80,80,0,0,0,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,0,16,0,0,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,80,80,80,80,80, + 80,0,16,0,0,16,0,16,16,16,16,0,16,16,80,16,80,16,80,16,0,0,0,0,0,0,0,0,0,0,0,0,0,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80, + 16,16,80,80,80,16,80,16,16,16,16,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,80,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,16,80,16,16,16,16,80, + 80,16,80,80,16,16,0,16,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,0,0,16,16,16,16,80,80,16,80, + 80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,16,16,80,16,80, + 80,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,16,80,16,16,80,80,80,80,80,80,16,80,16,0,0,0,0,0,0,0, + 48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,80,16,80,16,16,80,80,80,80,16,80,80,80,80,80,0,0,0,0,48,48,48,48,48,48,48,48,48,48,16,16,0,0,0,16, + 16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,16,80,80,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,16, + 16,16,16,16,16,16,16,0,0,16,0,0,16,16,16,16,16,16,16,16,0,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,0,0,80,80,16,80,16, + 16,16,16,80,0,0,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,0,0,80,80,16,16,16,16,80,16,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,80,80,80,80,80,80,80,80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,16,16,80,80,80,80,0, + 0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,16,80,80,80,80,80,80,16,16,80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,80,80,80,80,16,80,80,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,0,80,80,80,80,80,80,16,80, + 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,16,80,80,80,80,80,80,80,16,80,80,16,80,80,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,0,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,0,0,0,80,0,80,80,0,80, + 80,80,80,80,80,80,16,80,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,16,16,16,16,16,16,0,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,80,80,0,16,16,80,16,80,16,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,16,16,0,0,0,0,0,0,0,0,0, + 80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,0,0,0,16,16, + 80,16,80,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 80,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,80,80,80,80,80,16,16,16,80,80,80,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0, + 48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,0,0,0,0,0,16,16,16,16, + 16,16,16,16,0,16,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,80,80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,16,80,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16, + 16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0, + 16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,0,0,16,80,80,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, + 80,80,80,80,80,80,80,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,16,16,16,16,16,16,16,16,16,2,2,2,2,2,2,2,2,80,80,80,80,80, + 80,80,80,16,16,80,80,80,80,80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,80,80,80,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,16,0,0,0,0,0,0,0,0,0,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,16,16,16,16,80,80,80,80,80, + 80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,16,16,16,16,16,16,16,16,80,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,80,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,80,80,80,80,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 80,80,80,80,80,80,80,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,0,80,80,80,80,80,80,80,0,80,80,0,80,80,80,80,80,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,80,80,80,80,80,80,80,16,16,16,16,16,16,16,0,0, + 48,48,48,48,48,48,48,48,48,48,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,80,80,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,80,80,16,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,0,16,16,16,16,0,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,80,80,80,80,80,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,80,80,80,80,80,80,80,16,0,0,0,0,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,0,16,0,0,16,0,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,0,16,0,16,0,0,0,0, + 0,0,16,0,0,0,0,16,0,16,0,16,0,16,16,16,0,16,16,0,16,0,0,16,0,16,0,16,0,16,0,16,0,16,16,0,16,0,0,16,16,16,16,0,16,16,16,16,16,16,16,0,16,16,16,16,0,16,16,16,16,0,16,0, + 16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16,0,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0, + 16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0, + 16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0, + 16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0, + 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82, + 82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82, + 82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82, + 82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0, +}; + +KBTS_INLINE kbts_u8 kbts_GetUnicodeFlags(kbts_u32 Codepoint) +{ + return kbts_UnicodeFlags_Data[((kbts_un)kbts_UnicodeFlags_PageIndices[Codepoint/128] * 128) | (Codepoint & 127)]; +} + +static kbts_u8 kbts_UnicodeBidirectionalClass_PageIndices[8703] = { + 0,1,2,2,2,3,4,5,2,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28, + 29,30,2,2,31,32,33,34,35,2,2,2,2,36,37,38,39,40,41,42,43,44,45,46,47,48,2,49,2,2,50,51, + 52,53,54,55,56,57,58,59,57,60,57,57,57,61,57,57,2,2,57,57,57,57,57,57,2,62,63,64,57,57,57,57, + 65,66,67,68,69,70,71,72,73,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,74,73,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,75, + 2,2,2,2,2,2,2,2,2,76,2,2,77,78,79,80,81,82,83,84,85,86,87,88,73,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,89,73,57,57,57,57,57,75,90,73,57,57,57,57,57,57,75, + 73,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,75,2,2,91,92,93,94,95,95,96,97,98,99,100,101, + 102,103,104,105,57,106,107,108,2,109,110,111,2,2,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129, + 130,131,132,133,134,135,136,137,138,139,57,140,141,142,143,57,144,145,146,147,148,149,150,151,152,153,154,155,57,156,157,158, + 2,2,2,2,2,2,2,159,160,2,161,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,162, + 2,2,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,103,2,2,2,2,164,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,165,57,57,57,57,57,57,57,57,57,57,57,57,57,2,2,2,2,166,167,168,169,57,57,170,57,171,172,173,174, + 73,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,175,2,2,2,2,2,2,2,2,2,176,177,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,178, + 2,2,179,2,2,180,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,181,182,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,183,57,57,57,57,184,161, + 2,185,186,187,188,189,190,57,191,192,193,2,2,194,195,196,2,2,2,2,197,198,57,57,57,57,57,57,57,57,199,57, + 200,201,202,57,57,203,57,57,57,204,57,205,57,57,57,206,207,208,209,57,57,57,57,57,210,211,212,57,213,214,57,57, + 57,57,215,216,217,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,218,57,57,57,57,57,57,57,57, + 73,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,219,73,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,220,57,221,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,222,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,223,57,57,57,57,224,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,2,2,2,2,225,57,57,57,57,57,57,57,57,57,57,57, + 73,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,226,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,227,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,228,229,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 73,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,230, + 73,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, + 57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, +}; + +static kbts_u8 kbts_UnicodeBidirectionalClass_Data[29568] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,0,0,7,9,7,9,9,6,6,6,6,6,6,6,6,6,6,9,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,8,8,8,8,0,0,0,0,1,0,0,0,0,0,8,8,6,6,0,1,0,0,0,6,1,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1, + 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,1, + 0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, + 1,1,1,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,8,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3, + 2,3,3,2,3,3,2,3,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,5,0,0,4,8,8,4,9,4,0,0,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,8,5,5,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,5,0,3,3,3,3,3,3,4,4,3,3,0,3,3,3,3,4,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,2,2,0,0,0,0,2,0,0,3,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,2,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,3,3,3,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,0,0,2,0,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,5,5,0,0,0,0,0,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1, + 1,3,3,3,3,3,3,3,3,1,1,1,1,3,1,1,1,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,3,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,0,0,3,1,1,1, + 1,3,3,3,3,0,0,1,1,0,0,1,1,3,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,1,3,3,0,0,1,1,1,1,1,1,1,1,1,1,1,1,8,8,1,1,1,1,1,1,1,8,1,1,3,0, + 0,3,3,1,0,1,1,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,3,0,1,1, + 1,3,3,0,0,0,0,3,3,0,0,3,3,3,0,0,0,3,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,3,1,0,0,0,0,0,0,0,0,0, + 0,3,3,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,0,3,1,1,1, + 1,3,3,3,3,3,0,3,3,1,0,1,1,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,3,3,0,0,1,1,1,1,1,1,1,1,1,1,1,8,0,0,0,0,0,0,0,1,3,3,3,3,3,3, + 0,3,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,0,3,1,1,3, + 1,3,3,3,3,0,0,1,1,0,0,1,1,3,0,0,0,0,0,0,0,3,3,1,0,0,0,0,1,1,0,1,1,1,3,3,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, + 0,0,3,1,0,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1, + 3,1,1,0,0,0,1,1,1,0,1,1,1,3,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,8,0,0,0,0,0,0, + 3,1,1,1,3,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,3,1,3,3, + 3,1,1,1,1,0,3,3,3,0,3,3,3,3,0,0,0,0,0,0,0,3,3,0,1,1,1,0,0,1,0,0,1,1,3,3,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, + 1,3,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,3,1,1,1, + 1,1,1,1,1,0,1,1,1,0,1,1,3,3,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,1,1,3,3,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1, + 1,3,3,3,3,0,1,1,1,0,1,1,1,3,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,3,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0, + 1,1,1,1,1,1,1,0,0,0,3,0,0,0,0,1,1,1,3,3,3,0,3,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,3,3,3,3,3,3,3,0,0,0,0,8, + 1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,3,1,1,3,3,3,3,3,3,3,3,3,1,0,0, + 1,1,1,1,1,0,1,0,3,3,3,3,3,3,3,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,3,0,0,0,0,1,1, + 1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1, + 3,3,3,3,3,1,3,3,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,1,1, + 1,1,1,1,1,1,3,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,1,3,3,3,3,3,3,1,3,3,1,1,3,3,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1, + 1,1,3,1,1,3,3,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0, + 1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,3,3,3,3,3,3,1,1, + 1,1,1,1,1,1,3,1,1,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,8,1,3,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,3,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, + 1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,3,3,3,1,1,1,1,3,3,1,1,1,0,0,0,0,1,1,3,1,1,1,1,1,1,3,3,3,0,0,0,0, + 0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,3,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,3,0,3,1,3,1,1,3,3,3,3,3,3,3,3,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,0,0,3, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,1,3,1,1,1, + 1,1,3,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1, + 3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,1,1,3,3,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,1,1,1,3,1,3,3,3,1,1,0,0,0,0,0,0,0,0,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,1,1,3,3,0,0,0,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1, + 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,3,3,1,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0, + 0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,6,6,6,6,6,6,7,7,0,0,0,1, + 6,6,6,6,6,6,6,6,6,6,7,7,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,1,0,1,1,1,1,8,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1, + 0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,3,3,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0, + 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,3,3,3,3,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,3,3,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1, + 0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,3,1,1,1,3,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,0,0,0,0,3,0,0,0,1,1,1,1,1,1,1,1,8,8,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,3,3,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0, + 3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,3,3,3,3,1,1,3,3,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,1,1,3,3,1,1,3,3,0,0,0,0,0,0,0,0,0, + 1,1,1,3,1,1,1,1,1,1,1,1,3,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,1,1,3,3,1,1,1,1,1,3,3, + 1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,3,1,1,1,1,3,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,2,3,2,2,2,2,2,2,2,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,2,0, + 2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,9,0,0,0,0,0,0,0,0,0,8,0,0,7,7,0,0,0,0,0,8,8,0,0,0,0,0,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0, + 0,0,0,8,8,8,0,0,0,0,0,7,9,7,9,9,6,6,6,6,6,6,6,6,6,6,9,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, + 0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,0,0,0,8,8,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, + 1,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,0,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,2,0,0,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,2, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,3,3,3,0,3,3,0,0,0,0,0,3,3,3,3,2,2,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,3,3,3,0,0,0,0,3, + 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0, + 5,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,3,3,3,3,3,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,3,3,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,3,3,3,3,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0, + 1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,3,1,1,3,3,1,0,0,0,0,0,0,0,0,0,3, + 3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,1,1,3,3,1,1,1,1,1, + 1,1,3,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,1,3,3,3,3,3,3,3,3,0,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,0,0,0,0,0,0,0,0,0, + 3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,1, + 1,1,1,1,1,1,1,1,1,3,3,3,3,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,3,1,3,3,1,1,1,1,1,1,3,1, + 1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,3,3,3,3,3,3,3,3,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 3,3,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,3,3,1,1,1, + 3,1,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,3,3,3,3,3,3,3,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,3,3,3,3,3, + 3,0,1,0,0,1,0,1,1,1,1,0,1,1,3,1,3,1,3,1,1,1,0,1,1,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3, + 1,1,3,3,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,3,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,1,3,1,1,1,1,3, + 3,1,3,3,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,0,0,1,1,1,1,3,3,1,3, + 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,1,1,3,1,3, + 3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,3,3,3,3,3,3,1,3,1,1,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,3,1,3,1,1,3,3,3,3,1,3,3,3,3,3,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,1,3,3,1,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,3,3,1,3,1, + 1,1,1,3,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,0,0,3,3,1,1,1,1,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,3,3,3,3,3,3,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,1,1,3,3,3,3,1, + 1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,0,3,3,3,3,3,3,1,1, + 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,1,3,3,3,3,3,3,3,1,3,3,1,3,3,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,0,0,0,3,0,3,3,0,3, + 3,3,3,3,3,3,1,3,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,3,3,0,1,1,3,1,3,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,0,0,0,0,0,0,0, + 3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,0,0,0,1,1, + 3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 3,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,3,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,3,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0, + 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,3,3,3,3,3, + 3,3,3,1,1,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1, + 1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0, + 1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,0,1,1,1,1,1,1,1,1,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,3,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,0,3,3,0,3,3,3,3,3,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,3,3,3,3,3,3,3,1,1,1,1,1,1,1,0,0, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,8, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,3,3,3,3,3,3,3,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4,0,4,0,0,4,0,4,4,4,4,4,4,4,4,4,4,0,4,4,4,4,0,4,0,4,0,0,0,0, + 0,0,4,0,0,0,0,4,0,4,0,4,0,4,4,4,0,4,4,0,4,0,0,4,0,4,0,4,0,4,0,4,0,4,4,0,4,0,0,4,4,4,4,0,4,4,4,4,4,4,4,0,4,4,4,4,0,4,4,4,4,0,4,0, + 4,4,4,4,4,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,4,4,4,0,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0, + 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, +}; + +KBTS_INLINE kbts_u8 kbts_GetUnicodeBidirectionalClass(kbts_u32 Codepoint) +{ + return kbts_UnicodeBidirectionalClass_Data[((kbts_un)kbts_UnicodeBidirectionalClass_PageIndices[Codepoint/128] * 128) | (Codepoint & 127)]; +} + +static kbts_u8 kbts_UnicodeJoiningType_PageIndices[8703] = { + 0,1,0,0,0,0,2,0,0,3,0,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, + 25,26,0,0,0,0,27,0,0,0,0,0,0,0,28,29,30,31,32,0,33,34,35,36,37,38,0,39,0,0,0,0, + 40,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,44,0,0,0,0, + 45,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,47,48,0,0,49,50,51,52,53,54,0,55,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,57,43,0,58, + 0,0,0,59,0,60,61,0,0,0,0,0,0,0,0,0,0,0,0,0,62,63,0,64,0,0,65,0,0,66,67,68, + 69,70,71,72,73,74,75,76,77,78,0,79,80,81,82,0,83,0,84,85,86,87,0,0,88,89,90,91,0,92,93,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,97,0,0,0,0,0,0,0,98,99, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0, + 0,0,102,103,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,106,0,0,0,0,0,0,0,0,0,0, + 107,108,97,0,0,109,0,0,0,110,0,111,0,0,0,0,0,112,113,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 114,0,115,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +static kbts_u8 kbts_UnicodeJoiningType_Data[14848] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5, + 0,5,5,0,5,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,5,0,0,0,2,0,4,4,4,4,2,4,2,4,2,2,2,2,2,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2, + 3,2,2,2,2,2,2,2,4,2,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,5,4,4,4,0,4,4,4,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 4,2,2,4,4,4,4,4,4,4,4,4,2,4,2,4,2,2,4,4,0,4,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,0,0,5,5,0,5,5,5,5,4,4,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,2, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,4,5,2,2,2,4,4,4,4,4,2,2,2,2,4,2,2,2,2,2,2,2,2,2,4,2,4,2,4,2,2,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,0,0,4,2,2,2,2,2,2,2,2,2,2,2,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,2,2,2,2,4,2,4,4,2,2,2,4,4,2,2,2,2,2,2, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,3,0,0,5,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,5,5,5,5,5,5,5,5,5,0,5,5,5,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 4,2,2,2,2,2,4,4,2,4,2,2,2,2,2,2,2,2,2,2,4,2,4,4,4,5,5,5,0,0,0,0,2,0,2,2,2,2,0,4,2,4,4,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,3,3,3,2,0,0,2,2,2,2,2,4,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,2,2,4,4,4,0,4,2,2,4,4,2,2,2,2,2,2,4,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0, + 0,5,5,5,5,5,5,5,5,0,0,0,0,5,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 0,5,5,5,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 0,5,5,0,0,0,0,5,5,0,0,5,5,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0, + 0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 0,5,5,5,5,5,0,5,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5, + 0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5, + 0,5,5,5,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,5, + 5,0,0,0,0,0,5,5,5,0,5,5,5,5,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5, + 0,0,0,0,0,0,5,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0, + 0,5,5,5,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,5,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,5,5,5,5,5,5,0,0,0,0,0, + 0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,5,5,5,5,5,5,5,5,0,0,0, + 0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, + 5,5,5,5,5,0,5,5,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, + 0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,5,5,5,5,5,5,0,5,5,0,0,5,5,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,5,5,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5,5,5,5,5,5,5,0,0, + 0,0,0,0,0,0,5,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,3,5,5,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0, + 0,0,0,0,0,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,5,5,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,5,5,5,5,5,5,0,5,0,5,0,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,0,0,5, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,5,5,5,5,0,5,0,0,0, + 0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,5,5,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,5,0,0,0,5,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,0,5,5,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,0,0,0,0,5,0,0,0,0,0,0,5,0,0,0,5,5,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 0,0,0,0,0,0,0,0,0,0,0,5,0,3,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,5,5,5,0,0,5,5,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,5,5,0,0,5,5,0,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,5,5,0,0,5,5,0,0,0,0,0,5,5, + 0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0, + 0,5,5,5,0,5,5,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,5, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,4,0,4,0,4,4,0,0,1,4,4,4,4,4,2,2,2,2,1,2,2,2,2,2,4,2,2,2,4,0,0,4,5,5,0,0,0,0,2,2,2,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,4,2,4,4,4,2,2,2,4,2,2,4,2,4,4,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,0,5,5,5,5,5,5,5,5,5,5,5,2,2,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,4,4,2,2,2,2,2,2,2,2,2,2, + 2,2,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,4,4,4,0,2,4,4,2,2,4,2,2, + 0,2,4,4,2,0,0,0,0,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,5,0,0,0,0,0,0,0,0,0,0,5, + 5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,5,5,0,0,0,0,0, + 0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0, + 0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,5,0,5,5,0,0,0,0,0,0,5,0, + 0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, + 0,0,5,5,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,5,0,0,0,0,5, + 5,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,5,5,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,0,5,0,5, + 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,5,5,5,5,5,5,0,5,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,5,5,5,5,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,0,5,5,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5,0, + 0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,5,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,5,5,5,5,0, + 0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,5,5,5,5,5,5,0,5, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,0,5,5,0,5,5,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,5,0,5,5,0,5, + 5,5,5,5,5,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0, + 5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0, + 5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +}; + +KBTS_INLINE kbts_u8 kbts_GetUnicodeJoiningType(kbts_u32 Codepoint) +{ + return kbts_UnicodeJoiningType_Data[((kbts_un)kbts_UnicodeJoiningType_PageIndices[Codepoint/128] * 128) | (Codepoint & 127)]; +} + +static kbts_u8 kbts_UnicodeCombiningClass_PageIndices[8703] = { + 0,0,0,0,0,0,1,0,0,2,0,3,4,5,6,7,8,9,10,11,12,12,12,13,14,12,15,16,17,18,19,20, + 21,22,0,0,0,0,23,0,0,0,0,0,0,0,24,25,0,26,27,0,28,29,30,31,32,33,0,34,0,0,0,0, + 0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,37,38,0,0,0,0, + 39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,41,42,0,0,43,44,45,46,0,47,0,48,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,50,0,0,0, + 0,0,0,51,0,52,53,0,0,0,0,0,0,0,0,0,0,0,0,0,54,55,0,0,0,0,56,0,0,57,58,59, + 60,61,62,63,64,65,66,67,68,69,0,70,71,72,73,0,61,0,74,75,76,77,0,0,71,0,78,79,0,0,80,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,83,0,0,0,0,0,0,0,0,84, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,86,87,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 89,90,83,0,0,91,0,0,0,92,0,93,0,0,0,0,0,94,95,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +static kbts_u8 kbts_UnicodeCombiningClass_Data[12288] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,232,220,220,220,220,232,216,220,220,220,220,220,202,202,220,220,220,220,202,202,220,220,220,220,220,220,220,220,220,220,220,1,1,1,1,1,220,220,220,220,230,230,230, + 230,230,230,230,230,240,230,220,220,220,230,230,230,220,220,0,230,230,230,220,220,220,220,230,232,220,220,230,233,234,234,233,234,234,233,230,230,230,230,230,230,230,230,230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,230,230,230,230,220,230,230,230,222,220,230,230,230,230,230,230,220,220,220,220,220,220,230,230,220,230,230,222,228,230,22,15,16,17,23,18,19,20,21,14,14,24,12,25,0,13, + 0,10,11,0,230,220,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,230,31,32,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,28,29,30,31,32,33,27,34,230,230,220,220,230,230,230,230,230,220,230,230,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,0,0,230,230,230,230,220,230,0,0,230,230,0,220,230,230,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,220,230,230,220,230,230,220,220,220,230,220,220,230,220,230, + 230,230,220,230,220,230,220,230,220,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,220,230,0,0,0,0,0,0,0,0,0,220,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,0,230,230,230,230,230,230,230,230,230,0,230,230,230,0,230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,220,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,220,220,220,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,220,220,220,220,220,230,230,230,230,230,230,230,230,230,230,230,230,230,230,0,220,230,230,220,230,230,220,230,230,230,220,220,220,28,29,30,230,230,230,220,230,230,220,220,230,230,230,230,230, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,230,220,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,9,0,0,0,0,0, + 0,0,0,0,0,0,0,0,107,107,107,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,118,9,0,0,0,0,0, + 0,0,0,0,0,0,0,0,122,122,122,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,0,220,0,127,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,132,0,131,0,0,0,0,0,132,132,132,132,0,0, + 132,0,230,230,9,0,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,9,9,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,230,220,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,230,0,0,220, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,220,220,220,220,220,220,230,230,220,0,220, + 220,230,230,220,220,230,230,230,230,230,220,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,220,230,230,230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,0,1,220,220,220,220,220,230,230,220,220,220,220,230,0,1,1,1,1,1,1,1,0,0,0,0,220,0,0,0,0,0,0,230,0,0,0,230,230,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 230,230,220,230,230,230,230,230,230,230,220,230,230,234,214,220,202,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,232,228,228,220,218,230,233,220,230,220, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,1,1,230,230,230,230,1,1,1,230,230,0,0,0,0,230,0,0,0,1,1,230,220,230,1,1,220,220,220,220,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,228,232,222,224,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,230,230,230,230,230,230,230,230,230,230,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,220,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,230,230,220,0,0,230,230,0,0,0,0,0,230,230, + 0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,220,220,220,220,220,220,220,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,220,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,1,220,0,0,0,0,9, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,220,220, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,220,220,230,230,230,220,230,220,220,220,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,230,220,230,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,7,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,7,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,0,0,0,230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,9,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, + 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,7,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0, + 0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,7,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,216,1,1,1,0,0,0,226,216,216,216,216,216,0,0,0,0,0,0,0,0,220,220,220,220,220, + 220,220,220,0,0,230,230,230,230,230,220,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 230,230,230,230,230,230,230,0,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,0,0,230,230,230,230,230,230,230,0,230,230,0,230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,232,220,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,220,220,220,220,220,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,230,230,230,230,230,230,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +KBTS_INLINE kbts_u8 kbts_GetUnicodeCombiningClass(kbts_u32 Codepoint) +{ + return kbts_UnicodeCombiningClass_Data[((kbts_un)kbts_UnicodeCombiningClass_PageIndices[Codepoint/128] * 128) | (Codepoint & 127)]; +} + +static kbts_u16 kbts_UnicodeParentInfo_PageIndices[34815] = { + 0,1,2,3,0,4,5,6,7,0,8,9,0,10,0,11,0,12,0,0,13,14,0,0,15,0,0,0,16,17,18,0, + 19,20,21,22,0,0,23,24,0,0,0,0,0,0,25,26,0,27,28,0,0,0,29,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,30,31,0,0,0,32,33,0,34,35,0,0,0,0,0,0,0,36,37,0,0,0,38,0, + 0,0,39,0,0,40,41,0,0,0,38,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,43,44,45,46,0,0, + 0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,50,51,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,53,54,0,55,56,0,57,58,59,60,0,61,62,63, + 64,0,0,0,0,0,0,0,0,0,0,0,65,0,66,0,67,68,69,70,71,72,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 74,0,75,76,77,75,76,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,79,80,81,0,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,0,84,0,0,0, + 0,85,0,86,0,0,87,88,89,90,0,0,0,0,0,0,0,91,0,92,0,0,0,93,94,0,95,0,96,0,0,0, + 97,0,98,0,0,0,0,0,0,99,0,0,100,0,0,0,0,0,0,0,0,101,0,0,102,0,0,0,0,0,0,103, + 104,105,106,0,107,0,0,108,0,109,0,0,0,0,0,0,110,111,0,0,0,112,0,0,113,114,115,0,0,0,116,0, + 117,0,0,118,0,0,0,0,0,119,120,121,0,0,122,123,0,124,0,0,0,125,126,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,128,0,0,0,129,0,130,0,0,0,131,0,0,0,0,132,0, + 0,0,0,0,0,0,133,134,0,0,135,0,0,0,0,0,136,137,138,0,139,140,141,142,0,0,0,143,144,145,0,0, + 146,147,0,148,149,0,150,151,0,0,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,0,0,170,171, + 172,173,174,175,176,177,0,178,179,0,180,181,182,183,184,185,186,0,187,188,0,0,0,189,190,0,0,0,191,0,192,193, + 194,195,196,0,0,197,198,199,200,201,202,203,0,0,204,205,206,207,0,208,0,209,0,0,210,211,0,0,212,0,213,214, + 215,216,0,217,218,0,219,0,220,0,221,222,0,223,0,224,0,225,0,226,0,227,228,229,230,231,232,233,234,235,236,237, + 238,0,0,239,240,0,241,242,243,0,244,245,246,247,248,249,250,251,252,0,0,253,254,255,0,256,257,258,259,260,261,262, + 263,264,265,266,267,0,268,0,0,0,269,270,271,0,272,273,274,0,275,276,277,278,279,280,281,282,283,284,285,0,0,286, + 287,0,288,0,289,290,0,0,291,0,292,0,0,293,0,294,295,0,0,0,0,296,297,0,298,299,300,301,302,303,0,0, + 0,0,304,305,306,307,308,309,310,311,312,313,314,0,315,316,317,318,0,319,320,321,322,0,323,324,0,325,0,0,326,327, + 328,329,330,331,332,333,334,0,0,0,335,336,337,0,338,0,339,340,341,342,343,344,345,346,0,347,0,348,349,350,351,0, + 352,353,354,355,356,0,357,0,358,359,360,361,0,0,0,362,363,0,364,365,0,0,366,367,368,0,369,0,370,371,0,0, + 0,0,372,373,374,0,375,376,0,377,378,379,380,381,382,383,384,0,385,0,386,387,388,389,0,390,0,0,0,0,391,0, + 0,392,0,393,394,395,396,397,398,399,400,401,0,402,403,404,405,406,407,0,0,0,0,0,0,408,0,409,410,411,0,412, + 413,0,414,415,416,417,0,0,418,419,0,0,0,0,420,421,422,0,0,423,424,425,0,426,427,428,429,430,0,431,432,433, + 0,434,435,0,0,0,0,436,437,0,0,438,0,0,439,440,441,442,443,444,445,446,0,447,448,449,0,450,451,452,0,453, + 454,0,455,456,0,0,457,458,459,0,460,461,462,0,0,0,0,0,0,0,0,463,464,465,466,467,468,0,469,0,0,0, + 0,0,470,0,0,471,472,0,473,0,0,474,0,475,476,477,0,0,0,0,0,0,478,0,0,479,0,480,481,482,0,0, + 0,483,0,484,485,0,486,487,488,0,0,489,490,491,492,0,0,493,0,494,0,0,495,0,496,0,497,0,0,0,0,498, + 499,0,0,0,0,0,0,0,0,0,0,0,500,501,0,0,0,502,503,504,505,506,507,508,0,509,510,0,0,0,511,512, + 513,514,515,0,0,0,0,516,0,517,0,0,0,518,519,520,0,0,0,521,0,0,0,0,522,0,0,523,0,0,0,0, + 0,0,524,0,0,0,0,525,0,0,0,526,0,527,0,528,529,0,0,530,531,532,533,534,535,536,537,0,538,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,539,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,540,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,541,542,0,0,0,543,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,544,0,545,0, + 0,0,0,0,0,546,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,547,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,548,549,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,550,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,551,0,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,553,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,554,555,556,0,0,0,0,0,0,557,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 558,0,0,0,0,0,559,0,0,0,0,0,0,0,0,0,0,560,0,0,0,0,0,0,0,0,0,561,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,562,0,0,0,0,0,0,0,0,0,0,0,0,0,563,0,564,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,565,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,567,0,0,0,0,0,0,568,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,569,0,0,0,0,0,0,0,0,0,0,0,0,570,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,571,0,0,0,0,0,0,0,0,0, + 0,0,572,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,573,0,0,0,0,0,0,574, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 575,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,576,0,0,0,0,577,0,578,0,579,0, + 0,0,0,580,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,581,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,582,0,0,0,0,0,0,0,0,0,0,0,0,0,0,583,0,0,584,0,0,0,0,0,0,0,0, + 0,0,0,0,0,585,0,0,586,0,0,0,0,0,0,0,0,0,0,0,0,0,587,0,0,0,588,0,589,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,590,0,0,0,591,0,0,0,0,0,592,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,593,0,0,0,0,0,0,0,0,594,0,0,0,0,0,0, + 595,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,596,0,0,597,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,598,0,0, + 0,0,599,0,0,0,0,600,601,602,0,0,0,0,0,0,0,0,603,0,0,0,0,0,0,0,0,0,0,0,0,0, + 604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,606,0,607,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,610,0,0, + 0,0,0,0,611,0,612,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,613,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,614,0,0,615,616,0,0,0,617,0,0,618,0,0,0,0,0,0, + 0,0,0,0,0,0,619,0,0,620,0,0,0,621,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,622,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,0,0,0,0,0,0, + 0,624,0,0,0,0,625,0,0,0,0,626,0,0,0,0,0,0,0,0,0,0,0,0,0,627,0,0,0,628,0,0, + 0,0,0,0,0,0,629,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,630,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,631,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,632,0,0,0,0,0,633,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,634,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,635,0,0,636,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,637,638,0,0,0,0,0,0,0,0,0,639,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,640, + 0,0,0,0,0,0,0,0,0,0,0,641,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,642,0,0,0,643,0,644,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 645,0,0,0,646,0,0,0,0,0,0,0,0,647,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,648,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,649,0,650,0,0,0,0,0,0,0,651,0,0,0,652,0,0,0,0,0,0,0,653,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,654,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +static kbts_u32 kbts_UnicodeParentInfo_Data[20960] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66400,66423,66421,66422,0, + 0,1048664,197177,328094,393598,1114167,66418,459018,459046,983176,65810,393556,393562,197183,590017,1048696,131720,0,524539,459032,459067,1245203,131728,393604,131730,590026,393592,0,0,0,0,0, + 66420,1048648,197171,328084,393586,1114150,66417,459011,524515,917655,131704,328109,393538,197180,590008,1048680,131414,0,524499,459025,524523,1245184,131724,459060,131726,655525,393580,0,0,0,0,0, + 0,0,0,0,0,0,0,0,197174,0,0,0,0,0,0,0,0,0,0,0,66419,0,0,66399,0,0,0,0,0,0,0,0, + 0,0,262650,0,66396,131722,131706,65959,0,0,262654,0,0,0,0,66416,0,0,0,0,262658,197168,66398,0,66397,0,0,0,262626,0,0,0, + 0,0,262638,0,66019,66395,131702,66415,0,0,262642,0,0,0,0,65963,0,0,0,0,262646,197165,66186,0,65816,0,0,0,262622,0,0,0, + 0,0,262634,262634,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131716,131716,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,131718,131718,0,0,0,0,0,0,0,0,0,0,0,0,66412,66412,0,0,0,0, + 66183,66183,0,0,0,0,0,0,66413,66413,66413,66413,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66414, + 328104,328104,0,0,0,0,0,0,0,0,0,0,0,0,0,328099,328099,0,0,0,0,0,0,66381,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,65936,65936,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66367,66367,66405,66405,0,0,0,0,65936,65936,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66366,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66393,0,0,0,0,0,0, + 65973,65973,0,0,0,0,0,0,66384,0,0,0,0,0,0,0,0,0,0,66379,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,66409,65949,0,65829,66406,65873,0,66411,0,66408,66410,65867,459053,0,0,0,262618,0,328089,0,459039,0,0,0,0,0,262610, + 0,66407,0,0,0,393544,0,0,0,393550,0,0,131708,66403,131710,66404,65948,524531,0,0,0,262606,0,393568,0,589999,0,0,0,0,0,262630, + 0,131714,0,0,0,524507,0,0,0,393574,197129,197132,66401,66402,131712,0,0,0,131471,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,65935,0,0,0,0,0,0,0,0,0,131227,0,0,66371,0,197150,131700,65953,262594,0,65945,0,0,0,66394,0, + 0,0,0,262586,0,0,0,65595,0,0,0,65595,0,65630,0,0,131696,0,0,66376,0,197162,131698,65943,262602,0,66377,0,0,0,66392,0, + 0,0,0,262614,0,0,0,65578,0,0,0,65578,0,65614,0,0,0,0,0,0,0,0,65935,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65936,65936,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65936,65936,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,65936,65936,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197216,131836,66134,66134,66134,131828,66134,0,66134,131820,66134,131826,66134,0,66134,0, + 66134,66134,0,66134,131822,0,66134,66134,66134,197204,66134,0,0,0,0,0,0,0,66855,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,197135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66370,0,66370,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65935,0,0,65978,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66387,66387,66387,0,0,0,0,66385,0,0,0, + 0,66383,66383,0,0,0,0,0,65935,0,0,66380,0,0,0,66379,0,0,0,65935,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66379,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,131474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66387,66387,0,0,0,0,66385,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66380,0,0,0,0,0,0,65935,0,0,0,0,0,65931,0,0,0,0,0,0,0, + 0,66383,66383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,197147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,131507,65934,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,65936,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65935, + 0,0,0,0,0,0,197138,0,0,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197141,0,0,65935,0,0,0, + 66378,0,65935,0,0,0,0,0,0,0,0,0,65935,0,0,0,0,65935,0,0,0,0,65935,0,0,0,0,65935,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197153,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66378,0,65935,0,0,0,0,0,0,0,0,0,65935,0,0,0, + 0,65935,0,0,0,0,65935,0,0,0,0,65935,0,0,0,0,0,0,66368,66369,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,328074,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,65935,0,65935,0,65935,0,65935,0,65935,0,0,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65935,0,65935,0,65936,65936, + 0,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65936,65936,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65936,65936,0,0,0,0, + 0,0,65755,65755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 131694,131694,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66087,66087,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,66158,66158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 262598,262598,65609,65609,65609,65609,65609,65609,262598,262598,65609,65609,65609,65609,65609,65609,131506,131506,0,0,0,0,0,0,131506,131506,0,0,0,0,0,0, + 262590,262590,65985,65985,65985,65985,65985,65985,262590,262590,65985,65985,65985,65985,65985,65985,197042,197042,0,0,0,0,0,0,197042,197042,0,0,0,0,0,0, + 131506,131506,0,0,0,0,0,0,131506,131506,0,0,0,0,0,0,197042,197042,0,0,0,0,0,0,0,197042,0,0,0,0,0,0, + 262578,262578,65973,65973,65973,65973,65973,65973,262578,262578,65973,65973,65973,65973,65973,65973,66386,0,0,0,66388,0,0,0,0,0,0,0,66391,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65935,0,0,0,0,0,0,0,0,197159, + 0,0,0,0,0,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65935,0,0,0,0,0,0,0,197126,0, + 0,0,65931,65931,0,0,0,0,0,0,0,0,0,0,0,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66374,0,66373,0,66375,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65930,0,65930,0,66372,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,65935,0,0,0,0,65935,0,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,65935,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65894,0,0,0, + 0,0,0,65935,0,65936,0,0,65935,0,0,0,0,66376,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,65935,0,0,66158,66158,0,0,0,0,0,0,0,0,0,0,0,0,65936,65936,0,0,65936,65936,0,0,65755,65755,66390,66390,0,0, + 0,0,65936,65936,0,0,65936,65936,0,0,0,0,0,0,0,0,0,66389,66389,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66374,0,0,0,0,0,65894,65894,0,65934,0,0,0,0,0,0,66382,66382,66382,66382,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65932,0,0, + 0,0,0,0,0,0,0,0,66365,66365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66388,0,0,0,0,65935,0,65935,0,65935,0,65935,0,65935,0,65935,0,65935,0,65935,0,65935,0,65935,0,65935, + 0,65935,0,0,65935,0,65935,0,65935,0,0,0,0,0,0,131471,0,0,131471,0,0,131471,0,0,131471,0,0,131471,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65935,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65756,65756,65756,65756,0,0,0,0,0,0,0,0,0,0,65935,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67213,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67212,0,67214,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67211, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67210,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,67209,0,0,0,0,0,0,0,0,0,0,0,0,0,67208,0,0,0, + 0,67207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,67205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67204,0,0,0, + 0,0,0,0,0,0,0,67203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,67202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67201,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67200,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,67199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,67198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,67197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,67196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67195,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,67194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131892,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67193,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,67192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67191,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67190,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,67189,0,0,0,0,0,0,0,0,0,0,0,131890,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67188,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67187,0,0,0, + 0,0,0,0,0,0,0,0,67186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66821,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131888,0,0,0,0,0,0, + 0,0,0,0,0,0,67185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67184,0,0,0,0,0,0,0,0,0, + 0,0,0,67183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,67181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,67180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 67179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,67178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67177,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67176,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67175,0,0,0,67172,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,67174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,67173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,67171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67170,0,0, + 0,67169,0,0,0,0,0,0,0,0,0,67168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67167,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67166,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67165,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67164,0, + 0,0,0,0,0,0,0,67163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67162,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,67161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,67160,0,0,0,0,0,0,0,67159,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67158,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67157,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,67156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,67155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,67154,0,0,0,0,0,0,0,0,0,0,67153,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67152,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66809,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66810,0,0,0,0,0,0,0,0,0,0,0,66804,0,0,0,0,0,67151,66806,0,0,0,67150,0,0, + 0,67149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66801,0,0,0,66807,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66803,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66808,0,0,0,0,0,0,0,0,0,0,0,67148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 67147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66805,0,0,0,0,0,66798,0,0,0,0,66800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,131886,0,0,0,0,0,0,0,0,0,0,0,0,67146,0,0,0,66797, + 0,0,67145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66799,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67144,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67143,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67140,0,0,0,0,0,0,0,0,0,0,66790,0,0,0,0,0, + 0,0,0,0,0,0,0,131882,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66789,0,0,0,0,66794,0,0,0,0,0,0,0,131878,0,0,0,0,0,0,67138,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,67136,0,0,67137,66793,66782,0,0,0,66788,0,0,0,0,0,0,0,0,0,67135,0,0,0,0,0,0,0,0, + 66791,0,0,0,0,0,0,0,0,0,0,0,0,67134,0,0,0,0,67142,0,0,67141,0,67133,0,0,0,0,0,0,0,0, + 0,0,0,0,67132,0,0,0,0,0,0,0,67131,0,0,0,0,0,0,0,0,131876,0,66775,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66779,0,0,66778,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66776,0,66785,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67130,0,0,0,0,0,0,0,0,0,0, + 0,0,0,67129,0,0,0,131874,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66777,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66780,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66781,67128,0,0,0,0, + 0,0,0,0,0,0,67127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67126,0,0,0,0,67125,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66774,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66772,0,0,0,0, + 0,0,0,66773,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67139,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,131872,0,131870,0,0,0,0,0,0,0,0,66769,0,0,0,0,0,0,0,0,0,0,0,66768,0, + 0,0,0,0,131866,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66770,0,0,0,0,131864,0,0,0,0,0, + 0,0,0,0,0,67124,67124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131862,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66771, + 0,0,0,0,0,0,0,0,0,67123,0,0,0,0,0,0,0,131860,0,0,0,0,0,0,0,0,67122,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67121,0,66764,0,0,0,0,0,0,0,66154,0,197225, + 0,0,0,66765,0,0,0,0,0,0,67120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67119, + 0,0,0,0,0,66760,0,0,0,0,0,67118,0,0,0,0,0,67117,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,67116,0,0,0,0,0,0,0,0,66766,0,0,0,0,0,0,0,0,0,0,0,0,0,66767,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67115,0,0,0,0,0,0,0, + 0,0,66763,0,0,0,0,0,67114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,67113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67112,0, + 0,0,67112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66318,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67111,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67109,0,66761,0,0,0,0,0,0,0,0,0,0, + 0,0,0,67108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,131884,0,0,66757,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131854,0,0,0,131800,0,0, + 0,0,0,0,0,0,0,0,0,0,0,67107,0,0,0,0,0,0,0,67106,0,0,0,0,0,0,0,0,0,0,0,0, + 66759,0,67105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,131852,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67104,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66758,0,0,0,0,0,0,0,0,0,0,0,67103,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66754,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67101,67102,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,67100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,67099,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67098,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,67097,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67096,67095,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66752,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131798,0,0,0,66747,0, + 0,0,0,0,0,0,0,0,66750,0,0,0,67094,0,0,0,0,0,0,66751,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66746,0,0,0,0,0,0,66745, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,67091,0,0,0,67093,0,0,0,0,67092,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,67090,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67089,0,0,0,0,0, + 0,0,67088,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66749,0,0,0,66741,0,0,0,0,0,0,0,0,66740,0,0,66748,0,0,0,0,0,0,0,0,0,0,0, + 0,0,67087,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66743,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67085,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,67084,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67083,0,0,0,0, + 0,0,0,0,0,0,0,67082,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66744,0,0,0,67081,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67086,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,67080,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66739,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131880,0, + 0,0,0,0,0,66738,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,67079,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67078,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,197222,0,0,0,0,0,0,66314,0,0,0,0,67077,0,0,0,0,0,0,0,0,0,0,0,67076, + 0,0,0,0,0,0,67075,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,67074,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66735, + 67072,0,66733,0,66737,66734,0,0,0,0,0,0,0,0,131850,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,67071,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 67070,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66731,0,0,0,0,0,0, + 0,0,0,67069,0,0,0,0,0,0,0,0,0,0,0,0,66729,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,67068,0,0,67067,0,0,0,0,0,0,0,0,0,0,0,0,0,67066,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67073,0,0,0,0,0,0,0,66730,0,0,0,0,0, + 0,67065,67065,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67064,0,0, + 0,0,0,0,0,0,0,0,67063,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67062,0,0, + 0,0,0,0,0,0,0,0,0,67061,0,0,0,0,0,0,0,0,0,0,66723,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66726,0,0,0,0,0,0,0,0,0,67060,0,0,67059,0,0,67058,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66722,131848,0,0,0,0,0,0,0,66728,66725,0,0,0,0,0,66727,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,66720,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67057,0, + 0,0,0,0,66718,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,131868,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67054,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,67056,0,0,0,0,0,0,66724,0,67055,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66719,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67053,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66715,0,0,0,66721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,67052,0,0,0,0,0,0,0,0,0,67051,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66714,0,0,0,67050,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66711,0,0,0,0,0,0,0,0,0,66713,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66717,0,0,0,0,0,0,0,0,0,0, + 0,67049,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131846,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,67048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66714,0,0,0,0,0,0,0, + 0,66709,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66712,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66707,0,0,0,67047,0,0,0,131858,0,131844,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66710,0,0,0,0,0,0,0,66708,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67046,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,197219,0,66705,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,67045,0,0,0,0,0,0,0,0,0,0,67044,0,0,67043,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67042,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197213,0,0,0,131842,0,0,0,0,0,0,0,0,0, + 66703,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67041,0,0,0,0,0,0,0,0,0,0,67040,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66704,0,0,0,0,0,66706,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67039,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67038,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66693,0,0,0,0,0,66696,0,0,0,66701,67037,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67036,0,66695,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67035,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,67033,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66690,0,0,0,0, + 0,0,0,67032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66689,0,0,0,0,0,0,0,0,67031,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66699,67030,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,67029,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66694,0,0,0, + 0,0,67028,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66692,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,67027,0,0,0,0,0,0,0,0,0,0,0,0,0,67026,0,0,0,0,0,0,67025,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66687,0,0,67024,0,0, + 0,0,0,0,66685,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131840,0,0,0,0,0,0,66688,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,67023,0,0,0,0,0,0,0,0,0,0,0,66681,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66682,0,0,0,0,0,0, + 0,0,0,0,0,66678,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66684,67022,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66679,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,67021,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131790,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66675,0,0,0,0,0,0,0,0,131834,0,0,0,0,0,0,0,0,0,0,67020,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66677,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66674,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66670,0,0,0,67019,0,0,0,0,0,0,0, + 67019,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197210,0,0,0,131832,0,0,0,0, + 0,67018,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66673,0,0,0,0,67017,0,0,66676,0,0,0,0,0,0,0,67016,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66671,0,0,0,0, + 0,0,0,0,0,67015,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66672,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66668,0,0,0,0,0,0,67014,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66666,0,0,0,0,0,0,0,67013, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67012,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,66664,0,0,0,131830,0,0,0,0,0,0,0,0,67011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66665,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67010,0,0,0,0,0,0,0,0,0,0,0, + 0,0,67009,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,67008,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,67007,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,197201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66663,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,67006,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66661,0,0,0,0,0,0,0,67005,0,0,0,0, + 0,0,0,0,66659,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,67004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67003,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67002,0,0,0,0,66658,0,66662,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67001, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66657,0,0,0,0,0,0,0,0,0,0,0,197198,66128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,67000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,66999,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66654,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66998, + 0,0,0,0,0,0,0,0,0,0,0,0,66651,66997,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,66655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66996,0,0,0,0,66647,0,0,66653,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66995,0,0,0,0,0,0,0,0,0,66994,0, + 0,197195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66993,66645,0,0,0,0,0,0,0,0,0,0,0,0,131824,66992,0,0,0,0,0,0,0, + 0,0,0,0,0,66991,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66648,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66643,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66990,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66649,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66989,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66988,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66641,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66642,0,0,0,0,0, + 0,0,0,0,0,0,0,66987,0,0,0,131818,0,0,0,0,0,66637,0,0,0,0,0,0,0,0,0,66644,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66638,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,131788,66639,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66986,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66985,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66633,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66635,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66984,0,0,131816,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66983,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66982,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66977,0,0,0,0,0,0,66981,0,0,0,0,0,66980,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66634,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66979,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66631,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66629,0,0,0,0,0,0, + 0,0,0,0,0,66978,0,0,0,66630,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,131780,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66976,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66627,0,66628,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66624,0,0,0,0,0,0,0,0,0,0,66623,0,0,0,0, + 0,0,0,0,0,0,0,0,66975,0,0,66628,0,0,0,0,0,0,0,0,0,131814,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66974,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66622,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66973,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66972,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66626,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66620,0,0,0, + 0,0,0,0,0,0,0,0,0,0,131774,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66621,0,0,0,0,66971,0,0,0,0,0, + 0,0,0,0,0,0,0,131772,0,0,0,66970,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,66969,0,0,0,0,0,0,0,0,0,0,0,0,66618,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66610,0, + 0,0,0,0,0,0,66616,0,0,66615,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,66968,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66967,0,0,0, + 0,0,0,0,0,0,0,0,0,66611,0,0,0,0,0,0,0,131812,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,66966,0,0,0,66609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66612,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66965,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66614,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66964,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66613,0,0,66963,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66606,0,0,0,0,0,0, + 0,0,0,0,0,66605,0,0,0,0,0,0,0,0,0,0,131810,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66962,0,0,0,0,0,0,0,0,0,0,0,0,66608,0,66607, + 0,0,66602,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66598,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,131766,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66603,0,0,0,0, + 0,0,0,0,0,0,0,66596,0,0,0,0,0,0,0,0,0,0,0,0,131808,0,0,0,0,0,0,0,0,0,0,0, + 0,66597,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66320,131856, + 66601,0,0,0,0,0,0,0,0,0,131806,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66961,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,66599,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66960,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66594,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,131792,0,0,0,0,66595,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66583,0,131802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66582,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66580,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66587,0,66592,0, + 0,0,0,0,0,0,0,0,66591,66590,0,0,0,0,0,0,66589,0,0,0,0,0,131794,0,0,0,0,0,0,66588,66585,0, + 0,0,0,0,0,66584,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66575, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66586,66586,131786,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66579,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66959,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66574,0,0,0, + 131784,0,0,0,0,0,0,0,0,0,66958,0,0,0,0,66957,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,66577,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66578,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66573,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66956,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66572,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 131760,0,0,0,0,0,66955,0,0,66954,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66570,0, + 66564,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66571,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66569,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66568,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66953,0,0,0,66566,0,0,0,0,0,0,0,0,0, + 0,0,0,66952,0,0,0,66562,66951,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66950,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66563,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66560,0,0,0,0,0,0,0,0,0,0,0,0,66559,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66567,0,0,0,0, + 0,0,0,66949,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66557,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66556,0, + 0,0,0,0,0,0,0,66948,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197192,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66947,0,0,0,0,0,0,66561,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66554,0,0,0,0,0,0,0,0, + 0,66558,0,0,0,66946,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66555,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66553,0,0,0,0,0,0,66551,66945,0,0,0,0,0, + 0,0,0,0,0,66548,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66944,0,0,0,0,66549,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66550,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66943,0,0,0,0,0, + 0,66546,0,0,0,197189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66547,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66942,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66545,66941,0,0,0,0,0,0,0,0,0,0,0,0,0,66543,0, + 0,0,0,0,0,0,0,0,0,0,0,66544,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66937,0,0,0,0,66940,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,66939,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66938,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66538,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66540,0,0,0,0,66542,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,131838,0,0,66936,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66541,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66537,0,0,0,0,0,0,0,0,0,131756,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66935,0,0,0,0,0,66934,0,0,0,0,0,0,0,0,0,0,0,66933,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66932,0,66931,0,0,0,0,0,0,0,0,0,66930,0,0, + 0,0,0,0,0,131782,66929,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66928,0,0, + 0,0,0,66927,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66536,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66539,66926,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,66925,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66924,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66923,0,0, + 0,0,0,0,0,0,0,0,0,66534,66922,0,66921,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66920,0,0,0, + 0,0,0,0,0,0,0,66919,0,0,0,0,0,0,0,66535,0,66533,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66531,0,0, + 0,0,0,0,0,0,0,0,0,66532,0,0,0,0,0,0,0,0,0,0,0,0,0,131778,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66529,0,0,66918,0,66917,0,0,0,0,0,0,0,0,66530,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66916,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66915,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66525,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66527,0,0,0,0,0, + 0,0,0,0,0,0,66524,0,0,0,0,0,0,0,0,0,0,0,66528,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66523,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66522, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66914,0,0,0,0,0,0,0,0,0,0,0,131776,0,0,0, + 0,0,0,0,0,0,0,66913,0,66912,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66911,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66910,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66909,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66908,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66907,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66906,0,0,0,0,0,0,0,0,0,0,0,0,0,131770,0,0,0,0,0,0, + 0,0,0,0,0,0,66905,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66518,0,0,0,0,0, + 0,66904,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,66903,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66514, + 0,0,0,0,0,0,0,0,0,0,0,0,66520,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66902,0,0,66901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66512,0,0,0,0,0,0,0,0,0,0,0,0,66515,0,0,0,0,0,0,0,66900,0,0,0,0,0,0,66899,0, + 0,66513,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66510,0,66898,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66517,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,66519,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66507,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66516,0,0,0,0,66511,0,0,0,0,0,0,0,0,0,0,131754,0,0,0,0,0,0,0,0,0, + 66897,0,0,0,0,0,0,0,0,0,131746,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66509, + 0,0,0,0,0,0,0,0,0,0,0,66508,0,0,0,0,0,0,66506,0,0,0,66504,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,131768,0,0,0,0,0,0,0,0,0,0,131750,0,0,0,0,0,131744,0, + 0,131752,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131748,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66505,0,0,0,0,0,0,0, + 66502,0,0,0,0,0,0,0,0,0,131764,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66500,0,0,0,0,0,0,0,0,0,0,0,0,66896,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66895,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,66894,66499,0,0,0,0,0,66497,0,0,0,0,0,0,0,0,0,0,66501,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,131742,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66893,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66892,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66891,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66890,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66496,66889,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66490,0,0,0,0,0,0,0,0,0,66888,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66492,0,0,0,66493,0,0,0,0,0,0,0,0,0,0,0,0,0,131762,0,0,66495,0,0,0,0, + 0,0,66489,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66887,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66488,0,0,0,0,0,66494,0,0,0,0,0,0,0,0,0, + 0,0,0,66487,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131740,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66491,0,0,0,0,0,0,0,0,0,66485,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66481,0,0,0,0,66886,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66486,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66885,0,0,0,0,0,0,0,0,0,0,0,66483,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66884,0,0,0,0,0,0,0,0,0,66883,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66484,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66477,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,66478,0,0,66475,0,66473,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66474,0,0,0,66882,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66479,0,0,0,0,0,66881,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66880,66880,0,0,0,0,0,0,0, + 0,0,0,0,66470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66472,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66879,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66878,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66877,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66465,0,0,0,0,0,0,0,0,0,66876,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66463,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66457,0,66464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66454,0,0,66461,0,0,0,66466,0,0,0, + 0,0,0,0,0,0,66460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,66459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66462,66456,0,0,0,0,0,0,0, + 0,0,0,66875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66458,131738,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66453,66451,0,0,0,0,0,0,0,0, + 0,0,0,66874,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66450,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66452,0,0,0,0,0,0,0,0,0,0,0,0,0,131736,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66455,0,0,0,0, + 66873,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131734, + 0,0,0,0,0,0,0,0,0,0,0,197207,0,0,0,0,0,0,0,0,0,0,0,0,66449,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66872,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131732,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66448,0, + 0,0,66871,0,0,0,0,0,0,0,0,0,0,0,0,66447,0,0,0,0,0,0,0,0,0,0,0,0,66446,0,0,0, + 0,0,0,0,0,0,0,0,66445,66870,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,66869,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,66868,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66444,0,0,0,0,0,0,0,0,0,0,0,0,66867,0, + 0,0,0,0,0,0,0,0,0,0,66443,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131758,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66441,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66866,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66440,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66865,0,0, + 0,0,0,0,0,0,0,66864,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66439,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66435,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66434,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66432, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66433,0,0,0,0,0,0,0,66437, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66863,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66862,0,0,0,0,66861,0, + 0,0,0,0,0,66860,0,0,0,0,0,0,0,0,0,66859,0,0,0,0,0,0,66858,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66857,0,0,0,0, + 0,0,0,66438,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66430,66436,0,0,0,0,0,0,0,0,0,0,0,0,0,197186,0,0,0, + 0,0,0,0,0,0,0,0,0,131692,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65888,0,0,0,0,0,0,0,66374,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65935,0,65935,0,0,0,0, + 0,0,0,0,0,65755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65930,65930,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,65935,0,65935,0,0,0,0,0,0,65933,0,0,0,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,197156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197144,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65933,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,262582,0, + 0,131512,65894,0,0,0,0,0,0,65779,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,65755,0,0,0,65935,0,65935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65977,65977,0,0,0,0,0,0,328079, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65936,65936,131506,131506,0,0,0, + 0,0,66856,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66853,0,0,0, + 0,0,0,0,0,66854,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66852,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66850,0,0,0,0,0, + 0,0,0,0,66851,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66849,0, + 0,0,0,0,0,0,0,0,0,0,0,0,66848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,66847,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66846,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66845,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66844,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66843,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66842,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66841,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66840,0,66840,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,66838,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66839, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131804,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66837,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,66364,0,0,0,0,0,66363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,66836,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66835,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66834,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66830,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66833, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66832,0,0,0,0,0,0,0,0,66831,0,0,0, + 0,0,0,66829,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66362,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66828,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,66827,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,66826,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66825,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66824,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66823,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66822,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66820,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66819,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66818,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,66817,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66361,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66816,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66815,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66814,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66813,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66812,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66811,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,66796,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66795,0,0,0,0,0,0,0, + 0,0,0,0,66792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66787,66786,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66784,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66783,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,66360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66762,0,0, + 0,0,0,0,0,0,66756,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66755,0,0,0,0,0, + 0,0,0,0,0,66753,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66742,0,0,0, + 0,0,0,0,0,0,0,131796,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66736,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66716,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66698,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66702,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,66700,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66697,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66691,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66686,0,0,0,0,0, + 0,0,0,66683,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66680,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,66669,0,0,0,0,0,0,0,0,0,0,0,0,0,66667,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66660,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66656,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66652,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,66650,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,66640,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66636,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66632,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66617,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,66600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66593,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,66581,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,66565,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66358,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66528,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,66526,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66521,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66503,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66498,0,0,0,0,0,0,0,0, + 0,0,0,0,0,66482,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66471, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66476,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,66469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66468,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66467,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66442,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66429,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,66428,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,66427,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66426,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66425,0,0,0,0,0,0,0,0,0,0,0,0,0, + 66424,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +KBTS_INLINE kbts_u32 kbts_GetUnicodeParentInfo(kbts_u32 Codepoint) +{ + return kbts_UnicodeParentInfo_Data[((kbts_un)kbts_UnicodeParentInfo_PageIndices[Codepoint/32] * 32) | (Codepoint & 31)]; +} + +static kbts_u8 kbts_UnicodeUseClass_PageIndices[4351] = { + 0,1,1,1,1,1,2,3,4,5,6,7,8,9,10,11,12,1,1,1,1,1,1,13,14,15,16,17,18,19,1,1, + 20,1,1,1,1,21,1,22,1,1,1,1,1,23,24,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,25,26,27,28,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,29,1,1,1,1,30,31,1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,1,46,47,48,49, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,50,50,50,51,50,50,50,50,50,50,50,50,50,50,50, + 50,50,50,52,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,53,1,1,1,1,1,1,1,1,54,55,1,56,1,57,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,58,59,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,60,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,61,62,1,63,64,1,1,1,65,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +}; + +static kbts_u8 kbts_UnicodeUseClass_Data[16896] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,21,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,29,29,29,29,29,29,29,29,0,0,0,0,0,0,1,0,0,29,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,0,0,0,0,1,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,36,9,1,36,33, + 36,35,35,35,35,34,34,34,34,36,36,36,36,3,33,36,0,29,30,0,0,34,35,35,1,1,1,1,1,1,1,1,1,1,35,35,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 2,29,31,31,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,0,0,9,1,36,33, + 36,35,35,35,35,0,0,33,33,0,0,33,33,3,0,0,0,0,0,0,0,0,0,36,0,0,0,0,1,1,0,1,1,1,35,35,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,6,0, + 0,29,29,31,0,1,1,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,9,0,36,33, + 36,35,35,0,0,0,0,34,34,0,0,34,34,3,0,0,0,30,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,29,8,2,2,0,12,0,0,0,0,0,0,0,0,0,0, + 0,29,29,31,0,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,0,9,1,36,33, + 36,35,35,35,35,34,0,34,34,34,0,36,36,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,35,35,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,29,8,29,8,8,8, + 0,29,31,31,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,0,9,1,36,34, + 36,35,35,35,35,0,0,33,33,0,0,33,33,3,0,0,0,0,0,0,0,34,34,34,0,0,0,0,1,1,0,1,1,1,35,35,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,29,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,36,36, + 34,36,36,0,0,0,33,33,33,0,33,33,33,3,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,31,31,31,29,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,9,1,34,34, + 34,36,36,36,36,0,34,34,34,0,34,34,34,3,0,0,0,0,0,0,0,34,35,0,1,1,1,0,0,0,0,0,1,1,35,35,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,29,31,31,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,9,1,36,34, + 34,36,36,36,36,0,34,34,34,0,34,34,34,3,0,0,0,0,0,0,0,36,36,0,0,0,0,0,0,0,1,0,1,1,35,35,0,0,1,1,1,1,1,1,1,1,1,1,0,37,37,31,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,31,31,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,34,1,36,36, + 36,35,35,35,35,0,33,33,33,0,33,33,33,3,38,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,1,1,1,35,35,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,29,31,31,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0, + 1,1,1,1,1,1,1,0,0,0,4,0,0,0,0,36,36,36,34,34,35,0,35,0,36,33,33,33,33,33,33,36,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,34,1,1,34,34,34,34,35,35,35,0,0,0,0,0, + 1,1,1,1,1,1,0,34,29,29,29,29,8,29,34,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,0,1,34,1,1,34,34,34,34,35,35,35,34,12,1,0,0, + 1,1,1,1,1,0,0,0,29,29,29,29,0,29,6,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,6,0,6,0,8,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,9,35,34,34,35,34,34,34,34,35,35,35,35,29,0, + 35,34,29,29,35,0,29,29,1,1,1,1,1,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0, + 0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,36,34,34,35,35,33,34,34,34,34,29,30,31,6,34,13,10,12,12,1, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,36,36,35,35,1,1,1,1,12,12,12,1,36,31,31,1,1,36,36,31,31,31,31,31,1,1,1,34,34,34,34,1,1,1,1,1,1,1,1,1,1,1, + 1,1,12,36,33,34,34,31,31,31,31,31,31,30,1,31,1,1,1,1,1,1,1,1,1,1,31,31,36,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,35,35,36,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,35,36,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,35,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,34,35,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,36,34,34,34,34,35,35,35,33,33, + 33,33,33,33,33,33,29,31,36,29,29,6,14,8,6,29,6,34,6,6,0,0,0,0,0,0,0,0,1,6,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, + 2,2,2,2,2,8,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,34,34,35,36,36,34,34,34,34,7,7,7,0,0,0,0,16,16,30,16,16,16,16,16,16,15,29,6,0,0,0,0, + 0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,31,31,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,34,33,36,34,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,12,7,14,14,11,7,7,7,7,0,5,36,34,36,36,34,34,34,34,35,35,34,35,36,33,33,33,33,33,34,29,29,29,29,29,29,34,29,29,0,0,30, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,14,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,36,34,34,35,35,35,35,34,34,33,33, + 33,33,34,34,3,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,14,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,34,35,33,36,34,34,36,6,7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,36,34,34,36,36,36,34,36,34,14,14,17,17,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,36,33,33,33,36,36,35,14,14,14,14,14,14,14,32,32,0,9,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,29,0,30,30,30,30,30,30,29,29,30,30,30,30,29,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,37,37,31,29,29,2,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,39,1,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0, + 0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,21,19,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,21,19,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,34,1,1,1,3,1,1,1,1,29,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,36,35,34,36,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 31,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,13,36,36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,3,29,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,1,1,0,0,0,0,0,0,0,0,0,0,1,34, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,34,34,34,34,30,30,30,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,35,35,35,34,35,35,35,35,14,14,14,16,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,14,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,36,36,34,34,35,35,33,33,34,12,13,12, + 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,34,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,34,34,34,35,34,33,33,34,35,13,10,11,12,0,0,0,0,0,0,0,0,0, + 1,1,1,14,1,1,1,1,1,1,1,1,14,16,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,2,2,2,0,0,0,1,31,29,31,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,35,1,35,35,34,1,1,35,35,1,1,1,1,1,35,29, + 1,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,33,35,34,33,36,0,0,0,0,0,31,6,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,36,34,36,36,35,36,36,0,31,35,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,35,35,35,0,34,35,0,0,0,0,0,36,30,30,29,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,9,9,9,0,0,0,0,6, + 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,29,29,8,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,34,34,34,34,34,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,34,34,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,30,30,30,30,30,30,30,30,30,30,30,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1, + 0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 31,29,31,37,37,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,34,34,34,35,35,35,35, + 35,35,34,34,34,34,3,0,0,0,0,0,0,0,0,0,0,0,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,1,1,1,1,1,1,1,1,1,1,34,1,1,34,34,1,0,0,0,0,0,0,0,0,0,40, + 29,29,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,33,36,35,35,34,34,36,36,3,9,0,0,0,0,0, + 0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,29,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,35,35,35,34,34,33,35,34,34,35,34,34,6,8,0,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,1,36,36,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,0,0,0,0,0,0,0,0,0,0,0,0, + 29,29,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,33,36,35,35,35,35,35,35,34,34,34,34, + 3,1,38,38,0,0,0,0,0,6,9,34,35,0,33,29,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,36,36,35,34,34,34,34,29,3,8,8,0,0,0,0,0,0,29,1, + 1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,36,33,36,35,35,34,34,34,34,9,35,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 29,29,31,31,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,9,9,1,36,36, + 34,36,36,36,36,0,0,33,33,0,0,33,33,3,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,1,1,1,1,36,36,0,0,29,29,29,29,29,29,29,0,0,0,29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,36,34,34,35,35,35,35,35, + 35,0,33,0,0,33,0,33,33,36,31,0,31,31,29,9,6,38,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,33,36,35,35,35,35,35,35,34,34, + 36,36,3,29,29,31,9,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,6,1,37,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,33,36,35,35,35,35,35,35,33,34,33,33,36,33,29, + 29,31,3,9,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,33,36,35,35,35,35,0,0,33,33,33,33,29,29,31,3, + 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,36,36,35,35,35,35,35,35,34,34,36,36,29,31,3, + 34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,31,34,33,36,35,35,34,34,34,34,3,9,1,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,12,3,11,36,36,34,34,35,35,33,34,35,34,34,34,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0, + 1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,33,36,35,35,35,35,34,34,34,34,29,31,3,9,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,36,36,36,36,33,0,33,33,0,0,29,29,36,6,38, + 13,38,13,9,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,33,36,35,35,35,35,0,0,34,34,36,36,31,31,3,1,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,34,35,35,34,34,34,34,34,34,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,35,29,29,29,29,31,37,7,7,7,7,0, + 0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,1,34,35,35,34,34,34,36,36,35,35,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,38,38,38,38,38,38,15,15,15,15,15,15,15,15,15,15,15,15,29,31,8,6,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,34,34,35,35,35,35,35,0,34,34,34,34,29,29,31,3, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,35,33,35,34,36,29,29,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,34,34,34,34,35,0,0,0,34,0,34,34,0,34, + 29,29,9,34,35,6,38,12,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,36,36,36,36,36,0,34,34,0,36,36,29,31,6,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,34,35,33,36,0,0,0,0,0,0,0,0,0, + 29,29,38,31,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,36,34,34,35,35,35,0,0,0,33,33, + 34,36,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,22,22,22,22,22,22,22,19,21,22,22,22,18,18,18,18, + 23,18,18,18,18,18,18,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,34,34,34,34,34,34,34,34,34,34,34,10,10,13,29,12,35,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,29,29,29,29,29,29,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 31,31,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,36,36,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,9,0,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35, + 35,35,35,35,35,35,35,35,0,0,0,0,0,0,0,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0, + 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,29,29,29,29,29,29,29,1,1,1,1,1,1,1,0,0, + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,29,29,29,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,34,34,34,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,35,35,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,8,8,8,8,8,8,8,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; + +KBTS_INLINE kbts_u8 kbts_GetUnicodeUseClass(kbts_u32 Codepoint) +{ + return kbts_UnicodeUseClass_Data[((kbts_un)kbts_UnicodeUseClass_PageIndices[Codepoint/256] * 256) | (Codepoint & 255)]; +} + +KBTS_INLINE kbts_u32 kbts_GetDecompositionSize(kbts_u64 Decomposition) +{ + return Decomposition & 3; +} + +KBTS_INLINE kbts_u32 kbts_GetDecompositionCodepoint(kbts_u64 Decomposition, kbts_un Index){ + return (Decomposition >> (Index ? 23 : 2)) & 0x1FFFFF; +} + +#define KBTS_UNICODE_DECOMPOSITION_DO_NOT_RECURSE0 (1ull << 44) +#define KBTS_UNICODE_DECOMPOSITION_DO_NOT_RECURSE1 (1ull << 45) + +KBTS_INLINE kbts_u32 kbts_GetMatchingBracket(kbts_u64 Decomposition) +{ + return (Decomposition >> 23) & 0x1FFFFF; +} + +KBTS_INLINE kbts_u32 kbts_GetUnicodeMatchingBracket(kbts_u32 Codepoint) +{ + kbts_u64 Decomposition = kbts_GetUnicodeDecomposition(Codepoint); return (Decomposition >> 23) & 0x1FFFFF; +} + +KBTS_INLINE kbts_u8 kbts_GetSyllabicClass(kbts_u16 SyllabicInfo) +{ + return SyllabicInfo & 0xFF; +} + +KBTS_INLINE kbts_u8 kbts_GetSyllabicPosition(kbts_u16 SyllabicInfo) +{ + return SyllabicInfo >> 8; +} + +KBTS_INLINE kbts_s32 *kbts_GetParentInfoDeltas(kbts_u32 ParentInfo) +{ + return kbts_UnicodeParentDeltas + (ParentInfo & 0xFFFF); +} + +KBTS_INLINE kbts_un kbts_GetParentInfoCount(kbts_u32 ParentInfo) +{ + return ParentInfo >> 16; +} + +typedef kbts_u8 kbts_grapheme_break_class; +enum kbts_grapheme_break_class_enum { + /* 0 */ KBTS_GRAPHEME_BREAK_CLASS_DEFAULT, + /* 1 */ KBTS_GRAPHEME_BREAK_CLASS_CR, + /* 2 */ KBTS_GRAPHEME_BREAK_CLASS_LF, + /* 3 */ KBTS_GRAPHEME_BREAK_CLASS_Control, + /* 4 */ KBTS_GRAPHEME_BREAK_CLASS_Extend, + /* 5 */ KBTS_GRAPHEME_BREAK_CLASS_ZWJ, + /* 6 */ KBTS_GRAPHEME_BREAK_CLASS_SpacingMark, + /* 7 */ KBTS_GRAPHEME_BREAK_CLASS_L, + /* 8 */ KBTS_GRAPHEME_BREAK_CLASS_V, + /* 9 */ KBTS_GRAPHEME_BREAK_CLASS_LV, + /* 10 */ KBTS_GRAPHEME_BREAK_CLASS_LVT, + /* 11 */ KBTS_GRAPHEME_BREAK_CLASS_T, + /* 12 */ KBTS_GRAPHEME_BREAK_CLASS_Prepend, + /* 13 */ KBTS_GRAPHEME_BREAK_CLASS_IndicConsonant, + /* 14 */ KBTS_GRAPHEME_BREAK_CLASS_IndicExtend, + /* 15 */ KBTS_GRAPHEME_BREAK_CLASS_IndicLinker, + /* 16 */ KBTS_GRAPHEME_BREAK_CLASS_ExtendedPictographic, + /* 17 */ KBTS_GRAPHEME_BREAK_CLASS_RI, + + KBTS_GRAPHEME_BREAK_CLASS_COUNT, +}; + +typedef kbts_u8 kbts_grapheme_break_state; +enum kbts_grapheme_break_state_enum { + /* 0 */ KBTS_GRAPHEME_BREAK_STATE_START, + /* 1 */ KBTS_GRAPHEME_BREAK_STATE_CR, + /* 2 */ KBTS_GRAPHEME_BREAK_STATE_L, + /* 3 */ KBTS_GRAPHEME_BREAK_STATE_LVxV, + /* 4 */ KBTS_GRAPHEME_BREAK_STATE_LVTxT, + /* 5 */ KBTS_GRAPHEME_BREAK_STATE_IndicConsonantxIndicLinker, + /* 6 */ KBTS_GRAPHEME_BREAK_STATE_IndicExtendr, + /* 7 */ KBTS_GRAPHEME_BREAK_STATE_IndicExtendLinkerr, + /* 8 */ KBTS_GRAPHEME_BREAK_STATE_ExtendedPictographic, + /* 9 */ KBTS_GRAPHEME_BREAK_STATE_ExtendR, + /* 10 */ KBTS_GRAPHEME_BREAK_STATE_ExtendR_ZWJ, + /* 11 */ KBTS_GRAPHEME_BREAK_STATE_RI, + /* 12 */ KBTS_GRAPHEME_BREAK_STATE_SKIP, + + /* 13 */ KBTS_GRAPHEME_BREAK_STATE_COUNT, + + /* 14 */ KBTS_GRAPHEME_BREAK_STATE_b0, + /* 15 */ KBTS_GRAPHEME_BREAK_STATE_b01, + // The values below have to be in the same order as their corresponding states. + /* 16 */ KBTS_GRAPHEME_BREAK_STATE_b1, + /* 17 */ KBTS_GRAPHEME_BREAK_STATE_b1toCR, + /* 18 */ KBTS_GRAPHEME_BREAK_STATE_b1toL, + /* 19 */ KBTS_GRAPHEME_BREAK_STATE_b1toLVxV, + /* 20 */ KBTS_GRAPHEME_BREAK_STATE_b1toLVTxT, + /* 21 */ KBTS_GRAPHEME_BREAK_STATE_b1toIndicConsonantxIndicLinker, + /* 22 */ KBTS_GRAPHEME_BREAK_STATE_PADDING0, + /* 23 */ KBTS_GRAPHEME_BREAK_STATE_PADDING1, + /* 24 */ KBTS_GRAPHEME_BREAK_STATE_b1toExtendedPictographic, + /* 25 */ KBTS_GRAPHEME_BREAK_STATE_PADDING2, + /* 26 */ KBTS_GRAPHEME_BREAK_STATE_PADDING3, + /* 27 */ KBTS_GRAPHEME_BREAK_STATE_b1toRI, + /* 28 */ KBTS_GRAPHEME_BREAK_STATE_b1toSKIP, +}; + +// In the SKIP column, CR, LF and Control all still break before the cursor +// because their rules have a higher priority. +// In Indic-related states, ZWJ should behave like an Indic Extend. +static kbts_grapheme_break_state kbts_GraphemeBreakTransition[KBTS_GRAPHEME_BREAK_CLASS_COUNT][KBTS_GRAPHEME_BREAK_STATE_COUNT] = { + /* 0 1 2 3 4 5 6 7 8 9 10 11 12 */ + /* 0 */ {16,16,16,16,16,16,16,16,16,16,16,16, 0}, + /* 1 */ {17,17,17,17,17,17,17,17,17,17,17,17,17}, + /* 2 */ {15,14,15,15,15,15,15,15,15,15,15,15,15}, + /* 3 */ {15,15,15,15,15,15,15,15,15,15,15,15,15}, + /* 4 */ { 0,16, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0}, + /* 5 */ { 0,16, 0, 0, 0, 6, 6, 7,10,10, 0, 0, 0}, + /* 6 */ { 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* 7 */ {18,18, 2,18,18,18,18,16,18,18,18,18, 2}, + /* 8 */ {19,19, 3, 3,19,19,19,16,19,19,19,19, 3}, + /* 9 */ {19,19, 3,19,19,19,19,16,19,19,19,19, 3}, + /* 10 */ {20,20, 4,20,20,20,20,16,20,20,20,20, 4}, + /* 11 */ {20,20,20, 4, 4,20,20,16,20,20,20,20, 4}, + /* 12 */ {28,28,28,28,28,28,28,28,28,28,28,28,12}, + /* 13 */ {21,21,21,21,21,21,21, 5,21,21,21,21, 5}, + /* 14 */ { 0,16, 0, 0, 0, 6, 6, 7, 9, 9, 0, 0, 0}, + /* 15 */ { 5,21, 5, 5, 5, 7, 7, 7, 5, 5, 5, 5, 5}, + /* 16 */ {24,24,24,24,24,24,24,16,24,24, 0,24, 8}, + /* 17 */ {27,27,27,27,27,27,27,27,27,27,27, 0,11}, +}; + +// These classes are for Indic, Myanmar and Khmer. +typedef kbts_u8 kbts_indic_syllabic_class; +enum kbts_indic_syllabic_class_enum { + /* 0 A */ KBTS_INDIC_SYLLABIC_CLASS_OTHER, + /* 1 B */ KBTS_INDIC_SYLLABIC_CLASS_CONSONANT, + /* 2 C */ KBTS_INDIC_SYLLABIC_CLASS_VOWEL, + /* 3 D */ KBTS_INDIC_SYLLABIC_CLASS_NUKTA, + /* 4 E */ KBTS_INDIC_SYLLABIC_CLASS_HALANT, + /* 5 F */ KBTS_INDIC_SYLLABIC_CLASS_ZWNJ, + /* 6 G */ KBTS_INDIC_SYLLABIC_CLASS_ZWJ, + /* 7 H */ KBTS_INDIC_SYLLABIC_CLASS_MATRA, + /* 8 I */ KBTS_INDIC_SYLLABIC_CLASS_SYLLABLE_MODIFIER, + /* 9 J */ KBTS_INDIC_SYLLABIC_CLASS_VEDIC_SIGN, + /* 10 K */ KBTS_INDIC_SYLLABIC_CLASS_PLACEHOLDER, + /* 11 L */ KBTS_INDIC_SYLLABIC_CLASS_DOTTED_CIRCLE, + /* 12 M */ KBTS_INDIC_SYLLABIC_CLASS_REGISTER_SHIFTER, + /* 13 N */ KBTS_INDIC_SYLLABIC_CLASS_MATRA_POST, + /* 14 O */ KBTS_INDIC_SYLLABIC_CLASS_REPHA, + /* 15 P */ KBTS_INDIC_SYLLABIC_CLASS_RA, + /* 16 Q */ KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_MEDIAL, + /* 17 R */ KBTS_INDIC_SYLLABIC_CLASS_SYMBOL, + /* 18 S */ KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_WITH_STACKER, + /* 19 T */ KBTS_INDIC_SYLLABIC_CLASS_SYLLABLE_MODIFIER_POST, + /* 20 U */ KBTS_INDIC_SYLLABIC_CLASS_VOWEL_ABOVE, + /* 21 V */ KBTS_INDIC_SYLLABIC_CLASS_VOWEL_BELOW, + /* 22 W */ KBTS_INDIC_SYLLABIC_CLASS_VOWEL_PRE, + /* 23 X */ KBTS_INDIC_SYLLABIC_CLASS_VOWEL_POST, + /* 24 Y */ KBTS_INDIC_SYLLABIC_CLASS_ROBATIC, + /* 25 Z */ KBTS_INDIC_SYLLABIC_CLASS_X_GROUP, + /* 26 a */ KBTS_INDIC_SYLLABIC_CLASS_Y_GROUP, + /* 27 b */ KBTS_INDIC_SYLLABIC_CLASS_ASAT, + /* 28 c */ KBTS_INDIC_SYLLABIC_CLASS_DOT_BELOW, + /* 29 d */ KBTS_INDIC_SYLLABIC_CLASS_SYLLABLE_MOD, + /* 30 e */ KBTS_INDIC_SYLLABIC_CLASS_MEDIAL_HA, + /* 31 f */ KBTS_INDIC_SYLLABIC_CLASS_MEDIAL_RA, + /* 32 g */ KBTS_INDIC_SYLLABIC_CLASS_MEDIAL_WA, + /* 33 h */ KBTS_INDIC_SYLLABIC_CLASS_MEDIAL_YA, + /* 34 i */ KBTS_INDIC_SYLLABIC_CLASS_PWO, + /* 35 j */ KBTS_INDIC_SYLLABIC_CLASS_VARIATION_SELECTOR, + /* 36 k */ KBTS_INDIC_SYLLABIC_CLASS_MEDIAL_MON_LA, + + KBTS_MYANMAR_SYLLABIC_CLASS_COUNT, + KBTS_INDIC_SYLLABIC_CLASS_COUNT = KBTS_INDIC_SYLLABIC_CLASS_SYLLABLE_MODIFIER_POST + 1, + KBTS_KHMER_SYLLABIC_CLASS_COUNT = KBTS_INDIC_SYLLABIC_CLASS_Y_GROUP + 1, +}; + +#define KBTS_INDIC_SYLLABIC_STATE_COUNT 41 +#define KBTS_MYANMAR_SYLLABIC_STATE_COUNT 31 +#define KBTS_KHMER_SYLLABIC_STATE_COUNT 23 + +// @Incomplete: Decrement every state by 1. +static kbts_u8 kbts_IndicSyllabicTransition[KBTS_INDIC_SYLLABIC_CLASS_COUNT][KBTS_INDIC_SYLLABIC_STATE_COUNT] = { + /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 */ + /* A */ {43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,}, + /* B */ {14,43,43,43,43,43,43,14,43,43,43,43,43,43,43,14,43,14,43,43,43,43,43,43,43,14,43,43,43,43,43,43,14,43,43,14,43,43,14,43,14,}, + /* C */ {30,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,30,43,43,43,43,43,43,43,43,43,43,43,43,30,43,43,}, + /* D */ {24,43,24,20,43,43,31,43,43,43, 7,43,43,24,43,33,43,43,43,43,43,43,43,12,43,24,43,43,43, 7,43,24,43,43,43,33,15,43,24,24,43,}, + /* E */ { 8,43, 8,21,27,43, 8,43,18,18, 8, 8,18, 8,43,43,43,43,43,21,43,43,43, 8,18, 8,43,38,43, 8, 8, 8,43,43,18,18,43,43, 8,26,43,}, + /* F */ {25,43,13,22,28, 2,13,15,19,19,13,13,19,25,29,29, 2,29,19,22,22,19, 2,13,19,35,15,19,43, 9,13,25,29,43,22,22,29,29,25,25,43,}, + /* G */ {13,43,13,22,28,43,10,16,19,19,10,13,19,32,29,29,43,16,19,22,22,19,43,13,19,36,37,19,43,10,10,13,29,43,22,22,29,37,13,32,43,}, + /* H */ { 4,43, 4, 4, 4,43, 4,43, 4, 4, 4, 4, 4, 4,43,43,43,43, 4, 4, 4, 4,43, 4, 4, 4,43, 4,43, 4, 4, 4,43,43, 4, 4,43,43, 4, 4,43,}, + /* I */ { 6,43, 6, 6, 6,23, 6,17, 6, 6, 6, 6, 6, 6,17,17,23,17,34, 6, 6, 6,43, 6, 6, 6,17, 6,17, 6, 6, 6,17,43, 6, 6,17,17, 6, 6,43,}, + /* J */ { 2, 2, 2, 2, 2, 2, 2, 2,43,43, 2, 2,43, 2, 2, 2, 2, 2,43, 2, 2,43, 2, 2,43, 2, 2,43,43, 2, 2, 2, 2,43, 2, 2, 2, 2, 2, 2,43,}, + /* K */ {32,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,32,43,32,}, + /* L */ {32,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,32,43,43,43,43,43,43,43,43,43,43,43,43,32,43,43,}, + /* M */ { 3,43,43,43,43,43,43,43,11,43,43,43,43, 3,43,43,43,43,43,43,43,43,43,43, 3, 3,43,43,43,11,43, 3,43,43, 3,43,43,43, 3, 3,43,}, + /* N */ { 4,43, 4, 4, 4, 4, 4,43, 4, 4, 4, 4, 4, 4,43,43,43,43, 4, 4, 4, 4,43, 4, 4, 4,43, 4,43, 4, 4, 4,43, 4, 4, 4,43,43, 4, 4,43,}, + /* O */ {39,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,}, + /* P */ {40,43,43,43,43,43,43,14,43,43,43,43,43,43,43,14,43,14,43,43,43,43,43,43,43,14,43,43,43,43,43,43,14,43,43,14,43,43,14,43,14,}, + /* Q */ { 5,43, 5,43,43,43, 5,43,43,43, 5, 5,43, 5,43,43,43,43,43,43,43,43,43, 5,43, 5,43,43,43, 5, 5, 5,43,43,43,43,43,43, 5, 5,43,}, + /* R */ {37,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,}, + /* S */ {41,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,}, + /* T */ { 6,43, 6, 6, 6,23, 6,17, 6, 6, 6, 6, 6, 6,17,17,23,17,34, 6, 6, 6,43, 6, 6, 6,17, 6,17, 6, 6, 6,17,43, 6, 6,17,17, 6, 6,43,}, +}; + +// @Incomplete: Decrement every state by 1. +static kbts_u8 kbts_MyanmarSyllabicTransition[KBTS_MYANMAR_SYLLABIC_CLASS_COUNT][KBTS_MYANMAR_SYLLABIC_STATE_COUNT] = { + /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 */ + /* A */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* B */ {18,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,18,33,33,33,33,33,33,33,33,18,18,33,18,}, + /* C */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* D */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* E */ {19,33,33,33,33,33,33,33,33,33,33,33,33,33,33,28,33,28,19,29,33,33,33,33,33,33,33,18,19,28,18,}, + /* F */ { 2,33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,33, 2, 2,33,}, + /* G */ { 2,33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,33, 2, 2,33,}, + /* H */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* I */ { 3,33, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,33, 3, 3,33,}, + /* J */ { 4,33,33, 4, 4, 4, 4, 4, 4,33, 4, 4, 4, 4,15, 4, 4, 4, 4, 4, 4, 4, 4, 4,33, 4,33,33, 4, 4, 4,}, + /* K */ {18,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,18,33,18,}, + /* L */ {18,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,18,33,18,}, + /* M */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* N */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* O */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* P */ {30,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,18,33,33,33,33,33,33,33,33,18,18,33,18,}, + /* Q */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* R */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* S */ {31,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* T */ { 3,33, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,33, 3, 3,33,}, + /* U */ { 5,33,33,33, 5,33, 5,22, 5,33, 5, 5, 5, 5,33, 5, 5, 5, 5, 5, 5,22,22,22,33, 5,33,33, 5, 5,33,}, + /* V */ { 6,33,33,33, 6, 6, 6,33, 6,33, 6, 6, 6, 6,33, 6, 6, 6, 6, 6, 6,33,33,33,33, 6,33,33, 6, 6,33,}, + /* W */ { 7,33,33,33,33,33, 7,33, 7,33, 7, 7, 7, 7,33, 7, 7, 7, 7, 7, 7,33,33,33,33, 7,33,33, 7, 7,33,}, + /* X */ { 8,33,33, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,33, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,33,33, 8, 8,33,}, + /* Y */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* Z */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* a */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* b */ { 9,33,33,33,33,33,33,23, 9,25,21,33,21,26, 3, 9,21, 9, 9, 9,33,33,23,23,33,33, 3,33, 9,20,33,}, + /* c */ {10,33,33,10,10,10,10,10,10,33,10,10,10,10,27,10,10,10,10,10,10,10,10,10,33,10,33,33,10,10,33,}, + /* d */ {33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,}, + /* e */ {11,33,33,33,33,33,33,24,11,33,33,11,11,11,33,11,33,11,11,11,33,33,33,33,33,11,33,33,11,11,33,}, + /* f */ {12,33,33,33,33,33,33,33,12,33,33,33,33,12,33,12,33,12,12,12,33,33,33,33,33,12,33,33,12,12,33,}, + /* g */ {13,33,33,33,33,33,33,33,13,33,33,13,33,13,33,13,33,13,13,13,33,33,33,33,33,13,33,33,13,13,33,}, + /* h */ {14,33,33,33,33,33,33,33,14,33,33,33,33,33,33,14,33,14,14,14,33,33,33,33,33,33,33,33,14,14,33,}, + /* i */ {15,33,15,15,15,15,15,15,15,15,15,15,15,15,33,15,15,15,15,15,15,15,15,15,15,15,15,33,15,15,33,}, + /* j */ {16,33,33,33,33,33,21,33,33,33,33,33,33,33,33,33,33,16,16,33,33,33,33,33,33,33,33,33,16,16,33,}, + /* k */ {17,33,33,33,33,33,33,23,17,33,17,17,17,17,33,17,33,17,17,17,33,33,33,23,33,17,33,33,17,17,33,}, +}; + +// @Incomplete: Decrement every state by 1. +static kbts_u8 kbts_KhmerSyllabicTransition[KBTS_KHMER_SYLLABIC_CLASS_COUNT][KBTS_KHMER_SYLLABIC_STATE_COUNT] = { + /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 */ + /* A */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* B */ {15,25,25,25,25,18,25,25,25,25,25,25,25,25,25,25,25,25,25,25, 2,25,25,}, + /* C */ {15,25,25,25,25,18,25,25,25,25,25,25,25,25,25,25,25,25,25,25, 2,25,25,}, + /* D */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* E */ {21,21,25,25,21,25,25, 6,25, 6,25, 6,25, 6,21,21,25,25,25,25,25, 6,25,}, + /* F */ { 4,17, 3, 3, 4,25, 7, 7,19, 9,20,11,13,13,23, 4, 3,25,19,20,25, 4, 3,}, + /* G */ { 4,17, 3, 3, 4,25, 7, 7,19, 9,20,11,13,13,23, 4, 3,25,19,20,25, 4, 3,}, + /* H */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* I */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* J */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* K */ {16,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* L */ {16,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* M */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* N */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* O */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* P */ {15,25,25,25,25,18,25,25,25,25,25,25,25,25,25,25,25,25,25,25, 2,25,25,}, + /* Q */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* R */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* S */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* T */ {25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,}, + /* U */ { 8, 8,25, 8, 8,25,25,25, 8, 8, 8, 8,25,25, 8, 8, 8,25,25,25,25, 8, 8,}, + /* V */ {10,10,25,25,10,25,25,25,25,25,25,10,25,25,10,10,25,25,25,25,25,10,25,}, + /* W */ {12,12,25,25,12,25,25,25,25,25,25,25,25,25,12,12,25,25,25,25,25,12,25,}, + /* X */ {14,14,25,25,14,25,25,14,25,14,25,14,25,25,14,14,25,25,25,25,25,14,25,}, + /* Y */ { 5, 5,25,25,25,25,25,25,25,25,25,25,25,25,16, 5, 5,25,25,25,25,25,16,}, + /* Z */ {22,22,22,22,22,25, 8, 8,10,10,12,12,14,14,22,22,22,25,10,12,25,22,22,}, + /* a */ {18,18,25,25,18,25,25,18,25,18,25,18,25,18,18,18,25,18,25,25,25,18,25,}, +}; + +typedef kbts_u8 kbts_use_syllabic_class; +enum kbts_use_syllabic_class_enum { + /* 0 */ KBTS_USE_SYLLABIC_CLASS_OTHER, + /* 1 */ KBTS_USE_SYLLABIC_CLASS_BASE, + /* 2 */ KBTS_USE_SYLLABIC_CLASS_BASE_OTHER, + /* 3 */ KBTS_USE_SYLLABIC_CLASS_HALANT, + /* 4 */ KBTS_USE_SYLLABIC_CLASS_HALANT_OR_VOWEL_MODIFIER, + /* 5 */ KBTS_USE_SYLLABIC_CLASS_SAKOT, + /* 6 */ KBTS_USE_SYLLABIC_CLASS_INVISIBLE_STACKER, + /* 7 */ KBTS_USE_SYLLABIC_CLASS_CONS_SUB, + /* 8 */ KBTS_USE_SYLLABIC_CLASS_CONS_MOD_ABOVE, + /* 9 */ KBTS_USE_SYLLABIC_CLASS_CONS_MOD_BELOW, + /* 10 */ KBTS_USE_SYLLABIC_CLASS_CONS_MED_PRE, + /* 11 */ KBTS_USE_SYLLABIC_CLASS_CONS_MED_ABOVE, + /* 12 */ KBTS_USE_SYLLABIC_CLASS_CONS_MED_BELOW, + /* 13 */ KBTS_USE_SYLLABIC_CLASS_CONS_MED_POST, + /* 14 */ KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_ABOVE, + /* 15 */ KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_BELOW, + /* 16 */ KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_POST, + /* 17 */ KBTS_USE_SYLLABIC_CLASS_REORDERING_KILLER, + /* 18 */ KBTS_USE_SYLLABIC_CLASS_HIEROGLYPH, + /* 19 */ KBTS_USE_SYLLABIC_CLASS_HIEROGLYPH_SEGMENT_BEGIN, + /* 20 */ KBTS_USE_SYLLABIC_CLASS_HIEROGLYPH_MOD, + /* 21 */ KBTS_USE_SYLLABIC_CLASS_HIEROGLYPH_SEGMENT_END, + /* 22 */ KBTS_USE_SYLLABIC_CLASS_HIEROGLYPH_JOINER, + /* 23 */ KBTS_USE_SYLLABIC_CLASS_HIEROGLYPH_MIRROR, + /* 24 */ KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_MOD_ABOVE, + /* 25 */ KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_MOD_BELOW, + /* 26 */ KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_MOD_POST, + /* 27 */ KBTS_USE_SYLLABIC_CLASS_SYMBOL_MOD_ABOVE, + /* 28 */ KBTS_USE_SYLLABIC_CLASS_SYMBOL_MOD_BELOW, + /* 29 */ KBTS_USE_SYLLABIC_CLASS_VOWEL_MOD_ABOVE, + /* 30 */ KBTS_USE_SYLLABIC_CLASS_VOWEL_MOD_BELOW, + /* 31 */ KBTS_USE_SYLLABIC_CLASS_VOWEL_MOD_POST, + /* 32 */ KBTS_USE_SYLLABIC_CLASS_VOWEL_MOD_PRE, + /* 33 */ KBTS_USE_SYLLABIC_CLASS_VOWEL_PRE, + /* 34 */ KBTS_USE_SYLLABIC_CLASS_VOWEL_ABOVE, + /* 35 */ KBTS_USE_SYLLABIC_CLASS_VOWEL_BELOW, + /* 36 */ KBTS_USE_SYLLABIC_CLASS_VOWEL_POST, + /* 37 */ KBTS_USE_SYLLABIC_CLASS_CONSONANT_WITH_STACKER, + /* 38 */ KBTS_USE_SYLLABIC_CLASS_REPHA, + /* 39 */ KBTS_USE_SYLLABIC_CLASS_ZWNJ, + /* 40 */ KBTS_USE_SYLLABIC_CLASS_HALANT_NUM, + /* 41 */ KBTS_USE_SYLLABIC_CLASS_BASE_NUM, + + KBTS_USE_SYLLABIC_CLASS_COUNT, +}; + +enum +{ + KBTS_USE_STATE_s0 = 42, +}; + +// @Incomplete: Decrement every state by 1. +static kbts_u8 kbts_UseTransition[KBTS_USE_SYLLABIC_CLASS_COUNT][KBTS_USE_STATE_s0] = { + /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 */ + /* A */ {24,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,}, + /* B */ {15,44,44,44,44,44,44,44,44,15,15,44,44,15,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,37,44,37,44,44,44,44,44,44,44,44,44,44,}, + /* C */ {24,44,44,44,44,44,44,44,44,15,15,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,}, + /* D */ {14,44,44,44,44,44,44,44,44,44,14,44,44,44,14,14,31,31,31,31,44,44,44,14,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,14,}, + /* E */ {14,44,44,44,44, 5, 5, 5, 5,44,14,44,44, 5,14,14,31,31,31,31,44,44,44,14,44,44,44,44,44,44, 5, 5,44,44,44,44,44,44,44,44,44,14,}, + /* F */ {14,30,30,30,30,30,30,30,30,44,14,44,44,30,14,14,32,32,32,32,44,44,44,14,44,44,44,44,44,44,30,30,44,44,44,44,30,44,44,44,44,14,}, + /* G */ {14,44,44,44,44,44,44,44,44,44,14,44,44,44,14,14,31,31,31,31,44,44,44,14,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,14,}, + /* H */ {15,44,44,44,44,44,44,44,44,44,15,44,44,44,15,15,44,44,44,44,44,44,44,15,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,15,}, + /* I */ {15,44,44,44,44,44,44,44,44,44,15,44,44,44,15,44,44,44,44,44,44,44,44,15,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,15,}, + /* J */ {16,44,44,44,44,44,44,44,44,44,16,44,44,44,16,16,44,44,44,44,44,44,44,16,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,16,}, + /* K */ {17,44,44,44,44,44,44,44,44,44,17,44,44,44,17,17,44,44,44,44,44,44,44,17,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,17,}, + /* L */ {18,44,44,44,44,44,44,44,44,44,18,44,44,44,18,18,18,44,44,44,44,44,44,18,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,18,}, + /* M */ {19,44,44,44,44,44,44,44,44,44,19,44,44,44,19,19,19,19,44,44,44,44,44,19,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,19,}, + /* N */ {20,44,44,44,44,44,44,44,44,44,20,44,44,44,20,20,20,20,20,44,44,44,44,20,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,20,}, + /* O */ {21,21,21,21,21,21,21,21,21,44,21,44,44,21,21,21,21,21,21,21,21,44,44,21,44,44,44,44,44,44,21,21,44,44,44,44,21,44,44,44,44,21,}, + /* P */ {22,22,22,22,22,22,22,22,22,44,22,44,44,22,22,22,22,22,22,22,22,22,44,22,44,44,44,44,44,44,22,22,44,44,44,44,22,44,44,44,44,22,}, + /* Q */ {23,23,23,23,23,23,23,23,23,44,23,44,44,23,23,23,23,23,23,23,23,23,23,23,44,44,44,44,44,44,23,23,44,44,44,44,23,44,44,44,44,23,}, + /* R */ {25,44,44,44,44,44,44,44,44,44,25,44,44,44,25,25,44,44,44,44,44,44,44,25,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,25,}, + /* S */ {41,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,38,44,41,44,44,44,44,44,41,}, + /* T */ {42,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,34,44,36,44,39,39,39,44,36,}, + /* U */ {44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,33,44,44,39,44,39,33,44,}, + /* V */ {44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,33,44,33,44,44,44,44,44,33,44,}, + /* W */ {44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,34,34,34,44,44,34,34,34,34,44,}, + /* X */ {44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,40,44,44,35,44,}, + /* Y */ {26,26,26,26,26,26,26,26,26,44,26,44,44,26,26,26,26,26,26,26,26,26,26,26,44,26,44,44,44,44,26,26,44,44,44,44,26,44,44,44,44,26,}, + /* Z */ {27,27,27,27,27,27,27,27,27,44,27,44,44,27,27,27,27,27,27,27,27,27,27,27,44,27,27,44,44,44,27,27,44,44,44,44,27,44,44,44,44,27,}, + /* a */ {25,25,25,25,25,25,25,25,25,44,25,44,44,25,25,25,25,25,25,25,25,25,25,25,44,44,44,44,44,44,25,25,44,44,44,44,25,44,44,44,44,25,}, + /* b */ {28,44,44,44,44,44,44,44,44,44,11,44,44,44,44,44,44,44,44,44,44,44,44,28,44,44,44,28,44,44,44,44,44,44,44,44,44,44,44,44,44,28,}, + /* c */ {29,44,44,44,44,44,44,44,44,44,29,44,44,44,44,44,44,44,44,44,44,44,44,29,44,44,44,29,29,44,44,44,44,44,44,44,44,44,44,44,44,29,}, + /* d */ { 2, 2,44,44, 2, 2, 2, 2, 2,44, 2,44,44, 2, 2, 2, 2, 2, 2, 2,44,44,44, 2,44,44,44,44,44,44, 2, 2,44,44,44,44,44,44,44,44,44, 2,}, + /* e */ { 3, 3, 3,44, 3, 3, 3, 3, 3,44, 3,44,44, 3, 3, 3, 3, 3, 3, 3,44,44,44, 3,44,44,44,44,44,44, 3, 3,44,44,44,44,44,44,44,44,44, 3,}, + /* f */ { 4, 4, 4,44, 4, 4, 4, 4, 4,44, 4,44,44, 4, 4, 4, 4, 4, 4, 4,44,44,44, 4,44,44,44,44,44,44, 4, 4,44,44,44,44,44,44,44,44,44, 4,}, + /* g */ { 5,44,44,44, 5, 5, 5, 5, 5,44, 5,44,44, 5, 5, 5, 5, 5, 5, 5,44,44,44, 5,44,44,44,44,44,44, 5, 5,44,44,44,44,44,44,44,44,44, 5,}, + /* h */ { 6,44,44,44,44, 6,44,44,44,44, 6,44,44,44, 6, 6, 6, 6, 6, 6,44,44,44, 6,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, 6,}, + /* i */ { 7,44,44,44,44, 7, 7,44,44,44, 7,44,44,44, 7, 7, 7, 7, 7, 7,44,44,44, 7,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, 7,}, + /* j */ { 8,44,44,44,44, 8, 8, 8,44,44, 8,44,44,44, 8, 8, 8, 8, 8, 8,44,44,44, 8,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, 8,}, + /* k */ { 9,44,44,44,44, 9, 9, 9, 9,44, 9,44,44,44, 9, 9, 9, 9, 9, 9,44,44,44, 9,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, 9,}, + /* l */ {10,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,}, + /* m */ {11,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,}, + /* n */ {44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,}, + /* o */ {12,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,}, + /* p */ {13,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,}, +}; + +static const kbts_u8 kbts_CmapFormatPrecedence[14] = {1, 0, 1, 0, 2, 0, 1, 0, 3, 0, 3, 0, 4, 5}; + +static int kbts_ShaperClearsMarkAdvancesInPostGposFixup(kbts_u32 Shaper) +{ + int Result = (1 << Shaper) & ((1 << KBTS_SHAPER_ARABIC) | (1 << KBTS_SHAPER_DEFAULT) | (1 << KBTS_SHAPER_HEBREW)); + return Result; +} + +static kbts_indic_script_properties kbts_IndicScriptProperties(kbts_u32 Script) +{ + kbts_indic_script_properties Result = KBTS_ZERO; + + switch(Script) + { + case KBTS_SCRIPT_DEVANAGARI: + { + Result.ViramaCodepoint = 0x94D; + Result.RephPosition = KBTS_REPH_POSITION_BEFORE_POST; + Result.RightSideMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED; + Result.AboveBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED; + Result.BelowBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED; + } + break; + + case KBTS_SCRIPT_BENGALI: + { + Result.ViramaCodepoint = 0x9CD; + Result.RephPosition = KBTS_REPH_POSITION_AFTER_SUBJOINED; + Result.RightSideMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + Result.BelowBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED; + } + break; + + case KBTS_SCRIPT_GUJARATI: + { + Result.ViramaCodepoint = 0xACD; + Result.RephPosition = KBTS_REPH_POSITION_BEFORE_POST; + Result.RightSideMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + Result.AboveBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED; + Result.BelowBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + } + break; + + case KBTS_SCRIPT_GURMUKHI: + { + Result.ViramaCodepoint = 0xA4D; + Result.RephPosition = KBTS_REPH_POSITION_BEFORE_SUBJOINED; + Result.RightSideMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + Result.AboveBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + Result.BelowBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + } + break; + + case KBTS_SCRIPT_KANNADA: + { + Result.ViramaCodepoint = 0xCCD; + Result.BlwfPostOnly = 1; + Result.AboveBaseMatraPosition = KBTS_SYLLABIC_POSITION_BEFORE_SUBJOINED; + Result.BelowBaseMatraPosition = KBTS_SYLLABIC_POSITION_BEFORE_SUBJOINED; + } + break; + + case KBTS_SCRIPT_MALAYALAM: + { + Result.ViramaCodepoint = 0xD4D; + Result.RephPosition = KBTS_REPH_POSITION_AFTER_MAIN; + Result.RephEncoding = KBTS_REPH_ENCODING_LOGICAL_REPHA; + Result.RightSideMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + Result.BelowBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + } + break; + + case KBTS_SCRIPT_ODIA: + { + Result.ViramaCodepoint = 0xB4D; + Result.RephPosition = KBTS_REPH_POSITION_AFTER_MAIN; + Result.RightSideMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + Result.AboveBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_MAIN; + Result.BelowBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED; + } + break; + + case KBTS_SCRIPT_TAMIL: + { + Result.ViramaCodepoint = 0xBCD; + Result.RightSideMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + Result.AboveBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED; + Result.BelowBaseMatraPosition = KBTS_SYLLABIC_POSITION_AFTER_POST; + } + break; + + case KBTS_SCRIPT_TELUGU: + { + Result.ViramaCodepoint = 0xC4D; + Result.RephEncoding = KBTS_REPH_ENCODING_EXPLICIT; + Result.BlwfPostOnly = 1; + Result.AboveBaseMatraPosition = KBTS_SYLLABIC_POSITION_BEFORE_SUBJOINED; + Result.BelowBaseMatraPosition = KBTS_SYLLABIC_POSITION_BEFORE_SUBJOINED; + } + break; + } + + return Result; +} + +static void kbts_ByteSwapArray16(kbts_u16 *Array, kbts_un Count) +{ + KBTS_FOR(It, 0, Count) + { + Array[It] = kbts_ByteSwap16(Array[It]); + } +} + +static void kbts_ByteSwapArray32(kbts_u32 *Array, kbts_un Count) +{ + KBTS_FOR(It, 0, Count) + { + Array[It] = kbts_ByteSwap32(Array[It]); + } +} + +static kbts_u64 kbts_ContainsFeature(kbts_feature_set *Set, kbts_feature_id Id) +{ + kbts_un WordIndex = Id / 64; + kbts_un BitIndex = Id % 64; + + kbts_u64 Result = Set->Flags[WordIndex] & (1ull << BitIndex); + return Result; +} + +static void kbts_AddFeature(kbts_feature_set *Set, kbts_feature_id Id) +{ + kbts_un WordIndex = Id / 64; + kbts_un BitIndex = Id % 64; + + Set->Flags[WordIndex] |= 1ull << BitIndex; +} + +KBTS_EXPORT kbts_feature_override kbts_FeatureOverride(kbts_feature_id Id, int Alternate, kbts_u32 Value) +{ + kbts_feature_override Result = KBTS_ZERO; + Result.Id = Id; + if(Alternate) + { + Result.EnabledOrAlternatePlusOne = Value + 1; + } + else + { + Result.EnabledOrAlternatePlusOne = Value; + } + return Result; +} + +KBTS_EXPORT kbts_glyph_config kbts_GlyphConfig(kbts_feature_override *FeatureOverrides, kbts_u32 FeatureOverrideCount) +{ + kbts_glyph_config Result = KBTS_ZERO; + Result.FeatureOverrides = FeatureOverrides; + Result.FeatureOverrideCount = FeatureOverrideCount; + + KBTS_FOR(FeatureOverrideIndex, 0, FeatureOverrideCount) + { + kbts_feature_override *Override = &FeatureOverrides[FeatureOverrideIndex]; + if(Override->EnabledOrAlternatePlusOne) + { + kbts_AddFeature(&Result.EnabledFeatures, FeatureOverrides[FeatureOverrideIndex].Id); + } + else + { + kbts_AddFeature(&Result.DisabledFeatures, FeatureOverrides[FeatureOverrideIndex].Id); + } + } + + return Result; +} + +// +// TTF struct definitions. +// + +enum +{ + KBTS_GLYPH_CLASS_BASE = 1, + KBTS_GLYPH_CLASS_LIGATURE = 2, + KBTS_GLYPH_CLASS_MARK = 3, + KBTS_GLYPH_CLASS_COMPONENT = 4, +}; + +enum +{ + KBTS_LOOKUP_FLAG_RIGHT_TO_LEFT = 1 << 0, + KBTS_LOOKUP_FLAG_IGNORE_BASE_GLYPHS = 1 << 1, + KBTS_LOOKUP_FLAG_IGNORE_LIGATURES = 1 << 2, + KBTS_LOOKUP_FLAG_IGNORE_MARKS = 1 << 3, + KBTS_LOOKUP_FLAG_USE_MARK_FILTERING_SET = 1 << 4, + + KBTS_LOOKUP_FLAG_MARK_ATTACHMENT_CLASS_FILTER = 0xFF00, +}; + +enum +{ + KBTS_VALUE_FORMAT_X_PLACEMENT = 1 << 0, + KBTS_VALUE_FORMAT_Y_PLACEMENT = 1 << 1, + KBTS_VALUE_FORMAT_X_ADVANCE = 1 << 2, + KBTS_VALUE_FORMAT_Y_ADVANCE = 1 << 3, + KBTS_VALUE_FORMAT_X_PLACEMENT_DEVICE = 1 << 4, + KBTS_VALUE_FORMAT_Y_PLACEMENT_DEVICE = 1 << 5, + KBTS_VALUE_FORMAT_X_ADVANCE_DEVICE = 1 << 6, + KBTS_VALUE_FORMAT_Y_ADVANCE_DEVICE = 1 << 7, +}; + +enum +{ + KBTS_DELTA_FORMAT_2_BIT = 1, + KBTS_DELTA_FORMAT_4_BIT = 2, + KBTS_DELTA_FORMAT_8_BIT = 3, + KBTS_DELTA_FORMAT_VARIATION_INDEX = 0x8000, +}; + +# pragma pack(push, 1) + +typedef struct kbts_glyph_header +{ + kbts_s16 ContourCount; + kbts_s16 MinX; + kbts_s16 MinY; + kbts_s16 MaxX; + kbts_s16 MaxY; +} kbts_glyph_header; + +typedef struct kbts_script_record +{ + kbts_u32 Tag; + kbts_u16 Offset; +} kbts_script_record; + +typedef struct kbts_script_list +{ + kbts_u16 Count; + // kbts_script_record Records[Count]; +} kbts_script_list; + +typedef struct kbts_ot_script +{ + kbts_u16 DefaultLangsysOffset; + kbts_u16 Count; + // kbts_langsys_record Records[Count]; +} kbts_ot_script; + +typedef struct kbts_langsys_record +{ + kbts_u32 Tag; + kbts_u16 Offset; +} kbts_langsys_record; + +typedef struct kbts_langsys +{ + kbts_u16 LookupOrderOffset; // reserved + kbts_u16 RequiredFeatureIndex; + kbts_u16 FeatureIndexCount; + // kbts_u16 FeatureIndices[FeatureIndexCount]; +} kbts_langsys; + +typedef struct kbts_feature_list +{ + kbts_u16 Count; + // kbts_feature_record Records[Count]; +} kbts_feature_list; + +typedef struct kbts_feature_record +{ + kbts_u32 Tag; + kbts_u16 Offset; +} kbts_feature_record; + +typedef struct kbts_feature +{ + kbts_u16 FeatureParamsOffset; + kbts_u16 LookupIndexCount; + // kbts_u16 LookupIndices[LookupIndexCount]; +} kbts_feature; + +typedef struct kbts_lookup_list +{ + kbts_u16 Count; + // kbts_u16 Offsets[Count]; +} kbts_lookup_list; + +// Lookups are used both in GSUB and GPOS. +// Type means either GSUB Lookup Type, or GPOS Lookup Type, depending on the table we are parsing. +typedef struct kbts_lookup +{ + kbts_u16 Type; + kbts_u16 Flag; + kbts_u16 SubtableCount; + // kbts_u16 SubtableOffsets[SubtableCount]; + // If USE_MARK_FILTERING_SET: + // kbts_u16 MarkFilteringSet; +} kbts_lookup; + +typedef struct kbts_coverage +{ + kbts_u16 Format; + kbts_u16 Count; + // If Format == 1: + // kbts_u16 GlyphArray[Count]; + // If Format == 2: + // kbts_range_record Ranges[Count]; +} kbts_coverage; + +typedef struct kbts_range_record +{ + kbts_u16 StartGlyphId; + kbts_u16 EndGlyphId; + kbts_u16 StartCoverageIndex; +} kbts_range_record; + +typedef struct kbts_class_definition_1 +{ + kbts_u16 Format; + kbts_u16 StartGlyphId; + kbts_u16 GlyphCount; + // kbts_u16 ClassValues[GlyphCount]; +} kbts_class_definition_1; + +typedef struct kbts_class_definition_2 +{ + kbts_u16 Format; + kbts_u16 Count; + // kbts_class_range_record Ranges[Count]; +} kbts_class_definition_2; + +typedef struct kbts_class_range_record +{ + kbts_u16 StartGlyphId; + kbts_u16 EndGlyphId; + kbts_u16 Class; +} kbts_class_range_record; + +typedef struct kbts_sequence_lookup_record +{ + kbts_u16 SequenceIndex; + kbts_u16 LookupListIndex; +} kbts_sequence_lookup_record; + +typedef struct kbts_sequence_rule +{ + kbts_u16 GlyphCount; + kbts_u16 SequenceLookupCount; + // kbts_u16 InputSequence[GlyphCount - 1]; + // kbts_sequence_lookup_record SequenceLookupRecords[SequenceLookupCount]; +} kbts_sequence_rule; + +typedef struct kbts_sequence_rule_set +{ + kbts_u16 Count; + // kbts_u16 Offsets[Count]; +} kbts_sequence_rule_set; + +typedef struct kbts_sequence_context_1 +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 SeqRuleSetCount; + // kbts_u16 SeqRuleSetOffsets[]; +} kbts_sequence_context_1; + +typedef struct kbts_sequence_context_2 +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 ClassDefOffset; + kbts_u16 ClassSequenceRuleSetCount; + // kbts_u16 ClassSequenceRuleSetOffsets[ClassSequenceRuleSetCount]; May be NULL! +} kbts_sequence_context_2; + +typedef struct kbts_class_sequence_rule_set +{ + kbts_u16 Count; + // kbts_u16 ClassSequenceRuleOffsets[Count]; +} kbts_class_sequence_rule_set; + +typedef struct kbts_class_sequence_rule +{ + kbts_u16 GlyphCount; + kbts_u16 SequenceLookupCount; + // kbts_u16 InputSequence[GlyphCount-1]; + // kbts_sequence_lookup_record SequenceLookupRecords[SequenceLookupCount]; +} kbts_class_sequence_rule; + +typedef struct kbts_sequence_context_3 +{ + kbts_u16 Format; + kbts_u16 GlyphCount; + kbts_u16 SequenceLookupCount; + // kbts_u16 CoverageOffsets[GlyphCount]; + // kbts_sequence_lookup_record SequenceLookupRecords[SequenceLookupCount]; +} kbts_sequence_context_3; + +typedef struct kbts_chained_sequence_context_1 +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 ChainedSequenceRuleSetCount; + // kbts_u16 ChainedSequenceRuleSetOffsets[ChainedSequenceRuleSetCount]; +} kbts_chained_sequence_context_1; + +typedef struct kbts_chained_sequence_rule_set +{ + kbts_u16 Count; + // kbts_u16 Offsets[Count]; +} kbts_chained_sequence_rule_set; + +typedef struct kbts_chained_sequence_rule +{ + kbts_u16 BacktrackGlyphCount; + // kbts_u16 BacktrackSequence[BacktrackCount]; + // kbts_u16 InputGlyphCount; + // kbts_u16 InputSequence[InputGlyphCount - 1]; + // kbts_u16 LookaheadGlyphCount; + // kbts_u16 LookaheadSequence[LookaheadGlyphCount]; + // kbts_u16 SequenceLookupCount; + // kbts_sequence_lookup_record SequenceLookupRecords[SequenceLookupCount]; +} kbts_chained_sequence_rule; + +typedef struct kbts_chained_sequence_context_2 +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 BacktrackClassDefOffset; + kbts_u16 InputClassDefOffset; + kbts_u16 LookaheadClassDefOffset; + kbts_u16 ChainedClassSequenceRuleSetCount; + // kbts_u16 ChainedClassSequenceRuleSetOffsets[ChainedClassSequenceRuleSetCount]; +} kbts_chained_sequence_context_2; + +typedef struct kbts_chained_sequence_context_3 +{ + kbts_u16 Format; + kbts_u16 BacktrackGlyphCount; + // kbts_u16 BacktrackCoverageOffsets[BacktrackGlyphCount]; + // kbts_u16 InputGlyphCount; + // kbts_u16 InputCoverageOffsets[InputGlyphCount]; + // kbts_u16 LookaheadGlyphCount; + // kbts_u16 LookaheadCoverageOffsets[LookaheadGlyphCount]; + // kbts_u16 SequenceLookupCount; + // kbts_sequence_lookup_record SequenceLookupRecords[SequenceLookupCount]; +} kbts_chained_sequence_context_3; + +typedef struct kbts_device +{ + union + { + struct + { + kbts_u16 StartSize; + kbts_u16 EndSize; + } Device; + + struct + { + kbts_u16 DeltaSetOuterIndex; + kbts_u16 DeltaSetInnerIndex; + } VariationIndex; + } U; + kbts_u16 DeltaFormat; + // kbts_u16 DeltaValue[]; +} kbts_device; + +typedef struct kbts_feature_variations +{ + kbts_u16 Major; + kbts_u16 Minor; + kbts_u32 RecordCount; + // kbts_feature_variation_record Records[RecordCount]; +} kbts_feature_variations; + +typedef struct kbts_feature_variation_record +{ + kbts_u32 ConditionSetOffset; + kbts_u32 FeatureTableSubstitutionOffset; +} kbts_feature_variation_record; + +typedef struct kbts_condition_set +{ + kbts_u16 Count; + // kbts_u32 Offsets[Count]; +} kbts_condition_set; + +typedef struct kbts_condition_1 +{ + kbts_u16 Format; + kbts_u16 AxisIndex; + kbts_u16 FilterRangeMinValue; + kbts_u16 FilterRangeMaxValue; +} kbts_condition_1; + +typedef struct kbts_feature_table_substitution +{ + kbts_u16 Major; + kbts_u16 Minor; + kbts_u16 Count; + // kbts_feature_table_substitution_record Records[Count]; +} kbts_feature_table_substitution; + +typedef struct kbts_feature_table_substitution_record +{ + kbts_u16 FeatureIndex; + kbts_u32 AlternateFeatureOffset; +} kbts_feature_table_substitution_record; + +typedef struct kbts_table_directory +{ + kbts_u32 Version; + kbts_u16 TableCount; + kbts_u16 SearchRange; + kbts_u16 EntrySelector; + kbts_u16 RangeShift; + // kbts_table_record Records[TableCount]; +} kbts_table_directory; + +typedef struct kbts_table_record +{ + kbts_u32 Tag; + kbts_u32 Checksum; + kbts_u32 Offset; + kbts_u32 Length; +} kbts_table_record; + +typedef struct kbts_cmap +{ + kbts_u16 Version; + kbts_u16 TableCount; + // kbts_encoding_record Records[TableCount]; +} kbts_cmap; + +typedef struct kbts_encoding_record +{ + kbts_u16 PlatformId; + kbts_u16 EncodingId; + kbts_u32 SubtableOffset; +} kbts_encoding_record; + +/* Precedence rules for cmap tables: + - Tables are mutually exclusive, except for format 14 which completes the others. + - 8, 10, 12 > 0, 2, 4, 6 + - Formats 4, 12, 13, 14 are used today. + - Formats 4 and 12 are basic cmap tables. + - Format 13 is for fallback fonts that want to map lots of codepoints to a few fallback glyphs. + - Format 14 is for Unicode Variation Sequences. + - There can be Unicode and Windows tables with the same formats. In that case, we prefer the Windows tables. +*/ + +typedef struct kbts_cmap_0 +{ + kbts_u16 Format; + kbts_u16 Length; + kbts_u16 Language; + kbts_u8 GlyphIdArray[256]; +} kbts_cmap_0; + +typedef struct kbts_cmap_2 +{ + kbts_u16 Format; + kbts_u16 Length; + kbts_u16 Language; + kbts_u16 SubHeaderKeys[256]; + // kbts_sub_header SubHeaders[]; + // kbts_u16 GlyphIdArray[]; +} kbts_cmap_2; + +typedef struct kbts_sub_header +{ + kbts_u16 FirstCode; + kbts_u16 EntryCount; + kbts_s16 IdDelta; + kbts_u16 IdRangeOffset; +} kbts_sub_header; + +typedef struct kbts_cmap_4 +{ + kbts_u16 Format; + kbts_u16 Length; + kbts_u16 Language; + kbts_u16 SegmentCountTimesTwo; + kbts_u16 SearchRange; + kbts_u16 EntrySelector; + kbts_u16 RangeShift; + // kbts_u16 EndCode[SegmentCount]; + // kbts_u16 Reserved; + // kbts_u16 StartCode[SegmentCount]; + // kbts_s16 IdDelta[SegmentCount]; + // kbts_u16 IdRangeOffsets[SegmentCount]; + // kbts_u16 GlyphIdArray[]; +} kbts_cmap_4; + +typedef struct kbts_cmap_6 +{ + kbts_u16 Format; + kbts_u16 Length; + kbts_u16 Language; + kbts_u16 FirstCode; + kbts_u16 EntryCount; + // kbts_u16 GlyphIdArray[EntryCount]; +} kbts_cmap_6; + +typedef struct kbts_cmap_12_13 +{ + kbts_u16 Format; + kbts_u16 Reserved; + kbts_u32 Length; + kbts_u32 Language; + kbts_u32 GroupCount; + // kbts_sequential_map_group Groups[GroupCount]; +} kbts_cmap_12_13; + +typedef struct kbts_sequential_map_group +{ + kbts_u32 StartCharacterCode; + kbts_u32 EndCharacterCode; + kbts_u32 StartGlyphId; +} kbts_sequential_map_group; + +typedef struct kbts_cmap_14 +{ + kbts_u16 Format; + kbts_u32 Length; + kbts_u32 SelectorCount; + // kbts_variation_selector Selectors[SelectorCount]; +} kbts_cmap_14; + +typedef struct kbts_variation_selector +{ + kbts_u8 Selector[3]; + kbts_u32 DefaultUvsOffset; + kbts_u32 NonDefaultUvsOffset; +} kbts_variation_selector; + +typedef struct kbts_default_uvs +{ + kbts_u32 RangeCount; + // kbts_unicode_range Ranges[RangeCount]; +} kbts_default_uvs; + +typedef struct kbts_unicode_range +{ + kbts_u8 Start[3]; + kbts_u8 Count; +} kbts_unicode_range; + +typedef struct kbts_non_default_uvs +{ + kbts_u32 MappingCount; + // kbts_uvs_mapping Mappings[MappingCount]; +} kbts_non_default_uvs; + +typedef struct kbts_uvs_mapping +{ + kbts_u8 UnicodeValue[3]; + kbts_u16 GlyphId; +} kbts_uvs_mapping; + +typedef struct kbts_gsub_gpos +{ + kbts_u16 Major; + kbts_u16 Minor; + kbts_u16 ScriptListOffset; + kbts_u16 FeatureListOffset; + kbts_u16 LookupListOffset; + kbts_u32 FeatureVariationsOffset; // Only present in v1.1 +} kbts_gsub_gpos; + +typedef struct kbts_single_substitution +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + union + { + kbts_s16 DeltaGlyphId; // Format == 1 + kbts_u16 GlyphCount; // Format == 2 + } DeltaOrCount; + // If Format == 2: + // kbts_u16 SubstituteGlyphIds[GlyphCount]; +} kbts_single_substitution; + +typedef struct kbts_multiple_substitution +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 SequenceCount; + // kbts_u16 SequenceOffsets[SequenceCount]; +} kbts_multiple_substitution; + +typedef struct kbts_sequence +{ + kbts_u16 GlyphCount; + // kbts_u16 SubstituteGlyphIds[GlyphCount]; +} kbts_sequence; + +typedef struct kbts_alternate_substitution +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 AlternateSetCount; + // kbts_u16 AlternateSetOffsets[AlternateSetCount]; +} kbts_alternate_substitution; + +typedef struct kbts_alternate_set +{ + kbts_u16 GlyphCount; + // kbts_u16 AlternateGlyphIds[GlyphCount]; +} kbts_alternate_set; + +typedef struct kbts_ligature_substitution +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 LigatureSetCount; + // kbts_u16 LigatureSetOffsets[LigatureSetCount]; +} kbts_ligature_substitution; + +typedef struct kbts_ligature_set +{ + kbts_u16 Count; + // kbts_u16 Offsets[Count]; +} kbts_ligature_set; + +typedef struct kbts_ligature +{ + kbts_u16 Glyph; + kbts_u16 ComponentCount; + // kbts_u16 ComponentGlyphIds[ComponentCount - 1]; +} kbts_ligature; + +typedef struct kbts_extension +{ + kbts_u16 Format; + kbts_u16 LookupType; + kbts_u32 Offset; +} kbts_extension; + +typedef struct kbts_reverse_chain_substitution +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 BacktrackGlyphCount; + // kbts_u16 BacktrackCoverageOffsets[BacktrackGlyphCount]; + // kbts_u16 LookaheadGlyphCount; + // kbts_u16 LookaheadCoverageOffsets[LookaheadGlyphCount]; + // kbts_u16 GlyphCount; + // kbts_u16 SubstituteGlyphIds[GlyphCount]; +} kbts_reverse_chain_substitution; + +typedef struct kbts_mark_glyph_sets +{ + kbts_u16 Format; + kbts_u16 MarkGlyphSetCount; + // kbts_u32 CoverageOffsets[MarkGlyphSetCount]; +} kbts_mark_glyph_sets; + +typedef struct kbts_gdef +{ + kbts_u16 Major; + kbts_u16 Minor; + kbts_u16 ClassDefinitionOffset; // May be 0 + kbts_u16 AttachListOffset; // May be 0 + kbts_u16 LigatureCaretListOffset; // May be 0 + kbts_u16 MarkAttachmentClassDefinitionOffset; // May be 0 + kbts_u16 MarkGlyphSetsDefinitionOffset; // v1.2 and up; may be 0 + kbts_u32 ItemVariationStoreOffset; // v1.3 and up; may be 0 +} kbts_gdef; + +typedef struct kbts_anchor +{ + kbts_u16 Format; + kbts_s16 X; + kbts_s16 Y; + union + { + kbts_u16 AnchorPoint; // If Format == 2 + kbts_u16 XDeviceOffset; // If Format == 3 + } U; + kbts_u16 YDeviceOffset; // If Format == 3 +} kbts_anchor; + +typedef struct kbts_mark_record +{ + kbts_u16 Class; + kbts_u16 AnchorOffset; +} kbts_mark_record; + +typedef struct kbts_mark_array +{ + kbts_u16 Count; + // kbts_mark_record Records[Count]; +} kbts_mark_array; + +typedef struct kbts_single_adjustment_1 +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 ValueFormat; + // ValueRecord; +} kbts_single_adjustment_1; + +typedef struct kbts_single_adjustment_2 +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 ValueFormat; + kbts_u16 RecordCount; + // ValueRecord Records[RecordCount]; +} kbts_single_adjustment_2; + +typedef struct kbts_pair_value_record +{ + kbts_u16 SecondGlyph; + // ValueRecord Record1; + // ValueRecord Record2; +} kbts_pair_value_record; + +typedef struct kbts_pair_set +{ + kbts_u16 Count; + // kbts_pair_value_record PairValueRecords[Count]; +} kbts_pair_set; + +typedef struct kbts_pair_adjustment_1 +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 ValueFormat1; // May be 0 + kbts_u16 ValueFormat2; // May be 0 + kbts_u16 SetCount; + // kbts_u16 SetOffsets[PairSetCount]; +} kbts_pair_adjustment_1; + +typedef struct kbts_pair_adjustment_2 +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 ValueFormat1; // May be 0 + kbts_u16 ValueFormat2; // May be 0 + kbts_u16 ClassDefinition1Offset; + kbts_u16 ClassDefinition2Offset; + kbts_u16 Class1Count; + kbts_u16 Class2Count; + // ValueRecord ValueRecords[Class1Count][Class2Count][2]; +} kbts_pair_adjustment_2; + +typedef struct kbts_entry_exit +{ + kbts_u16 EntryAnchorOffset; + kbts_u16 ExitAnchorOffset; +} kbts_entry_exit; + +typedef struct kbts_cursive_attachment +{ + kbts_u16 Format; + kbts_u16 CoverageOffset; + kbts_u16 EntryExitCount; + // kbts_entry_exit Records[EntryExitCount]; +} kbts_cursive_attachment; + +typedef struct kbts_base_array +{ + kbts_u16 BaseCount; + // kbts_u16 BaseAnchorOffsets[BaseCount][MarkClassCount]; // May be NULL +} kbts_base_array; + +typedef struct kbts_mark_to_base_attachment +{ + kbts_u16 Format; + kbts_u16 MarkCoverageOffset; + kbts_u16 BaseCoverageOffset; + kbts_u16 MarkClassCount; + kbts_u16 MarkArrayOffset; + kbts_u16 BaseArrayOffset; +} kbts_mark_to_base_attachment; + +typedef struct kbts_ligature_attach +{ + kbts_u16 Count; + // kbts_u16 LigatureAnchorOffsets[Count][MarkClassCount]; // May be NULL +} kbts_ligature_attach; + +typedef struct kbts_ligature_array +{ + kbts_u16 Count; + // kbts_u16 LigatureAttachOffsets[Count]; +} kbts_ligature_array; + +typedef struct kbts_mark_to_ligature_attachment +{ + kbts_u16 Format; + kbts_u16 MarkCoverageOffset; + kbts_u16 LigatureCoverageOffset; + kbts_u16 MarkClassCount; + kbts_u16 MarkArrayOffset; + kbts_u16 LigatureArrayOffset; +} kbts_mark_to_ligature_attachment; + +typedef struct kbts_long_mtx +{ + kbts_u16 Advance; + kbts_s16 PreviousSideBearing; +} kbts_long_mtx; + +struct kbts_head +{ + kbts_u16 Major; + kbts_u16 Minor; + kbts_u32 Revision; + kbts_u32 ChecksumAdjustment; + kbts_u32 MagicNumber; + kbts_u16 Flags; + kbts_u16 UnitsPerEm; + kbts_s64 CreatedTime; + kbts_s64 LastModifiedTime; + kbts_s16 XMin; + kbts_s16 YMin; + kbts_s16 XMax; + kbts_s16 YMax; + kbts_u16 MacStyle; // OS/2 style takes priority on Windows. + kbts_u16 LowestRecommendedPpem; + kbts_s16 DirectionHint; // Deprecated. Should ~always be 2. + kbts_s16 IndexToLocFormat; + kbts_s16 GlyphDataFormat; // Only 0 is defined. +}; + +typedef struct kbts_hea +{ + kbts_u16 Major; + kbts_u16 Minor; + + // According to Microsoft, these metrics are deprecated. + // The OS/2 table is the preferred way to get these, now. + kbts_s16 Ascent; + kbts_s16 Descent; + kbts_s16 LineGap; + + kbts_u16 MaxAdvance; + kbts_s16 MinPreviousSideBearing; + kbts_s16 MinNextSideBearing; + kbts_s16 MaxExtent; + + kbts_s16 CaretSlopeRise; + kbts_s16 CaretSlopeRun; + kbts_s16 CaretOffset; + + kbts_u16 Reserved[4]; + + kbts_s16 MetricDataFormat; + kbts_u16 MetricCount; +} kbts_hea; + +typedef struct kbts_maxp +{ + kbts_u16 Major; + kbts_u16 Minor; + kbts_u16 GlyphCount; + + // If Major == 1: + kbts_u16 MaxPointCount; + kbts_u16 MaxContourCount; + kbts_u16 MaxCompositePointCount; + kbts_u16 MaxCompositeContourCount; + kbts_u16 MaxZoneCount; + kbts_u16 MaxTwilightPointCount; + kbts_u16 StorageAreaCount; + kbts_u16 FunctionDefinitionCount; + kbts_u16 InstructionDefinitionCount; + kbts_u16 MaximumStackDepth; + kbts_u16 MaximumInstructionSize; + kbts_u16 MaximumTopLevelComponentCount; + kbts_u16 MaximumComponentDepth; +} kbts_maxp; + +# pragma pack(pop) + +// +// Unpack functions for TTF structs. +// + +typedef struct kbts_script_pointer +{ + kbts_u32 Tag; + kbts_ot_script *Script; +} kbts_script_pointer; + +typedef struct kbts_langsys_pointer +{ + kbts_u32 Tag; + kbts_langsys *Langsys; +} kbts_langsys_pointer; + +typedef struct kbts_feature_pointer +{ + kbts_u32 Tag; + kbts_feature *Feature; +} kbts_feature_pointer; + +typedef struct kbts_feature_variation_pointer +{ + kbts_condition_set *ConditionSet; + kbts_feature_table_substitution *FeatureTableSubstitution; +} kbts_feature_variation_pointer; + +typedef struct kbts_feature_substitution_pointer +{ + kbts_u16 SubstitutedFeatureIndex; + kbts_feature *AlternateFeature; +} kbts_feature_substitution_pointer; + +typedef struct kbts_cmap_subtable_pointer +{ + kbts_u16 PlatformId; + kbts_u16 EncodingId; + kbts_u16 *Subtable; +} kbts_cmap_subtable_pointer; + +typedef struct kbts_unpacked_chained_sequence_rule +{ + kbts_u16 *Input; + kbts_u16 *Backtrack; + kbts_u16 *Lookahead; + kbts_sequence_lookup_record *Records; + + kbts_u16 BacktrackCount; + kbts_u16 InputCount; + kbts_u16 LookaheadCount; + kbts_u16 RecordCount; +} kbts_unpacked_chained_sequence_rule; + +typedef struct kbts_unpacked_chained_sequence_context_3 +{ + kbts_u16 *BacktrackCoverageOffsets; + kbts_u16 *InputCoverageOffsets; + kbts_u16 *LookaheadCoverageOffsets; + kbts_sequence_lookup_record *Records; + + kbts_u16 BacktrackCount; + kbts_u16 InputCount; + kbts_u16 LookaheadCount; + kbts_u16 RecordCount; +} kbts_unpacked_chained_sequence_context_3; + +typedef struct kbts_unpacked_reverse_chain_substitution +{ + kbts_u16 *BacktrackCoverageOffsets; + kbts_u16 *LookaheadCoverageOffsets; + kbts_u16 *SubstituteGlyphIds; + + kbts_u16 BacktrackCount; + kbts_u16 LookaheadCount; + kbts_u16 GlyphCount; +} kbts_unpacked_reverse_chain_substitution; + +typedef struct kbts_unpacked_value_record +{ + kbts_u16 Size; + + kbts_s16 PlacementX; + kbts_s16 PlacementY; + kbts_s16 AdvanceX; + kbts_s16 AdvanceY; + kbts_device *PlacementXDevice; + kbts_device *PlacementYDevice; + kbts_device *AdvanceXDevice; + kbts_device *AdvanceYDevice; +} kbts_unpacked_value_record; + +static kbts_unpacked_value_record kbts_UnpackValueRecord(void *Parent, kbts_u16 Format, kbts_u16 *Record) +{ + kbts_unpacked_value_record Result = KBTS_ZERO; + + kbts_u16 *At = Record; + + if(Format & KBTS_VALUE_FORMAT_X_PLACEMENT) + { + Result.PlacementX = (kbts_s16)*At++; + } + if(Format & KBTS_VALUE_FORMAT_Y_PLACEMENT) + { + Result.PlacementY = (kbts_s16)*At++; + } + if(Format & KBTS_VALUE_FORMAT_X_ADVANCE) + { + Result.AdvanceX = (kbts_s16)*At++; + } + if(Format & KBTS_VALUE_FORMAT_Y_ADVANCE) + { + Result.AdvanceY = (kbts_s16)*At++; + } + if(Format & KBTS_VALUE_FORMAT_X_PLACEMENT_DEVICE) + { + kbts_u16 Offset = *At++; + + if(Offset) + { + Result.PlacementXDevice = KBTS_POINTER_OFFSET(kbts_device, Parent, Offset); + } + } + if(Format & KBTS_VALUE_FORMAT_Y_PLACEMENT_DEVICE) + { + kbts_u16 Offset = *At++; + + if(Offset) + { + Result.PlacementYDevice = KBTS_POINTER_OFFSET(kbts_device, Parent, Offset); + } + } + if(Format & KBTS_VALUE_FORMAT_X_ADVANCE_DEVICE) + { + kbts_u16 Offset = *At++; + + if(Offset) + { + Result.AdvanceXDevice = KBTS_POINTER_OFFSET(kbts_device, Parent, Offset); + } + } + if(Format & KBTS_VALUE_FORMAT_Y_ADVANCE_DEVICE) + { + kbts_u16 Offset = *At++; + + if(Offset) + { + Result.AdvanceYDevice = KBTS_POINTER_OFFSET(kbts_device, Parent, Offset); + } + } + + Result.Size = (kbts_u16)(At - Record); + + return Result; +} + +static kbts_unpacked_reverse_chain_substitution kbts_UnpackReverseChainSubstitution(kbts_reverse_chain_substitution *Subst, int ByteSwap) +{ + kbts_unpacked_reverse_chain_substitution Result; + + Result.BacktrackCoverageOffsets = KBTS_POINTER_AFTER(kbts_u16, Subst); + Result.BacktrackCount = Subst->BacktrackGlyphCount; + if(ByteSwap) + { + Result.BacktrackCount = kbts_ByteSwap16(Result.BacktrackCount); + } + + Result.LookaheadCoverageOffsets = Result.BacktrackCoverageOffsets + Result.BacktrackCount + 1; + Result.LookaheadCount = Result.BacktrackCoverageOffsets[Result.BacktrackCount]; + if(ByteSwap) + { + Result.LookaheadCount = kbts_ByteSwap16(Result.LookaheadCount); + } + + Result.SubstituteGlyphIds = Result.LookaheadCoverageOffsets + Result.LookaheadCount + 1; + Result.GlyphCount = Result.LookaheadCoverageOffsets[Result.LookaheadCount]; + if(ByteSwap) + { + Result.GlyphCount = kbts_ByteSwap16(Result.GlyphCount); + } + + return Result; +} + +static kbts_unpacked_chained_sequence_rule kbts_UnpackChainedSequenceRule(kbts_chained_sequence_rule *Rule, int ByteSwap) +{ + kbts_unpacked_chained_sequence_rule Result; + + Result.Backtrack = KBTS_POINTER_AFTER(kbts_u16, Rule); + Result.BacktrackCount = Rule->BacktrackGlyphCount; + if(ByteSwap) + { + Result.BacktrackCount = kbts_ByteSwap16(Result.BacktrackCount); + } + + Result.Input = Result.Backtrack + Result.BacktrackCount + 1; + Result.InputCount = Result.Backtrack[Result.BacktrackCount]; + if(ByteSwap) + { + Result.InputCount = kbts_ByteSwap16(Result.InputCount); + } + + Result.Lookahead = Result.Input + Result.InputCount; + Result.LookaheadCount = Result.Input[Result.InputCount - 1]; + if(ByteSwap) + { + Result.LookaheadCount = kbts_ByteSwap16(Result.LookaheadCount); + } + + Result.Records = (kbts_sequence_lookup_record *)(Result.Lookahead + Result.LookaheadCount + 1); + Result.RecordCount = Result.Lookahead[Result.LookaheadCount]; + if(ByteSwap) + { + Result.RecordCount = kbts_ByteSwap16(Result.RecordCount); + } + + return Result; +} + +static kbts_unpacked_chained_sequence_context_3 kbts_UnpackChainedSequenceContext3(kbts_chained_sequence_context_3 *Subst, int ByteSwap) +{ + kbts_unpacked_chained_sequence_context_3 Result; + + Result.BacktrackCoverageOffsets = KBTS_POINTER_AFTER(kbts_u16, Subst); + Result.BacktrackCount = Subst->BacktrackGlyphCount; + if(ByteSwap) + { + Result.BacktrackCount = kbts_ByteSwap16(Result.BacktrackCount); + } + + Result.InputCoverageOffsets = Result.BacktrackCoverageOffsets + Result.BacktrackCount + 1; + Result.InputCount = Result.BacktrackCoverageOffsets[Result.BacktrackCount]; + if(ByteSwap) + { + Result.InputCount = kbts_ByteSwap16(Result.InputCount); + } + + Result.LookaheadCoverageOffsets = Result.InputCoverageOffsets + Result.InputCount + 1; + Result.LookaheadCount = Result.InputCoverageOffsets[Result.InputCount]; + if(ByteSwap) + { + Result.LookaheadCount = kbts_ByteSwap16(Result.LookaheadCount); + } + + Result.Records = (kbts_sequence_lookup_record *)(Result.LookaheadCoverageOffsets + Result.LookaheadCount + 1); + Result.RecordCount = Result.LookaheadCoverageOffsets[Result.LookaheadCount]; + if(ByteSwap) + { + Result.RecordCount = kbts_ByteSwap16(Result.RecordCount); + } + + return Result; +} + +typedef struct kbts_unpacked_lookup +{ + kbts_u16 *SubtableOffsets; + kbts_coverage *MarkFilteringSet; + kbts_u16 Type; + kbts_u16 Flags; + kbts_u16 SubtableCount; +} kbts_unpacked_lookup; + +static kbts_unpacked_lookup kbts_UnpackLookup(kbts_gdef *Gdef, kbts_lookup *Lookup) +{ + kbts_unpacked_lookup Result = KBTS_ZERO; + + Result.Type = Lookup->Type; + Result.Flags = Lookup->Flag; + Result.SubtableCount = Lookup->SubtableCount; + Result.SubtableOffsets = KBTS_POINTER_AFTER(kbts_u16, Lookup); + if(Result.Flags & KBTS_LOOKUP_FLAG_USE_MARK_FILTERING_SET) + { + kbts_u16 MarkFilteringSetIndex = Result.SubtableOffsets[Result.SubtableCount]; + if(Gdef && Gdef->MarkGlyphSetsDefinitionOffset) + { + kbts_mark_glyph_sets *MarkGlyphSets = KBTS_POINTER_OFFSET(kbts_mark_glyph_sets, Gdef, Gdef->MarkGlyphSetsDefinitionOffset); + if(MarkGlyphSets->MarkGlyphSetCount > MarkFilteringSetIndex) + { + kbts_u32 *CoverageOffsets = KBTS_POINTER_AFTER(kbts_u32, MarkGlyphSets); + Result.MarkFilteringSet = KBTS_POINTER_OFFSET(kbts_coverage, MarkGlyphSets, CoverageOffsets[MarkFilteringSetIndex]); + } + } + } + + return Result; +} + +static kbts_script_pointer kbts_GetScript(kbts_script_list *List, kbts_un Index) +{ + kbts_script_record *Records = (kbts_script_record *)(List + 1); + kbts_script_record *Record = &Records[Index]; + + kbts_script_pointer Result; + Result.Tag = Record->Tag; + Result.Script = (kbts_ot_script *)((char *)List + Record->Offset); + + return Result; +} + +static kbts_langsys *kbts_GetDefaultLangsys(kbts_ot_script *Script) +{ + kbts_langsys *Result = Script->DefaultLangsysOffset ? KBTS_POINTER_OFFSET(kbts_langsys, Script, Script->DefaultLangsysOffset) : 0; + return Result; +} + +static kbts_langsys_pointer kbts_GetLangsys(kbts_ot_script *Script, kbts_un Index) +{ + kbts_langsys_record *Records = (kbts_langsys_record *)(Script + 1); + kbts_langsys_record *Record = &Records[Index]; + + kbts_langsys_pointer Result; + Result.Tag = Record->Tag; + Result.Langsys = KBTS_POINTER_OFFSET(kbts_langsys, Script, Record->Offset); + return Result; +} + +static kbts_feature_pointer kbts_GetFeature(kbts_feature_list *List, kbts_un Index) +{ + kbts_feature_record *Records = (kbts_feature_record *)(List + 1); + kbts_feature_record *Record = &Records[Index]; + + kbts_feature_pointer Result; + Result.Tag = Record->Tag; + Result.Feature = KBTS_POINTER_OFFSET(kbts_feature, List, Record->Offset); + return Result; +} + +static kbts_lookup_list *kbts_GetLookupList(kbts_gsub_gpos *GsubGpos) +{ + kbts_lookup_list *Result = 0; + + if(GsubGpos) + { + Result = KBTS_POINTER_OFFSET(kbts_lookup_list, GsubGpos, GsubGpos->LookupListOffset); + } + + return Result; +} + +static kbts_lookup *kbts_GetLookup(kbts_lookup_list *List, kbts_un Index) +{ + KBTS_ASSERT(Index < List->Count); + kbts_u16 *Offsets = (kbts_u16 *)(List + 1); + kbts_lookup *Result = KBTS_POINTER_OFFSET(kbts_lookup, List, Offsets[Index]); + return Result; +} + +static kbts_sequence_rule_set *kbts_GetSequenceRuleSet(kbts_sequence_context_1 *Context, kbts_un Index) +{ + KBTS_ASSERT(Index < Context->SeqRuleSetCount); + kbts_u16 *Offsets = (kbts_u16 *)(Context + 1); + kbts_u16 Offset = Offsets[Index]; + + kbts_sequence_rule_set *Result = Offset ? KBTS_POINTER_OFFSET(kbts_sequence_rule_set, Context, Offsets[Index]) : 0; + return Result; +} + +static kbts_sequence_rule *kbts_GetSequenceRule(kbts_sequence_rule_set *Set, kbts_un Index) +{ + KBTS_ASSERT(Index < Set->Count); + kbts_u16 *Offsets = (kbts_u16 *)(Set + 1); + kbts_sequence_rule *Result = KBTS_POINTER_OFFSET(kbts_sequence_rule, Set, Offsets[Index]); + return Result; +} + +// A single class definition table can be used by multiple lookups, so it is possible +// (and valid) to get an out-of-bounds glyph class. +static kbts_class_sequence_rule_set *kbts_GetClassSequenceRuleSet(kbts_sequence_context_2 *Context, kbts_un Index) +{ + kbts_class_sequence_rule_set *Result = 0; + if(Index < Context->ClassSequenceRuleSetCount) + { + kbts_u16 *Offsets = (kbts_u16 *)(Context + 1); + Result = Offsets[Index] ? KBTS_POINTER_OFFSET(kbts_class_sequence_rule_set, Context, Offsets[Index]) : 0; + } + return Result; +} + +static kbts_class_sequence_rule *kbts_GetClassSequenceRule(kbts_class_sequence_rule_set *Set, kbts_un Index) +{ + KBTS_ASSERT(Index < Set->Count); + kbts_u16 *Offsets = (kbts_u16 *)(Set + 1); + kbts_class_sequence_rule *Result = KBTS_POINTER_OFFSET(kbts_class_sequence_rule, Set, Offsets[Index]); + return Result; +} + +static kbts_coverage *kbts_GetCoverage(kbts_sequence_context_3 *Context, kbts_un Index) +{ + kbts_u16 *Offsets = (kbts_u16 *)(Context + 1); + kbts_coverage *Result = KBTS_POINTER_OFFSET(kbts_coverage, Context, Offsets[Index]); + return Result; +} + +static kbts_chained_sequence_rule_set *kbts_GetChainedSequenceRuleSet(kbts_chained_sequence_context_1 *Context, kbts_un Index) +{ + kbts_u16 *Offsets = (kbts_u16 *)(Context + 1); + kbts_chained_sequence_rule_set *Result = Offsets[Index] ? KBTS_POINTER_OFFSET(kbts_chained_sequence_rule_set, Context, Offsets[Index]) : 0; + return Result; +} + +static kbts_chained_sequence_rule *kbts_GetChainedSequenceRule(kbts_chained_sequence_rule_set *Set, kbts_un Index) +{ + kbts_u16 *Offsets = (kbts_u16 *)(Set + 1); + kbts_chained_sequence_rule *Result = KBTS_POINTER_OFFSET(kbts_chained_sequence_rule, Set, Offsets[Index]); + return Result; +} + +static kbts_chained_sequence_rule_set *kbts_GetChainedClassSequenceRuleSet(kbts_chained_sequence_context_2 *Context, kbts_un Index) +{ + kbts_u16 *Offsets = (kbts_u16 *)(Context + 1); + kbts_u16 Offset = Offsets[Index]; + kbts_chained_sequence_rule_set *Result = Offset ? KBTS_POINTER_OFFSET(kbts_chained_sequence_rule_set, Context, Offset) : NULL; + return Result; +} + +static kbts_chained_sequence_rule *kbts_GetChainedClassSequenceRule(kbts_chained_sequence_rule_set *Set, kbts_un Index) +{ + kbts_u16 *Offsets = (kbts_u16 *)(Set + 1); + kbts_chained_sequence_rule *Result = KBTS_POINTER_OFFSET(kbts_chained_sequence_rule, Set, Offsets[Index]); + return Result; +} + +static kbts_feature_variation_pointer kbts_GetFeatureVariation(kbts_feature_variations *Variations, kbts_un Index) +{ + kbts_feature_variation_record *Records = (kbts_feature_variation_record *)(Variations + 1); + kbts_feature_variation_record *Record = &Records[Index]; + + kbts_feature_variation_pointer Result; + Result.ConditionSet = KBTS_POINTER_OFFSET(kbts_condition_set, Variations, Record->ConditionSetOffset); + Result.FeatureTableSubstitution = KBTS_POINTER_OFFSET(kbts_feature_table_substitution, Variations, Record->FeatureTableSubstitutionOffset); + return Result; +} + +static kbts_condition_1 *kbts_GetCondition(kbts_condition_set *Set, kbts_un Index) +{ + kbts_u32 *Offsets = (kbts_u32 *)(Set + 1); + kbts_condition_1 *Result = KBTS_POINTER_OFFSET(kbts_condition_1, Set, Offsets[Index]); + return Result; +} + +static kbts_feature_substitution_pointer kbts_GetFeatureSubstitution(kbts_feature_table_substitution *Table, kbts_un Index) +{ + kbts_feature_table_substitution_record *Records = (kbts_feature_table_substitution_record *)(Table + 1); + kbts_feature_table_substitution_record *Record = &Records[Index]; + + kbts_feature_substitution_pointer Result; + Result.SubstitutedFeatureIndex = Record->FeatureIndex; + Result.AlternateFeature = KBTS_POINTER_OFFSET(kbts_feature, Table, Record->AlternateFeatureOffset); + return Result; +} + +static kbts_cmap_subtable_pointer kbts_GetCmapSubtable(kbts_cmap *Cmap, kbts_un Index) +{ + kbts_encoding_record *Records = (kbts_encoding_record *)(Cmap + 1); + kbts_encoding_record *Record = &Records[Index]; + + kbts_cmap_subtable_pointer Result; + Result.PlatformId = Record->PlatformId; + Result.EncodingId = Record->EncodingId; + Result.Subtable = KBTS_POINTER_OFFSET(kbts_u16, Cmap, Record->SubtableOffset); + + return Result; +} + +static kbts_sequence *kbts_GetSequence(kbts_multiple_substitution *Subst, kbts_un Index) +{ + kbts_u16 *Offsets = (kbts_u16 *)(Subst + 1); + kbts_sequence *Result = KBTS_POINTER_OFFSET(kbts_sequence, Subst, Offsets[Index]); + return Result; +} + +static kbts_alternate_set *kbts_GetAlternateSet(kbts_alternate_substitution *Subst, kbts_un Index) +{ + kbts_u16 *Offsets = (kbts_u16 *)(Subst + 1); + kbts_alternate_set *Result = KBTS_POINTER_OFFSET(kbts_alternate_set, Subst, Offsets[Index]); + return Result; +} + +static kbts_ligature_set *kbts_GetLigatureSet(kbts_ligature_substitution *Subst, kbts_un Index) +{ + kbts_u16 *Offsets = (kbts_u16 *)(Subst + 1); + kbts_ligature_set *Result = KBTS_POINTER_OFFSET(kbts_ligature_set, Subst, Offsets[Index]); + return Result; +} + +static kbts_ligature *kbts_GetLigature(kbts_ligature_set *Set, kbts_un Index) +{ + kbts_u16 *Offsets = (kbts_u16 *)(Set + 1); + kbts_ligature *Result = KBTS_POINTER_OFFSET(kbts_ligature, Set, Offsets[Index]); + return Result; +} + +static kbts_mark_record *kbts_GetMarkRecord(kbts_mark_array *Array, kbts_un Index) +{ + kbts_mark_record *Records = KBTS_POINTER_AFTER(kbts_mark_record, Array); + kbts_mark_record *Result = &Records[Index]; + return Result; +} + +static kbts_ligature_attach *kbts_GetLigatureAttach(kbts_ligature_array *Array, kbts_un Index) +{ + kbts_u16 *Offsets = KBTS_POINTER_AFTER(kbts_u16, Array); + kbts_ligature_attach *Result = KBTS_POINTER_OFFSET(kbts_ligature_attach, Array, Offsets[Index]); + return Result; +} + +static kbts_anchor *kbts_GetLigatureAttachAnchor(kbts_mark_to_ligature_attachment *Adjust, kbts_ligature_attach *Attach, kbts_u16 MarkClass, kbts_un ComponentIndex) +{ + kbts_u16 *Offsets = KBTS_POINTER_AFTER(kbts_u16, Attach); + kbts_u16 Offset = Offsets[ComponentIndex * Adjust->MarkClassCount + MarkClass]; + + kbts_anchor *Result = 0; + if(Offset) + { + Result = KBTS_POINTER_OFFSET(kbts_anchor, Attach, Offset); + } + + return Result; +} + +typedef struct kbts_mark_info +{ + kbts_mark_array *Array; + kbts_mark_record *Record; + kbts_anchor *Anchor; +} kbts_mark_info; + +static kbts_mark_info kbts_GetMarkInfo(void *Subtable, kbts_un SubtableOffsetToMarkArray, kbts_un CoverageIndex) +{ + kbts_mark_info Result = KBTS_ZERO; + + Result.Array = KBTS_POINTER_OFFSET(kbts_mark_array, Subtable, SubtableOffsetToMarkArray); + Result.Record = kbts_GetMarkRecord(Result.Array, CoverageIndex); + Result.Anchor = KBTS_POINTER_OFFSET(kbts_anchor, Result.Array, Result.Record->AnchorOffset); + + return Result; +} + +// +// +// + +typedef struct kbts_byteswap_context +{ + char *FileBase; + kbts_u32 *Pointers; + kbts_un PointerCapacity; + kbts_un PointerCount; +} kbts_byteswap_context; + +typedef struct kbts_cover_glyph_result +{ + kbts_u32 Valid; + kbts_u32 Index; +} kbts_cover_glyph_result; + +static int kbts_LookupBeginsWithCoverage(kbts_shaping_table ShapingTable, kbts_u16 LookupType, kbts_u16 Format) +{ + int Result = 0; + if(ShapingTable == KBTS_SHAPING_TABLE_GSUB) + { + Result = (LookupType != 7) && (Format != 3); + } + else + { + Result = (LookupType != 9) && (Format != 3); + } + return Result; +} + +// Except for lookup tables 5.3, 6.3 and 7, all tables begin with (kbts_u16 Format, kbts_u16 CoverageOffset). +KBTS_INLINE int kbts_GsubLookupBeginsWithCoverage(kbts_u16 LookupType, kbts_u16 Format) +{ + int Result = kbts_LookupBeginsWithCoverage(KBTS_SHAPING_TABLE_GSUB, LookupType, Format); + return Result; +} + +KBTS_INLINE int kbts_GposLookupBeginsWithCoverage(kbts_u16 LookupType, kbts_u16 Format) +{ + int Result = kbts_LookupBeginsWithCoverage(KBTS_SHAPING_TABLE_GPOS, LookupType, Format); + return Result; +} + +typedef struct kbts_lookup_info_frame +{ + kbts_u16 *Base; + kbts_u16 LookupType; + kbts_u32 LookaheadOffset; + kbts_u32 StackSize; +} kbts_lookup_info_frame; + +static int kbts_PushLookup(kbts_gdef *Gdef, kbts_lookup_info_frame *Frames, kbts_un *FrameCount, kbts_un FrameCapacity, kbts_lookup *PackedLookup, kbts_u32 LookaheadOffset, kbts_un StackSize) +{ + int Result = 0; + kbts_unpacked_lookup Lookup = kbts_UnpackLookup(Gdef, PackedLookup); + + if((*FrameCount + Lookup.SubtableCount) <= FrameCapacity) + { + KBTS_FOR(SubtableIndex, 0, Lookup.SubtableCount) + { + kbts_lookup_info_frame *Frame = &Frames[(*FrameCount)++]; + Frame->Base = KBTS_POINTER_OFFSET(kbts_u16, PackedLookup, Lookup.SubtableOffsets[SubtableIndex]); + Frame->LookupType = Lookup.Type; + Frame->LookaheadOffset = LookaheadOffset; + Frame->StackSize = (kbts_u32)StackSize; + } + + Result = 1; + } + + return Result; +} + +static int kbts_AlreadyVisited(kbts_byteswap_context *Context, void *Pointer) +{ + int Result = !Pointer; + + if(!Result) + { + kbts_u32 *Pointers = Context->Pointers; + kbts_u32 Pointer32 = KBTS_POINTER_DIFF32(Pointer, Context->FileBase); + + kbts_un Index = 0; + if(Context->PointerCount) + { + kbts_un PointerCount = Context->PointerCount; + while(PointerCount > 1) + { + kbts_un HalfCount = PointerCount / 2; + Index = (Pointers[Index + HalfCount - 1] < Pointer32) ? (Index + HalfCount) : Index; + PointerCount -= HalfCount; + } + Result = (Pointer32 == Pointers[Index]); + } + + if(!Result && (Context->PointerCount < Context->PointerCapacity)) + { + while((Index < Context->PointerCount) && (Pointers[Index] < Pointer32)) ++Index; + + for(kbts_un GrowIndex = Context->PointerCount; GrowIndex > Index; --GrowIndex) + { + Pointers[GrowIndex] = Pointers[GrowIndex - 1]; + } + Pointers[Index] = Pointer32; + Context->PointerCount += 1; + } + } + + return Result; +} + +static void kbts_ByteSwapFeature(kbts_byteswap_context *Context, kbts_feature *Feature) +{ + if(!kbts_AlreadyVisited(Context, Feature)) + { + kbts_u16 *LookupIndices = KBTS_POINTER_AFTER(kbts_u16, Feature); + kbts_ByteSwapArray16(&Feature->FeatureParamsOffset, 2); + kbts_ByteSwapArray16(LookupIndices, Feature->LookupIndexCount); + + // We require lookup indices to be sorted per feature for the lookup application order to match Harfbuzz. + // Lookup indices are _typically_ sorted per feature, but we can't assume it is always the case. + kbts_un LookupIndexCount = Feature->LookupIndexCount; + KBTS_FOR(Iter, 0, LookupIndexCount) + { + KBTS_FOR(IndexIndex, 1, LookupIndexCount) + { + kbts_u16 Left = LookupIndices[IndexIndex - 1]; + kbts_u16 Right = LookupIndices[IndexIndex]; + + if(Left > Right) + { + LookupIndices[IndexIndex - 1] = Right; + LookupIndices[IndexIndex] = Left; + } + } + } + } + +# ifdef KBTS_DUMP + kbts_u16 *LookupIndices = KBTS_POINTER_AFTER(kbts_u16, Feature); + KBTS_FOR(LookupIndexIndex, 0, Feature->LookupIndexCount) + { + KBTS_DUMPF(" Lookup index %u\n", LookupIndices[LookupIndexIndex]); + } +# endif +} + +static void kbts_ByteSwapGsubGposCommon(kbts_byteswap_context *Context, kbts_gsub_gpos *Header) +{ + kbts_ByteSwapArray16(&Header->Major, 5); + + if(Header->Minor == 1) + { + Header->FeatureVariationsOffset = kbts_ByteSwap32(Header->FeatureVariationsOffset); + } + + kbts_script_list *ScriptList = KBTS_POINTER_OFFSET(kbts_script_list, Header, Header->ScriptListOffset); + if(!kbts_AlreadyVisited(Context, ScriptList)) + { + ScriptList->Count = kbts_ByteSwap16(ScriptList->Count); + + kbts_script_record *ScriptRecords = KBTS_POINTER_AFTER(kbts_script_record, ScriptList); + KBTS_FOR(It, 0, ScriptList->Count) + { + kbts_script_record *Record = &ScriptRecords[It]; + + Record->Offset = kbts_ByteSwap16(Record->Offset); + + KBTS_DUMPF("Script %.4s\n", (char *)&Record->Tag); + + kbts_ot_script *Script = KBTS_POINTER_OFFSET(kbts_ot_script, ScriptList, Record->Offset); + if(!kbts_AlreadyVisited(Context, Script)) + { + Script->DefaultLangsysOffset = kbts_ByteSwap16(Script->DefaultLangsysOffset); + Script->Count = kbts_ByteSwap16(Script->Count); + + kbts_langsys *DefaultLangsys = kbts_GetDefaultLangsys(Script); + + if(DefaultLangsys && !kbts_AlreadyVisited(Context, DefaultLangsys)) + { + kbts_ByteSwapArray16(&DefaultLangsys->LookupOrderOffset, 3); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, DefaultLangsys), DefaultLangsys->FeatureIndexCount); + } + + kbts_langsys_record *LangsysRecords = KBTS_POINTER_AFTER(kbts_langsys_record, Script); + KBTS_FOR(LangsysIndex, 0, Script->Count) + { + kbts_langsys_record *LangsysRecord = &LangsysRecords[LangsysIndex]; + + LangsysRecord->Offset = kbts_ByteSwap16(LangsysRecord->Offset); + + kbts_langsys *Langsys = KBTS_POINTER_OFFSET(kbts_langsys, Script, LangsysRecord->Offset); + if(!kbts_AlreadyVisited(Context, Langsys)) + { + kbts_ByteSwapArray16(&Langsys->LookupOrderOffset, 3); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Langsys), Langsys->FeatureIndexCount); + } + } + +# ifdef KBTS_DUMP + if(DefaultLangsys) + { + KBTS_DUMPF(" Default langsys @ %zu\n", (char *)DefaultLangsys - Context->FileBase); + KBTS_DUMPF(" Lookup order offset %u\n", DefaultLangsys->LookupOrderOffset); + KBTS_DUMPF(" Required feature %u\n", DefaultLangsys->RequiredFeatureIndex); + kbts_u16 *FeatureIndices = KBTS_POINTER_AFTER(kbts_u16, DefaultLangsys); + KBTS_FOR(FeatureIndexIndex, 0, DefaultLangsys->FeatureIndexCount) + { + KBTS_DUMPF(" Feature %u\n", FeatureIndices[FeatureIndexIndex]); + } + } + + KBTS_FOR(LangsysIndex, 0, Script->Count) + { + kbts_langsys_record *LangsysRecord = &LangsysRecords[LangsysIndex]; + kbts_langsys *Langsys = KBTS_POINTER_OFFSET(kbts_langsys, Script, LangsysRecord->Offset); + KBTS_DUMPF(" Langsys %.4s @ %zu\n", (char *)&LangsysRecord->Tag, (char *)Script + LangsysRecord->Offset - Context->FileBase); + KBTS_DUMPF(" Lookup order offset %u\n" + " Required feature %u\n", + Langsys->LookupOrderOffset, Langsys->RequiredFeatureIndex); + kbts_u16 *FeatureIndices = KBTS_POINTER_AFTER(kbts_u16, Langsys); + KBTS_FOR(FeatureIndexIndex, 0, Langsys->FeatureIndexCount) + { + KBTS_DUMPF(" Feature %u\n", FeatureIndices[FeatureIndexIndex]); + } + } +# endif + } + } + + if((Header->Minor == 1) && Header->FeatureVariationsOffset) + { + kbts_feature_variations *FeatureVariations = KBTS_POINTER_OFFSET(kbts_feature_variations, Header, Header->FeatureVariationsOffset); + + if(!kbts_AlreadyVisited(Context, FeatureVariations)) + { + kbts_ByteSwapArray16(&FeatureVariations->Major, 2); + FeatureVariations->RecordCount = kbts_ByteSwap32(FeatureVariations->RecordCount); + + kbts_feature_variation_record *Records = KBTS_POINTER_AFTER(kbts_feature_variation_record, FeatureVariations); + KBTS_FOR(VariationIndex, 0, FeatureVariations->RecordCount) + { + kbts_feature_variation_record *Record = &Records[VariationIndex]; + + kbts_ByteSwapArray32(&Record->ConditionSetOffset, 2); + + kbts_condition_set *Set = KBTS_POINTER_OFFSET(kbts_condition_set, FeatureVariations, Record->ConditionSetOffset); + + if(!kbts_AlreadyVisited(Context, Set)) + { + Set->Count = kbts_ByteSwap16(Set->Count); + + kbts_u32 *ConditionOffsets = KBTS_POINTER_AFTER(kbts_u32, Set); + kbts_ByteSwapArray32(ConditionOffsets, Set->Count); + + KBTS_FOR(ConditionIndex, 0, Set->Count) + { + kbts_condition_1 *Condition = KBTS_POINTER_OFFSET(kbts_condition_1, Set, ConditionOffsets[ConditionIndex]); + + if(!kbts_AlreadyVisited(Context, Condition)) + { + kbts_ByteSwapArray16(&Condition->Format, 4); + } + } + + kbts_feature_table_substitution *FeatureSubst = KBTS_POINTER_OFFSET(kbts_feature_table_substitution, FeatureVariations, Record->FeatureTableSubstitutionOffset); + + if(!kbts_AlreadyVisited(Context, FeatureSubst)) + { + kbts_ByteSwapArray16(&FeatureSubst->Major, 3); + + kbts_feature_table_substitution_record *SubstRecords = KBTS_POINTER_AFTER(kbts_feature_table_substitution_record, FeatureSubst); + KBTS_FOR(SubstRecordIndex, 0, FeatureSubst->Count) + { + kbts_feature_table_substitution_record *SubstRecord = &SubstRecords[SubstRecordIndex]; + SubstRecord->FeatureIndex = kbts_ByteSwap16(SubstRecord->FeatureIndex); + + kbts_feature *Feature = KBTS_POINTER_OFFSET(kbts_feature, FeatureSubst, SubstRecord->AlternateFeatureOffset); + kbts_ByteSwapFeature(Context, Feature); + } + } + } + } + } + } + } + + kbts_feature_list *FeatureList = KBTS_POINTER_OFFSET(kbts_feature_list, Header, Header->FeatureListOffset); + if(!kbts_AlreadyVisited(Context, FeatureList)) + { + FeatureList->Count = kbts_ByteSwap16(FeatureList->Count); + kbts_feature_record *FeatureRecords = KBTS_POINTER_AFTER(kbts_feature_record, FeatureList); + KBTS_FOR(FeatureRecordIndex, 0, FeatureList->Count) + { + kbts_feature_record *FeatureRecord = &FeatureRecords[FeatureRecordIndex]; + + KBTS_DUMPF("Feature %llu %.4s\n", FeatureRecordIndex, (char *)&FeatureRecord->Tag); + + if(!kbts_AlreadyVisited(Context, FeatureRecord)) + { + FeatureRecord->Offset = kbts_ByteSwap16(FeatureRecord->Offset); + + kbts_feature *Feature = KBTS_POINTER_OFFSET(kbts_feature, FeatureList, FeatureRecord->Offset); + kbts_ByteSwapFeature(Context, Feature); + } + } + } +} + +static int kbts_ByteSwapLookup(kbts_byteswap_context *Context, kbts_lookup *Lookup) +{ + int Result = 0; + + if(!kbts_AlreadyVisited(Context, Lookup)) + { + Result = 1; + + kbts_ByteSwapArray16(&Lookup->Type, 3); + kbts_u16 *SubtableOffsets = KBTS_POINTER_AFTER(kbts_u16, Lookup); + + kbts_un U16Count = Lookup->SubtableCount; + if(Lookup->Flag & KBTS_LOOKUP_FLAG_USE_MARK_FILTERING_SET) + { + U16Count += 1; + } + kbts_ByteSwapArray16(SubtableOffsets, U16Count); + } + + return Result; +} + +static void kbts_ByteSwapCoverage(kbts_byteswap_context *Context, kbts_coverage *Coverage) +{ + if(!kbts_AlreadyVisited(Context, Coverage)) + { + kbts_ByteSwapArray16(&Coverage->Format, 2); + + kbts_un U16Count = 0; + if(Coverage->Format == 1) + { + U16Count = Coverage->Count; + } + else if(Coverage->Format == 2) + { + U16Count = Coverage->Count * 3; + } + + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Coverage), U16Count); + } +} + +static void kbts_ByteSwapAnchor(kbts_byteswap_context *Context, kbts_anchor *Anchor) +{ + if(!kbts_AlreadyVisited(Context, Anchor)) + { + Anchor->Format = kbts_ByteSwap16(Anchor->Format); + + kbts_un U16Count = 2; + if(Anchor->Format == 2) + { + U16Count = 3; + } + else if(Anchor->Format == 3) + { + U16Count = 4; + } + + kbts_ByteSwapArray16((kbts_u16 *)&Anchor->X, U16Count); + } +} + +static void kbts_ByteSwapBaseArray(kbts_byteswap_context *Context, kbts_u16 MarkClassCount, kbts_base_array *Array) +{ + if(!kbts_AlreadyVisited(Context, Array)) + { + Array->BaseCount = kbts_ByteSwap16(Array->BaseCount); + + kbts_u16 *BaseAnchorOffsets = KBTS_POINTER_AFTER(kbts_u16, Array); + kbts_ByteSwapArray16(BaseAnchorOffsets, Array->BaseCount * MarkClassCount); + + KBTS_FOR(OffsetIndex, 0, (kbts_un)Array->BaseCount * MarkClassCount) + { + kbts_u16 Offset = BaseAnchorOffsets[OffsetIndex]; + + if(Offset) + { + kbts_ByteSwapAnchor(Context, KBTS_POINTER_OFFSET(kbts_anchor, Array, Offset)); + } + } + } +} + +static void kbts_ByteSwapDevice(kbts_byteswap_context *Context, kbts_device *Device) +{ + if(!kbts_AlreadyVisited(Context, Device)) + { + kbts_ByteSwapArray16(&Device->U.Device.StartSize, 3); + + if(Device->DeltaFormat <= 3) + { + // @Incomplete + } + } +} + +static kbts_unpacked_value_record kbts_ByteSwapValueRecord(kbts_byteswap_context *Context, void *Parent, kbts_u16 ValueFormat, kbts_u16 *Record) +{ + kbts_unpacked_value_record Result = KBTS_ZERO; + + if(ValueFormat) + { + kbts_un U16Count = kbts_PopCount32(ValueFormat); + + kbts_ByteSwapArray16(Record, U16Count); + + Result = kbts_UnpackValueRecord(Parent, ValueFormat, Record); + + kbts_ByteSwapDevice(Context, Result.PlacementXDevice); + kbts_ByteSwapDevice(Context, Result.PlacementYDevice); + kbts_ByteSwapDevice(Context, Result.AdvanceXDevice); + kbts_ByteSwapDevice(Context, Result.AdvanceYDevice); + } + + return Result; +} + +static void kbts_ByteSwapMarkArray(kbts_byteswap_context *Context, kbts_mark_array *MarkArray) +{ + if(!kbts_AlreadyVisited(Context, MarkArray)) + { + MarkArray->Count = kbts_ByteSwap16(MarkArray->Count); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, MarkArray), MarkArray->Count * 2); + + kbts_mark_record *MarkRecords = KBTS_POINTER_AFTER(kbts_mark_record, MarkArray); + KBTS_FOR(MarkRecordIndex, 0, MarkArray->Count) + { + kbts_mark_record *MarkRecord = &MarkRecords[MarkRecordIndex]; + + kbts_ByteSwapAnchor(Context, KBTS_POINTER_OFFSET(kbts_anchor, MarkArray, MarkRecord->AnchorOffset)); + } + } +} + +static void kbts_ByteSwapChainedSequenceRuleSet(kbts_byteswap_context *Context, kbts_chained_sequence_rule_set *Set) +{ + if(Set && !kbts_AlreadyVisited(Context, Set)) + { + Set->Count = kbts_ByteSwap16(Set->Count); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Set), Set->Count); + + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_chained_sequence_rule *Rule = kbts_GetChainedSequenceRule(Set, RuleIndex); + + if(!kbts_AlreadyVisited(Context, Rule)) + { + kbts_unpacked_chained_sequence_rule Unpacked = kbts_UnpackChainedSequenceRule(Rule, 1); + + kbts_un U16Count = Unpacked.BacktrackCount + Unpacked.InputCount + Unpacked.LookaheadCount + Unpacked.RecordCount * 2 + 3; + kbts_ByteSwapArray16(&Rule->BacktrackGlyphCount, U16Count); + } + } + } +} + +#ifdef KBTS_DUMP +static void kbts_DumpClassDefinition(kbts_u16 *Base) +{ + if(*Base == 1) + { + kbts_class_definition_1 *ClassDef = (kbts_class_definition_1 *)Base; + kbts_u16 *ClassValues = KBTS_POINTER_AFTER(kbts_u16, ClassDef); + KBTS_FOR(GlyphIndex, 0, ClassDef->GlyphCount) + { + KBTS_DUMPF("%llx -> %u\n", ClassDef->StartGlyphId + GlyphIndex, ClassValues[GlyphIndex]); + } + } + else if(*Base == 2) + { + kbts_class_definition_2 *ClassDef = (kbts_class_definition_2 *)Base; + kbts_class_range_record *Ranges = KBTS_POINTER_AFTER(kbts_class_range_record, ClassDef); + KBTS_FOR(RangeIndex, 0, ClassDef->Count) + { + kbts_class_range_record *Range = &Ranges[RangeIndex]; + + KBTS_DUMPF("[%x..%x] -> %u\n", Range->StartGlyphId, Range->EndGlyphId, Range->Class); + } + } +} +#endif + +static void kbts_ByteSwapClassDefinition(kbts_byteswap_context *Context, kbts_u16 *Base) +{ + if(!kbts_AlreadyVisited(Context, Base)) + { + *Base = kbts_ByteSwap16(*Base); + + if(*Base == 1) + { + kbts_class_definition_1 *ClassDef = (kbts_class_definition_1 *)Base; + kbts_ByteSwapArray16(&ClassDef->StartGlyphId, 2); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, ClassDef), ClassDef->GlyphCount); + } + else if(*Base == 2) + { + kbts_class_definition_2 *ClassDef = (kbts_class_definition_2 *)Base; + ClassDef->Count = kbts_ByteSwap16(ClassDef->Count); + + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, ClassDef), ClassDef->Count * 3); + } + } +} + +static kbts_u16 kbts_GlyphClassFromTable(kbts_u16 *ClassDefinitionBase, kbts_un Id) +{ + kbts_u16 Result = 0; + + // From the Microsoft docs: + // There is one offset to a ChainedClassSequenceRuleSet subtable for each class defined in the input sequence + // class definition table. The offsets are listed in class value order. + // This means that we do not actually care what the class _values_ are. We only care about the classes' relative + // values. + // Also from the Microsoft docs, about class definition tables: + // A class definition table (ClassDef) assigns glyphs into classes, beginning with Class 1, then Class 2, and so + // on. All glyphs not assigned to a class fall into Class 0. + // So, we should be able to pretty reliably just subtract 1 from the class to get. + + if(*ClassDefinitionBase == 1) + { + kbts_class_definition_1 *ClassDef = (kbts_class_definition_1 *)ClassDefinitionBase; + kbts_u16 *GlyphClasses = KBTS_POINTER_AFTER(kbts_u16, ClassDef); + + kbts_un Offset = Id - ClassDef->StartGlyphId; + if(Offset < ClassDef->GlyphCount) + { + Result = GlyphClasses[Offset]; + } + } + else if(*ClassDefinitionBase == 2) + { + kbts_class_definition_2 *ClassDef = (kbts_class_definition_2 *)ClassDefinitionBase; + kbts_class_range_record *Ranges = KBTS_POINTER_AFTER(kbts_class_range_record, ClassDef); + + kbts_un RangeCount = ClassDef->Count; + while(RangeCount > 1) + { + kbts_un HalfCount = RangeCount / 2; + Ranges = (Ranges[HalfCount - 1].EndGlyphId < Id) ? (Ranges + HalfCount) : Ranges; + RangeCount -= HalfCount; + } + if((Id >= Ranges->StartGlyphId) && (Id <= Ranges->EndGlyphId)) + { + Result = Ranges->Class; + } + } + + return Result; +} + +static kbts_cover_glyph_result kbts_CoverGlyph(kbts_coverage *Coverage, kbts_u32 GlyphId) +{ + KBTS_INSTRUMENT_FUNCTION_BEGIN + kbts_cover_glyph_result Result = KBTS_ZERO; + kbts_un Count = Coverage->Count; + + if(Coverage->Format == 1) + { + kbts_u16 *GlyphIds = KBTS_POINTER_AFTER(kbts_u16, Coverage); + + while(Count > 1) + { + kbts_un HalfCount = Count / 2; + GlyphIds = (GlyphIds[HalfCount - 1] < GlyphId) ? (GlyphIds + HalfCount) : GlyphIds; + Count -= HalfCount; + } + + if(GlyphId == *GlyphIds) + { + Result.Valid = 1; + Result.Index = (kbts_u32)(GlyphIds - KBTS_POINTER_AFTER(kbts_u16, Coverage)); + } + } + else if(Coverage->Format == 2) + { + kbts_range_record *Ranges = KBTS_POINTER_AFTER(kbts_range_record, Coverage); + + while(Count > 1) + { + kbts_un HalfCount = Count / 2; + Ranges = (Ranges[HalfCount - 1].EndGlyphId < GlyphId) ? (Ranges + HalfCount) : Ranges; + Count -= HalfCount; + } + if((GlyphId >= Ranges->StartGlyphId) && (GlyphId <= Ranges->EndGlyphId)) + { + Result.Valid = 1; + Result.Index = Ranges->StartCoverageIndex + GlyphId - Ranges->StartGlyphId; + } + } + + KBTS_INSTRUMENT_END + return Result; +} + +static void kbts_ByteSwapSequenceContextSubtable(kbts_byteswap_context *Context, kbts_u16 *Base) +{ + if(Base[0] == 1) + { + kbts_sequence_context_1 *Subst = (kbts_sequence_context_1 *)Base; + Subst->SeqRuleSetCount = kbts_ByteSwap16(Subst->SeqRuleSetCount); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Subst), Subst->SeqRuleSetCount); + + KBTS_FOR(SetIndex, 0, Subst->SeqRuleSetCount) + { + kbts_sequence_rule_set *Set = kbts_GetSequenceRuleSet(Subst, SetIndex); + + if(Set && !kbts_AlreadyVisited(Context, Set)) + { + Set->Count = kbts_ByteSwap16(Set->Count); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Set), Set->Count); + + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_sequence_rule *Rule = kbts_GetSequenceRule(Set, RuleIndex); + + if(!kbts_AlreadyVisited(Context, Rule)) + { + kbts_ByteSwapArray16(&Rule->GlyphCount, 2); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Rule), (kbts_un)Rule->GlyphCount - 1 + (kbts_un)Rule->SequenceLookupCount * 2); + } + } + } + } + } + else if(Base[0] == 2) + { + kbts_sequence_context_2 *Subst = (kbts_sequence_context_2 *)Base; + kbts_ByteSwapArray16(&Subst->ClassDefOffset, 2); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Subst), Subst->ClassSequenceRuleSetCount); + + kbts_u16 *ClassDefBase = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->ClassDefOffset); + kbts_ByteSwapClassDefinition(Context, ClassDefBase); + + KBTS_FOR(SetIndex, 0, Subst->ClassSequenceRuleSetCount) + { + kbts_class_sequence_rule_set *Set = kbts_GetClassSequenceRuleSet(Subst, SetIndex); + + if(Set && !kbts_AlreadyVisited(Context, Set)) + { + Set->Count = kbts_ByteSwap16(Set->Count); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Set), Set->Count); + + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_class_sequence_rule *Rule = kbts_GetClassSequenceRule(Set, RuleIndex); + + if(!kbts_AlreadyVisited(Context, Rule)) + { + kbts_ByteSwapArray16(&Rule->GlyphCount, 2); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Rule), Rule->GlyphCount - 1 + 2 * Rule->SequenceLookupCount); + } + } + } + } + + #ifdef KBTS_DUMP + kbts_DumpClassDefinition(ClassDefBase); + KBTS_FOR(SetIndex, 0, Subst->ClassSequenceRuleSetCount) + { + kbts_class_sequence_rule_set *Set = kbts_GetClassSequenceRuleSet(Subst, SetIndex); + + if(Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_class_sequence_rule *Rule = kbts_GetClassSequenceRule(Set, RuleIndex); + kbts_u16 *InputSequence = KBTS_POINTER_AFTER(kbts_u16, Rule); + kbts_sequence_lookup_record *Records = (kbts_sequence_lookup_record *)(InputSequence + Rule->GlyphCount - 1); + KBTS_DUMPF("Input: ["); + KBTS_FOR(GlyphIndex, 1, Rule->GlyphCount) + { + KBTS_DUMPF(", %x", InputSequence[GlyphIndex - 1]); + } + KBTS_DUMPF("]\nRecords: ["); + KBTS_FOR(RecordIndex, 0, Rule->SequenceLookupCount) + { + kbts_sequence_lookup_record *Record = &Records[RecordIndex]; + if(RecordIndex) KBTS_DUMPF(", "); + KBTS_DUMPF("%u@%u", Record->LookupListIndex, Record->SequenceIndex); + } + KBTS_DUMPF("]\n"); + } + } + } + #endif + } + else if(Base[0] == 3) + { + kbts_sequence_context_3 *Subst = (kbts_sequence_context_3 *)Base; + kbts_ByteSwapArray16(&Subst->GlyphCount, 2); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Subst), Subst->GlyphCount + 2 * Subst->SequenceLookupCount); + + kbts_u16 *CoverageOffsets = KBTS_POINTER_AFTER(kbts_u16, Subst); + KBTS_FOR(CoverageIndex, 0, Subst->GlyphCount) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Subst, CoverageOffsets[CoverageIndex]); + + kbts_ByteSwapCoverage(Context, Coverage); + } + } +} + +typedef kbts_u32 kbts_skip_flags; +enum kbts_skip_flags_enum +{ + KBTS_SKIP_FLAG_NONE, + KBTS_SKIP_FLAG_ZWNJ = (1 << 0), + KBTS_SKIP_FLAG_ZWJ = (1 << 1), +}; +// The Harfbuzz behavior is: +// - GPOS lookups always skip ZWNJ. +// - Sequence lookups always skip ZWJ. +// - GSUB sequence lookups skip ZWNJ when requested. +// - Regular lookups skip ZWJ when requested. +#define KBTS_SKIP_FLAGS_GSUB_REGULAR(RequestedFlags) ((RequestedFlags) & KBTS_SKIP_FLAG_ZWJ) +#define KBTS_SKIP_FLAGS_GSUB_SEQUENCE(RequestedFlags) (KBTS_SKIP_FLAG_ZWJ | ((RequestedFlags) & KBTS_SKIP_FLAG_ZWNJ)) +#define KBTS_SKIP_FLAGS_GPOS_REGULAR(RequestedFlags) (((RequestedFlags) & KBTS_SKIP_FLAG_ZWJ) | KBTS_SKIP_FLAG_ZWNJ) +#define KBTS_SKIP_FLAGS_GPOS_SEQUENCE(RequestedFlags) (KBTS_SKIP_FLAG_ZWJ | KBTS_SKIP_FLAG_ZWNJ) + +static kbts_skip_flags kbts_SkipFlags(kbts_feature_id FeatureId, kbts_shaper Shaper) +{ + kbts_skip_flags Result = 0; + switch(FeatureId) + { + case KBTS_FEATURE_ID_nukt: + case KBTS_FEATURE_ID_akhn: + case KBTS_FEATURE_ID_rphf: + case KBTS_FEATURE_ID_rkrf: + case KBTS_FEATURE_ID_pref: + case KBTS_FEATURE_ID_blwf: + case KBTS_FEATURE_ID_abvf: + case KBTS_FEATURE_ID_half: + case KBTS_FEATURE_ID_pstf: + case KBTS_FEATURE_ID_vatu: + case KBTS_FEATURE_ID_cjct: + case KBTS_FEATURE_ID_pres: + case KBTS_FEATURE_ID_abvs: + case KBTS_FEATURE_ID_blws: + case KBTS_FEATURE_ID_psts: + case KBTS_FEATURE_ID_haln: + Result = (Shaper == KBTS_SHAPER_INDIC) ? 0 : KBTS_SKIP_FLAG_ZWNJ | KBTS_SKIP_FLAG_ZWJ; + break; + + case KBTS_FEATURE_ID_init: + if (Shaper == KBTS_SHAPER_INDIC) {Result = 0;} + else if(Shaper == KBTS_SHAPER_ARABIC) {Result = KBTS_SKIP_FLAG_ZWNJ;} + else {Result = KBTS_SKIP_FLAG_ZWNJ | KBTS_SKIP_FLAG_ZWJ;} + break; + + case KBTS_FEATURE_ID_ccmp: + case KBTS_FEATURE_ID_locl: + case KBTS_FEATURE_ID_isol: + case KBTS_FEATURE_ID_fina: + case KBTS_FEATURE_ID_fin2: + case KBTS_FEATURE_ID_fin3: + case KBTS_FEATURE_ID_medi: + case KBTS_FEATURE_ID_med2: + case KBTS_FEATURE_ID_calt: + case KBTS_FEATURE_ID_liga: + case KBTS_FEATURE_ID_clig: + case KBTS_FEATURE_ID_rlig: + case KBTS_FEATURE_ID_mset: + Result = (Shaper == KBTS_SHAPER_ARABIC) ? KBTS_SKIP_FLAG_ZWNJ : KBTS_SKIP_FLAG_ZWNJ | KBTS_SKIP_FLAG_ZWJ; + break; + + case KBTS_FEATURE_ID_mark: + case KBTS_FEATURE_ID_mkmk: + Result = 0; + break; + + default: + Result = KBTS_SKIP_FLAG_ZWNJ | KBTS_SKIP_FLAG_ZWJ; + break; + } + return Result; +} + +static kbts_u32 kbts_GlyphIncludedInLookup(kbts_font *Font, int Gpos, kbts_un LookupIndex, kbts_u32 Id) +{ + kbts_u32 Result = 1; + if(Font->GlyphLookupMatrix && (Id < Font->GlyphCount)) + { + kbts_un FlatLookupIndex = (Gpos ? Font->GposLookupIndexOffset : 0) + LookupIndex; + kbts_un FlatIndex = FlatLookupIndex * Font->Maxp->GlyphCount + Id; + kbts_un WordIndex = FlatIndex / 32; + kbts_un BitIndex = FlatIndex % 32; + + Result = Font->GlyphLookupMatrix[WordIndex] & (1 << BitIndex); + } + return Result; +} + +static int kbts_GlyphPassesLookupFilter(kbts_glyph *Glyph, kbts_unpacked_lookup *Lookup) +{ + int Result = 1; + kbts_u16 Class = Glyph->Classes.Class; + + if(Class && (Lookup->Flags & (1 << Class))) + { + Result = 0; + } + + if(Result && (Class == KBTS_GLYPH_CLASS_MARK)) + { + if(Lookup->Flags & KBTS_LOOKUP_FLAG_MARK_ATTACHMENT_CLASS_FILTER) + { + kbts_u32 DesiredMarkAttachmentClass = Lookup->Flags >> 8; + + if(Glyph->Classes.MarkAttachmentClass != DesiredMarkAttachmentClass) + { + Result = 0; + } + } + + if(Result && Lookup->MarkFilteringSet) + { + // @Speed: We may want to save the result of the last mark filtering test on the glyph itself. + kbts_cover_glyph_result Cover = kbts_CoverGlyph(Lookup->MarkFilteringSet, Glyph->Id); + if(!Cover.Valid) + { + Result = 0; + } + } + } + + return Result; +} + +static int kbts_SkipGlyph(kbts_glyph *Glyph, kbts_unpacked_lookup *Lookup, kbts_skip_flags SkipFlags, kbts_u32 SkipUnicodeFlags) +{ + int Result = (Glyph->UnicodeFlags & SkipUnicodeFlags) || + ((SkipFlags & KBTS_SKIP_FLAG_ZWNJ) && (Glyph->Codepoint == 0x200C)) || + ((SkipFlags & KBTS_SKIP_FLAG_ZWJ) && (Glyph->Codepoint == 0x200D)) || + !kbts_GlyphPassesLookupFilter(Glyph, Lookup); + return Result; +} + +static int kbts_GlyphsIncludedInLookupSubtable(kbts_font *Font, int Gpos, kbts_unpacked_lookup *Lookup, kbts_un LookupIndex, kbts_un SubtableIndex, kbts_glyph_array *Array, kbts_un CurrentGlyphIndex, kbts_skip_flags SkipFlags, kbts_unicode_flags SkipUnicodeFlags) +{ + if(Font->GlyphLookupSubtableMatrix) + { + kbts_un FlatLookupIndex = (Gpos ? Font->GposLookupIndexOffset : 0) + LookupIndex; + kbts_un FlatSubtableIndex = Font->LookupSubtableIndexOffsets[FlatLookupIndex] + SubtableIndex; + kbts_un MatrixRowOffset = FlatSubtableIndex * Font->Maxp->GlyphCount; + kbts_lookup_subtable_info *Info = &Font->SubtableInfos[FlatSubtableIndex]; + kbts_un MinimumBacktrack = (Info->MinimumBacktrackPlusOne) ? Info->MinimumBacktrackPlusOne - 1 : 0; + kbts_un MinimumFollowup = (Info->MinimumFollowupPlusOne) ? Info->MinimumFollowupPlusOne - 1 : 0; + kbts_un GlyphCount = Font->GlyphCount; + + if((MinimumBacktrack <= CurrentGlyphIndex) && (MinimumFollowup <= (Array->Count - CurrentGlyphIndex))) + { + { // Check the current glyph. + kbts_un Id = Array->Glyphs[CurrentGlyphIndex].Id; + kbts_un FlatIndex = MatrixRowOffset + Id; + kbts_un WordIndex = FlatIndex / 32; + kbts_un BitIndex = FlatIndex % 32; + if(Id >= GlyphCount) + { + return 1; + } + else if(!(Font->GlyphLookupSubtableMatrix[WordIndex] & (1 << BitIndex))) + { + return 0; + } + } + + { + kbts_un BacktrackCounter = 0; + kbts_glyph *BacktrackGlyph = &Array->Glyphs[CurrentGlyphIndex - 1]; + while((BacktrackGlyph >= Array->Glyphs) && (BacktrackCounter < MinimumBacktrack)) + { + kbts_un FlatIndex = MatrixRowOffset + BacktrackGlyph->Id; + kbts_un WordIndex = FlatIndex / 32; + kbts_un BitIndex = FlatIndex % 32; + if(BacktrackGlyph->Id >= GlyphCount) + { + return 1; + } + else if(Font->GlyphLookupSubtableMatrix[WordIndex] & (1 << BitIndex)) + { + BacktrackCounter += 1; + } + else if(!kbts_SkipGlyph(BacktrackGlyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + return 0; + } + + BacktrackGlyph -= 1; + } + + if(BacktrackCounter < MinimumBacktrack) + { + return 0; + } + } + + { + kbts_un LookaheadCounter = 0; + kbts_glyph *LookaheadGlyph = &Array->Glyphs[CurrentGlyphIndex + 1]; + kbts_glyph *OnePastLastGlyph = Array->Glyphs + Array->Count; + while((LookaheadGlyph < OnePastLastGlyph) && (LookaheadCounter < MinimumFollowup)) + { + kbts_un FlatIndex = MatrixRowOffset + LookaheadGlyph->Id; + kbts_un WordIndex = FlatIndex / 32; + kbts_un BitIndex = FlatIndex % 32; + if(LookaheadGlyph->Id >= GlyphCount) + { + return 1; + } + else if(Font->GlyphLookupSubtableMatrix[WordIndex] & (1 << BitIndex)) + { + LookaheadCounter += 1; + } + else if(!kbts_SkipGlyph(LookaheadGlyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + return 0; + } + + LookaheadGlyph += 1; + } + + if(LookaheadCounter < MinimumFollowup) + { + return 0; + } + } + } + else + { + return 0; + } + } + + return 1; +} + +# ifdef KBTS_DUMP +static void kbts_DumpCoverage(kbts_coverage *Coverage) +{ + KBTS_DUMPF("["); + if(Coverage->Format == 1) + { + kbts_u16 *GlyphIds = KBTS_POINTER_AFTER(kbts_u16, Coverage); + KBTS_FOR(GlyphIndex, 0, Coverage->Count) + { + KBTS_DUMPF("%x,", GlyphIds[GlyphIndex]); + } + } + else if(Coverage->Format == 2) + { + kbts_range_record *Ranges = KBTS_POINTER_AFTER(kbts_range_record, Coverage); + KBTS_FOR(RangeIndex, 0, Coverage->Count) + { + kbts_range_record *Range = &Ranges[RangeIndex]; + KBTS_DUMPF("%x..%x @ %u,", Range->StartGlyphId, Range->EndGlyphId, Range->StartCoverageIndex); + } + } + KBTS_DUMPF("]"); +} +# endif + +static void kbts_ByteSwapChainedSequenceContextSubtable(kbts_byteswap_context *Context, kbts_u16 *Base) +{ + if(Base[0] == 1) + { + kbts_chained_sequence_context_1 *Subst = (kbts_chained_sequence_context_1 *)Base; + Subst->ChainedSequenceRuleSetCount = kbts_ByteSwap16(Subst->ChainedSequenceRuleSetCount); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Subst), Subst->ChainedSequenceRuleSetCount); + + KBTS_FOR(SetIndex, 0, Subst->ChainedSequenceRuleSetCount) + { + kbts_ByteSwapChainedSequenceRuleSet(Context, kbts_GetChainedSequenceRuleSet(Subst, SetIndex)); + } + } + else if(Base[0] == 2) + { + kbts_chained_sequence_context_2 *Subst = (kbts_chained_sequence_context_2 *)Base; + kbts_ByteSwapArray16(&Subst->BacktrackClassDefOffset, 4); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Subst), Subst->ChainedClassSequenceRuleSetCount); + + kbts_u16 *BacktrackClassDefinition = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->BacktrackClassDefOffset); + kbts_ByteSwapClassDefinition(Context, BacktrackClassDefinition); + + kbts_u16 *InputClassDefinition = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->InputClassDefOffset); + kbts_ByteSwapClassDefinition(Context, InputClassDefinition); + + kbts_u16 *LookaheadClassDefinition = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->LookaheadClassDefOffset); + kbts_ByteSwapClassDefinition(Context, LookaheadClassDefinition); + + #ifdef KBTS_DUMP + KBTS_DUMPF("Backtrack classes:\n"); + // kbts_DumpClassDefinition(BacktrackClassDefinition); + KBTS_DUMPF("Input classes:\n"); + // kbts_DumpClassDefinition(InputClassDefinition); + KBTS_DUMPF("Lookahead classes:\n"); + // kbts_DumpClassDefinition(LookaheadClassDefinition); + #endif + + KBTS_FOR(SetIndex, 0, Subst->ChainedClassSequenceRuleSetCount) + { + kbts_chained_sequence_rule_set *Set = kbts_GetChainedClassSequenceRuleSet(Subst, SetIndex); + kbts_ByteSwapChainedSequenceRuleSet(Context, Set); + + #ifdef KBTS_DUMP + if(Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_chained_sequence_rule *Rule = kbts_GetChainedClassSequenceRule(Set, RuleIndex); + kbts_unpacked_chained_sequence_rule Unpacked = kbts_UnpackChainedSequenceRule(Rule, 0); + + KBTS_DUMPF("Backtrack: ["); + KBTS_FOR(BacktrackIndex, 0, Unpacked.BacktrackCount) + { + if(BacktrackIndex) KBTS_DUMPF(", "); + KBTS_DUMPF("%u", Unpacked.Backtrack[BacktrackIndex]); + } + KBTS_DUMPF("]\n" + "Input: ["); + KBTS_FOR(InputIndex, 1, Unpacked.InputCount) + { + if(InputIndex) KBTS_DUMPF(", "); + KBTS_DUMPF("%u", Unpacked.Input[InputIndex - 1]); + } + KBTS_DUMPF("]\n" + "Lookahead: ["); + KBTS_FOR(LookaheadIndex, 0, Unpacked.LookaheadCount) + { + if(LookaheadIndex) KBTS_DUMPF(", "); + KBTS_DUMPF("%u", Unpacked.Lookahead[LookaheadIndex]); + } + KBTS_DUMPF("]\n" + "Records: ["); + KBTS_FOR(RecordIndex, 0, Unpacked.RecordCount) + { + kbts_sequence_lookup_record *Record = &Unpacked.Records[RecordIndex]; + if(RecordIndex) KBTS_DUMPF(", "); + KBTS_DUMPF("%u@%u", Record->LookupListIndex, Record->SequenceIndex); + } + KBTS_DUMPF("]\n"); + } + } + #endif + } + } + else if(Base[0] == 3) + { + kbts_chained_sequence_context_3 *Subst = (kbts_chained_sequence_context_3 *)Base; + kbts_unpacked_chained_sequence_context_3 Unpacked = kbts_UnpackChainedSequenceContext3(Subst, 1); + + kbts_un U16Count = Unpacked.BacktrackCount + Unpacked.InputCount + Unpacked.LookaheadCount + Unpacked.RecordCount * 2 + 4; + kbts_ByteSwapArray16(&Subst->BacktrackGlyphCount, U16Count); + + KBTS_FOR(BacktrackCoverageIndex, 0, Unpacked.BacktrackCount) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.BacktrackCoverageOffsets[BacktrackCoverageIndex]); + + kbts_ByteSwapCoverage(Context, Coverage); + } + + KBTS_FOR(InputCoverageIndex, 0, Unpacked.InputCount) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.InputCoverageOffsets[InputCoverageIndex]); + + kbts_ByteSwapCoverage(Context, Coverage); + } + + KBTS_FOR(LookaheadCoverageIndex, 0, Unpacked.LookaheadCount) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.LookaheadCoverageOffsets[LookaheadCoverageIndex]); + + kbts_ByteSwapCoverage(Context, Coverage); + } + +# ifdef KBTS_DUMP + KBTS_DUMPF(" Backtrack: "); + KBTS_FOR(BacktrackCoverageIndex, 0, Unpacked.BacktrackCount) + { + kbts_DumpCoverage(KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.BacktrackCoverageOffsets[BacktrackCoverageIndex])); + } + KBTS_DUMPF("\n Input: "); + KBTS_FOR(InputCoverageIndex, 0, Unpacked.InputCount) + { + kbts_DumpCoverage(KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.InputCoverageOffsets[InputCoverageIndex])); + } + KBTS_DUMPF("\n Lookahead: "); + KBTS_FOR(LookaheadCoverageIndex, 0, Unpacked.LookaheadCount) + { + kbts_DumpCoverage(KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.LookaheadCoverageOffsets[LookaheadCoverageIndex])); + } + KBTS_DUMPF("\n Lookups: ["); + KBTS_FOR(RecordIndex, 0, Unpacked.RecordCount) + { + kbts_sequence_lookup_record *Record = &Unpacked.Records[RecordIndex]; + + KBTS_DUMPF("%u@%u,", Record->LookupListIndex, Record->SequenceIndex); + } + KBTS_DUMPF("]\n"); +# endif + } +} + +static void kbts_ByteSwapGsubLookupSubtable(kbts_byteswap_context *Context, kbts_u16 LookupType, kbts_u16 *Base) +{ + int Swap = !kbts_AlreadyVisited(Context, Base); + while(Swap && (LookupType == 7)) + { + kbts_extension *Subst = (kbts_extension *)Base; + Subst->Format = kbts_ByteSwap16(Subst->Format); + Subst->LookupType = kbts_ByteSwap16(Subst->LookupType); + Subst->Offset = kbts_ByteSwap32(Subst->Offset); + + KBTS_DUMPF(" Type 7.1\n" + " Offset %zu\n" + " -> %zu\n", + (char *)Base - Context->FileBase, (char *)Subst + Subst->Offset - Context->FileBase); + + Base = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->Offset); + LookupType = Subst->LookupType; + + Swap = !kbts_AlreadyVisited(Context, Base); + } + + if(Swap) + { + *Base = kbts_ByteSwap16(*Base); + + KBTS_DUMPF(" Type %u.%u\n" + " Offset %zu\n", + LookupType, *Base, (char *)Base - Context->FileBase); + + if(kbts_GsubLookupBeginsWithCoverage(LookupType, Base[0])) + { + Base[1] = kbts_ByteSwap16(Base[1]); + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Base, Base[1]); + + kbts_ByteSwapCoverage(Context, Coverage); + +# ifdef KBTS_DUMP + KBTS_DUMPF(" Coverage %u\n", Coverage->Format); + if(Coverage->Format == 1) + { + kbts_u16 *GlyphIds = KBTS_POINTER_AFTER(kbts_u16, Coverage); + KBTS_FOR(GlyphIndex, 0, Coverage->Count) + { + KBTS_DUMPF(" %x\n", GlyphIds[GlyphIndex]); + } + } + else if(Coverage->Format == 2) + { + kbts_range_record *Ranges = KBTS_POINTER_AFTER(kbts_range_record, Coverage); + KBTS_FOR(RangeIndex, 0, Coverage->Count) + { + kbts_range_record Range = Ranges[RangeIndex]; + KBTS_DUMPF(" %x..%x@%u..%u\n", Range.StartGlyphId, Range.EndGlyphId, Range.StartCoverageIndex, Range.StartCoverageIndex + (Range.EndGlyphId - Range.StartGlyphId)); + } + } +# endif + } + + switch(LookupType) + { + case 1: + { + kbts_single_substitution *Subst = (kbts_single_substitution *)Base; + Subst->DeltaOrCount.GlyphCount = kbts_ByteSwap16(Subst->DeltaOrCount.GlyphCount); + +# ifdef KBTS_DUMP + if(Subst->Format == 1) + { + KBTS_DUMPF(" += %d\n", Subst->DeltaOrCount.DeltaGlyphId); + } +# endif + + if(Subst->Format == 2) + { + kbts_u16 *GlyphIds = KBTS_POINTER_AFTER(kbts_u16, Subst); + kbts_ByteSwapArray16(GlyphIds, Subst->DeltaOrCount.GlyphCount); + + #ifdef KBTS_DUMP + KBTS_DUMPF(" ["); + KBTS_FOR(IdIndex, 0, Subst->DeltaOrCount.GlyphCount) + { + if(IdIndex) KBTS_DUMPF(" "); + KBTS_DUMPF("%x", GlyphIds[IdIndex]); + } + KBTS_DUMPF("]\n"); + #endif + } + } + break; + + case 2: + { + kbts_multiple_substitution *Subst = (kbts_multiple_substitution *)Base; + Subst->SequenceCount = kbts_ByteSwap16(Subst->SequenceCount); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Subst), Subst->SequenceCount); + + KBTS_FOR(SequenceIndex, 0, Subst->SequenceCount) + { + kbts_sequence *Sequence = kbts_GetSequence(Subst, SequenceIndex); + + if(!kbts_AlreadyVisited(Context, Sequence)) + { + Sequence->GlyphCount = kbts_ByteSwap16(Sequence->GlyphCount); + + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Sequence), Sequence->GlyphCount); + } + + #ifdef KBTS_DUMP + KBTS_DUMPF(" ["); + kbts_u16 *SequenceGlyphIds = KBTS_POINTER_AFTER(kbts_u16, Sequence); + KBTS_FOR(SequenceGlyphIndex, 0, Sequence->GlyphCount) + { + if(SequenceGlyphIndex) KBTS_DUMPF(" "); + KBTS_DUMPF("%x", SequenceGlyphIds[SequenceGlyphIndex]); + } + KBTS_DUMPF("]\n"); + #endif + } + } + break; + + case 3: + { + kbts_alternate_substitution *Subst = (kbts_alternate_substitution *)Base; + Subst->AlternateSetCount = kbts_ByteSwap16(Subst->AlternateSetCount); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Subst), Subst->AlternateSetCount); + + KBTS_FOR(SetIndex, 0, Subst->AlternateSetCount) + { + kbts_alternate_set *Set = kbts_GetAlternateSet(Subst, SetIndex); + + if(!kbts_AlreadyVisited(Context, Set)) + { + Set->GlyphCount = kbts_ByteSwap16(Set->GlyphCount); + + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Set), Set->GlyphCount); + } + + #ifdef KBTS_DUMP + KBTS_DUMPF(" ["); + kbts_u16 *SetGlyphIds = KBTS_POINTER_AFTER(kbts_u16, Set); + KBTS_FOR(SetGlyphIndex, 0, Set->GlyphCount) + { + if(SetGlyphIndex) KBTS_DUMPF(" "); + KBTS_DUMPF("%x", SetGlyphIds[SetGlyphIndex]); + } + KBTS_DUMPF("]\n"); + #endif + } + } + break; + + case 4: + { + kbts_ligature_substitution *Subst = (kbts_ligature_substitution *)Base; + Subst->LigatureSetCount = kbts_ByteSwap16(Subst->LigatureSetCount); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Subst), Subst->LigatureSetCount); + + KBTS_FOR(SetIndex, 0, Subst->LigatureSetCount) + { + kbts_ligature_set *Set = kbts_GetLigatureSet(Subst, SetIndex); + + if(!kbts_AlreadyVisited(Context, Set)) + { + Set->Count = kbts_ByteSwap16(Set->Count); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Set), Set->Count); + + KBTS_FOR(LigatureIndex, 0, Set->Count) + { + kbts_ligature *Ligature = kbts_GetLigature(Set, LigatureIndex); + + if(!kbts_AlreadyVisited(Context, Ligature)) + { + kbts_ByteSwapArray16(&Ligature->Glyph, 2); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Ligature), Ligature->ComponentCount - 1); + +# ifdef KBTS_DUMP + KBTS_DUMPF("ligature: ["); + kbts_u16 *ComponentIds = KBTS_POINTER_AFTER(kbts_u16, Ligature); + KBTS_FOR(ComponentIndex, 1, Ligature->ComponentCount) + { + KBTS_DUMPF("%x,", ComponentIds[ComponentIndex - 1]); + } + KBTS_DUMPF("] -> %x\n", Ligature->Glyph); +# endif + } + } + } + } + +# ifdef KBTS_DUMP + +# endif + } + break; + + case 5: + { + kbts_ByteSwapSequenceContextSubtable(Context, Base); + } + break; + + case 6: + { + kbts_ByteSwapChainedSequenceContextSubtable(Context, Base); + } + break; + + case 8: + { + kbts_reverse_chain_substitution *Subst = (kbts_reverse_chain_substitution *)Base; + kbts_unpacked_reverse_chain_substitution Unpacked = kbts_UnpackReverseChainSubstitution(Subst, 1); + + kbts_un U16Count = Unpacked.BacktrackCount + Unpacked.GlyphCount + Unpacked.LookaheadCount + 3; + kbts_ByteSwapArray16(&Subst->BacktrackGlyphCount, U16Count); + + KBTS_FOR(BacktrackCoverageIndex, 0, Unpacked.BacktrackCount) + { + kbts_ByteSwapCoverage(Context, KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.BacktrackCoverageOffsets[BacktrackCoverageIndex])); + } + KBTS_FOR(LookaheadCoverageIndex, 0, Unpacked.LookaheadCount) + { + kbts_ByteSwapCoverage(Context, KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.LookaheadCoverageOffsets[LookaheadCoverageIndex])); + } + } + break; + } + } +} + +static void kbts_ByteSwapGposLookupSubtable(kbts_byteswap_context *Context, kbts_lookup_list *LookupList, kbts_u16 LookupType, kbts_u16 *Base) +{ + if(!kbts_AlreadyVisited(Context, Base)) + { + *Base = kbts_ByteSwap16(*Base); + + KBTS_DUMPF(" GPOS subtable %u.%u\n", LookupType, *Base); + + if(kbts_GposLookupBeginsWithCoverage(LookupType, *Base)) + { + kbts_u16 *CoverageOffset = &Base[1]; + *CoverageOffset = kbts_ByteSwap16(*CoverageOffset); + + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Base, *CoverageOffset); + kbts_ByteSwapCoverage(Context, Coverage); + } + + switch(LookupType) + { + case 1: + { + kbts_single_adjustment_1 *Adjust = (kbts_single_adjustment_1 *)Base; + Adjust->ValueFormat = kbts_ByteSwap16(Adjust->ValueFormat); + + if(Adjust->Format == 1) + { + kbts_ByteSwapValueRecord(Context, Adjust, Adjust->ValueFormat, KBTS_POINTER_AFTER(kbts_u16, Adjust)); + } + else if(Adjust->Format == 2) + { + kbts_single_adjustment_2 *Adjust2 = (kbts_single_adjustment_2 *)Base; + Adjust2->RecordCount = kbts_ByteSwap16(Adjust2->RecordCount); + + kbts_u16 *At = KBTS_POINTER_AFTER(kbts_u16, Adjust2); + KBTS_FOR(RecordIndex, 0, Adjust2->RecordCount) + { + kbts_unpacked_value_record Unpacked = kbts_ByteSwapValueRecord(Context, Adjust2, Adjust2->ValueFormat, At); + + At += Unpacked.Size; + } + } + } + break; + + case 2: + { + if(*Base == 1) + { + kbts_pair_adjustment_1 *Adjust = (kbts_pair_adjustment_1 *)Base; + kbts_ByteSwapArray16(&Adjust->ValueFormat1, 3); + + kbts_u16 *SetOffsets = KBTS_POINTER_AFTER(kbts_u16, Adjust); + kbts_ByteSwapArray16(SetOffsets, Adjust->SetCount); + + kbts_un Size1 = kbts_PopCount32(Adjust->ValueFormat1); + kbts_un Size2 = kbts_PopCount32(Adjust->ValueFormat2); + kbts_un PairRecordSize = Size1 + Size2 + 1; + + KBTS_FOR(SetIndex, 0, Adjust->SetCount) + { + kbts_pair_set *Set = KBTS_POINTER_OFFSET(kbts_pair_set, Adjust, SetOffsets[SetIndex]); + + if(!kbts_AlreadyVisited(Context, Set)) + { + Set->Count = kbts_ByteSwap16(Set->Count); + + kbts_u16 *At = KBTS_POINTER_AFTER(kbts_u16, Set); + + KBTS_FOR(RecordIndex, 0, Set->Count) + { + kbts_pair_value_record *PairRecord = (kbts_pair_value_record *)(At + RecordIndex * PairRecordSize); + + PairRecord->SecondGlyph = kbts_ByteSwap16(PairRecord->SecondGlyph); + kbts_u16 *Record = KBTS_POINTER_AFTER(kbts_u16, PairRecord); + + kbts_unpacked_value_record Unpacked1 = kbts_ByteSwapValueRecord(Context, Record, Adjust->ValueFormat1, Record); + Record += Unpacked1.Size; + kbts_ByteSwapValueRecord(Context, Record, Adjust->ValueFormat2, Record); + } + } + } + } + else if(*Base == 2) + { + kbts_pair_adjustment_2 *Adjust = (kbts_pair_adjustment_2 *)Base; + kbts_ByteSwapArray16(&Adjust->ValueFormat1, 6); + + kbts_ByteSwapClassDefinition(Context, KBTS_POINTER_OFFSET(kbts_u16, Adjust, Adjust->ClassDefinition1Offset)); + kbts_ByteSwapClassDefinition(Context, KBTS_POINTER_OFFSET(kbts_u16, Adjust, Adjust->ClassDefinition2Offset)); + + kbts_u16 *Records = KBTS_POINTER_AFTER(kbts_u16, Adjust); + + kbts_un Size1 = kbts_PopCount32(Adjust->ValueFormat1); + kbts_un Size2 = kbts_PopCount32(Adjust->ValueFormat2); + + kbts_u16 *RecordPair = Records; + KBTS_FOR(RecordIndex, 0, (kbts_un)Adjust->Class1Count * (kbts_un)Adjust->Class2Count) + { + kbts_ByteSwapValueRecord(Context, Adjust, Adjust->ValueFormat1, RecordPair); + RecordPair += Size1; + + kbts_ByteSwapValueRecord(Context, Adjust, Adjust->ValueFormat2, RecordPair); + RecordPair += Size2; + } + } + } + break; + + case 3: + { + kbts_cursive_attachment *Adjust = (kbts_cursive_attachment *)Base; + Adjust->EntryExitCount = kbts_ByteSwap16(Adjust->EntryExitCount); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Adjust), Adjust->EntryExitCount * 2); + + kbts_entry_exit *EntryExits = KBTS_POINTER_AFTER(kbts_entry_exit, Adjust); + KBTS_FOR(EntryExitIndex, 0, Adjust->EntryExitCount) + { + kbts_entry_exit *EntryExit = &EntryExits[EntryExitIndex]; + + if(EntryExit->EntryAnchorOffset) + { + kbts_ByteSwapAnchor(Context, KBTS_POINTER_OFFSET(kbts_anchor, Adjust, EntryExit->EntryAnchorOffset)); + } + + if(EntryExit->ExitAnchorOffset) + { + kbts_ByteSwapAnchor(Context, KBTS_POINTER_OFFSET(kbts_anchor, Adjust, EntryExit->ExitAnchorOffset)); + } + } + } + break; + + case 4: + case 6: + { + kbts_mark_to_base_attachment *Adjust = (kbts_mark_to_base_attachment *)Base; + kbts_ByteSwapArray16(&Adjust->BaseCoverageOffset, 4); + + kbts_ByteSwapCoverage(Context, KBTS_POINTER_OFFSET(kbts_coverage, Adjust, Adjust->BaseCoverageOffset)); + kbts_ByteSwapMarkArray(Context, KBTS_POINTER_OFFSET(kbts_mark_array, Adjust, Adjust->MarkArrayOffset)); + kbts_ByteSwapBaseArray(Context, Adjust->MarkClassCount, KBTS_POINTER_OFFSET(kbts_base_array, Adjust, Adjust->BaseArrayOffset)); + } + break; + + case 5: + { + kbts_mark_to_ligature_attachment *Adjust = (kbts_mark_to_ligature_attachment *)Base; + kbts_ByteSwapArray16(&Adjust->LigatureCoverageOffset, 4); + + kbts_ByteSwapCoverage(Context, KBTS_POINTER_OFFSET(kbts_coverage, Adjust, Adjust->LigatureCoverageOffset)); + kbts_ByteSwapMarkArray(Context, KBTS_POINTER_OFFSET(kbts_mark_array, Adjust, Adjust->MarkArrayOffset)); + + kbts_ligature_array *LigatureArray = KBTS_POINTER_OFFSET(kbts_ligature_array, Adjust, Adjust->LigatureArrayOffset); + if(!kbts_AlreadyVisited(Context, LigatureArray)) + { + LigatureArray->Count = kbts_ByteSwap16(LigatureArray->Count); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, LigatureArray), LigatureArray->Count); + + KBTS_FOR(AttachIndex, 0, LigatureArray->Count) + { + kbts_ligature_attach *Attach = kbts_GetLigatureAttach(LigatureArray, AttachIndex); + + if(!kbts_AlreadyVisited(Context, Attach)) + { + Attach->Count = kbts_ByteSwap16(Attach->Count); + + kbts_u16 *AttachAnchorOffsets = KBTS_POINTER_AFTER(kbts_u16, Attach); + kbts_ByteSwapArray16(AttachAnchorOffsets, Attach->Count * Adjust->MarkClassCount); + + KBTS_FOR(ComponentIndex, 0, Attach->Count) + { + KBTS_FOR(MarkClass, 0, Adjust->MarkClassCount) + { + kbts_anchor *Anchor = kbts_GetLigatureAttachAnchor(Adjust, Attach, (kbts_u16)MarkClass, ComponentIndex); + + kbts_ByteSwapAnchor(Context, Anchor); + } + } + } + } + } + } + break; + + case 7: + { + kbts_ByteSwapSequenceContextSubtable(Context, Base); + } + break; + + case 8: + { + kbts_ByteSwapChainedSequenceContextSubtable(Context, Base); + } + break; + + case 9: + { + // @Cleanup: Replace recursion with a loop at the start of this function! + kbts_extension *Adjust = (kbts_extension *)Base; + + Adjust->LookupType = kbts_ByteSwap16(Adjust->LookupType); + Adjust->Offset = kbts_ByteSwap32(Adjust->Offset); + + kbts_ByteSwapGposLookupSubtable(Context, LookupList, Adjust->LookupType, KBTS_POINTER_OFFSET(kbts_u16, Adjust, Adjust->Offset)); + } + break; + } + } +} + +static kbts_glyph_classes kbts_GlyphClasses(kbts_font *Font, kbts_u32 Id) +{ + kbts_glyph_classes Result = KBTS_ZERO; + + // Look up all glyph classes. + kbts_gdef *Gdef = Font->Gdef; + if(Gdef) + { + kbts_u16 Class = 0; + if(Gdef->ClassDefinitionOffset) + { + kbts_u16 *ClassDefBase = KBTS_POINTER_OFFSET(kbts_u16, Gdef, Gdef->ClassDefinitionOffset); + Class = kbts_GlyphClassFromTable(ClassDefBase, Id); + } + + if(Gdef->MarkAttachmentClassDefinitionOffset && (Class == KBTS_GLYPH_CLASS_MARK)) + { + kbts_u16 *MarkAttachmentClassDefBase = KBTS_POINTER_OFFSET(kbts_u16, Gdef, Gdef->MarkAttachmentClassDefinitionOffset); + Result.MarkAttachmentClass = kbts_GlyphClassFromTable(MarkAttachmentClassDefBase, Id); + } + + Result.Class = Class; + } + + return Result; +} + +static int kbts_ScriptIsWeak(kbts_script Script) +{ + int Result = (Script == KBTS_SCRIPT_DONT_KNOW) || (Script == KBTS_SCRIPT_DEFAULT) || (Script == KBTS_SCRIPT_DEFAULT2); + return Result; +} + +static int kbts_ShaperRtl(kbts_shaper Shaper) +{ + int Result = (Shaper == KBTS_SHAPER_ARABIC) || (Shaper == KBTS_SHAPER_HEBREW); + return Result; +} + +// Easy shorthand for determining scripts in simple cases. +// Do not ship this! You should use script breaks instead. +KBTS_EXPORT void kbts_InferScript(kbts_direction *Direction, kbts_script *Script, kbts_script GlyphScript) +{ + if(Script) + { + if(kbts_ScriptIsWeak(*Script) && !kbts_ScriptIsWeak(GlyphScript)) + { + *Script = GlyphScript; + if(Direction && (!*Direction)) + { + kbts_script_properties *Properties = &kbts_ScriptProperties[GlyphScript]; + *Direction = kbts_ShaperRtl(Properties->Shaper) ? KBTS_DIRECTION_RTL : KBTS_DIRECTION_LTR; + } + } + } +} + +KBTS_EXPORT kbts_glyph kbts_CodepointToGlyph(kbts_font *Font, kbts_u32 Codepoint) +{ + kbts_glyph Result = KBTS_ZERO; + Result.Codepoint = Codepoint; + + // Look up Unicode properties. + Result.Decomposition = kbts_GetUnicodeDecomposition(Codepoint); + Result.JoiningType = kbts_GetUnicodeJoiningType(Codepoint); + Result.UnicodeFlags = kbts_GetUnicodeFlags(Codepoint); + kbts_u16 SyllabicInfo = kbts_GetUnicodeSyllabicInfo(Codepoint); + Result.SyllabicClass = kbts_GetSyllabicClass(SyllabicInfo); + Result.SyllabicPosition = kbts_GetSyllabicPosition(SyllabicInfo); + Result.CombiningClass = kbts_GetUnicodeCombiningClass(Codepoint); + Result.UseClass = kbts_GetUnicodeUseClass(Codepoint); + Result.Script = kbts_GetUnicodeScript(Codepoint); + Result.ParentInfo = kbts_GetUnicodeParentInfo(Codepoint); + + kbts_u16 *CmapBase = Font->Cmap; + if(CmapBase) + { + switch(*CmapBase) + { + case 0: + { + kbts_cmap_0 *Cmap0 = (kbts_cmap_0 *)CmapBase; + + if((kbts_un)Codepoint < KBTS_ARRAY_LENGTH(Cmap0->GlyphIdArray)) + { + Result.Id = Cmap0->GlyphIdArray[Codepoint]; + } + } + break; + + case 2: + { + kbts_cmap_2 *Cmap2 = (kbts_cmap_2 *)CmapBase; + kbts_sub_header *SubHeaders = KBTS_POINTER_AFTER(kbts_sub_header, Cmap2); + + kbts_u32 High = (Codepoint >> 8) & 0xFF; + + if(!(Codepoint & 0xFF00)) + { + High = Codepoint & 0xFF; + } + + // The Microsoft documentation doesn't mention that the SubHeaderKeys are indices multiplied by 8, for some + // reason..! The Apple documentation does. + kbts_u16 SubHeaderIndex = Cmap2->SubHeaderKeys[High] / 8; + kbts_sub_header *SubHeader = &SubHeaders[SubHeaderIndex]; + + if(!SubHeaderIndex) + { + // With SubHeader 0, we only use the first byte. + Codepoint = High; + } + else + { + Codepoint = Codepoint & 0xFF; + } + + kbts_u32 Offset = Codepoint - SubHeader->FirstCode; + if(Offset < SubHeader->EntryCount) + { + kbts_u16 *GlyphIds = KBTS_POINTER_OFFSET(kbts_u16, &SubHeader->IdRangeOffset, SubHeader->IdRangeOffset); + kbts_u16 GlyphId = GlyphIds[Offset]; + if(GlyphId) + { + GlyphId += SubHeader->IdDelta; + } + + Result.Id = GlyphId; + } + } + break; + + case 4: + { + kbts_cmap_4 *Cmap4 = (kbts_cmap_4 *)CmapBase; + kbts_un SegmentCount = Cmap4->SegmentCountTimesTwo / 2; + kbts_u16 *EndCodes = KBTS_POINTER_AFTER(kbts_u16, Cmap4); + kbts_u16 *StartCodes = EndCodes + SegmentCount + 1; + kbts_s16 *IdDeltas = (kbts_s16 *)(StartCodes + SegmentCount); + kbts_u16 *IdRangeOffsets = (kbts_u16 *)(IdDeltas + SegmentCount); + + KBTS_FOR(SegmentIndex, 0, SegmentCount) + { + kbts_u16 Start = StartCodes[SegmentIndex]; + if((Codepoint >= Start) && (Codepoint <= EndCodes[SegmentIndex])) + { + kbts_s16 Delta = IdDeltas[SegmentIndex]; + kbts_u16 RangeOffset = IdRangeOffsets[SegmentIndex]; + + kbts_u16 GlyphId = (kbts_u16)Delta; + if(RangeOffset) + { + GlyphId += *(&IdRangeOffsets[SegmentIndex] + (Codepoint - Start) + RangeOffset / 2); + } + else + { + GlyphId += (kbts_u16)(Codepoint); + } + Result.Id = GlyphId; + + break; + } + } + } + break; + + case 6: + { + kbts_cmap_6 *Cmap6 = (kbts_cmap_6 *)CmapBase; + kbts_u16 *GlyphIds = KBTS_POINTER_AFTER(kbts_u16, Cmap6); + + kbts_un Offset = Codepoint - Cmap6->FirstCode; + if(Offset < Cmap6->EntryCount) + { + Result.Id = GlyphIds[Offset]; + } + } + break; + + case 12: + { + kbts_cmap_12_13 *Cmap12 = (kbts_cmap_12_13 *)CmapBase; + kbts_sequential_map_group *Groups = KBTS_POINTER_AFTER(kbts_sequential_map_group, Cmap12); + + kbts_un GlyphId = 0; + KBTS_FOR(GroupIndex, 0, Cmap12->GroupCount) + { + kbts_sequential_map_group *Group = &Groups[GroupIndex]; + + if((Codepoint >= Group->StartCharacterCode) && (Codepoint <= Group->EndCharacterCode)) + { + kbts_un Offset = Codepoint - Group->StartCharacterCode; + GlyphId = Group->StartGlyphId + Offset; + + break; + } + } + + Result.Id = (kbts_u16)GlyphId; + } + break; + } + } + + if(Font->Gdef) + { + Result.Classes = kbts_GlyphClasses(Font, Result.Id); + } + else + { + // @Cleanup: This is garbage compatibility-with-broken-fonts code. I would very much like to get rid of it. + if((Result.UnicodeFlags & KBTS_UNICODE_FLAG_DEFAULT_IGNORABLE) || !(Result.UnicodeFlags & KBTS_UNICODE_FLAG_NON_SPACING_MARK)) + { + Result.Classes.Class = KBTS_GLYPH_CLASS_BASE; + } + else + { + Result.Classes.Class = KBTS_GLYPH_CLASS_MARK; + } + } + + return Result; +} + +typedef struct kbts_iterate_features +{ + kbts_gsub_gpos *Header; + kbts_feature_list *FeatureList; + // @Incomplete + // kbts_feature_variations *FeatureVariations; + kbts_langsys *Langsys; + + kbts_feature_set EnabledFeatures; + + kbts_u32 CurrentFeatureTag; + kbts_u32 CurrentFeatureFlag; + + kbts_u32 FeatureIndex; + kbts_feature *Feature; +} kbts_iterate_features; + +static kbts_iterate_features kbts_IterateFeatures(kbts_shape_config *Config, kbts_shaping_table ShapingTable, kbts_feature_set EnabledFeatures) +{ + kbts_iterate_features Result = KBTS_ZERO; + + kbts_gsub_gpos *Header = Config->Font->ShapingTables[ShapingTable]; + if(Header) + { + // @Incomplete + // if(Header->Minor == 1) + // { + // Result.FeatureVariations = KBTS_POINTER_OFFSET(kbts_feature_variations, Header, Header->FeatureVariationsOffset); + // } + + Result.FeatureList = KBTS_POINTER_OFFSET(kbts_feature_list, Header, Header->FeatureListOffset); + Result.Header = Header; + Result.Langsys = Config->Langsys[ShapingTable]; + Result.EnabledFeatures = EnabledFeatures; + } + + return Result; +} + +static kbts_u32 kbts_IsValidFeatureIteration(kbts_iterate_features *It) +{ + kbts_u32 Result = It->Langsys != 0; + return Result; +} + +static kbts_u32 kbts_NextFeature(kbts_iterate_features *It) +{ + kbts_u32 Result = 0; + It->Feature = 0; + + if(kbts_IsValidFeatureIteration(It)) + { + kbts_u16 *FeatureIndices = KBTS_POINTER_AFTER(kbts_u16, It->Langsys); + // @Incomplete + // kbts_feature_variations *FeatureVariations = It->FeatureVariations; + while(It->FeatureIndex < It->Langsys->FeatureIndexCount) + { + kbts_feature_pointer Feature = kbts_GetFeature(It->FeatureList, FeatureIndices[It->FeatureIndex]); + + // We might need to swap out this feature with another. + // Check for variations. + // @Incomplete + //if(FeatureVariations) + //{ + // KBTS_FOR(VariationIndex, 0, FeatureVariations->RecordCount) + // { + // kbts_feature_variation_pointer Variation = kbts_GetFeatureVariation(FeatureVariations, VariationIndex); + // KBTS_FOR(ConditionIndex, 0, Variation.ConditionSet->Count) + // { + // kbts_condition_1 *Condition = kbts_GetCondition(Variation.ConditionSet, ConditionIndex); + // KBTS_ASSERT(0); + // } + // } + //} + + It->FeatureIndex += 1; + + kbts_u32 FeatureId = kbts_FeatureToId(Feature.Tag); + kbts_u64 FeatureFlag = (FeatureId < 32) ? (1ull << FeatureId) : 0; + if(kbts_ContainsFeature(&It->EnabledFeatures, kbts_FeatureToId(Feature.Tag))) + { + It->Feature = Feature.Feature; + It->CurrentFeatureTag = Feature.Tag; + It->CurrentFeatureFlag = FeatureFlag & KBTS_GLYPH_FEATURE_MASK; + Result = 1; + + break; + } + } + } + + return Result; +} + +typedef struct kbts_iterate_lookups +{ + kbts_lookup_list *LookupList; + kbts_feature *Feature; + + kbts_lookup *Lookup; + kbts_u16 LookupIndex; + + kbts_u32 LookupIndexIndex; +} kbts_iterate_lookups; + +static kbts_iterate_lookups kbts_IterateLookups(kbts_lookup_list *List, kbts_feature *Feature) +{ + kbts_iterate_lookups Result = KBTS_ZERO; + Result.LookupList = List; + Result.Feature = Feature; + + return Result; +} + +static kbts_u32 kbts_NextLookup(kbts_iterate_lookups *It) +{ + kbts_u32 Result = 0; + kbts_feature *Feature = It->Feature; + + if(It->LookupList && Feature && (It->LookupIndexIndex < Feature->LookupIndexCount)) + { + kbts_u16 *LookupIndices = KBTS_POINTER_AFTER(kbts_u16, Feature); + + It->LookupIndex = LookupIndices[It->LookupIndexIndex]; + It->Lookup = kbts_GetLookup(It->LookupList, It->LookupIndex); + + Result = 1; + It->LookupIndexIndex += 1; + } + + return Result; +} + +KBTS_INLINE void kbts_GsubMutate(kbts_font *Font, kbts_glyph *Glyph, kbts_u16 NewId, kbts_u32 Flags) +{ + Glyph->Id = NewId; + Glyph->Classes = kbts_GlyphClasses(Font, NewId); + Glyph->Flags = (Glyph->Flags & ~KBTS_GLYPH_FLAG_FIRST_IN_MULTIPLE_SUBSTITUTION) | Flags; +} + +typedef struct kbts_do_single_substitution_result +{ + kbts_u32 ConsumedGlyphCount; + kbts_u32 WrittenGlyphCount; + kbts_u32 PerformedSubstitution; +} kbts_do_single_substitution_result; + +static kbts_feature_set kbts_ShaperFeatures[] = { + /* KBTS_SHAPER_DEFAULT */ {{KBTS_FEATURE_FLAG0(abvm) | KBTS_FEATURE_FLAG0(blwm) | KBTS_FEATURE_FLAG0(curs) | + KBTS_FEATURE_FLAG0(frac) | KBTS_FEATURE_FLAG0(numr) | KBTS_FEATURE_FLAG0(dnom) | KBTS_FEATURE_FLAG0(ccmp) | + KBTS_FEATURE_FLAG0(clig) | KBTS_FEATURE_FLAG0(calt), + 0, + KBTS_FEATURE_FLAG2(locl) | KBTS_FEATURE_FLAG2(ltra) | KBTS_FEATURE_FLAG2(ltrm) | KBTS_FEATURE_FLAG2(liga) | + KBTS_FEATURE_FLAG2(rlig) | KBTS_FEATURE_FLAG2(rclt) | KBTS_FEATURE_FLAG2(dist) | KBTS_FEATURE_FLAG2(kern) | + KBTS_FEATURE_FLAG2(mark) | KBTS_FEATURE_FLAG2(mkmk), + KBTS_FEATURE_FLAG3(rvrn)}}, + /* KBTS_SHAPER_ARABIC */ {{KBTS_FEATURE_FLAG0(frac) | KBTS_FEATURE_FLAG0(numr) | KBTS_FEATURE_FLAG0(dnom) | KBTS_FEATURE_FLAG0(ccmp) | + KBTS_FEATURE_FLAG0(isol) | KBTS_FEATURE_FLAG0(fina) | KBTS_FEATURE_FLAG0(fin2) | KBTS_FEATURE_FLAG0(fin3) | + KBTS_FEATURE_FLAG0(medi) | KBTS_FEATURE_FLAG0(med2) | KBTS_FEATURE_FLAG0(init) | KBTS_FEATURE_FLAG0(calt) | + KBTS_FEATURE_FLAG0(clig) | KBTS_FEATURE_FLAG2(mset) | KBTS_FEATURE_FLAG0(abvm) | KBTS_FEATURE_FLAG0(blwm) | + KBTS_FEATURE_FLAG0(curs), + 0, + KBTS_FEATURE_FLAG2(rlig) | KBTS_FEATURE_FLAG2(liga) | KBTS_FEATURE_FLAG2(rclt) | KBTS_FEATURE_FLAG2(mark) | + KBTS_FEATURE_FLAG2(mkmk) | KBTS_FEATURE_FLAG2(dist) | KBTS_FEATURE_FLAG2(kern) | KBTS_FEATURE_FLAG2(rtla) | + KBTS_FEATURE_FLAG2(locl), + KBTS_FEATURE_FLAG3(rvrn) | KBTS_FEATURE_FLAG3(rtlm) | KBTS_FEATURE_FLAG3(stch)}}, + /* KBTS_SHAPER_HANGUL */ {{KBTS_FEATURE_FLAG0(frac) | KBTS_FEATURE_FLAG0(numr) | KBTS_FEATURE_FLAG0(dnom) | KBTS_FEATURE_FLAG0(ljmo) | + KBTS_FEATURE_FLAG0(vjmo) | KBTS_FEATURE_FLAG0(tjmo) | KBTS_FEATURE_FLAG0(abvm) | KBTS_FEATURE_FLAG0(blwm) | + KBTS_FEATURE_FLAG0(ccmp) | KBTS_FEATURE_FLAG0(clig) | KBTS_FEATURE_FLAG0(curs), + 0, + KBTS_FEATURE_FLAG2(ltra) | KBTS_FEATURE_FLAG2(ltrm) | KBTS_FEATURE_FLAG2(dist) | KBTS_FEATURE_FLAG2(kern) | + KBTS_FEATURE_FLAG2(rclt) | KBTS_FEATURE_FLAG2(locl) | KBTS_FEATURE_FLAG2(mark) | KBTS_FEATURE_FLAG2(mkmk) | + KBTS_FEATURE_FLAG2(rlig) | KBTS_FEATURE_FLAG2(liga), + KBTS_FEATURE_FLAG3(rvrn)}}, + /* KBTS_SHAPER_HEBREW */ {{KBTS_FEATURE_FLAG0(abvm) | KBTS_FEATURE_FLAG0(blwm) | KBTS_FEATURE_FLAG0(curs) | + KBTS_FEATURE_FLAG0(frac) | KBTS_FEATURE_FLAG0(numr) | KBTS_FEATURE_FLAG0(dnom) | KBTS_FEATURE_FLAG0(ccmp) | + KBTS_FEATURE_FLAG0(clig) | KBTS_FEATURE_FLAG0(calt), + 0, + KBTS_FEATURE_FLAG2(locl) | KBTS_FEATURE_FLAG2(ltra) | KBTS_FEATURE_FLAG2(ltrm) | KBTS_FEATURE_FLAG2(liga) | + KBTS_FEATURE_FLAG2(rlig) | KBTS_FEATURE_FLAG2(rclt) | KBTS_FEATURE_FLAG2(dist) | KBTS_FEATURE_FLAG2(kern) | + KBTS_FEATURE_FLAG2(mark) | KBTS_FEATURE_FLAG2(mkmk), + KBTS_FEATURE_FLAG3(rvrn)}}, // (Same as DEFAULT) + /* KBTS_SHAPER_INDIC */ {{KBTS_FEATURE_FLAG0(frac) | KBTS_FEATURE_FLAG0(numr) | KBTS_FEATURE_FLAG0(dnom) | KBTS_FEATURE_FLAG0(akhn) | + KBTS_FEATURE_FLAG0(rphf) | KBTS_FEATURE_FLAG0(pref) | KBTS_FEATURE_FLAG0(blwf) | KBTS_FEATURE_FLAG0(abvf) | + KBTS_FEATURE_FLAG0(half) | KBTS_FEATURE_FLAG0(pstf) | KBTS_FEATURE_FLAG0(cjct) | KBTS_FEATURE_FLAG0(abvs) | + KBTS_FEATURE_FLAG0(blws) | KBTS_FEATURE_FLAG0(init) | KBTS_FEATURE_FLAG0(calt) | KBTS_FEATURE_FLAG0(clig) | + KBTS_FEATURE_FLAG0(abvm) | KBTS_FEATURE_FLAG0(blwm) | KBTS_FEATURE_FLAG0(curs), + 0, + KBTS_FEATURE_FLAG2(ltra) | KBTS_FEATURE_FLAG2(ltrm) | KBTS_FEATURE_FLAG2(nukt) | KBTS_FEATURE_FLAG2(rkrf) | + KBTS_FEATURE_FLAG2(pres) | KBTS_FEATURE_FLAG2(psts) | KBTS_FEATURE_FLAG2(locl) | KBTS_FEATURE_FLAG2(rlig) | + KBTS_FEATURE_FLAG2(dist) | KBTS_FEATURE_FLAG2(haln) | KBTS_FEATURE_FLAG2(rclt) | KBTS_FEATURE_FLAG2(mark) | + KBTS_FEATURE_FLAG2(mkmk) | KBTS_FEATURE_FLAG2(kern), + KBTS_FEATURE_FLAG3(rvrn) | KBTS_FEATURE_FLAG3(vatu),}}, + /* KBTS_SHAPER_KHMER */ {{KBTS_FEATURE_FLAG0(frac) | KBTS_FEATURE_FLAG0(numr) | KBTS_FEATURE_FLAG0(dnom) | KBTS_FEATURE_FLAG0(ccmp) | + KBTS_FEATURE_FLAG0(pref) | KBTS_FEATURE_FLAG0(blwf) | KBTS_FEATURE_FLAG0(abvf) | KBTS_FEATURE_FLAG0(pstf) | + KBTS_FEATURE_FLAG0(cfar) | KBTS_FEATURE_FLAG0(abvs) | KBTS_FEATURE_FLAG0(blws) | KBTS_FEATURE_FLAG0(calt) | + KBTS_FEATURE_FLAG0(clig) | KBTS_FEATURE_FLAG0(abvm) | KBTS_FEATURE_FLAG0(blwm) | KBTS_FEATURE_FLAG0(curs), + 0, + KBTS_FEATURE_FLAG2(dist) | KBTS_FEATURE_FLAG2(kern) | KBTS_FEATURE_FLAG2(mark) | KBTS_FEATURE_FLAG2(mkmk) | + KBTS_FEATURE_FLAG2(pres) | KBTS_FEATURE_FLAG2(ltra) | KBTS_FEATURE_FLAG2(ltrm) | KBTS_FEATURE_FLAG2(locl) | + KBTS_FEATURE_FLAG2(psts) | KBTS_FEATURE_FLAG2(rclt) | KBTS_FEATURE_FLAG2(rlig), + KBTS_FEATURE_FLAG3(rvrn)}}, + /* KBTS_SHAPER_MYANMAR */ {{KBTS_FEATURE_FLAG0(rphf) | KBTS_FEATURE_FLAG0(pref) | KBTS_FEATURE_FLAG0(blwf) | KBTS_FEATURE_FLAG0(pstf) | + KBTS_FEATURE_FLAG0(frac) | KBTS_FEATURE_FLAG0(numr) | KBTS_FEATURE_FLAG0(dnom) | KBTS_FEATURE_FLAG0(ccmp) | + KBTS_FEATURE_FLAG0(abvs) | KBTS_FEATURE_FLAG0(blws) | KBTS_FEATURE_FLAG0(calt) | KBTS_FEATURE_FLAG0(clig) | + KBTS_FEATURE_FLAG0(abvm) | KBTS_FEATURE_FLAG0(blwm) | KBTS_FEATURE_FLAG0(curs), + 0, + KBTS_FEATURE_FLAG2(mark) | KBTS_FEATURE_FLAG2(mkmk) | KBTS_FEATURE_FLAG2(ltra) | KBTS_FEATURE_FLAG2(ltrm) | + KBTS_FEATURE_FLAG2(locl) | KBTS_FEATURE_FLAG2(psts) | KBTS_FEATURE_FLAG2(rlig) | KBTS_FEATURE_FLAG2(pres) | + KBTS_FEATURE_FLAG2(liga) | KBTS_FEATURE_FLAG2(rclt) | KBTS_FEATURE_FLAG2(dist) | KBTS_FEATURE_FLAG2(kern), + KBTS_FEATURE_FLAG3(rvrn)}}, + /* KBTS_SHAPER_TIBETAN */ {{KBTS_FEATURE_FLAG0(ccmp) | KBTS_FEATURE_FLAG0(abvs) | KBTS_FEATURE_FLAG0(blws) | KBTS_FEATURE_FLAG0(calt) | + KBTS_FEATURE_FLAG0(abvm) | KBTS_FEATURE_FLAG0(blwm), + 0, + KBTS_FEATURE_FLAG2(locl) | KBTS_FEATURE_FLAG2(liga) | KBTS_FEATURE_FLAG2(kern) | KBTS_FEATURE_FLAG2(mkmk), + 0}}, + /* KBTS_SHAPER_USE */ {{KBTS_FEATURE_FLAG0(frac) | KBTS_FEATURE_FLAG0(numr) | KBTS_FEATURE_FLAG0(dnom) | KBTS_FEATURE_FLAG0(ccmp) | + KBTS_FEATURE_FLAG0(akhn) | KBTS_FEATURE_FLAG0(rphf) | KBTS_FEATURE_FLAG0(pref) | KBTS_FEATURE_FLAG0(abvf) | + KBTS_FEATURE_FLAG0(blwf) | KBTS_FEATURE_FLAG0(cjct) | KBTS_FEATURE_FLAG0(half) | KBTS_FEATURE_FLAG0(pstf) | + KBTS_FEATURE_FLAG0(fina) | KBTS_FEATURE_FLAG0(init) | KBTS_FEATURE_FLAG0(isol) | KBTS_FEATURE_FLAG0(medi) | + KBTS_FEATURE_FLAG0(abvs) | KBTS_FEATURE_FLAG0(blws) | KBTS_FEATURE_FLAG0(calt) | KBTS_FEATURE_FLAG0(clig) | + KBTS_FEATURE_FLAG0(abvm) | KBTS_FEATURE_FLAG0(blwm) | KBTS_FEATURE_FLAG0(curs), + 0, + KBTS_FEATURE_FLAG2(ltra) | KBTS_FEATURE_FLAG2(ltrm) | KBTS_FEATURE_FLAG2(locl) | KBTS_FEATURE_FLAG2(nukt) | + KBTS_FEATURE_FLAG2(rkrf) | KBTS_FEATURE_FLAG2(rlig) | KBTS_FEATURE_FLAG2(dist) | KBTS_FEATURE_FLAG2(kern) | + KBTS_FEATURE_FLAG2(mark) | KBTS_FEATURE_FLAG2(mkmk) | KBTS_FEATURE_FLAG2(haln) | KBTS_FEATURE_FLAG2(liga) | + KBTS_FEATURE_FLAG2(rclt) | KBTS_FEATURE_FLAG2(pres) | KBTS_FEATURE_FLAG2(psts), + KBTS_FEATURE_FLAG3(rvrn) | KBTS_FEATURE_FLAG3(vatu)}}, +}; + +// Make sure that these fit KBTS_MAX_SIMULTANEOUS_FEATURES! +static kbts_u8 kbts_Ops_Default[] = { + KBTS_OP_KIND_NORMALIZE, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rvrn, + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER, 12, KBTS_FEATURE_ID_frac, KBTS_FEATURE_ID_numr, KBTS_FEATURE_ID_dnom, KBTS_FEATURE_ID_ltra, KBTS_FEATURE_ID_ltrm, + KBTS_FEATURE_ID_liga, KBTS_FEATURE_ID_ccmp, KBTS_FEATURE_ID_locl, KBTS_FEATURE_ID_rlig, KBTS_FEATURE_ID_clig, + KBTS_FEATURE_ID_calt, KBTS_FEATURE_ID_rclt, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 7, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_mark, KBTS_FEATURE_ID_mkmk, KBTS_FEATURE_ID_curs, + KBTS_FEATURE_ID_dist, KBTS_FEATURE_ID_kern, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; + +/* @Incomplete: Vertical text. +static kbts_u8 kbts_Ops_DefaultTtbBtt[] = { + KBTS_OP_KIND_NORMALIZE, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rvrn, + KBTS_OP_KIND_GSUB_FEATURES, 3, KBTS_FEATURE_ID_frac, KBTS_FEATURE_ID_numr, KBTS_FEATURE_ID_dnom, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 10, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_ccmp, KBTS_FEATURE_ID_locl, KBTS_FEATURE_ID_mark, + KBTS_FEATURE_ID_mkmk, KBTS_FEATURE_ID_rlig, KBTS_FEATURE_ID_calt, KBTS_FEATURE_ID_liga, KBTS_FEATURE_ID_vert, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; +*/ +static kbts_u8 kbts_Ops_Hangul[] = { + KBTS_OP_KIND_NORMALIZE, KBTS_OP_KIND_NORMALIZE_HANGUL, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rvrn, + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER, 8, KBTS_FEATURE_ID_frac, KBTS_FEATURE_ID_numr, KBTS_FEATURE_ID_dnom, KBTS_FEATURE_ID_ltra, KBTS_FEATURE_ID_ltrm, + KBTS_FEATURE_ID_ljmo, KBTS_FEATURE_ID_vjmo, KBTS_FEATURE_ID_tjmo, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 13, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_ccmp, KBTS_FEATURE_ID_locl, KBTS_FEATURE_ID_mark, + KBTS_FEATURE_ID_mkmk, KBTS_FEATURE_ID_rlig, KBTS_FEATURE_ID_liga, KBTS_FEATURE_ID_clig, KBTS_FEATURE_ID_curs, + KBTS_FEATURE_ID_dist, KBTS_FEATURE_ID_kern, KBTS_FEATURE_ID_rclt, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; +static kbts_u8 kbts_Ops_ArabicRclt[] = { + KBTS_OP_KIND_NORMALIZE, KBTS_OP_KIND_FLAG_JOINING_LETTERS, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rvrn, + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER, 5, KBTS_FEATURE_ID_frac, KBTS_FEATURE_ID_numr, KBTS_FEATURE_ID_dnom, KBTS_FEATURE_ID_rtla, KBTS_FEATURE_ID_rtlm, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_stch, + KBTS_OP_KIND_GSUB_FEATURES, 2, KBTS_FEATURE_ID_ccmp, KBTS_FEATURE_ID_locl, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_isol, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_fina, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_fin2, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_fin3, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_medi, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_med2, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_init, + // @Incomplete: In Arabic rlig, ZWJ should not be skipped in lookups (i.e. it should block ligatures). + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rlig, + // @Incomplete: In non-Arabic scripts, e.g. Syriac, Harfbuzz does not pause here. + KBTS_OP_KIND_GSUB_FEATURES, 5, KBTS_FEATURE_ID_calt, KBTS_FEATURE_ID_liga, KBTS_FEATURE_ID_clig, KBTS_FEATURE_ID_mset, KBTS_FEATURE_ID_rclt, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 7, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_mark, KBTS_FEATURE_ID_mkmk, KBTS_FEATURE_ID_curs, + KBTS_FEATURE_ID_dist, KBTS_FEATURE_ID_kern, + KBTS_OP_KIND_STCH_POSTPASS, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; +static kbts_u8 kbts_Ops_ArabicNoRclt[] = { + KBTS_OP_KIND_NORMALIZE, KBTS_OP_KIND_FLAG_JOINING_LETTERS, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rvrn, + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER, 5, KBTS_FEATURE_ID_frac, KBTS_FEATURE_ID_numr, KBTS_FEATURE_ID_dnom, KBTS_FEATURE_ID_rtla, KBTS_FEATURE_ID_rtlm, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_stch, + KBTS_OP_KIND_GSUB_FEATURES, 2, KBTS_FEATURE_ID_ccmp, KBTS_FEATURE_ID_locl, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_isol, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_fina, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_fin2, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_fin3, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_medi, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_med2, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_init, + // @Incomplete: In Arabic rlig, ZWJ should not be skipped in lookups (i.e. it should block ligatures). + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rlig, + // @Incomplete: In non-Arabic scripts, e.g. Syriac, Harfbuzz does not pause here. + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_calt, + // When the font does not contain rclt, Uniscribe puts calt in its own pass, and so we pause here. + KBTS_OP_KIND_GSUB_FEATURES, 4, KBTS_FEATURE_ID_liga, KBTS_FEATURE_ID_clig, KBTS_FEATURE_ID_mset, KBTS_FEATURE_ID_rclt, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 7, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_mark, KBTS_FEATURE_ID_mkmk, KBTS_FEATURE_ID_curs, + KBTS_FEATURE_ID_dist, KBTS_FEATURE_ID_kern, + KBTS_OP_KIND_STCH_POSTPASS, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; +static kbts_u8 kbts_Ops_Indic0[] = { + KBTS_OP_KIND_PRE_NORMALIZE_DOTTED_CIRCLES, KBTS_OP_KIND_NORMALIZE, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rvrn, + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER, 5, KBTS_FEATURE_ID_frac, KBTS_FEATURE_ID_numr, KBTS_FEATURE_ID_dnom, KBTS_FEATURE_ID_ltra, KBTS_FEATURE_ID_ltrm, +}; +// After BeginCluster. +static kbts_u8 kbts_Ops_Indic1[] = { + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_nukt, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_akhn, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rphf, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rkrf, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_pref, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_blwf, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_abvf, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_half, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_pstf, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_vatu, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_cjct, +}; +// After EndCluster. +static kbts_u8 kbts_Ops_Indic2[] = { + KBTS_OP_KIND_GSUB_FEATURES, 6, KBTS_FEATURE_ID_abvs, KBTS_FEATURE_ID_blws, KBTS_FEATURE_ID_haln, KBTS_FEATURE_ID_init, KBTS_FEATURE_ID_pres, + KBTS_FEATURE_ID_psts, +}; +// After syllable processing. +static kbts_u8 kbts_Ops_Indic3[] = { + KBTS_OP_KIND_GSUB_FEATURES, 5, KBTS_FEATURE_ID_locl, KBTS_FEATURE_ID_rlig, KBTS_FEATURE_ID_calt, KBTS_FEATURE_ID_clig, KBTS_FEATURE_ID_rclt, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 7, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_mark, KBTS_FEATURE_ID_mkmk, KBTS_FEATURE_ID_curs, + KBTS_FEATURE_ID_dist, KBTS_FEATURE_ID_kern, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; +static kbts_u8 kbts_Ops_Use0[] = { + KBTS_OP_KIND_PRE_NORMALIZE_DOTTED_CIRCLES, KBTS_OP_KIND_NORMALIZE, KBTS_OP_KIND_FLAG_JOINING_LETTERS, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rvrn, + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER, 5, KBTS_FEATURE_ID_frac, KBTS_FEATURE_ID_numr, KBTS_FEATURE_ID_dnom, KBTS_FEATURE_ID_ltra, KBTS_FEATURE_ID_ltrm, +}; +static kbts_u8 kbts_Ops_Use1[] = { + KBTS_OP_KIND_GSUB_FEATURES, 4, KBTS_FEATURE_ID_locl, KBTS_FEATURE_ID_ccmp, KBTS_FEATURE_ID_nukt, KBTS_FEATURE_ID_akhn, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rphf, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_pref, + KBTS_OP_KIND_GSUB_FEATURES, 7, KBTS_FEATURE_ID_abvf, KBTS_FEATURE_ID_blwf, KBTS_FEATURE_ID_cjct, KBTS_FEATURE_ID_half, KBTS_FEATURE_ID_pstf, + KBTS_FEATURE_ID_rkrf, KBTS_FEATURE_ID_vatu, +}; +// There is no kbts_Ops_Use2, because there are no features that apply per syllable after reordering. +static kbts_u8 kbts_Ops_Use3[] = { + KBTS_OP_KIND_GSUB_FEATURES, 4, KBTS_FEATURE_ID_fina, KBTS_FEATURE_ID_init, KBTS_FEATURE_ID_isol, KBTS_FEATURE_ID_medi, + KBTS_OP_KIND_GSUB_FEATURES,10, KBTS_FEATURE_ID_abvs, KBTS_FEATURE_ID_blws, KBTS_FEATURE_ID_haln, KBTS_FEATURE_ID_pres, KBTS_FEATURE_ID_psts, + KBTS_FEATURE_ID_calt, KBTS_FEATURE_ID_clig, KBTS_FEATURE_ID_liga, KBTS_FEATURE_ID_rclt, KBTS_FEATURE_ID_rlig, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 7, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_curs, KBTS_FEATURE_ID_dist, KBTS_FEATURE_ID_kern, + KBTS_FEATURE_ID_mark, KBTS_FEATURE_ID_mkmk, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; +static kbts_u8 kbts_Ops_Tibetan[] = { + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER, 1, KBTS_FEATURE_ID_locl, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_ccmp, + KBTS_OP_KIND_GSUB_FEATURES, 4, KBTS_FEATURE_ID_abvs, KBTS_FEATURE_ID_blws, KBTS_FEATURE_ID_calt, KBTS_FEATURE_ID_liga, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 4, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_kern, KBTS_FEATURE_ID_mkmk, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; +static kbts_u8 kbts_Ops_Khmer0[] = { + KBTS_OP_KIND_PRE_NORMALIZE_DOTTED_CIRCLES, KBTS_OP_KIND_NORMALIZE, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rvrn, + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER, 5, KBTS_FEATURE_ID_frac, KBTS_FEATURE_ID_numr, KBTS_FEATURE_ID_dnom, KBTS_FEATURE_ID_ltra, KBTS_FEATURE_ID_ltrm, +}; +static kbts_u8 kbts_Ops_Khmer1[] = { + KBTS_OP_KIND_GSUB_FEATURES, 7, KBTS_FEATURE_ID_locl, KBTS_FEATURE_ID_ccmp, KBTS_FEATURE_ID_pref, KBTS_FEATURE_ID_blwf, KBTS_FEATURE_ID_abvf, + KBTS_FEATURE_ID_pstf, KBTS_FEATURE_ID_cfar, +}; +static kbts_u8 kbts_Ops_Khmer3[] = { + KBTS_OP_KIND_GSUB_FEATURES, 8, KBTS_FEATURE_ID_pres, KBTS_FEATURE_ID_abvs, KBTS_FEATURE_ID_blws, KBTS_FEATURE_ID_psts, KBTS_FEATURE_ID_calt, + KBTS_FEATURE_ID_rclt, KBTS_FEATURE_ID_rlig, KBTS_FEATURE_ID_clig, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 7, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_curs, KBTS_FEATURE_ID_dist, KBTS_FEATURE_ID_kern, + KBTS_FEATURE_ID_mark, KBTS_FEATURE_ID_mkmk, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; +#define kbts_Ops_Myanmar0 kbts_Ops_Khmer0 +static kbts_u8 kbts_Ops_Myanmar1[] = { + KBTS_OP_KIND_GSUB_FEATURES, 2, KBTS_FEATURE_ID_locl, KBTS_FEATURE_ID_ccmp, +}; +static kbts_u8 kbts_Ops_Myanmar2[] = { + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_rphf, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_pref, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_blwf, + KBTS_OP_KIND_GSUB_FEATURES, 1, KBTS_FEATURE_ID_pstf, +}; +static kbts_u8 kbts_Ops_Myanmar3[] = { + KBTS_OP_KIND_GSUB_FEATURES, 9, KBTS_FEATURE_ID_pres, KBTS_FEATURE_ID_abvs, KBTS_FEATURE_ID_blws, KBTS_FEATURE_ID_psts, KBTS_FEATURE_ID_rlig, + KBTS_FEATURE_ID_calt, KBTS_FEATURE_ID_clig, KBTS_FEATURE_ID_liga, KBTS_FEATURE_ID_rclt, + KBTS_OP_KIND_GPOS_METRICS, + KBTS_OP_KIND_GPOS_FEATURES, 7, KBTS_FEATURE_ID_abvm, KBTS_FEATURE_ID_blwm, KBTS_FEATURE_ID_curs, KBTS_FEATURE_ID_dist, KBTS_FEATURE_ID_kern, + KBTS_FEATURE_ID_mark, KBTS_FEATURE_ID_mkmk, + KBTS_OP_KIND_POST_GPOS_FIXUP, +}; + +static kbts_op_list kbts_ShaperOpLists[KBTS_SHAPER_COUNT] = { + /* DEFAULT, */ {kbts_Ops_Default, KBTS_ARRAY_LENGTH(kbts_Ops_Default)}, + /* ARABIC, */ {kbts_Ops_ArabicRclt, KBTS_ARRAY_LENGTH(kbts_Ops_ArabicRclt)}, + /* HANGUL, */ {kbts_Ops_Hangul, KBTS_ARRAY_LENGTH(kbts_Ops_Hangul)}, + /* HEBREW, */ {kbts_Ops_Default, KBTS_ARRAY_LENGTH(kbts_Ops_Default)}, + /* INDIC, */ {kbts_Ops_Indic0, KBTS_ARRAY_LENGTH(kbts_Ops_Indic0)}, + /* KHMER, */ {kbts_Ops_Khmer0, KBTS_ARRAY_LENGTH(kbts_Ops_Khmer0)}, + /* MYANMAR, */ {kbts_Ops_Myanmar0, KBTS_ARRAY_LENGTH(kbts_Ops_Myanmar0)}, + /* TIBETAN, */ {kbts_Ops_Tibetan, KBTS_ARRAY_LENGTH(kbts_Ops_Tibetan)}, + /* USE, */ {kbts_Ops_Use0, KBTS_ARRAY_LENGTH(kbts_Ops_Use0)}, +}; + +typedef struct kbts_gsub_frame +{ + kbts_u16 LookupIndex; + kbts_u16 SubtableIndex; + + kbts_u16 InputGlyphIndex; + kbts_u16 InputGlyphCount; + + // Defined for nested lookups. + kbts_sequence_lookup_record *Records; + kbts_u16 RecordCount; + kbts_u16 RecordIndex; +} kbts_gsub_frame; + +KBTS_EXPORT kbts_un kbts_SizeOfShapeState(kbts_font *Font) +{ + kbts_un GsubMemorySize = Font->LookupInfo.MaximumLookupStackSize * sizeof(kbts_gsub_frame); + kbts_un NormalizationMemorySize = KBTS_MAXIMUM_DECOMPOSITION_CODEPOINTS * sizeof(kbts_glyph); + kbts_un LeftoverMemorySize = KBTS_MAX(GsubMemorySize, NormalizationMemorySize); + + kbts_un Result = sizeof(kbts_shape_state) + LeftoverMemorySize; + return Result; +} + +KBTS_EXPORT kbts_shape_state *kbts_PlaceShapeState(void *Address, kbts_un Size) +{ + kbts_shape_state *State = (kbts_shape_state *)Address; + memset(State, 0, Size); + + return State; +} + +#ifndef KB_TEXT_SHAPE_NO_CRT +KBTS_EXPORT kbts_shape_state *kbts_CreateShapeState(kbts_font *Font) +{ + kbts_un Size = kbts_SizeOfShapeState(Font); + void *Memory = malloc(Size); + kbts_shape_state *Result = kbts_PlaceShapeState(Memory, Size); + + return Result; +} + +KBTS_EXPORT void kbts_FreeShapeState(kbts_shape_state *State) +{ + if(State) + { + free(State); + } +} +#endif + +KBTS_EXPORT void kbts_ResetShapeState(kbts_shape_state *State) +{ + State->ResumePoint = 0; +} + +static kbts_glyph_array kbts_ClipGlyphArray(kbts_glyph_array *Source, kbts_un Count) +{ + kbts_glyph_array Result = KBTS_ZERO; + Result.Glyphs = Source->Glyphs; + Result.Count = (kbts_u32)Count; + Result.TotalCount = (kbts_u32)Count; + Result.Capacity = (kbts_u32)Count; + return Result; +} + +static void kbts_TransferGrowRequest(kbts_glyph_array *From, kbts_glyph_array *To) +{ + if(From->RequiredCapacity > From->Capacity) + { + To->RequiredCapacity = To->Capacity + From->RequiredCapacity - From->Capacity; + } +} + +static kbts_glyph_array kbts_GlyphSubArray(kbts_glyph_array *Source, kbts_un FromIndex) +{ + kbts_glyph_array Result = KBTS_ZERO; + Result.Glyphs = Source->Glyphs + FromIndex; + Result.Count = (kbts_u32)(Source->Count - FromIndex); + Result.TotalCount = (kbts_u32)(Source->TotalCount - FromIndex); + Result.Capacity = (kbts_u32)(Source->Capacity - FromIndex); + return Result; +} + +static kbts_glyph_array kbts_GlyphArray(kbts_glyph *Glyphs, kbts_un Count, kbts_un TotalCount, kbts_un Capacity) +{ + kbts_glyph_array Result = KBTS_ZERO; + Result.Glyphs = Glyphs; + Result.Count = (kbts_u32)Count; + Result.TotalCount = (kbts_u32)TotalCount; + Result.Capacity = (kbts_u32)Capacity; + return Result; +} + +static int kbts_GrowGlyphArray(kbts_u32 *ResumePoint_, kbts_glyph_array *Array, kbts_un InsertIndex, kbts_un GrowCount, kbts_u32 ResumePoint, int DoNotModifyGlyphCounts) +{ + int Result = 0; + kbts_un TotalCount = Array->TotalCount; + kbts_un NewTotalCount = TotalCount + GrowCount; + + if(NewTotalCount <= Array->Capacity) + { + // @Cleanup: memmove + if(NewTotalCount > TotalCount) + { + for(kbts_un ToIndex = NewTotalCount; ToIndex > InsertIndex + GrowCount; --ToIndex) + { + Array->Glyphs[ToIndex - 1] = Array->Glyphs[ToIndex - 1 - GrowCount]; + } + } + else if(NewTotalCount < TotalCount) + { + // Multiple substitutions that generate 0 glyphs exist. In that case, GrowCount will be negative. + KBTS_FOR(ToIndex, InsertIndex, NewTotalCount) + { + Array->Glyphs[ToIndex] = Array->Glyphs[ToIndex - GrowCount]; + } + } + + if(!DoNotModifyGlyphCounts) + { + Array->Count += GrowCount; + Array->TotalCount = (kbts_u32)NewTotalCount; + } + Result = 1; + } + else + { + Array->RequiredCapacity = (kbts_u32)(NewTotalCount + KBTS_GROW_BUFFER_MARGIN); + if(ResumePoint_) *ResumePoint_ = ResumePoint; + } + + return Result; +} + +static void kbts_BeginFeatures(kbts_op_state *State, kbts_shape_config *Config, kbts_shaping_table ShapingTable, kbts_feature_set EnabledFeatures) +{ + kbts_un FeatureCount = 0; + kbts_gsub_gpos *Header = Config->Font->ShapingTables[ShapingTable]; + kbts_langsys *Langsys = Config->Langsys[ShapingTable]; + if(Header && Langsys) + { + kbts_feature_list *FeatureList = KBTS_POINTER_OFFSET(kbts_feature_list, Header, Header->FeatureListOffset); + kbts_u16 *FeatureIndices = KBTS_POINTER_AFTER(kbts_u16, Langsys); + // @Incomplete + // if(Header->Minor == 1) + // { + // kbts_feature_variations *FeatureVariations = KBTS_POINTER_OFFSET(kbts_feature_variations, Header, Header->FeatureVariationsOffset); + // } + + KBTS_FOR(FeatureIndexIndex, 0, Langsys->FeatureIndexCount) + { + kbts_un FeatureIndex = FeatureIndices[FeatureIndexIndex]; + kbts_feature_pointer Feature = kbts_GetFeature(FeatureList, FeatureIndex); + // @Incomplete + //if(FeatureVariations) + //{ + // KBTS_FOR(VariationIndex, 0, FeatureVariations->RecordCount) + // { + // kbts_feature_variation_pointer Variation = kbts_GetFeatureVariation(FeatureVariations, VariationIndex); + // KBTS_FOR(ConditionIndex, 0, Variation.ConditionSet->Count) + // { + // kbts_condition_1 *Condition = kbts_GetCondition(Variation.ConditionSet, ConditionIndex); + // KBTS_ASSERT(0); + // } + // } + //} + + kbts_u32 FeatureId = kbts_FeatureToId(Feature.Tag); + if(Feature.Feature->LookupIndexCount && kbts_ContainsFeature(&EnabledFeatures, FeatureId)) + { + kbts_lookup_indices LookupIndices = KBTS_ZERO; + LookupIndices.FeatureId = FeatureId; + LookupIndices.SkipFlags = kbts_SkipFlags(FeatureId, Config->Shaper); + // For Myanmar, we could try and tag glyphs depending on their Indic properties in BeginCluster, just like we do for + // Indic scripts. + // However, Harfbuzz does _not_ do this, so it seems like a bunch of work that would, at best, make us diverge from + // Harfbuzz more often. + if(Config->Shaper != KBTS_SHAPER_MYANMAR) + { + LookupIndices.GlyphFilter = (FeatureId < 32) ? (1 << FeatureId) & KBTS_GLYPH_FEATURE_MASK : 0; + } + LookupIndices.Count = Feature.Feature->LookupIndexCount; + LookupIndices.Indices = KBTS_POINTER_AFTER(kbts_u16, Feature.Feature); + State->FeatureLookupIndices[FeatureCount++] = LookupIndices; + } + } + } + State->FeatureCount = (kbts_u32)FeatureCount; +} + +typedef struct kbts_sequence_lookup_result +{ + kbts_sequence_lookup_record *Records; + kbts_un RecordCount; + kbts_un InputSequenceCountIncludingSkippedGlyphs; + + // This is specified _nowhere_ in the docs, BUT some sequence lookups have 0 records, and exist just to prevent the + // next lookups from executing. + // So, checking if we got any records is not enough to figure out whether we need to "apply" this lookup. + // We need to have an explicit bool as well. + // Sigh. + int Matched; +} kbts_sequence_lookup_result; + +typedef struct kbts_sequence_match +{ + kbts_un MatchCount; + kbts_un MatchOrSkipCount; +} kbts_sequence_match; + +static kbts_sequence_match kbts_MatchCoverageSequence(kbts_unpacked_lookup *Lookup, kbts_u32 SkipFlags, kbts_u32 SkipUnicodeFlags, + void *Base, kbts_u16 *CoverageOffsets, kbts_un CoverageCount, + kbts_glyph_array *GlyphArray, kbts_un GlyphStartIndex, kbts_un GlyphIndexIncrement) +{ + kbts_un CoverageIndex = 0; + kbts_un GlyphCounter = 0; + kbts_un GlyphIndex = GlyphStartIndex; + while((GlyphCounter < GlyphArray->Count) && (CoverageIndex < CoverageCount)) + { + kbts_glyph *Glyph = &GlyphArray->Glyphs[GlyphIndex]; + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Base, CoverageOffsets[CoverageIndex]); + + if(!kbts_SkipGlyph(Glyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + kbts_cover_glyph_result Cover = kbts_CoverGlyph(Coverage, Glyph->Id); + + if(Cover.Valid) + { + CoverageIndex += 1; + } + else + { + break; + } + } + + GlyphIndex += GlyphIndexIncrement; + GlyphCounter += 1; + } + + kbts_sequence_match Result = KBTS_ZERO; + Result.MatchCount = CoverageIndex; + Result.MatchOrSkipCount = GlyphCounter; + return Result; +} + +static int kbts_BranchlessCompareArray16(kbts_u16 *A, kbts_u16 *B, kbts_un Count) +{ + kbts_u16 DifferenceMask = 0; + KBTS_FOR(Index, 0, Count) + { + DifferenceMask |= A[Index] ^ B[Index]; + } + return (int)DifferenceMask; +} + +static kbts_sequence_lookup_result kbts_DoSequenceLookup(kbts_unpacked_lookup *Lookup, kbts_u16 *Base, kbts_cover_glyph_result Cover, + kbts_glyph_array *GlyphArray, kbts_un InputGlyphOffset, kbts_skip_flags SkipFlags, kbts_u32 SkipUnicodeFlags) +{ + KBTS_INSTRUMENT_FUNCTION_BEGIN + kbts_sequence_lookup_result Result = KBTS_ZERO; + + kbts_glyph_array BacktrackGlyphs = kbts_ClipGlyphArray(GlyphArray, InputGlyphOffset); + kbts_glyph_array InputGlyphs = kbts_GlyphSubArray(GlyphArray, InputGlyphOffset); + kbts_glyph_array FollowupGlyphs = kbts_GlyphSubArray(&InputGlyphs, 1); + + kbts_glyph *FirstGlyph = &GlyphArray->Glyphs[0]; + kbts_glyph *CurrentGlyph = &GlyphArray->Glyphs[InputGlyphOffset]; + kbts_glyph *InputGlyph = &GlyphArray->Glyphs[InputGlyphOffset + 1]; + kbts_glyph *OnePastLastGlyph = &GlyphArray->Glyphs[GlyphArray->Count]; + kbts_glyph *BacktrackGlyph = &GlyphArray->Glyphs[InputGlyphOffset - 1]; + + // Lookup types 7 and 8 are dispatch mechanisms. They do not substitute anything by themselves, they only point to + // other rules. + // Some formats have multiple rules; when that happens, we only ever match on the first one that fits. + + // We want to go to the right LookupType/SubtableFormat combination in a single jump, so we concatenate them here. + // GSUB format 5 == GPOS format 7. + // GSUB format 6 == GPOS format 8. + switch(((kbts_u32)Lookup->Type << 16) | (kbts_u32)Base[0]) + { + case 0x50001: + case 0x70001: + { + kbts_sequence_context_1 *Subst = (kbts_sequence_context_1 *)Base; + kbts_sequence_rule_set *Set = kbts_GetSequenceRuleSet(Subst, Cover.Index); + + if(Set) + { + kbts_u16 Ids[64]; // @Hardcoded + kbts_u16 GlyphOffsets[64]; + kbts_un IdCount = 0; + + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_sequence_rule *Rule = kbts_GetSequenceRule(Set, RuleIndex); + kbts_u16 *InputSequence = KBTS_POINTER_AFTER(kbts_u16, Rule); + + // @Hardcoded! + KBTS_ASSERT(Rule->GlyphCount <= 64); + + while((InputGlyph < OnePastLastGlyph) && ((IdCount + 1) < Rule->GlyphCount)) + { + if(!kbts_SkipGlyph(InputGlyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + GlyphOffsets[IdCount] = (kbts_u16)(InputGlyph - CurrentGlyph); + Ids[IdCount++] = InputGlyph->Id; + } + + InputGlyph += 1; + } + + if(((IdCount + 1) >= Rule->GlyphCount) && + !kbts_BranchlessCompareArray16(Ids, InputSequence, Rule->GlyphCount - 1)) + { + Result.Records = (kbts_sequence_lookup_record *)(InputSequence + Rule->GlyphCount - 1); + Result.RecordCount = Rule->SequenceLookupCount; + Result.InputSequenceCountIncludingSkippedGlyphs = 1; + if(Rule->GlyphCount > 1) + { + Result.InputSequenceCountIncludingSkippedGlyphs = GlyphOffsets[Rule->GlyphCount - 2] + 1; + } + Result.Matched = 1; + + break; + } + } + } + } + break; + + case 0x50002: + case 0x70002: + { + kbts_sequence_context_2 *Subst = (kbts_sequence_context_2 *)Base; + kbts_u16 *ClassDefinitionBase = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->ClassDefOffset); + + // @Hardcoded! + kbts_u16 InputClasses[64]; + kbts_u16 InputOffsets[64]; + kbts_un InputCount = 0; + + // For class-based contexts, the coverage index is not used. + // Instead, we know which set to use based on the current glyph's class. + // From the Microsoft docs: + // The class value is used as the index into an array of offsets to ClassSequenceRuleSet tables. + kbts_u16 CurrentGlyphClass = kbts_GlyphClassFromTable(ClassDefinitionBase, CurrentGlyph->Id); + kbts_class_sequence_rule_set *Set = kbts_GetClassSequenceRuleSet(Subst, CurrentGlyphClass); + + if((CurrentGlyphClass < Subst->ClassSequenceRuleSetCount) && Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_class_sequence_rule *Rule = kbts_GetClassSequenceRule(Set, RuleIndex); + kbts_u16 *InputSequence = KBTS_POINTER_AFTER(kbts_u16, Rule); + + while((InputGlyph < OnePastLastGlyph) && ((InputCount + 1) < Rule->GlyphCount)) + { + if(!kbts_SkipGlyph(InputGlyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + InputOffsets[InputCount] = (kbts_u16)(InputGlyph - CurrentGlyph); + InputClasses[InputCount++] = kbts_GlyphClassFromTable(ClassDefinitionBase, InputGlyph->Id); + } + + InputGlyph += 1; + } + + if(((InputCount + 1) >= Rule->GlyphCount) && + !kbts_BranchlessCompareArray16(InputClasses, InputSequence, Rule->GlyphCount - 1)) + { + Result.Records = (kbts_sequence_lookup_record *)(InputSequence + Rule->GlyphCount - 1); + Result.RecordCount = Rule->SequenceLookupCount; + Result.InputSequenceCountIncludingSkippedGlyphs = 1; + if(Rule->GlyphCount > 1) + { + Result.InputSequenceCountIncludingSkippedGlyphs = InputOffsets[Rule->GlyphCount - 2] + 1; + } + Result.Matched = 1; + + break; + } + } + } + } + break; + + case 0x50003: + case 0x70003: + { + kbts_sequence_context_3 *Subst = (kbts_sequence_context_3 *)Base; + kbts_u16 *CoverageOffsets = KBTS_POINTER_AFTER(kbts_u16, Subst); + + kbts_sequence_match InputMatch = kbts_MatchCoverageSequence(Lookup, SkipFlags, SkipUnicodeFlags, Subst, CoverageOffsets, Subst->GlyphCount, &InputGlyphs, 0, 1); + + if(InputMatch.MatchCount == Subst->GlyphCount) + { + Result.Records = (kbts_sequence_lookup_record *)(CoverageOffsets + Subst->GlyphCount); + Result.RecordCount = Subst->SequenceLookupCount; + Result.InputSequenceCountIncludingSkippedGlyphs = InputMatch.MatchOrSkipCount; + Result.Matched = 1; + } + } + break; + + case 0x60001: + case 0x80001: + { + kbts_chained_sequence_context_1 *Subst = (kbts_chained_sequence_context_1 *)Base; + kbts_chained_sequence_rule_set *Set = kbts_GetChainedSequenceRuleSet(Subst, Cover.Index); + + if(Set) + { + // @Hardcoded! + kbts_u16 BacktrackIds[64]; + kbts_u16 InputIds[64]; + kbts_u16 InputOffsets[64]; + kbts_un BacktrackCount = 0; + kbts_un InputCount = 0; + + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_chained_sequence_rule *Rule = kbts_GetChainedSequenceRule(Set, RuleIndex); + kbts_unpacked_chained_sequence_rule Unpacked = kbts_UnpackChainedSequenceRule(Rule, 0); + + while((BacktrackGlyph >= FirstGlyph) && (BacktrackCount < Unpacked.BacktrackCount)) + { + if(!kbts_SkipGlyph(BacktrackGlyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + BacktrackIds[BacktrackCount++] = BacktrackGlyph->Id; + } + BacktrackGlyph -= 1; + } + + kbts_un TotalInputGlyphsRequired = Unpacked.InputCount - 1 + Unpacked.LookaheadCount; + while((InputGlyph < OnePastLastGlyph) && (InputCount < TotalInputGlyphsRequired)) + { + if(!kbts_SkipGlyph(InputGlyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + InputOffsets[InputCount] = (kbts_u16)(InputGlyph - CurrentGlyph); + InputIds[InputCount++] = InputGlyph->Id; + } + InputGlyph += 1; + } + + if((BacktrackCount >= Unpacked.BacktrackCount) && (InputCount >= TotalInputGlyphsRequired) && + !kbts_BranchlessCompareArray16(BacktrackIds, Unpacked.Backtrack, Unpacked.BacktrackCount) && + !kbts_BranchlessCompareArray16(InputIds, Unpacked.Input, Unpacked.InputCount - 1) && + !kbts_BranchlessCompareArray16(InputIds + Unpacked.InputCount - 1, Unpacked.Lookahead, Unpacked.LookaheadCount)) + { + Result.Records = Unpacked.Records; + Result.RecordCount = Unpacked.RecordCount; + Result.InputSequenceCountIncludingSkippedGlyphs = 1; + if(Unpacked.InputCount > 1) + { + Result.InputSequenceCountIncludingSkippedGlyphs = InputOffsets[Unpacked.InputCount - 2] + 1; + } + Result.Matched = 1; + + break; + } + } + } + } + break; + + case 0x60002: + case 0x80002: + { + kbts_chained_sequence_context_2 *Subst = (kbts_chained_sequence_context_2 *)Base; + kbts_u16 *BacktrackClassDefinition = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->BacktrackClassDefOffset); + kbts_u16 *InputClassDefinition = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->InputClassDefOffset); + kbts_u16 *LookaheadClassDefinition = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->LookaheadClassDefOffset); + + // @Incomplete: Do this with all sequence types! + + // @Hardcoded: Pre-alloc this using LookupInfo! + kbts_u16 BacktrackClasses[64]; + kbts_u16 InputClasses[64]; + kbts_u16 InputClassOffsets[64]; + kbts_u16 LookaheadClasses[64]; + kbts_un BacktrackClassCount = 0; + kbts_un InputClassCount = 0; + + // Just like lookup 5.2, we use the current glyph class to figure out which set to look up. + // From the Microsoft docs: + // If found, the client then searches in the class definition table to find the class value assigned to the + // current glyph. The class value is used as the index into an array of offsets to ChainedClassSequenceRuleSet + // tables. + // + kbts_u16 CurrentGlyphClass = kbts_GlyphClassFromTable(InputClassDefinition, CurrentGlyph->Id); + kbts_chained_sequence_rule_set *Set = kbts_GetChainedClassSequenceRuleSet(Subst, CurrentGlyphClass); + // If the glyph was contained in the coverage table, then it should have a valid class. + // Nevertheless, one Harfbuzz test font did not remove out-of-bounds glyph classes from the class definition + // table here, so we double-check it here. + // (It is also possible for a font to want to reuse the same class definition table across multiple lookups, + // in which case ignoring these classes becomes a feature.) + if((CurrentGlyphClass < Subst->ChainedClassSequenceRuleSetCount) && Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_chained_sequence_rule *Rule = kbts_GetChainedClassSequenceRule(Set, RuleIndex); + kbts_unpacked_chained_sequence_rule Unpacked = kbts_UnpackChainedSequenceRule(Rule, 0); + + // @Hardcoded + KBTS_ASSERT(Unpacked.BacktrackCount <= 64); + KBTS_ASSERT(Unpacked.InputCount <= 64); + KBTS_ASSERT(Unpacked.LookaheadCount <= 64); + + while((BacktrackGlyph >= FirstGlyph) && (BacktrackClassCount < Unpacked.BacktrackCount)) + { + if(!kbts_SkipGlyph(BacktrackGlyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + kbts_u16 Class = kbts_GlyphClassFromTable(BacktrackClassDefinition, BacktrackGlyph->Id); + BacktrackClasses[BacktrackClassCount++] = Class; + } + + BacktrackGlyph -= 1; + } + + kbts_un InputClassCountRequired = Unpacked.InputCount - 1 + Unpacked.LookaheadCount; + while((InputGlyph < OnePastLastGlyph) && (InputClassCount < InputClassCountRequired)) + { + if(!kbts_SkipGlyph(InputGlyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + kbts_u16 InputClass = kbts_GlyphClassFromTable(InputClassDefinition, InputGlyph->Id); + // In many cases, the font designer just wants to match "a set of glyphs" forward, + // and it doesn't matter whether those glyphs are in the input sequence or part of the lookahead. + // This happens often enough that we care to special-case it. + kbts_u16 LookaheadClass = InputClass; + if(LookaheadClassDefinition != InputClassDefinition) + { + LookaheadClass = kbts_GlyphClassFromTable(LookaheadClassDefinition, InputGlyph->Id); + } + + InputClassOffsets[InputClassCount] = (kbts_u16)(InputGlyph - CurrentGlyph); + InputClasses[InputClassCount] = InputClass; + LookaheadClasses[InputClassCount] = LookaheadClass; + + InputClassCount += 1; + } + + InputGlyph += 1; + } + + if((BacktrackClassCount >= Unpacked.BacktrackCount) && + (InputClassCount >= InputClassCountRequired) && + !kbts_BranchlessCompareArray16(BacktrackClasses, Unpacked.Backtrack, Unpacked.BacktrackCount) && + !kbts_BranchlessCompareArray16(InputClasses, Unpacked.Input, Unpacked.InputCount - 1) && + !kbts_BranchlessCompareArray16(LookaheadClasses + Unpacked.InputCount - 1, Unpacked.Lookahead, Unpacked.LookaheadCount)) + { + Result.Records = Unpacked.Records; + Result.RecordCount = Unpacked.RecordCount; + Result.InputSequenceCountIncludingSkippedGlyphs = 1; + if(Unpacked.InputCount > 1) + { + Result.InputSequenceCountIncludingSkippedGlyphs = InputClassOffsets[Unpacked.InputCount - 2] + 1; + } + Result.Matched = 1; + + break; + } + } + } + } + break; + + case 0x60003: + case 0x80003: + { + kbts_chained_sequence_context_3 *Subst = (kbts_chained_sequence_context_3 *)Base; + kbts_unpacked_chained_sequence_context_3 Unpacked = kbts_UnpackChainedSequenceContext3(Subst, 0); + + // Since chained sequence contexts roll the coverage for the first glyph into an array, you'd think that + // the matching logic for the first glyph would be the same as for any other glyph in that array. + // You'd be wrong! + // The first glyph does _not_ have to pass glyph filtering logic. It just has to pass the coverage test. + // Every other input glyph still does, though. + kbts_cover_glyph_result CurrentCover = KBTS_ZERO; + CurrentCover.Valid = !Unpacked.InputCount || kbts_GlyphPassesLookupFilter(InputGlyphs.Glyphs, Lookup); + if(Unpacked.InputCount) + { + kbts_coverage *CurrentCoverage = KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.InputCoverageOffsets[0]); + CurrentCover = kbts_CoverGlyph(CurrentCoverage, InputGlyphs.Glyphs[0].Id); + } + + if(CurrentCover.Valid) + { + kbts_sequence_match BacktrackMatch = kbts_MatchCoverageSequence(Lookup, SkipFlags, SkipUnicodeFlags, Subst, Unpacked.BacktrackCoverageOffsets, Unpacked.BacktrackCount, &BacktrackGlyphs, BacktrackGlyphs.Count - 1, -1); + kbts_sequence_match InputMatch = kbts_MatchCoverageSequence(Lookup, SkipFlags, SkipUnicodeFlags, Subst, Unpacked.InputCoverageOffsets + 1, Unpacked.InputCount - 1, &FollowupGlyphs, 0, 1); + kbts_un MatchingInputGlyphCount = 1 + InputMatch.MatchCount; + kbts_un MatchedOrSkippedInputGlyphCount = 1 + InputMatch.MatchOrSkipCount; + kbts_glyph_array LookaheadGlyphs = kbts_GlyphSubArray(&InputGlyphs, MatchedOrSkippedInputGlyphCount); + kbts_sequence_match LookaheadMatch = kbts_MatchCoverageSequence(Lookup, SkipFlags, SkipUnicodeFlags, Subst, Unpacked.LookaheadCoverageOffsets, Unpacked.LookaheadCount, &LookaheadGlyphs, 0, 1); + + if((BacktrackMatch.MatchCount == Unpacked.BacktrackCount) && ((MatchingInputGlyphCount) == Unpacked.InputCount) && (LookaheadMatch.MatchCount == Unpacked.LookaheadCount)) + { + Result.Records = Unpacked.Records; + Result.RecordCount = Unpacked.RecordCount; + Result.InputSequenceCountIncludingSkippedGlyphs = MatchedOrSkippedInputGlyphCount; + Result.Matched = 1; + + break; + } + } + } + break; + } + + KBTS_INSTRUMENT_END + return Result; +} + +static void kbts_ApplyValueRecord(kbts_glyph *Glyph, kbts_unpacked_value_record *Unpacked) +{ + Glyph->OffsetX += Unpacked->PlacementX; + Glyph->OffsetY += Unpacked->PlacementY; + + Glyph->AdvanceX += Unpacked->AdvanceX; + Glyph->AdvanceY += Unpacked->AdvanceY; +} + +typedef struct kbts_indexed_glyph +{ + kbts_glyph *Glyph; + kbts_un Index; +} kbts_indexed_glyph; + +static int kbts_NextGlyph(kbts_unpacked_lookup *Lookup, kbts_glyph *InputGlyphs, kbts_un CurrentIndex, kbts_un InputGlyphCount, kbts_skip_flags SkipFlags, kbts_u32 SkipUnicodeFlags, kbts_indexed_glyph *IndexedGlyph) +{ + kbts_glyph *MatchingGlyph = 0; + kbts_un GlyphIndex = CurrentIndex; + + while(GlyphIndex < InputGlyphCount) + { + kbts_glyph *Glyph = &InputGlyphs[GlyphIndex]; + + if(!kbts_SkipGlyph(Glyph, Lookup, SkipFlags, SkipUnicodeFlags)) + { + MatchingGlyph = Glyph; + break; + } + else + { + GlyphIndex += 1; + } + } + + IndexedGlyph->Glyph = MatchingGlyph; + IndexedGlyph->Index = GlyphIndex; + return MatchingGlyph != 0; +} + +static void kbts_AttachGlyph(kbts_glyph_array *GlyphArray, kbts_glyph *Parent, kbts_glyph *Child, kbts_s32 X, kbts_s32 Y) +{ + kbts_s32 DeltaOffsetX = X - Child->OffsetX; + kbts_s32 DeltaOffsetY = Y - Child->OffsetY; + + Child->OffsetX = X; + Child->OffsetY = Y; + Child->Flags |= KBTS_GLYPH_FLAG_USED_IN_GPOS; + Child->AttachGlyphIndexPlusOne = (kbts_u16)(Parent - GlyphArray->Glyphs + 1); + + Parent->Flags |= KBTS_GLYPH_FLAG_USED_IN_GPOS; + + for(kbts_glyph *MiddleGlyph = Parent + 1; MiddleGlyph < Child; ++MiddleGlyph) + { + MiddleGlyph->Flags |= KBTS_GLYPH_FLAG_NO_BREAK; + } + + // @Speed: Fuck this. + // Attachments can happen in anti-topological order, so we have to fix them up here. + // We should store glyph parent/child indices instead of traversing all glyphs. + kbts_un ChildIndex = (kbts_un)(Child - GlyphArray->Glyphs); + KBTS_FOR(PostGlyphIndex, ChildIndex + 1, GlyphArray->Count) + { + kbts_glyph *Glyph = &GlyphArray->Glyphs[PostGlyphIndex]; + + if(Glyph->AttachGlyphIndexPlusOne == (ChildIndex + 1)) + { + Glyph->OffsetX += DeltaOffsetX; + Glyph->OffsetY += DeltaOffsetY; + } + } +} + +typedef struct kbts_do_single_adjustment_result +{ + kbts_un PositionedGlyphCount; + kbts_u32 PerformedAdjustment; +} kbts_do_single_adjustment_result; +static kbts_do_single_adjustment_result kbts_DoSingleAdjustment(kbts_shape_config *Config, kbts_lookup_list *LookupList, kbts_un LookupIndex, kbts_un SubtableIndex, kbts_unpacked_lookup *Lookup, kbts_u16 *Base, + kbts_glyph_array *GlyphArray, kbts_un CurrentGlyphIndex, kbts_skip_flags RequestedSkipFlags) +{ + KBTS_INSTRUMENT_FUNCTION_BEGIN + kbts_unicode_flags SkipUnicodeFlags = KBTS_UNICODE_FLAG_DEFAULT_IGNORABLE; + kbts_skip_flags RegularSkipFlags = KBTS_SKIP_FLAGS_GPOS_REGULAR(RequestedSkipFlags); + kbts_skip_flags SequenceSkipFlags = KBTS_SKIP_FLAGS_GPOS_SEQUENCE(RequestedSkipFlags); + kbts_do_single_adjustment_result Result = KBTS_ZERO; + kbts_glyph *CurrentGlyph = &GlyphArray->Glyphs[CurrentGlyphIndex]; + + if(kbts_GlyphsIncludedInLookupSubtable(Config->Font, 1, Lookup, LookupIndex, SubtableIndex, GlyphArray, CurrentGlyphIndex, SequenceSkipFlags, SkipUnicodeFlags)) + { + Result.PerformedAdjustment = 1; + + // CAREFUL: We want kbts_unpacked_lookup to be a useful bag-of-arguments type, but, for extension + // lookups, each subtable may specify its own lookup type, so we save it here and restore it at + // the end of this function. + kbts_u16 OriginalLookupType = Lookup->Type; + + while(Lookup->Type == 9) + { + kbts_extension *Extension = (kbts_extension *)Base; + + Lookup->Type = Extension->LookupType; + Base = KBTS_POINTER_OFFSET(kbts_u16, Extension, Extension->Offset); + } + + kbts_glyph *InputGlyphs = GlyphArray->Glyphs + CurrentGlyphIndex; + kbts_un InputGlyphCount = GlyphArray->Count - CurrentGlyphIndex; + + kbts_cover_glyph_result Cover = KBTS_ZERO; + Cover.Valid = kbts_GlyphPassesLookupFilter(CurrentGlyph, Lookup); + kbts_coverage *Coverage = 0; + if(Cover.Valid && kbts_GposLookupBeginsWithCoverage(Lookup->Type, Base[0])) + { + kbts_u16 *CoverageOffset = Base + 1; + Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Base, *CoverageOffset); + Cover = kbts_CoverGlyph(Coverage, CurrentGlyph->Id); + } + + if(Cover.Valid) + { + switch(Lookup->Type) + { + case 1: + { + kbts_unpacked_value_record Unpacked = KBTS_ZERO; + + if(Base[0] == 1) + { + kbts_single_adjustment_1 *Adjust = (kbts_single_adjustment_1 *)Base; + + Unpacked = kbts_UnpackValueRecord(Adjust, Adjust->ValueFormat, KBTS_POINTER_AFTER(kbts_u16, Adjust)); + } + else if(Base[0] == 2) + { + kbts_single_adjustment_2 *Adjust = (kbts_single_adjustment_2 *)Base; + + kbts_un RecordSize = kbts_PopCount32(Adjust->ValueFormat); + kbts_u16 *Records = KBTS_POINTER_AFTER(kbts_u16, Adjust); + kbts_u16 *Record = Records + RecordSize * Cover.Index; + + Unpacked = kbts_UnpackValueRecord(Adjust, Adjust->ValueFormat, Record); + } + + kbts_ApplyValueRecord(CurrentGlyph, &Unpacked); + CurrentGlyph->Flags |= KBTS_GLYPH_FLAG_USED_IN_GPOS; + + Result.PositionedGlyphCount = 1; + } + break; + + case 2: + { + kbts_indexed_glyph NextGlyph; + if(kbts_NextGlyph(Lookup, InputGlyphs, 1, InputGlyphCount, RegularSkipFlags, SkipUnicodeFlags, &NextGlyph)) + { + kbts_u32 NextGlyphId = NextGlyph.Glyph->Id; + + kbts_unpacked_value_record Unpacked1 = KBTS_ZERO; + kbts_unpacked_value_record Unpacked2 = KBTS_ZERO; + + if(Base[0] == 1) + { + kbts_pair_adjustment_1 *Adjust = (kbts_pair_adjustment_1 *)Base; + + kbts_un Size1 = kbts_PopCount32(Adjust->ValueFormat1); + kbts_un Size2 = kbts_PopCount32(Adjust->ValueFormat2); + + kbts_u16 *SetOffsets = KBTS_POINTER_AFTER(kbts_u16, Adjust); + kbts_pair_set *Set = KBTS_POINTER_OFFSET(kbts_pair_set, Adjust, SetOffsets[Cover.Index]); + + kbts_un PairRecordSize = Size1 + Size2 + 1; // + 1 because each pair stores the next glyph ID. + kbts_pair_value_record *PairRecords = KBTS_POINTER_AFTER(kbts_pair_value_record, Set); + KBTS_FOR(PairIndex, 0, Set->Count) + { + kbts_pair_value_record *PairRecord = PairRecords + PairRecordSize * PairIndex; + + if(PairRecord->SecondGlyph == NextGlyphId) + { + kbts_u16 *Records = KBTS_POINTER_AFTER(kbts_u16, PairRecord); + + Unpacked1 = kbts_UnpackValueRecord(Adjust, Adjust->ValueFormat1, Records); + Records += Unpacked1.Size; + Unpacked2 = kbts_UnpackValueRecord(Adjust, Adjust->ValueFormat2, Records); + } + } + } + else if(Base[0] == 2) + { + kbts_pair_adjustment_2 *Adjust = (kbts_pair_adjustment_2 *)Base; + kbts_u16 *ClassDef1 = KBTS_POINTER_OFFSET(kbts_u16, Adjust, Adjust->ClassDefinition1Offset); + kbts_u16 *ClassDef2 = KBTS_POINTER_OFFSET(kbts_u16, Adjust, Adjust->ClassDefinition2Offset); + + kbts_un Size1 = kbts_PopCount32(Adjust->ValueFormat1); + kbts_un Size2 = kbts_PopCount32(Adjust->ValueFormat2); + kbts_un PairRecordSize = Size1 + Size2; + kbts_u16 *PairRecords = KBTS_POINTER_AFTER(kbts_u16, Adjust); + + kbts_u32 Class1 = kbts_GlyphClassFromTable(ClassDef1, CurrentGlyph->Id); + kbts_u32 Class2 = kbts_GlyphClassFromTable(ClassDef2, NextGlyphId); + + kbts_u16 *PairRecord = PairRecords + Class1 * PairRecordSize * Adjust->Class2Count + Class2 * PairRecordSize; + + Unpacked1 = kbts_UnpackValueRecord(Adjust, Adjust->ValueFormat1, PairRecord); + PairRecord += Size1; + + Unpacked2 = kbts_UnpackValueRecord(Adjust, Adjust->ValueFormat2, PairRecord); + PairRecord += Size2; + } + + kbts_ApplyValueRecord(CurrentGlyph, &Unpacked1); + CurrentGlyph->Flags |= KBTS_GLYPH_FLAG_USED_IN_GPOS; + + kbts_ApplyValueRecord(&InputGlyphs[NextGlyph.Index], &Unpacked2); + NextGlyph.Glyph->Flags |= KBTS_GLYPH_FLAG_USED_IN_GPOS; + + Result.PositionedGlyphCount = 2; + if(!Unpacked2.Size) + { + Result.PositionedGlyphCount = 1; + } + } + } + break; + + // All three types of attachment (cursive, mark-to-base, mark-to-ligature) look backward instead of forward. + case 3: + { + kbts_cursive_attachment *Adjust = (kbts_cursive_attachment *)Base; + kbts_entry_exit *EntryExits = KBTS_POINTER_AFTER(kbts_entry_exit, Adjust); + + kbts_glyph *Prev = 0; + for(kbts_un PrevIndex = CurrentGlyphIndex; PrevIndex > 0; --PrevIndex) + { + kbts_glyph *PrevGlyph = &GlyphArray->Glyphs[PrevIndex - 1]; + if(!kbts_SkipGlyph(PrevGlyph, Lookup, RegularSkipFlags, SkipUnicodeFlags)) + { + Prev = PrevGlyph; + break; + } + } + + if(Prev) + { + // For two cursive glyphs to be aligned, they both need to be defined by the same cursive attachment table. + kbts_cover_glyph_result PrevCover = kbts_CoverGlyph(Coverage, Prev->Id); + + if(PrevCover.Valid) + { + // Get anchor points for both glyphs. + kbts_entry_exit *PrevEntryExit = &EntryExits[PrevCover.Index]; + kbts_entry_exit *EntryExit = &EntryExits[Cover.Index]; + + if(PrevEntryExit->ExitAnchorOffset && EntryExit->EntryAnchorOffset) + { + kbts_anchor *PrevExitAnchor = KBTS_POINTER_OFFSET(kbts_anchor, Adjust, PrevEntryExit->ExitAnchorOffset); + kbts_anchor *EntryAnchor = KBTS_POINTER_OFFSET(kbts_anchor, Adjust, EntryExit->EntryAnchorOffset); + kbts_s32 Anchor0X = PrevExitAnchor->X; + kbts_s32 Anchor0Y = PrevExitAnchor->Y; + kbts_s32 Anchor1X = EntryAnchor->X; + kbts_s32 Anchor1Y = EntryAnchor->Y; + kbts_s32 Advance0X = Prev->AdvanceX; + kbts_s32 Advance1X = CurrentGlyph->AdvanceX; + kbts_s32 Offset0X = Prev->OffsetX; + kbts_s32 Offset0Y = Prev->OffsetY; + kbts_s32 Offset1X = CurrentGlyph->OffsetX; + kbts_s32 Offset1Y = CurrentGlyph->OffsetY; + + // Cursive positioning is made up of two parts. + // The first part is glyph-to-glyph alignment, which depends on the text direction. + // Here, we are only concerned with making the relative placements of the glyphs correct, + // insofar as they follow the specified anchor positions. + // + // The OpenType spec makes no attempt to describe how the two glyphs should be aligned, mathematically + // speaking. + // + // This is all we get: + // + // "To position glyphs using the CursivePosFormat1 subtable, a text-processing client aligns the exit + // anchor point of a glyph with the entry anchor point of the following glyph." + // + // In practice, we reproduce harfbuzz's behavior here, which is: + // - Glyph1.Offset.X is unaffected + // - Glyph1.Advance.X = Glyph1.Offset.X + Glyph1.Anchor.X, aka. the _actual position of its anchor_ + // - Glyph2.Offset.X = -Glyph2.Anchor.X + // - Glyph2.Offset.Y = Glyph1.Anchor.Y - Glyph2.Anchor.Y + // - Glyph2.Advance.X -= Glyph2.Anchor.X + // + // (...where "X" here just means "the main direction". In top-to-bottom or bottom-to-top contexts, that + // would be the Y coordinate, but we do not support those yet.) + // + // So, instead of aligning everything with offsets, we use Advance to align _the rest of the string_ + // horizontally with the first glyph, and not just the next glyph. + // + // It might seem dumb to modify both Glyph2.Offset _and_ Glyph2.Advance, because, when the glyphs are next + // to one another, this is equivalent to modifying Glyph1.Advance. However, due to lookup flag nonsense, + // there may be some glyphs between Glyph1 and Glyph2, and, _apparently_, it is fine to adjust them by the + // position of Glyph1's anchor point, and it is not fine to adjust them by the position of Glyph2's anchor + // point. + // + // This Advance tweak seems like it would be wrong, because any marks attached to Glyph1 will then have + // invalid positions. The hope is that this does not matter in practice, because 'mark' is applied after + // 'curs', and font designers are expected to know that and to know never to apply mark attachments + // before cursive positioning, I guess. + if(!kbts_ShaperRtl(Config->Shaper)) + { + Advance0X = Offset0X + Anchor0X; + kbts_s32 Dx = -Anchor1X - Offset1X; + Advance1X += Dx; + Offset1X += Dx; + } + else + { + kbts_s32 Dx = -Anchor0X - Offset0X; + Advance0X += Dx; + Offset0X += Dx; + Advance1X = Offset1X + Anchor1X; + } + + Prev->AdvanceX = Advance0X; + Prev->OffsetX = Offset0X; + Prev->Flags |= (KBTS_GLYPH_FLAG_CURSIVE | KBTS_GLYPH_FLAG_USED_IN_GPOS | KBTS_GLYPH_FLAG_NO_BREAK); + CurrentGlyph->AdvanceX = Advance1X; + CurrentGlyph->OffsetX = Offset1X; + CurrentGlyph->Flags |= (KBTS_GLYPH_FLAG_CURSIVE | KBTS_GLYPH_FLAG_USED_IN_GPOS); + + for(kbts_glyph *CursiveGlyph = Prev + 1; CursiveGlyph < CurrentGlyph; ++CursiveGlyph) + { + CursiveGlyph->Flags |= KBTS_GLYPH_FLAG_NO_BREAK; + } + + // The second part is aligning the newly-formed cursive cluster to the "baseline". It is trickier than you'd expect. + // + // When applying cursive attachments, Glyph1 (RIGHT_TO_LEFT=0) or Glyph2 (RIGHT_TO_LEFT=1) is treated as being + // "on the baseline" and its Y coordinate is used as the reference Y coordinate for the entire cursive glyph + // cluster that has been formed so far. + // This means that, anytime we apply a cursive attachment, we have to offset _all_ of the cursive glyphs to the + // left (RIGHT_TO_LEFT=0) or to the right (RIGHT_TO_LEFT=1) of it. + // This is obviously O(n^2), and @Speed: it might be worthwhile to record cursive offsets as we go, and only resolve + // them when we actually need them, i.e. when applying a non-cursive lookup or, at the latest, when we are done with + // positioning. + // + // The glyph being attached is set at a hard relative offset from the reference glyph. Its previous Y coordinate only + // matters insofar as we need to align every other cursive glyph in its direction. + + kbts_s32 CursiveDy = 0; + kbts_un CursiveStartIndex = CurrentGlyphIndex; + kbts_un DIndex = 1; + + if(!(Lookup->Flags & KBTS_LOOKUP_FLAG_RIGHT_TO_LEFT)) + { + kbts_s32 NewOffset1Y = Offset0Y + Anchor0Y - Anchor1Y; + CursiveDy = NewOffset1Y - Offset1Y; + } + else + { + kbts_s32 NewOffset0Y = Offset1Y + Anchor1Y - Anchor0Y; + CursiveDy = NewOffset0Y - Offset0Y; + DIndex = -1; + CursiveStartIndex = (kbts_un)(Prev - GlyphArray->Glyphs); + } + + for(kbts_un CursiveGlyphIndex = CursiveStartIndex; CursiveGlyphIndex < GlyphArray->Count; CursiveGlyphIndex += DIndex) + { + kbts_glyph *CursiveGlyph = &GlyphArray->Glyphs[CursiveGlyphIndex]; + + if(CursiveGlyph->Flags & KBTS_GLYPH_FLAG_CURSIVE) + { + CursiveGlyph->OffsetY += CursiveDy; + } + else if(CursiveGlyph->AdvanceX | CursiveGlyph->AdvanceY) // Ignore marks. + { + break; + } + } + + Result.PositionedGlyphCount = 1; + } + } + } + } + break; + + case 4: + case 6: + { + kbts_mark_to_base_attachment *Adjust = (kbts_mark_to_base_attachment *)Base; + + // We want to know which glyph to attach to, and how far that glyph is from us. + // To do that, we add up all advances between it and us. + // There is a slight wrinkle here: most shapers end up zeroing mark advances at the _end_ + // of the shaping process, which would retroactively make a naive advance accumulation wrong. + // We have to take that into account here, and only accumulate mark advances for shapers that + // don't do that zeroing at the end (either because they do it at the beginning of GPOS, or + // because they don't do it at all). + int CountMarkAdvances = !kbts_ShaperClearsMarkAdvancesInPostGposFixup(Config->Shaper); + kbts_s32 AdvanceSinceBaseX = 0; + kbts_s32 AdvanceSinceBaseY = 0; + kbts_u32 BaseClasses = Lookup->Type == 6 ? (1 << KBTS_GLYPH_CLASS_MARK) : (1 | (1 << KBTS_GLYPH_CLASS_BASE) | (1 << KBTS_GLYPH_CLASS_LIGATURE) | (1 << KBTS_GLYPH_CLASS_COMPONENT)); + kbts_glyph *BaseGlyph = 0; + for(kbts_un PrevGlyphIndex = CurrentGlyphIndex; PrevGlyphIndex; --PrevGlyphIndex) + { + kbts_glyph *PrevGlyph = &GlyphArray->Glyphs[PrevGlyphIndex - 1]; + + if(CountMarkAdvances || (PrevGlyph->Classes.Class != KBTS_GLYPH_CLASS_MARK)) + { + AdvanceSinceBaseX += PrevGlyph->AdvanceX; + AdvanceSinceBaseY += PrevGlyph->AdvanceY; + } + + if(!kbts_SkipGlyph(PrevGlyph, Lookup, RegularSkipFlags, SkipUnicodeFlags)) + { + if((1 << PrevGlyph->Classes.Class) & BaseClasses) + { + BaseGlyph = PrevGlyph; + break; + } + else if(Lookup->Type == 6) + { + // Unskipped non-marks block mark attachments. + break; + } + } + } + + if(BaseGlyph) + { + int Ok = (Lookup->Type == 4) || // This is a mark-to-base attachment + ((BaseGlyph->LigatureUid == CurrentGlyph->LigatureUid) && (BaseGlyph->LigatureComponentIndexPlusOne == CurrentGlyph->LigatureComponentIndexPlusOne)) || // This is a mark-to-mark attachment, and both marks belong to the same ligature component + ((BaseGlyph->Flags | CurrentGlyph->Flags) & KBTS_GLYPH_FLAG_LIGATURE); // This is a mark-to-mark attachment, and either mark was created by a ligature substitution + if(Ok) + { + kbts_cover_glyph_result BaseCover = kbts_CoverGlyph(KBTS_POINTER_OFFSET(kbts_coverage, Adjust, Adjust->BaseCoverageOffset), BaseGlyph->Id); + + if(BaseCover.Valid) + { + kbts_base_array *BaseArray = KBTS_POINTER_OFFSET(kbts_base_array, Adjust, Adjust->BaseArrayOffset); + kbts_u16 *BaseAnchorOffsets = KBTS_POINTER_AFTER(kbts_u16, BaseArray) + BaseCover.Index * Adjust->MarkClassCount; + kbts_mark_info MarkInfo = kbts_GetMarkInfo(Adjust, Adjust->MarkArrayOffset, Cover.Index); + + kbts_u16 BaseAnchorOffset = BaseAnchorOffsets[MarkInfo.Record->Class]; + if(BaseAnchorOffset) + { + kbts_anchor *BaseAnchor = KBTS_POINTER_OFFSET(kbts_anchor, BaseArray, BaseAnchorOffset); + + /* From the Microsoft docs: + When a mark is combined with a given base, the mark placement is adjusted so that the mark anchor is + aligned with the base anchor for the applicable mark class. Placement of the base glyph and advances of + both glyphs are not affected. + */ + + kbts_s32 NewOffsetX = BaseGlyph->OffsetX - AdvanceSinceBaseX + (BaseAnchor->X - MarkInfo.Anchor->X); + kbts_s32 NewOffsetY = BaseGlyph->OffsetY - AdvanceSinceBaseY + (BaseAnchor->Y - MarkInfo.Anchor->Y); + + kbts_AttachGlyph(GlyphArray, BaseGlyph, CurrentGlyph, NewOffsetX, NewOffsetY); + + Result.PositionedGlyphCount = 1; + } + } + } + } + } + break; + + case 5: + { + kbts_mark_to_ligature_attachment *Adjust = (kbts_mark_to_ligature_attachment *)Base; + + kbts_s32 AdvanceSinceBaseX = 0; + kbts_s32 AdvanceSinceBaseY = 0; + kbts_u32 BaseClasses = (1 | (1 << KBTS_GLYPH_CLASS_BASE) | (1 << KBTS_GLYPH_CLASS_LIGATURE) | (1 << KBTS_GLYPH_CLASS_COMPONENT)); + kbts_glyph *LigatureGlyph = 0; + for(kbts_un PrevGlyphIndex = CurrentGlyphIndex; PrevGlyphIndex; --PrevGlyphIndex) + { + kbts_glyph *PrevGlyph = &GlyphArray->Glyphs[PrevGlyphIndex - 1]; + AdvanceSinceBaseX += PrevGlyph->AdvanceX; + AdvanceSinceBaseY += PrevGlyph->AdvanceY; + if(!kbts_SkipGlyph(PrevGlyph, Lookup, RegularSkipFlags, SkipUnicodeFlags) && ((1 << PrevGlyph->Classes.Class) & BaseClasses)) + { + LigatureGlyph = PrevGlyph; + break; + } + } + + if(LigatureGlyph) + { + kbts_cover_glyph_result LigatureCover = kbts_CoverGlyph(KBTS_POINTER_OFFSET(kbts_coverage, Adjust, Adjust->LigatureCoverageOffset), + LigatureGlyph->Id); + if(LigatureCover.Valid) + { + kbts_ligature_array *LigatureArray = KBTS_POINTER_OFFSET(kbts_ligature_array, Adjust, Adjust->LigatureArrayOffset); + kbts_ligature_attach *LigatureAttach = kbts_GetLigatureAttach(LigatureArray, LigatureCover.Index); + kbts_mark_info MarkInfo = kbts_GetMarkInfo(Adjust, Adjust->MarkArrayOffset, Cover.Index); + kbts_un LigatureComponentIndex = CurrentGlyph->LigatureComponentIndexPlusOne; + + if(CurrentGlyph->LigatureUid != LigatureGlyph->Uid) + { + // If the mark is not yet attached to the ligature, attach it now. + // Apparently, in this case, the mark should be considered part of the _last_ component of the ligature. + LigatureComponentIndex = LigatureAttach->Count; + } + + if(CurrentGlyph->LigatureComponentIndexPlusOne <= LigatureAttach->Count) + { + kbts_un AnchorIndex = LigatureComponentIndex; + if(AnchorIndex) + { + AnchorIndex -= 1; + } + else + { + AnchorIndex = LigatureAttach->Count - 1; + } + + kbts_anchor *LigatureAnchor = kbts_GetLigatureAttachAnchor(Adjust, LigatureAttach, MarkInfo.Record->Class, AnchorIndex); + + kbts_s32 NewOffsetX = LigatureGlyph->OffsetX - AdvanceSinceBaseX + (LigatureAnchor->X - MarkInfo.Anchor->X); + kbts_s32 NewOffsetY = LigatureGlyph->OffsetY - AdvanceSinceBaseY + (LigatureAnchor->Y - MarkInfo.Anchor->Y); + + kbts_AttachGlyph(GlyphArray, LigatureGlyph, CurrentGlyph, NewOffsetX, NewOffsetY); + + CurrentGlyph->LigatureComponentIndexPlusOne = (kbts_u16)LigatureComponentIndex; + CurrentGlyph->LigatureUid = LigatureGlyph->Uid; + // I'm not sure why, but Harfbuzz only clears this in mark-to-ligature substitutions, and not in mark-to-base or + // mark-to-mark. + CurrentGlyph->AdvanceX = 0; + CurrentGlyph->AdvanceY = 0; + + for(kbts_glyph *MiddleGlyph = LigatureGlyph + 1; MiddleGlyph < CurrentGlyph; ++MiddleGlyph) + { + MiddleGlyph->Flags |= KBTS_GLYPH_FLAG_NO_BREAK; + } + + Result.PositionedGlyphCount = 1; + } + } + } + } + break; + + case 7: + case 8: + { + kbts_sequence_lookup_result SequenceLookup = kbts_DoSequenceLookup(Lookup, Base, Cover, GlyphArray, CurrentGlyphIndex, SequenceSkipFlags, SkipUnicodeFlags); + if(SequenceLookup.RecordCount) + { + KBTS_FOR(RecordIndex, 0, SequenceLookup.RecordCount) + { + kbts_sequence_lookup_record *Record = &SequenceLookup.Records[RecordIndex]; + kbts_lookup *PackedRecordLookup = kbts_GetLookup(LookupList, Record->LookupListIndex); + kbts_unpacked_lookup RecordLookup = kbts_UnpackLookup(Config->Font->Gdef, PackedRecordLookup); + + kbts_un NestedCurrentGlyphIndex = CurrentGlyphIndex; + { // Figure out where in the input sequence we need to apply the lookup. + kbts_un SequenceIndex = 0; + KBTS_FOR(InputGlyphIndex, 0, InputGlyphCount) + { + kbts_un NestedIndex = CurrentGlyphIndex + InputGlyphIndex; + kbts_glyph *Glyph = &GlyphArray->Glyphs[NestedIndex]; + + if(!kbts_SkipGlyph(Glyph, Lookup, SequenceSkipFlags, SkipUnicodeFlags)) + { + if(SequenceIndex == Record->SequenceIndex) + { + NestedCurrentGlyphIndex = NestedIndex; + + break; + } + + SequenceIndex += 1; + } + } + } + + KBTS_FOR(NestedSubtableIndex, 0, RecordLookup.SubtableCount) + { + kbts_u16 *NestedBase = KBTS_POINTER_OFFSET(kbts_u16, PackedRecordLookup, RecordLookup.SubtableOffsets[NestedSubtableIndex]); + + kbts_DoSingleAdjustment(Config, LookupList, Record->LookupListIndex, NestedSubtableIndex, &RecordLookup, NestedBase, GlyphArray, NestedCurrentGlyphIndex, RequestedSkipFlags); + } + } + + Result.PositionedGlyphCount = SequenceLookup.InputSequenceCountIncludingSkippedGlyphs; + } + } + break; + } + } + + Lookup->Type = OriginalLookupType; + } + + if(!Result.PositionedGlyphCount) + { + Result.PositionedGlyphCount = 1; + Result.PerformedAdjustment = 0; + } + + KBTS_INSTRUMENT_END + return Result; +} + +typedef kbts_u32 kbts_mcm_sequence_state; +enum kbts_mcm_sequence_state_enum +{ + KBTS_MCM_SEQUENCE_STATE_NONE, + KBTS_MCM_SEQUENCE_STATE_OUT, + KBTS_MCM_SEQUENCE_STATE_IN, +}; + +typedef kbts_u32 kbts_hangul_syllable_type; +enum kbts_hangul_syllable_type_enum +{ + KBTS_HANGUL_SYLLABLE_TYPE_NONE, + + KBTS_HANGUL_SYLLABLE_TYPE_L, + KBTS_HANGUL_SYLLABLE_TYPE_V, + KBTS_HANGUL_SYLLABLE_TYPE_T, + KBTS_HANGUL_SYLLABLE_TYPE_LV, + KBTS_HANGUL_SYLLABLE_TYPE_LVT, + + KBTS_HANGUL_SYLLABLE_TYPE_COUNT, +}; + +typedef struct kbts_hangul_syllable_info +{ + kbts_hangul_syllable_type Type; + kbts_u32 Composable; +} kbts_hangul_syllable_info; + +static kbts_hangul_syllable_info kbts_HangulSyllableInfo(kbts_u32 Codepoint) +{ + kbts_hangul_syllable_info Result = KBTS_ZERO; + + if((Codepoint >= 0x1100) && (Codepoint <= 0x115F)) + { + Result.Type = KBTS_HANGUL_SYLLABLE_TYPE_L; + Result.Composable = (Codepoint < 0x1113); + } + else if((Codepoint >= 0x1160) && (Codepoint <= 0x11A7)) + { + Result.Type = KBTS_HANGUL_SYLLABLE_TYPE_V; + Result.Composable = ((Codepoint >= 0x1161) & (Codepoint <= 0x1175)); + } + else if((Codepoint >= 0x11A8) && (Codepoint <= 0x11FF)) + { + Result.Type = KBTS_HANGUL_SYLLABLE_TYPE_T; + Result.Composable = (Codepoint < 0x11C3); + } + else if((Codepoint >= 0xA960) && (Codepoint <= 0xA97C)) + { + Result.Type = KBTS_HANGUL_SYLLABLE_TYPE_L; + } + else if((Codepoint == 0xAC00) && (Codepoint <= 0xD7A3)) + { + Result.Type = KBTS_HANGUL_SYLLABLE_TYPE_LVT; + + if(!((Codepoint - 0xAC00) % 28)) + { + Result.Type = KBTS_HANGUL_SYLLABLE_TYPE_LV; + } + } + else if((Codepoint >= 0xD7B0) && (Codepoint <= 0xD7C6)) + { + Result.Type = KBTS_HANGUL_SYLLABLE_TYPE_V; + } + else if((Codepoint >= 0xD7CB) && (Codepoint <= 0xD7FB)) + { + Result.Type = KBTS_HANGUL_SYLLABLE_TYPE_T; + } + + return Result; +} + +KBTS_INLINE kbts_u32 kbts_SyllabicClassIsConsonant(kbts_indic_syllabic_class Class) +{ + kbts_u32 Result = + KBTS_IN_SET(Class, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_CONSONANT)(KBTS_INDIC_SYLLABIC_CLASS_RA)(KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_WITH_STACKER)(KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_MEDIAL))); + return Result; +} + +enum +{ + KBTS_FEATURE_MATCH_FLAG_KA_JA = (1 << 0), + KBTS_FEATURE_MATCH_FLAG_SSA_NYA = (1 << 1), + KBTS_FEATURE_MATCH_FLAG_RA_HA_VA = (1 << 2), + KBTS_FEATURE_MATCH_FLAG_YA = (1 << 3), + KBTS_FEATURE_MATCH_FLAG_CONSONANT = (1 << 4), + KBTS_FEATURE_MATCH_FLAG_NUKTA = (1 << 5), + KBTS_FEATURE_MATCH_FLAG_HALANT = (1 << 6), + KBTS_FEATURE_MATCH_FLAG_ZWJ = (1 << 7), + KBTS_FEATURE_MATCH_FLAG_ZWNJ = (1 << 8), + KBTS_FEATURE_MATCH_FLAG_INITIAL = (1 << 10), + KBTS_FEATURE_MATCH_FLAG_POST_BASE = (1 << 11), + + KBTS_FEATURE_MATCH_FLAG_RPHF = KBTS_FEATURE_FLAG0(rphf), +}; +# define KBTS_FEATURE_MATCH_MASK(W0, W1, W2, W3) (((kbts_u64)(W0) << 48) | ((kbts_u64)(W1) << 32) | ((kbts_u64)(W0) << 16) | (kbts_u64)(W0)) +# define KBTS_FEATURE_MATCH_MASK_AKHN KBTS_FEATURE_MATCH_MASK(0, KBTS_FEATURE_MATCH_FLAG_KA_JA, KBTS_FEATURE_MATCH_FLAG_HALANT, KBTS_FEATURE_MATCH_FLAG_SSA_NYA) +# define KBTS_FEATURE_MATCH_MASK_BLWF_PRE KBTS_FEATURE_MATCH_MASK(0, 0, KBTS_FEATURE_MATCH_FLAG_RA_HA_VA | KBTS_FEATURE_MATCH_FLAG_INITIAL, KBTS_FEATURE_MATCH_FLAG_HALANT) +# define KBTS_FEATURE_MATCH_MASK_BLWF_PRE_OK KBTS_FEATURE_MATCH_MASK(0, 0, KBTS_FEATURE_MATCH_FLAG_RA_HA_VA, KBTS_FEATURE_MATCH_FLAG_HALANT) +# define KBTS_FEATURE_MATCH_MASK_BLWF_POST KBTS_FEATURE_MATCH_MASK(0, 0, KBTS_FEATURE_MATCH_FLAG_HALANT, KBTS_FEATURE_MATCH_FLAG_RA_HA_VA) +# define KBTS_FEATURE_MATCH_MASK_CJCT KBTS_FEATURE_MATCH_MASK(0, KBTS_FEATURE_MATCH_FLAG_CONSONANT, KBTS_FEATURE_MATCH_FLAG_HALANT, KBTS_FEATURE_MATCH_FLAG_CONSONANT) +# define KBTS_FEATURE_MATCH_MASK_HALF KBTS_FEATURE_MATCH_MASK(KBTS_FEATURE_MATCH_FLAG_CONSONANT | KBTS_FEATURE_MATCH_FLAG_RPHF | KBTS_FEATURE_MATCH_FLAG_POST_BASE, KBTS_FEATURE_MATCH_FLAG_HALANT, KBTS_FEATURE_MATCH_FLAG_ZWNJ, KBTS_FEATURE_MATCH_FLAG_CONSONANT) +# define KBTS_FEATURE_MATCH_MASK_HALF_OK KBTS_FEATURE_MATCH_MASK(KBTS_FEATURE_MATCH_FLAG_CONSONANT, KBTS_FEATURE_MATCH_FLAG_HALANT, 0, 0) +# define KBTS_FEATURE_MATCH_MASK_NUKT KBTS_FEATURE_MATCH_MASK(0, 0, KBTS_FEATURE_MATCH_FLAG_CONSONANT, KBTS_FEATURE_MATCH_FLAG_HALANT) +# define KBTS_FEATURE_MATCH_MASK_PSTF KBTS_FEATURE_MATCH_MASK(0, 0, KBTS_FEATURE_MATCH_FLAG_HALANT | KBTS_FEATURE_MATCH_FLAG_INITIAL, KBTS_FEATURE_MATCH_FLAG_YA) +# define KBTS_FEATURE_MATCH_MASK_VATU KBTS_FEATURE_MATCH_MASK(0, KBTS_FEATURE_MATCH_FLAG_CONSONANT, KBTS_FEATURE_MATCH_FLAG_HALANT, KBTS_FEATURE_MATCH_FLAG_RA_HA_VA) + +typedef kbts_u32 kbts_substitution_result_flags; +enum kbts_substitution_result_flags_enum +{ + KBTS_SUBSTITUTION_RESULT_FLAG_MATCHED_SUBSTITUTION = (1 << 0), + KBTS_SUBSTITUTION_RESULT_FLAG_GROW_BUFFER = (1 << 1), +}; + +static kbts_substitution_result_flags kbts_DoSubstitution(kbts_shape_state *ShapeState, kbts_lookup_list *LookupList, kbts_gsub_frame *Frames, kbts_u32 *FrameCount_, + kbts_glyph_array *GlyphArray, kbts_u32 CheckOnly, kbts_skip_flags RequestedSkipFlags, kbts_u32 GeneratedGlyphFlags) +{ + kbts_substitution_result_flags Result = 0; + kbts_font *Font = ShapeState->Config->Font; + kbts_glyph *Glyphs = GlyphArray->Glyphs; + kbts_unicode_flags SkipUnicodeFlags = 0; // @Incomplete + kbts_skip_flags RegularSkipFlags = KBTS_SKIP_FLAGS_GSUB_REGULAR(RequestedSkipFlags); + kbts_skip_flags SequenceSkipFlags = KBTS_SKIP_FLAGS_GSUB_SEQUENCE(RequestedSkipFlags); + GeneratedGlyphFlags |= KBTS_GLYPH_FLAG_GENERATED_BY_GSUB; + + kbts_un FrameCount = *FrameCount_; + kbts_gsub_frame *Frame = &Frames[FrameCount - 1]; + + kbts_lookup *PackedLookup = kbts_GetLookup(LookupList, Frame->LookupIndex); + kbts_unpacked_lookup Lookup = kbts_UnpackLookup(Font->Gdef, PackedLookup); + kbts_u16 BaseLookupType = Lookup.Type; + + while(Frame->SubtableIndex < Lookup.SubtableCount) + { + kbts_u16 *Subtable = KBTS_POINTER_OFFSET(kbts_u16, PackedLookup, Lookup.SubtableOffsets[Frame->SubtableIndex]); + // In a type-7 lookup, each subtable can specify a different lookup type. + // We still want to pass kbts_unpacked_lookup around as a useful bag of arguments, though. + // So, we restore the original lookup's type here before resolving each subtable. + Lookup.Type = BaseLookupType; + + while(Lookup.Type == 7) + { + kbts_extension *Extension = (kbts_extension *)Subtable; + Lookup.Type = Extension->LookupType; + Subtable = KBTS_POINTER_OFFSET(kbts_u16, Extension, Extension->Offset); + } + + // :ReverseChaining + // From the Microsoft docs: + // In processing a reverse chaining substitution, i begins at the logical end of the string and moves to the beginning. + // This comment only makes sense when the reverse chaining substitution happens at the top level. + // When it _is_ at the top level, we know we are just doing a linear scan through the string, and since this is a single + // substitution (i.e. one glyph -> one glyph), we know the size of the buffer won't change throughout the scan. + // Given all of this, handling the reverse-scanning nature of this lookup actually becomes very easy: + if((Lookup.Type == 8) && (FrameCount == 1)) + { + Frame->InputGlyphIndex = (kbts_u16)(GlyphArray->Count - 1 - Frame->InputGlyphIndex); + } + + kbts_glyph *CurrentGlyph = &Glyphs[Frame->InputGlyphIndex]; + kbts_glyph_array InputGlyphs = kbts_GlyphSubArray(GlyphArray, Frame->InputGlyphIndex); + + kbts_skip_flags SkipFlags = (Lookup.Type >= 5) ? SequenceSkipFlags : RegularSkipFlags; + if(kbts_GlyphsIncludedInLookupSubtable(Font, 0, &Lookup, Frame->LookupIndex, Frame->SubtableIndex, GlyphArray, Frame->InputGlyphIndex, SkipFlags, SkipUnicodeFlags)) + { + kbts_cover_glyph_result Cover = KBTS_ZERO; + Cover.Valid = kbts_GlyphPassesLookupFilter(CurrentGlyph, &Lookup); + if(Cover.Valid && kbts_GsubLookupBeginsWithCoverage(Lookup.Type, Subtable[0])) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Subtable, Subtable[1]); + Cover = kbts_CoverGlyph(Coverage, CurrentGlyph->Id); + } + + if(Cover.Valid) + { + kbts_un DeltaGlyphCount = 0; + + if((Lookup.Type == 5) || (Lookup.Type == 6)) + { + kbts_sequence_lookup_result SequenceLookup = kbts_DoSequenceLookup(&Lookup, Subtable, Cover, GlyphArray, Frame->InputGlyphIndex, SequenceSkipFlags, SkipUnicodeFlags); + + if(SequenceLookup.Matched) + { + KBTS_FOR(FrameIndex, 0, FrameCount - 1) + { + kbts_gsub_frame *ParentFrame = &Frames[FrameIndex]; + + if((ParentFrame->InputGlyphIndex < (Frame->InputGlyphIndex + SequenceLookup.InputSequenceCountIncludingSkippedGlyphs)) && + ((ParentFrame->InputGlyphIndex + ParentFrame->InputGlyphCount) > Frame->InputGlyphIndex)) + { + ParentFrame->InputGlyphCount += (kbts_u16)(SequenceLookup.InputSequenceCountIncludingSkippedGlyphs - Frame->InputGlyphCount); + } + } + + Frame->InputGlyphCount = (kbts_u16)SequenceLookup.InputSequenceCountIncludingSkippedGlyphs; + Frame->Records = SequenceLookup.Records; + Frame->RecordCount = (kbts_u16)SequenceLookup.RecordCount; + Frame->RecordIndex = 0; + + Frame->SubtableIndex = 0xFFFE; + } + } + else + { + // Do single substitution. + + switch(Lookup.Type) + { + case 1: + { + Result |= KBTS_SUBSTITUTION_RESULT_FLAG_MATCHED_SUBSTITUTION; + + if(!CheckOnly) + { + kbts_single_substitution *Subst = (kbts_single_substitution *)Subtable; + + kbts_u16 NewId = 0; + if(Subst->Format == 1) + { + // From the Microsoft docs: + // "Addition of deltaGlyphID is modulo 65536." + NewId = (CurrentGlyph->Id + (kbts_u32)Subst->DeltaOrCount.DeltaGlyphId) & 0xFFFF; + } + else if(Subst->Format == 2) + { + kbts_u16 *SubstituteGlyphIds = KBTS_POINTER_AFTER(kbts_u16, Subst); + NewId = SubstituteGlyphIds[Cover.Index]; + } + + kbts_GsubMutate(Font, CurrentGlyph, NewId, GeneratedGlyphFlags); + } + } break; + + case 2: + { + Result |= KBTS_SUBSTITUTION_RESULT_FLAG_MATCHED_SUBSTITUTION; + + if(!CheckOnly) + { + kbts_multiple_substitution *Subst = (kbts_multiple_substitution *)Subtable; + kbts_sequence *Sequence = kbts_GetSequence(Subst, Cover.Index); + kbts_u16 *SubstGlyphIds = KBTS_POINTER_AFTER(kbts_u16, Sequence); + + kbts_un GrowCount = Sequence->GlyphCount - 1; + if(!kbts_GrowGlyphArray(0, &InputGlyphs, 0, GrowCount, 0, 0)) + { + Result |= KBTS_SUBSTITUTION_RESULT_FLAG_GROW_BUFFER; + kbts_TransferGrowRequest(&InputGlyphs, GlyphArray); + + goto Cleanup; + } + DeltaGlyphCount += GrowCount; + + kbts_glyph OriginalGlyph = *CurrentGlyph; + KBTS_FOR(SubstGlyphIndex, 0, Sequence->GlyphCount) + { + kbts_glyph NewGlyph = OriginalGlyph; + kbts_GsubMutate(Font, &NewGlyph, SubstGlyphIds[SubstGlyphIndex], GeneratedGlyphFlags | KBTS_GLYPH_FLAG_MULTIPLE_SUBSTITUTION); + if(SubstGlyphIndex) + { + NewGlyph.Uid = (kbts_u16)++ShapeState->NextGlyphUid; + } + else + { + NewGlyph.Flags |= KBTS_GLYPH_FLAG_FIRST_IN_MULTIPLE_SUBSTITUTION; + } + Glyphs[Frame->InputGlyphIndex + SubstGlyphIndex] = NewGlyph; + } + + Frame->InputGlyphCount = Sequence->GlyphCount; + + // Shift other frames' input cursors. + KBTS_FOR(FrameIndex, 0, FrameCount - 1) + { + kbts_gsub_frame *OtherFrame = &Frames[FrameIndex]; + + if(OtherFrame->InputGlyphIndex > Frame->InputGlyphIndex) + { + OtherFrame->InputGlyphIndex = (kbts_u16)(OtherFrame->InputGlyphIndex + GrowCount); + } + else if((OtherFrame->InputGlyphIndex + OtherFrame->InputGlyphCount) > Frame->InputGlyphIndex) + { + OtherFrame->InputGlyphCount = (kbts_u16)(OtherFrame->InputGlyphCount + GrowCount); + } + } + } + } break; + + case 3: + { + Result |= KBTS_SUBSTITUTION_RESULT_FLAG_MATCHED_SUBSTITUTION; + + if(!CheckOnly) + { + kbts_alternate_substitution *Subst = (kbts_alternate_substitution *)Subtable; + kbts_alternate_set *Set = kbts_GetAlternateSet(Subst, Cover.Index); + kbts_u16 *AltGlyphIds = KBTS_POINTER_AFTER(kbts_u16, Set); + + kbts_un AlternateIndex = 0; + + { + kbts_feature_set *ShaperFeatures = ShapeState->Config->Features; + kbts_glyph_config *GlyphConfig = CurrentGlyph->Config; + if(GlyphConfig) + { + int HasOverride = 0; + KBTS_FOR(WordIndex, 0, KBTS_ARRAY_LENGTH(GlyphConfig->EnabledFeatures.Flags)) + { + kbts_u64 Flags = GlyphConfig->EnabledFeatures.Flags[WordIndex] & ShaperFeatures->Flags[WordIndex]; + if(Flags) + { + HasOverride = 1; + break; + } + } + + if(HasOverride) + { + kbts_op_state_gsub *Gsub = &ShapeState->OpState.OpSpecific.Gsub; + KBTS_FOR(OverrideIndex, 0, GlyphConfig->FeatureOverrideCount) + { + kbts_feature_override *Override = &GlyphConfig->FeatureOverrides[OverrideIndex]; + kbts_u32 EnabledOrAlternatePlusOne = Override->EnabledOrAlternatePlusOne; + + if(EnabledOrAlternatePlusOne && kbts_ContainsFeature(&Gsub->LookupFeatures, Override->Id)) + { + AlternateIndex = EnabledOrAlternatePlusOne - 1; + break; + } + } + } + } + } + + if(AlternateIndex >= Set->GlyphCount) + { + AlternateIndex = 0; + } + + kbts_u16 NewId = AltGlyphIds[AlternateIndex]; + kbts_GsubMutate(Font, CurrentGlyph, NewId, GeneratedGlyphFlags); + } + } break; + + case 4: + { + kbts_ligature_substitution *Subst = (kbts_ligature_substitution *)Subtable; + kbts_ligature_set *Set = kbts_GetLigatureSet(Subst, Cover.Index); + + KBTS_FOR(LigatureIndex, 0, Set->Count) + { + kbts_ligature *Ligature = kbts_GetLigature(Set, LigatureIndex); + kbts_u16 *ComponentIds = KBTS_POINTER_AFTER(kbts_u16, Ligature); + + if(Ligature->ComponentCount <= InputGlyphs.Count) + { + kbts_un MatchingGlyphCount = 1; + + { + kbts_un InputIndex = 1; + while((InputIndex < InputGlyphs.Count) && (MatchingGlyphCount < Ligature->ComponentCount)) + { + kbts_glyph *Glyph = &InputGlyphs.Glyphs[InputIndex]; + // A ligature may contain an explicit ZWJ, which SkipGlyph() would probably skip. + // The expected behavior in that case is to assume the font designer knows what they are doing + // and match the ZWJ. + if(Glyph->Id == ComponentIds[MatchingGlyphCount - 1]) + { + MatchingGlyphCount += 1; + } + else if(!kbts_SkipGlyph(Glyph, &Lookup, RegularSkipFlags, SkipUnicodeFlags)) + { + break; + } + InputIndex += 1; + } + } + + if(MatchingGlyphCount == Ligature->ComponentCount) + { + Result |= KBTS_SUBSTITUTION_RESULT_FLAG_MATCHED_SUBSTITUTION; + + if(!CheckOnly) + { + kbts_u32 LigatureUid = ++ShapeState->NextGlyphUid; + + { // For glyphs that aren't part of the ligature, store which component it is attached to. + // For glyphs that _are_, eat them. + kbts_un LigatureGlyphCount = 1; + kbts_un ReadCursor = 1; + kbts_un WriteCursor = 1; + + while((LigatureGlyphCount < InputGlyphs.Count) && (LigatureGlyphCount < Ligature->ComponentCount) && (ReadCursor < InputGlyphs.Count)) + { + kbts_glyph *Glyph = &InputGlyphs.Glyphs[ReadCursor]; + + if(Glyph->Id == ComponentIds[LigatureGlyphCount - 1]) + { + LigatureGlyphCount += 1; + ReadCursor += 1; + } + else if(kbts_SkipGlyph(Glyph, &Lookup, RegularSkipFlags, SkipUnicodeFlags)) + { + Glyph->LigatureComponentIndexPlusOne = (kbts_u16)LigatureGlyphCount; + Glyph->LigatureUid = (kbts_u16)LigatureUid; + + InputGlyphs.Glyphs[WriteCursor++] = InputGlyphs.Glyphs[ReadCursor++]; + } + else + { + break; + } + } + + // Finish moving all non-ligature glyphs in their place. + // We are effectively shrinking the whole buffer here, so we have to touch + // glyphs outside of our own cluster. + kbts_un GrowCount = WriteCursor - ReadCursor; // Negative + kbts_GrowGlyphArray(0, &InputGlyphs, WriteCursor, GrowCount, 0, 0); + DeltaGlyphCount += GrowCount; + + // Update frame input cursors. + KBTS_FOR(FrameIndex, 0, FrameCount - 1) + { + kbts_gsub_frame *OtherFrame = &Frames[FrameIndex]; + + if(OtherFrame->InputGlyphIndex >= Frame->InputGlyphIndex) + { + kbts_un OtherInputIndex = OtherFrame->InputGlyphIndex + GrowCount; + OtherInputIndex = KBTS_MAX(OtherInputIndex, Frame->InputGlyphIndex); + OtherFrame->InputGlyphIndex = (kbts_u16)OtherInputIndex; + } + else + { + kbts_un End = OtherFrame->InputGlyphIndex + OtherFrame->InputGlyphCount; + End = KBTS_MIN(End, GlyphArray->TotalCount); + OtherFrame->InputGlyphCount = (kbts_u16)(End - OtherFrame->InputGlyphIndex); + } + } + } + + // Currently, we only take the main glyph's config into account while making the ligature's config. + // Maybe we should merge all of the components' configs into one instead? + kbts_GsubMutate(Font, CurrentGlyph, Ligature->Glyph, GeneratedGlyphFlags | KBTS_GLYPH_FLAG_LIGATURE); + CurrentGlyph->Uid = (kbts_u16)LigatureUid; + // Harfbuzz does this, because Uniscribe does this, and so we do the same. Sigh. + CurrentGlyph->Flags &= ~KBTS_GLYPH_FLAG_MULTIPLE_SUBSTITUTION; + } + + break; + } + } + } + } break; + + case 8: + { + kbts_reverse_chain_substitution *Subst = (kbts_reverse_chain_substitution *)Subtable; + kbts_unpacked_reverse_chain_substitution Unpacked = kbts_UnpackReverseChainSubstitution(Subst, 0); + + // :BoundsChecking + if(Cover.Index < Unpacked.GlyphCount) + { + // Should we use regular or sequence skip flags here? + kbts_glyph_array BacktrackGlyphs = kbts_ClipGlyphArray(GlyphArray, Frame->InputGlyphIndex); + kbts_sequence_match BacktrackMatch = kbts_MatchCoverageSequence(&Lookup, RegularSkipFlags, SkipUnicodeFlags, Subst, Unpacked.BacktrackCoverageOffsets, Unpacked.BacktrackCount, + &BacktrackGlyphs, (kbts_un)Frame->InputGlyphIndex - 1, -1); + kbts_glyph_array FollowupGlyphs = kbts_GlyphSubArray(&InputGlyphs, 1); + kbts_sequence_match LookaheadMatch = kbts_MatchCoverageSequence(&Lookup, RegularSkipFlags, SkipUnicodeFlags, Subst, Unpacked.LookaheadCoverageOffsets, Unpacked.LookaheadCount, + &FollowupGlyphs, 0, 1); + if((BacktrackMatch.MatchCount == Unpacked.BacktrackCount) && (LookaheadMatch.MatchCount == Unpacked.LookaheadCount)) + { + Result |= KBTS_SUBSTITUTION_RESULT_FLAG_MATCHED_SUBSTITUTION; + kbts_GsubMutate(Font, CurrentGlyph, Unpacked.SubstituteGlyphIds[Cover.Index], GeneratedGlyphFlags); + } + } + } break; + } + + if(Result & KBTS_SUBSTITUTION_RESULT_FLAG_MATCHED_SUBSTITUTION) + { + Frame->SubtableIndex = 0xFFFE; + + // From the Microsoft docs: + // To move to the “next” glyph, the client skips all the glyphs that participated in the lookup operation: + // glyphs that were substituted/positioned as well as any other glyphs in the matched input sequence. + + GlyphArray->Count += DeltaGlyphCount; + GlyphArray->TotalCount += DeltaGlyphCount; + } + } + } + } + + Frame->SubtableIndex += 1; + } + + if(Frame->RecordIndex < Frame->RecordCount) + { + kbts_sequence_lookup_record *SequenceRecord = &Frame->Records[Frame->RecordIndex++]; + + kbts_gsub_frame NewFrame = KBTS_ZERO; + NewFrame.LookupIndex = SequenceRecord->LookupListIndex; + NewFrame.SubtableIndex = 0; + NewFrame.InputGlyphIndex = Frame->InputGlyphIndex; + + if(SequenceRecord->SequenceIndex) + { + // @Speed: Re-scan the sequence to find where we are in the _filtered_ sequence. + kbts_un SequenceInputIndex = 0; + KBTS_FOR(FilterAt, Frame->InputGlyphIndex + 1, GlyphArray->Count) + { + kbts_glyph *FilterGlyph = &Glyphs[FilterAt]; + + // @Incomplete: SequenceSkipFlags? 0? + // What do we use here? + if(!kbts_SkipGlyph(FilterGlyph, &Lookup, 0, SkipUnicodeFlags)) + { + SequenceInputIndex += 1; + + if(SequenceInputIndex == SequenceRecord->SequenceIndex) + { + NewFrame.InputGlyphIndex = (kbts_u16)FilterAt; + + break; + } + } + } + } + + NewFrame.InputGlyphCount = 1; + Frames[FrameCount++] = NewFrame; + } + + // Only actually pop the frame if we haven't pushed anything else in the meantime. + if(Frame == &Frames[FrameCount - 1]) + { + FrameCount -= 1; + } + +Cleanup:; + *FrameCount_ = (kbts_u32)FrameCount; + + return Result; +} + +static kbts_u32 kbts_WouldSubstitute(kbts_shape_state *ShapeState, kbts_lookup_list *LookupList, kbts_gsub_frame *Frames, kbts_feature *Feature, kbts_skip_flags SkipFlags, kbts_glyph *Glyphs, kbts_un GlyphCount) +{ + kbts_u32 Result = 0; + kbts_u32 DummyGlyphCount = (kbts_u32)GlyphCount; + kbts_glyph_array GlyphArray = kbts_GlyphArray(Glyphs, GlyphCount, GlyphCount, GlyphCount); + + kbts_iterate_lookups IterateLookups = kbts_IterateLookups(LookupList, Feature); + while(kbts_NextLookup(&IterateLookups)) + { + kbts_un GlyphIndex = 0; + + while(GlyphIndex < GlyphCount) + { + kbts_gsub_frame *Frame = &Frames[0]; + Frame->LookupIndex = IterateLookups.LookupIndex; + Frame->SubtableIndex = 0; + Frame->InputGlyphIndex = 0; + Frame->InputGlyphCount = 1; + kbts_u32 FrameCount = 1; + + while(FrameCount) + { + kbts_substitution_result_flags SubstitutionResult = kbts_DoSubstitution(ShapeState, LookupList, Frames, &FrameCount, &GlyphArray, 1, SkipFlags, 0); + + if(SubstitutionResult & KBTS_SUBSTITUTION_RESULT_FLAG_MATCHED_SUBSTITUTION) + { + Result = 1; + goto Done; + } + } + + GlyphIndex += Frames[0].InputGlyphCount; + } + } + +Done:; + return Result; +} + +static int kbts_NextLookupIndex(kbts_op_state *S, kbts_un *LookupIndex, kbts_u32 *SkipFlags_, kbts_u32 *GlyphFilter_, kbts_feature_set *FeatureSet_) +{ + kbts_un LowestIndex = 0xFFFFFFFF; + KBTS_FOR(FeatureIndex, 0, S->FeatureCount) + { + kbts_lookup_indices *Indices = &S->FeatureLookupIndices[FeatureIndex]; + kbts_un Index = Indices->Indices[0]; + if(Index < LowestIndex) + { + LowestIndex = Index; + } + } + + kbts_feature_set FeatureSet = KBTS_ZERO; + kbts_skip_flags SkipFlags = 0; + kbts_u32 GlyphFilter = 0; + KBTS_FOR(FeatureIndex, 0, S->FeatureCount) + { + kbts_lookup_indices *Indices = &S->FeatureLookupIndices[FeatureIndex]; + kbts_un Index = Indices->Indices[0]; + if(Index == LowestIndex) + { + SkipFlags |= Indices->SkipFlags; + GlyphFilter |= Indices->GlyphFilter; + kbts_AddFeature(&FeatureSet, Indices->FeatureId); + ++Indices->Indices; --Indices->Count; + if(!Indices->Count) + { + S->FeatureLookupIndices[FeatureIndex--] = S->FeatureLookupIndices[--S->FeatureCount]; + } + } + } + + *LookupIndex = LowestIndex; + *SkipFlags_ = SkipFlags; + *GlyphFilter_ = GlyphFilter; + *FeatureSet_ = FeatureSet; + return LowestIndex != 0xFFFFFFFF; +} + +static kbts_u32 kbts_ExecuteOp(kbts_shape_state *ShapeState, kbts_glyph_array *GlyphArray) +{ + KBTS_INSTRUMENT_FUNCTION_BEGIN + kbts_shape_config *Config = ShapeState->Config; + kbts_font *Font = Config->Font; + kbts_op *Op = &ShapeState->Op; + kbts_op_state *S = &ShapeState->OpState; + kbts_glyph *Glyphs = GlyphArray->Glyphs; + + kbts_u32 ResumePoint = S->ResumePoint; + S->ResumePoint = 0; + switch(ResumePoint) + { + case 1: goto ResumePoint1; break; + case 2: goto ResumePoint2; break; + case 3: goto ResumePoint3; break; + case 4: goto ResumePoint4; break; + case 5: goto ResumePoint5; break; + } + + S->WrittenCount = 0; + + switch(Op->Kind) + { + case KBTS_OP_KIND_PRE_NORMALIZE_DOTTED_CIRCLES: + { + KBTS_INSTRUMENT_BLOCK_BEGIN("PRE_NORMALIZE_DOTTED_CIRCLES") + // Before even trying to normalize anything, there are some _exceptions_ we have to take care of. + // The USE spec gives us a list of codepoint sequences which necessitate insertion of a dotted circle. + // These sequences are from IndicShapingInvalidClusters.txt. + S->GlyphIndex = 0; + + kbts_u64 Codepoints = 0; // 0xABBBBBCCCCCDDDDD + for(; S->GlyphIndex < GlyphArray->Count; ++S->GlyphIndex) + { + kbts_u32 NewCodepoint = Glyphs[S->GlyphIndex].Codepoint & 0x1FFFFF; + Codepoints = (Codepoints << 21) | NewCodepoint; + + // This switch is faster than any table lookup I could come up with in my tests. + #define KBTS_C2(A, B) case (((kbts_u64)(A) << 21) | (kbts_u64)(B)): + switch(Codepoints & (((kbts_u64)1 << 42) - 1)) + { + default: + if((Codepoints & (((kbts_u64)1 << 63) - 1)) == (((kbts_u64)0x930 << 42) | ((kbts_u64)0x94D << 21) | ((kbts_u64)0x907))) + { + if(0) + { + ResumePoint4:; + Codepoints = 0; + } + KBTS_C2(0x905, 0x93A) + KBTS_C2(0x905, 0x93B) + KBTS_C2(0x905, 0x93E) + KBTS_C2(0x905, 0x945) + KBTS_C2(0x905, 0x946) + KBTS_C2(0x905, 0x949) + KBTS_C2(0x905, 0x94A) + KBTS_C2(0x905, 0x94B) + KBTS_C2(0x905, 0x94C) + KBTS_C2(0x905, 0x94F) + KBTS_C2(0x905, 0x956) + KBTS_C2(0x905, 0x957) + KBTS_C2(0x906, 0x93A) + KBTS_C2(0x906, 0x945) + KBTS_C2(0x906, 0x946) + KBTS_C2(0x906, 0x947) + KBTS_C2(0x906, 0x948) + KBTS_C2(0x909, 0x941) + KBTS_C2(0x90F, 0x945) + KBTS_C2(0x90F, 0x946) + KBTS_C2(0x90F, 0x947) + KBTS_C2(0x985, 0x9BE) + KBTS_C2(0x98B, 0x9C3) + KBTS_C2(0x98C, 0x9E2) + KBTS_C2(0xA05, 0xA3E) + KBTS_C2(0xA05, 0xA48) + KBTS_C2(0xA05, 0xA4C) + KBTS_C2(0xA72, 0xA3F) + KBTS_C2(0xA72, 0xA40) + KBTS_C2(0xA72, 0xA47) + KBTS_C2(0xA73, 0xA41) + KBTS_C2(0xA73, 0xA42) + KBTS_C2(0xA73, 0xA4B) + KBTS_C2(0xA85, 0xABE) + KBTS_C2(0xA85, 0xAC5) + KBTS_C2(0xA85, 0xAC7) + KBTS_C2(0xA85, 0xAC8) + KBTS_C2(0xA85, 0xAC9) + KBTS_C2(0xA85, 0xACB) + KBTS_C2(0xA85, 0xACC) + KBTS_C2(0xAC5, 0xABE) + KBTS_C2(0xB05, 0xB3E) + KBTS_C2(0xB0F, 0xB57) + KBTS_C2(0xB13, 0xB57) + KBTS_C2(0xB85, 0xBC2) + KBTS_C2(0xC12, 0xC4C) + KBTS_C2(0xC12, 0xC55) + KBTS_C2(0xC3F, 0xC55) + KBTS_C2(0xC46, 0xC55) + KBTS_C2(0xC4A, 0xC55) + KBTS_C2(0xC89, 0xCBE) + KBTS_C2(0xC8B, 0xCBE) + KBTS_C2(0xC92, 0xCCC) + KBTS_C2(0xD07, 0xD57) + KBTS_C2(0xD09, 0xD57) + KBTS_C2(0xD0E, 0xD46) + KBTS_C2(0xD12, 0xD3E) + KBTS_C2(0xD12, 0xD57) + KBTS_C2(0xD85, 0xDCF) + KBTS_C2(0xD85, 0xDD0) + KBTS_C2(0xD85, 0xDD1) + KBTS_C2(0xD8B, 0xDDF) + KBTS_C2(0xD8D, 0xDD8) + KBTS_C2(0xD8F, 0xDDF) + KBTS_C2(0xD91, 0xDCA) + KBTS_C2(0xD91, 0xDD9) + KBTS_C2(0xD91, 0xDDA) + KBTS_C2(0xD91, 0xDDC) + KBTS_C2(0xD91, 0xDDD) + KBTS_C2(0xD91, 0xDDE) + KBTS_C2(0xD94, 0xDDF) + KBTS_C2(0x11005, 0x11038) + KBTS_C2(0x1100B, 0x1103E) + KBTS_C2(0x1100F, 0x11042) + KBTS_C2(0x11200, 0x1122C) + KBTS_C2(0x11200, 0x11231) + KBTS_C2(0x11200, 0x11233) + KBTS_C2(0x11206, 0x1122C) + KBTS_C2(0x1122C, 0x11230) + KBTS_C2(0x1122C, 0x11231) + KBTS_C2(0x11240, 0x1122E) + KBTS_C2(0x112B0, 0x112E0) + KBTS_C2(0x112B0, 0x112E5) + KBTS_C2(0x112B0, 0x112E6) + KBTS_C2(0x112B0, 0x112E7) + KBTS_C2(0x112B0, 0x112E8) + KBTS_C2(0x11481, 0x114B0) + KBTS_C2(0x1148B, 0x114BA) + KBTS_C2(0x1148D, 0x114BA) + KBTS_C2(0x114AA, 0x114B5) + KBTS_C2(0x114AA, 0x114B6) + KBTS_C2(0x11600, 0x11639) + KBTS_C2(0x11600, 0x1163A) + KBTS_C2(0x11601, 0x11639) + KBTS_C2(0x11601, 0x1163A) + KBTS_C2(0x11680, 0x116AD) + KBTS_C2(0x11680, 0x116B4) + KBTS_C2(0x11680, 0x116B5) + KBTS_C2(0x11686, 0x116B2) + if(!kbts_GrowGlyphArray(&S->ResumePoint, GlyphArray, S->GlyphIndex, 1, 4, 0)) + { + KBTS_INSTRUMENT_END + return 1; + } + GlyphArray->Glyphs[S->GlyphIndex] = Config->DottedCircle; + } + } + #undef KBTS_C2 + } + + S->WrittenCount = GlyphArray->TotalCount; + KBTS_INSTRUMENT_END + } break; + + case KBTS_OP_KIND_NORMALIZE: + { + KBTS_INSTRUMENT_BLOCK_BEGIN("NORMALIZE") + // @Incomplete: We need to honor this. + // HB_OT_SHAPE_NORMALIZATION_MODE_NONE, + // HB_OT_SHAPE_NORMALIZATION_MODE_AUTO, + // HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT, /* Always fully decomposes and then recompose back */ + // + // hangul: HB_OT_SHAPE_NORMALIZATION_MODE_NONE, + // arabic: HB_OT_SHAPE_NORMALIZATION_MODE_AUTO, + // default: HB_OT_SHAPE_NORMALIZATION_MODE_AUTO, + // hebrew: HB_OT_SHAPE_NORMALIZATION_MODE_AUTO, + // thai: HB_OT_SHAPE_NORMALIZATION_MODE_AUTO, + // indic: HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT, + // khmer: HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT, + // myanmar: HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT, + // use: HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT, + + kbts_glyph *DecompositionGlyphs = KBTS_POINTER_AFTER(kbts_glyph, S); + + { // Full NFD decomposition + for(S->GlyphIndex = 0; S->GlyphIndex < GlyphArray->Count; ++S->GlyphIndex) + { + DecompositionGlyphs[0] = Glyphs[S->GlyphIndex]; + S->OpSpecific.Normalize.CodepointsToDecomposeCount = 1; + + while(S->OpSpecific.Normalize.CodepointsToDecomposeCount) + { + if(0) + { + ResumePoint1:; + DecompositionGlyphs = KBTS_POINTER_AFTER(kbts_glyph, S); + } + + kbts_glyph GlyphToDecompose = DecompositionGlyphs[--S->OpSpecific.Normalize.CodepointsToDecomposeCount]; + kbts_u64 Decomposition = 0; + kbts_u32 DecompositionSize = 0; + kbts_u32 AnyUnsupported = 0; + kbts_glyph Decomposed[2]; + + if(!(GlyphToDecompose.Flags & KBTS_GLYPH_FLAG_DO_NOT_DECOMPOSE)) + { + Decomposition = GlyphToDecompose.Decomposition; + DecompositionSize = kbts_GetDecompositionSize(Decomposition); + + // Only decompose when the font supports the decomposed form. + KBTS_FOR(DecompositionIndex, 0, DecompositionSize) + { + kbts_glyph DecompositionGlyph = kbts_CodepointToGlyph(Font, kbts_GetDecompositionCodepoint(Decomposition, DecompositionIndex)); + DecompositionGlyph.Config = GlyphToDecompose.Config; + + AnyUnsupported |= !DecompositionGlyph.Id; + Decomposed[DecompositionIndex] = DecompositionGlyph; + } + } + + if(AnyUnsupported | !DecompositionSize) + { + if(S->WrittenCount > S->GlyphIndex) + { + if(!kbts_GrowGlyphArray(&S->ResumePoint, GlyphArray, S->WrittenCount, 1, 1, 0)) + { + S->OpSpecific.Normalize.CodepointsToDecomposeCount += 1; // Push the codepoint back on the stack. + + KBTS_INSTRUMENT_END + return 1; + } + + S->GlyphIndex += 1; + } + + Glyphs[S->WrittenCount++] = GlyphToDecompose; + } + else + { + KBTS_ASSERT((S->OpSpecific.Normalize.CodepointsToDecomposeCount + DecompositionSize) <= KBTS_MAXIMUM_DECOMPOSITION_CODEPOINTS); + + if(Decomposition & KBTS_UNICODE_DECOMPOSITION_DO_NOT_RECURSE0) + { + Decomposed[0].Flags |= KBTS_GLYPH_FLAG_DO_NOT_DECOMPOSE; + } + if(Decomposition & KBTS_UNICODE_DECOMPOSITION_DO_NOT_RECURSE1) + { + Decomposed[1].Flags |= KBTS_GLYPH_FLAG_DO_NOT_DECOMPOSE; + } + + KBTS_FOR(DecompositionIndex, 0, DecompositionSize) + { + // We reverse the glyphs here because we use a stack. + DecompositionGlyphs[S->OpSpecific.Normalize.CodepointsToDecomposeCount++] = Decomposed[DecompositionSize - 1 - DecompositionIndex]; + } + } + } + } + } + + { // Selective recomposition. + // The OpenType shaping documents say that Hebrew Alphabetic Presentation Form compositions aren't canonical, + // but looking at UnicodeData.txt, it seems like they totally are, so they are handled here. + kbts_glyph *LastBase = 0; + kbts_un LastBaseParentCount = 0; + kbts_s32 *LastBaseParentDeltas = 0; + kbts_un PreSlashDecimalDigitCount = 0; + kbts_un DecimalDigitCount = 0; + int InFraction = 0; + + kbts_u32 BeforeFractionSlashGlyphFlags = KBTS_GLYPH_FLAG_NUMR | KBTS_GLYPH_FLAG_FRAC; + kbts_u32 AfterFractionSlashGlyphFlags = KBTS_GLYPH_FLAG_DNOM | KBTS_GLYPH_FLAG_FRAC; + if(kbts_ShaperRtl(Config->Shaper)) + { + // RTL needs to invert NUMR and DNOM. + kbts_u32 Swap = BeforeFractionSlashGlyphFlags; + BeforeFractionSlashGlyphFlags = AfterFractionSlashGlyphFlags; + AfterFractionSlashGlyphFlags = Swap; + } + + // We also collate user features here. + kbts_feature_set UserFeatures = KBTS_ZERO; + kbts_feature_set *DefaultFeatures = Config->Features; + + KBTS_FOR(GlyphIndex, 0, S->WrittenCount) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + Glyph->Uid = (kbts_u16)++ShapeState->NextGlyphUid; + + if(Glyph->Config) + { + kbts_glyph_config *GlyphConfig = Glyph->Config; + KBTS_FOR(WordIndex, 0, KBTS_ARRAY_LENGTH(UserFeatures.Flags)) + { + UserFeatures.Flags[WordIndex] |= GlyphConfig->EnabledFeatures.Flags[WordIndex] & ~DefaultFeatures->Flags[WordIndex]; + } + } + + kbts_un AvailableGlyphCount = 0; + if(!Glyph->CombiningClass) + { + LastBase = Glyph; + // From the Microsoft docs: + // USE decomposes split vowel characters belonging to UISC = Vowel_Dependent according to character + // decomposition mappings defined in UnicodeData.txt + // Cluster validation, is done based on the decomposed state of a split vowel. + // + // (Note: our Matra corresponds to Vowel_Dependent + Pure_Killer.) + if((Config->Shaper != KBTS_SHAPER_USE) || (Glyph->SyllabicClass != KBTS_INDIC_SYLLABIC_CLASS_MATRA)) + { + LastBaseParentDeltas = kbts_GetParentInfoDeltas(Glyph->ParentInfo); + LastBaseParentCount = kbts_GetParentInfoCount(Glyph->ParentInfo); + AvailableGlyphCount = 1; + } + else + { + LastBaseParentDeltas = 0; + LastBaseParentCount = 0; + } + } + else + { + if(LastBase) + { + AvailableGlyphCount = 2; + } + } + + KBTS_FOR(ParentIndex, 0, LastBaseParentCount) + { + kbts_u32 ParentCodepoint = LastBase->Codepoint + (kbts_u32)LastBaseParentDeltas[ParentIndex]; + kbts_glyph ParentGlyph = kbts_CodepointToGlyph(Font, ParentCodepoint); + kbts_u32 DecompositionSize = kbts_GetDecompositionSize(ParentGlyph.Decomposition); + + ParentGlyph.Uid = LastBase->Uid; + ParentGlyph.Config = LastBase->Config; + if((DecompositionSize == AvailableGlyphCount) && ParentGlyph.Id) + { + if(DecompositionSize == 2) + { + if(kbts_GetDecompositionCodepoint(ParentGlyph.Decomposition, 1) == Glyph->Codepoint) + { + // Both match. Reclaim space. + // @Speed: We should use separate read and write cursors instead. + KBTS_FOR(ShrinkIndex, GlyphIndex + 1, S->WrittenCount) + { + Glyphs[ShrinkIndex - 1] = Glyphs[ShrinkIndex]; + } + S->WrittenCount -= 1; + } + else + { + continue; + } + } + + *LastBase = ParentGlyph; + GlyphIndex = (kbts_un)((LastBase - Glyphs) - 1); // Handle recursive recomposition. + break; + } + } + + // It is safe to look for fractions here, because decimal digits/the fraction slash are not marks or + // jamos, so they should not get reordered after this pass. + if(Glyph->UnicodeFlags & KBTS_UNICODE_FLAG_DECIMAL_DIGIT) + { + if(InFraction) + { + // We are in the post-slash part of the fraction. + Glyph->Flags |= AfterFractionSlashGlyphFlags; + // Only flag the pre-slash part of the fraction if there is a post-slash part. + KBTS_FOR(DecimalDigitIndex, 0, PreSlashDecimalDigitCount) + { + Glyphs[GlyphIndex - PreSlashDecimalDigitCount - 1 + DecimalDigitIndex].Flags |= BeforeFractionSlashGlyphFlags; + } + PreSlashDecimalDigitCount = 0; + } + DecimalDigitCount += 1; + } + else if((Glyph->Codepoint == 0x2044) && (!InFraction || DecimalDigitCount)) + { + // Fraction slash. + Glyph->Flags |= KBTS_GLYPH_FLAG_FRAC; + PreSlashDecimalDigitCount = DecimalDigitCount; + InFraction = DecimalDigitCount != 0; + DecimalDigitCount = 0; + } + else + { + InFraction = 0; + } + } + + // Ignore added features that are already part of the shaper. + kbts_feature_set *ShaperFeatures = Config->Features; + KBTS_FOR(WordIndex, 0, KBTS_ARRAY_LENGTH(UserFeatures.Flags)) + { + UserFeatures.Flags[WordIndex] &= ~ShaperFeatures->Flags[WordIndex]; + } + + ShapeState->UserFeatures = UserFeatures; + } + + { // Unicode mark reordering. + S->GlyphIndex = 0; + while(S->GlyphIndex < S->WrittenCount) + { + kbts_glyph *Glyph = &Glyphs[S->GlyphIndex]; + kbts_u8 CombiningClass = Glyph->CombiningClass; + + kbts_un IndexIncrement = 1; + + if(CombiningClass) + { + Glyph->MarkOrdering = CombiningClass; + kbts_un MarkSequenceLength = 1; + while((S->GlyphIndex + MarkSequenceLength) < S->WrittenCount) + { + kbts_glyph *SequenceGlyph = &Glyphs[S->GlyphIndex + MarkSequenceLength]; + kbts_u8 SequenceGlyphCombiningClass = SequenceGlyph->CombiningClass; + if(SequenceGlyphCombiningClass) + { + SequenceGlyph->MarkOrdering = SequenceGlyphCombiningClass; + MarkSequenceLength += 1; + } + else + { + break; + } + } + + KBTS_FOR(Iter, 0, MarkSequenceLength) + { + KBTS_FOR(SequenceIndex, 1, MarkSequenceLength) + { + kbts_glyph *Glyph0 = &Glyphs[S->GlyphIndex + SequenceIndex - 1]; + kbts_glyph *Glyph1 = &Glyphs[S->GlyphIndex + SequenceIndex]; + + if(Glyph0->MarkOrdering > Glyph1->MarkOrdering) + { + kbts_glyph Swap = *Glyph0; + *Glyph0 = *Glyph1; + *Glyph1 = Swap; + } + } + } + + IndexIncrement = MarkSequenceLength; + } + + S->GlyphIndex += IndexIncrement; + } + } + + if(Config->Script == KBTS_SCRIPT_ARABIC) + { + S->GlyphIndex = 0; + while(S->GlyphIndex < S->WrittenCount) + { + // Find a mark sequence. + kbts_glyph *Glyph = &Glyphs[S->GlyphIndex]; + kbts_u8 CombiningClass = Glyph->CombiningClass; + + if(CombiningClass) + { + // Arabic: Reorder sequences of mark glyphs. + // + // From the Unicode standard: + // - Move any shadda characters (ccc=33) to the beginning of S. + // - If a sequence of ccc=230 characters begins with any MCM characters, move the sequence of such MCM + // characters + // to the beginning of S (before any characters with ccc=33). + // - If a sequence of ccc=220 characters begins with any MCM characters, move the sequence of such MCM + // characters + // to the beginning of S (before any MCM with ccc=230 or ccc=33). + // + // Final ordering: 220 230 shadda other + + kbts_mcm_sequence_state Mcm220SequenceState = 0; + kbts_mcm_sequence_state Mcm230SequenceState = 0; + + kbts_un SequenceStart = S->GlyphIndex; + +# define KBTS_REMAPPED_CCC_33 27 + + while(S->GlyphIndex < S->WrittenCount) + { + kbts_glyph *SequenceGlyph = &Glyphs[S->GlyphIndex]; + kbts_u16 SequenceGlyphCombiningClass = SequenceGlyph->CombiningClass; + kbts_u16 SequenceGlyphFlags = SequenceGlyph->UnicodeFlags; + + kbts_u8 MarkOrdering = 3; + + if(SequenceGlyphCombiningClass == KBTS_REMAPPED_CCC_33) + { + MarkOrdering = 2; + } + else if(SequenceGlyphCombiningClass == 220) + { + if(SequenceGlyphFlags & KBTS_UNICODE_FLAG_MODIFIER_COMBINING_MARK) + { + if(Mcm220SequenceState != KBTS_MCM_SEQUENCE_STATE_OUT) + { + Mcm220SequenceState = KBTS_MCM_SEQUENCE_STATE_IN; + } + } + else + { + Mcm220SequenceState = KBTS_MCM_SEQUENCE_STATE_OUT; + } + + if(Mcm220SequenceState == KBTS_MCM_SEQUENCE_STATE_IN) + { + MarkOrdering = 0; + } + + Mcm230SequenceState = KBTS_MCM_SEQUENCE_STATE_NONE; + } + else if(SequenceGlyphCombiningClass == 230) + { + if(SequenceGlyphFlags & KBTS_UNICODE_FLAG_MODIFIER_COMBINING_MARK) + { + if(Mcm230SequenceState != KBTS_MCM_SEQUENCE_STATE_OUT) + { + Mcm230SequenceState = KBTS_MCM_SEQUENCE_STATE_IN; + } + } + else + { + Mcm230SequenceState = KBTS_MCM_SEQUENCE_STATE_OUT; + } + + if(Mcm230SequenceState == KBTS_MCM_SEQUENCE_STATE_IN) + { + MarkOrdering = 1; + } + } + else if(SequenceGlyphCombiningClass) + { + Mcm220SequenceState = KBTS_MCM_SEQUENCE_STATE_NONE; + Mcm230SequenceState = KBTS_MCM_SEQUENCE_STATE_NONE; + } + else + { + break; + } + + SequenceGlyph->MarkOrdering = MarkOrdering; + S->GlyphIndex += 1; + } + + KBTS_FOR(Iter, SequenceStart, S->GlyphIndex) + { + KBTS_FOR(SortIndex, SequenceStart + 1, S->GlyphIndex) + { + kbts_glyph *Left = &Glyphs[SortIndex - 1]; + kbts_glyph *Right = &Glyphs[SortIndex]; + + if(Left->MarkOrdering > Right->MarkOrdering) + { + kbts_glyph Swap = *Left; + *Left = *Right; + *Right = Swap; + } + } + } + } + else + { + S->GlyphIndex += 1; + } + } + } + else if((Config->Script == KBTS_SCRIPT_THAI) || (Config->Script == KBTS_SCRIPT_LAO)) + { + // Decompose sara/sala ams. + kbts_un AboveBaseGlyphCount = 0; + for(S->GlyphIndex = 0; S->GlyphIndex < S->WrittenCount; ++S->GlyphIndex) + { + ResumePoint5:; + kbts_glyph *Glyph = &Glyphs[S->GlyphIndex]; + kbts_u32 Codepoint = Glyph->Codepoint; + + switch(Codepoint) + { + // Sara am/sala am. + // We match both because storing the sara am codepoint that corresponds to the current script + // doesn't seem that worthwhile, given that this is already a pretty big switch case. + // If we choose to use a unicode flag or indic syllabic category to notate above-base marks, + // then this loops gets a lot tighter and it would probably become the right call to pre-determine + // the sara am codepoint. + case 0xE33: case 0xEB3: // Sara am + { + if(!kbts_GrowGlyphArray(&S->ResumePoint, GlyphArray, S->GlyphIndex, 1, 5, 0)) + { + S->OpSpecific.Normalize.AboveBaseGlyphCount = AboveBaseGlyphCount; + KBTS_INSTRUMENT_END + return 1; + } + + AboveBaseGlyphCount = S->OpSpecific.Normalize.AboveBaseGlyphCount; + for(kbts_un AboveBaseIndex = 0; AboveBaseIndex < AboveBaseGlyphCount; ++AboveBaseIndex) + { + Glyphs[S->GlyphIndex - AboveBaseIndex] = Glyphs[S->GlyphIndex - AboveBaseIndex - 1]; + } + Glyphs[S->GlyphIndex - AboveBaseGlyphCount] = Config->Nikhahit; + Glyphs[S->GlyphIndex + 1] = Config->SaraAa; + S->WrittenCount += 1; + } break; + + case 0xE31: case 0xE34: case 0xE35: case 0xE36: case 0xE37: case 0xE3B: + case 0xE47: case 0xE48: case 0xE49: case 0xE4A: case 0xE4B: case 0xE4C: case 0xE4D: case 0xE4E: + case 0xEB1: case 0xEB4: case 0xEB5: case 0xEB6: case 0xEB7: case 0xEBB: + case 0xEC7: case 0xEC8: case 0xEC9: case 0xECA: case 0xECB: case 0xECC: case 0xECD: case 0xECE: + AboveBaseGlyphCount += 1; + break; + + default: + AboveBaseGlyphCount = 0; + break; + } + } + } + + KBTS_INSTRUMENT_END + } + break; + + case KBTS_OP_KIND_NORMALIZE_HANGUL: + { + KBTS_INSTRUMENT_BLOCK_BEGIN("NORMALIZE_HANGUL") + S->GlyphIndex = 0; + while(S->GlyphIndex < GlyphArray->Count) + { + kbts_glyph *Glyph = &Glyphs[S->GlyphIndex]; + + kbts_un L = 0; + kbts_un V = 0; + kbts_un T = 0; + + kbts_hangul_syllable_info LInfo = kbts_HangulSyllableInfo(Glyph->Codepoint); + if(LInfo.Type >= KBTS_HANGUL_SYLLABLE_TYPE_LV) + { + kbts_un SIndex = (Glyph->Codepoint - 0xAC00); + + L = 0x1100 + SIndex / 588; + V = 0x1161 + (SIndex % 588) / 28; + + kbts_un TIndex = SIndex % 28; + if(TIndex) + { + T = 0x11A7 + TIndex; + } + } + else if(LInfo.Type == KBTS_HANGUL_SYLLABLE_TYPE_L) + { + L = Glyph->Codepoint; + } + + S->GlyphIndex += 1; + + kbts_op_state_normalize_hangul *NormalizeHangul = &S->OpSpecific.NormalizeHangul; + + if(L) + { + kbts_hangul_syllable_info VInfo = KBTS_ZERO; + + if(!V && (S->GlyphIndex < GlyphArray->Count)) + { + kbts_u32 VCodepoint = Glyphs[S->GlyphIndex].Codepoint; + + VInfo = kbts_HangulSyllableInfo(VCodepoint); + + if(VInfo.Type == KBTS_HANGUL_SYLLABLE_TYPE_V) + { + V = VCodepoint; + + S->GlyphIndex += 1; + } + } + + if(V) + { + kbts_hangul_syllable_info TInfo = KBTS_ZERO; + + if(!T && (S->GlyphIndex < GlyphArray->Count)) + { + kbts_u32 TCodepoint = Glyphs[S->GlyphIndex].Codepoint; + + TInfo = kbts_HangulSyllableInfo(TCodepoint); + + if(TInfo.Type == KBTS_HANGUL_SYLLABLE_TYPE_T) + { + T = TCodepoint; + + S->GlyphIndex += 1; + } + } + + NormalizeHangul->LvtGlyphCount = 0; + + // Check for any tone marks that we need to swap to the front of the syllable. + // The OpenType shaping documents say that we need to do this after applying GSUB features, but + // harfbuzz does it before, so it's probably fine to do it here? + // It's also basically free to do here, which is nice. + if(S->GlyphIndex < GlyphArray->Count) + { + kbts_u32 ToneMarkCodepoint = Glyphs[S->GlyphIndex].Codepoint; + + if((ToneMarkCodepoint >= 0x302E) && (ToneMarkCodepoint <= 0x302F)) + { + NormalizeHangul->LvtGlyphs[NormalizeHangul->LvtGlyphCount++] = kbts_CodepointToGlyph(Font, ToneMarkCodepoint); + + S->GlyphIndex += 1; + } + } + + if(LInfo.Composable & VInfo.Composable & TInfo.Composable) + { + // Try LVT. + kbts_un LvtCodepoint = 0xAC00 + (L - 0x1100) * 588 + (V - 0x1161) * 28 + (T - 0x11A7); + + kbts_glyph LvtGlyph = kbts_CodepointToGlyph(Font, (kbts_u32)LvtCodepoint); + if(LvtGlyph.Id) + { + NormalizeHangul->LvtGlyphs[NormalizeHangul->LvtGlyphCount++] = LvtGlyph; + } + } + + if(!NormalizeHangul->LvtGlyphCount) + { + kbts_glyph LvGlyph = {0}; + if(LInfo.Composable & VInfo.Composable) + { + // Try LV. + kbts_un LvCodepoint = 0xAC00 + (L - 0x1100) * 588 + (V - 0x1161) * 28; + + LvGlyph = kbts_CodepointToGlyph(Font, (kbts_u32)LvCodepoint); + } + + if(LvGlyph.Id) + { + NormalizeHangul->LvtGlyphs[NormalizeHangul->LvtGlyphCount++] = LvGlyph; + } + else + { + // Do L-V. + kbts_glyph LGlyph = kbts_CodepointToGlyph(Font, (kbts_u32)L); + LGlyph.Flags |= KBTS_GLYPH_FLAG_LJMO; + + kbts_glyph VGlyph = kbts_CodepointToGlyph(Font, (kbts_u32)V); + VGlyph.Flags |= KBTS_GLYPH_FLAG_VJMO; + + NormalizeHangul->LvtGlyphs[NormalizeHangul->LvtGlyphCount++] = LGlyph; + NormalizeHangul->LvtGlyphs[NormalizeHangul->LvtGlyphCount++] = VGlyph; + } + + if(T) + { + kbts_glyph TGlyph = kbts_CodepointToGlyph(Font, (kbts_u32)T); + TGlyph.Flags |= KBTS_GLYPH_FLAG_TJMO; + + NormalizeHangul->LvtGlyphs[NormalizeHangul->LvtGlyphCount++] = TGlyph; + } + } + } + } + + if(!NormalizeHangul->LvtGlyphCount) + { + kbts_glyph NewGlyph = kbts_CodepointToGlyph(Font, Glyph->Codepoint); + + NormalizeHangul->LvtGlyphs[NormalizeHangul->LvtGlyphCount++] = NewGlyph; + } + + { // Insert the LVT glyphs. + ResumePoint3:; + NormalizeHangul = &S->OpSpecific.NormalizeHangul; + + kbts_un NewWrittenCount = S->WrittenCount + NormalizeHangul->LvtGlyphCount; + if(NewWrittenCount > S->GlyphIndex) + { + if(!kbts_GrowGlyphArray(&S->ResumePoint, GlyphArray, S->WrittenCount, NormalizeHangul->LvtGlyphCount, 3, 0)) + { + KBTS_INSTRUMENT_END + return 1; + } + + S->GlyphIndex += NormalizeHangul->LvtGlyphCount; + } + + KBTS_FOR(LvtGlyphIndex, 0, NormalizeHangul->LvtGlyphCount) + { + Glyphs[S->WrittenCount++] = NormalizeHangul->LvtGlyphs[LvtGlyphIndex]; + } + } + } + KBTS_INSTRUMENT_END + } + break; + + case KBTS_OP_KIND_GSUB_FEATURES: + { + KBTS_INSTRUMENT_BLOCK_BEGIN("GSUB_FEATURES") + kbts_gsub_gpos *FontGsub = Font->ShapingTables[KBTS_SHAPING_TABLE_GSUB]; + kbts_lookup_list *LookupList = kbts_GetLookupList(FontGsub); + kbts_gsub_frame *Frames = KBTS_POINTER_AFTER(kbts_gsub_frame, S); + kbts_op_state_gsub *Gsub = &S->OpSpecific.Gsub; + + kbts_BeginFeatures(S, Config, KBTS_SHAPING_TABLE_GSUB, Op->Features); + kbts_u32 GlyphFilter; + kbts_skip_flags SkipFlags = 0; + kbts_feature_set LookupFeatures; + while(kbts_NextLookupIndex(S, &Gsub->LookupIndex, &SkipFlags, &GlyphFilter, &LookupFeatures)) + { + Gsub->LookupFeatures = LookupFeatures; + S->GlyphIndex = 0; + + // From the Microsoft docs: + // If a Lookup table has multiple subtables, the subtables are processed in order, testing the glyph sequence + // at the current glyph position for a match with the input sequence patterns specified by each subtable in + // turn. + // + // This means the subtable loop is _inside_ of the loop over our glyphs. + while(S->GlyphIndex < GlyphArray->Count) + { + Frames[0].InputGlyphCount = 1; + kbts_u32 FilterMask = Config->Shaper == KBTS_SHAPER_USE ? KBTS_USE_GLYPH_FEATURE_MASK : KBTS_GLYPH_FEATURE_MASK; + kbts_u32 EffectiveGlyphFilter = GlyphFilter & FilterMask; + + // Reverse chaining substitutions are tricky. + // See the comment at :ReverseChaining. + // @Duplication: We just copy the top-level mirroring logic from DoSubstitution here for now. + kbts_lookup *Lookup = kbts_GetLookup(LookupList, Gsub->LookupIndex); + kbts_un CurrentGlyphIndex = (Lookup->Type == 8) ? GlyphArray->Count - 1 - S->GlyphIndex : S->GlyphIndex; + kbts_glyph *CurrentGlyph = &Glyphs[CurrentGlyphIndex]; + + if(kbts_GlyphIncludedInLookup(Config->Font, 0, Gsub->LookupIndex, CurrentGlyph->Id) && ((CurrentGlyph->Flags & EffectiveGlyphFilter) == EffectiveGlyphFilter)) + { + // Handle per-glyph feature overrides. + kbts_u64 UserEnabled = 0; // Whether the user enabled _any_ feature corresponding to this lookup. + kbts_u64 UserDisabled = 1; // Whether the user disabled _all_ features corresponding to this lookup. + kbts_u64 DefaultEnabled = 0; // Whether any feature is non-user. + { + kbts_glyph_config DummyGlyphConfig = KBTS_ZERO; + kbts_glyph_config *GlyphConfig = &DummyGlyphConfig; + if(CurrentGlyph->Config) + { + GlyphConfig = CurrentGlyph->Config; + } + + KBTS_FOR(WordIndex, 0, KBTS_ARRAY_LENGTH(GlyphConfig->EnabledFeatures.Flags)) + { + kbts_u64 LookupFeatureFlags = LookupFeatures.Flags[WordIndex]; + + UserEnabled |= GlyphConfig->EnabledFeatures.Flags[WordIndex] & LookupFeatureFlags; + UserDisabled &= (GlyphConfig->DisabledFeatures.Flags[WordIndex] & LookupFeatureFlags) == LookupFeatureFlags; + DefaultEnabled |= LookupFeatures.Flags[WordIndex] & Config->Features->Flags[WordIndex]; + } + } + + if(!UserDisabled && (DefaultEnabled || UserEnabled)) + { + S->FrameCount = 0; + + { + kbts_gsub_frame *Frame = &Frames[S->FrameCount++]; + + Frame->LookupIndex = (kbts_u16)Gsub->LookupIndex; + Frame->SubtableIndex = 0; + Frame->InputGlyphIndex = (kbts_u16)S->GlyphIndex; + } + + while(S->FrameCount) + { + if(0) + { + ResumePoint2:; + FontGsub = Font->ShapingTables[KBTS_SHAPING_TABLE_GSUB]; + Gsub = &S->OpSpecific.Gsub; + LookupList = kbts_GetLookupList(FontGsub); + Frames = KBTS_POINTER_AFTER(kbts_gsub_frame, S); + LookupFeatures = Gsub->LookupFeatures; + GlyphFilter = Gsub->GlyphFilter; + SkipFlags = Gsub->SkipFlags; + } + + // These flags are used by USE. + kbts_u32 GeneratedGlyphFlags = GlyphFilter & (KBTS_GLYPH_FLAG_RPHF | KBTS_GLYPH_FLAG_PREF); + kbts_substitution_result_flags SubstitutionFlags = kbts_DoSubstitution(ShapeState, LookupList, Frames, &S->FrameCount, GlyphArray, 0, SkipFlags, GeneratedGlyphFlags); + if(SubstitutionFlags & KBTS_SUBSTITUTION_RESULT_FLAG_GROW_BUFFER) + { + Gsub->GlyphFilter = GlyphFilter; + Gsub->SkipFlags = SkipFlags; + S->ResumePoint = 2; + + KBTS_INSTRUMENT_END + return 1; + } + } + } + } + + S->GlyphIndex += Frames[0].InputGlyphCount; + } + } + + S->WrittenCount = GlyphArray->Count; + KBTS_INSTRUMENT_END + } + break; + + case KBTS_OP_KIND_FLAG_JOINING_LETTERS: + { + KBTS_INSTRUMENT_BLOCK_BEGIN("FLAG_JOINING_LETTERS") + kbts_u64 JoiningTypesMatchLookup = + (((1ull << KBTS_UNICODE_JOINING_TYPE_RIGHT) | (1ull << KBTS_UNICODE_JOINING_TYPE_DUAL) | (1ull << KBTS_UNICODE_JOINING_TYPE_FORCE)) << (8 * KBTS_UNICODE_JOINING_TYPE_LEFT)) | + (((1ull << KBTS_UNICODE_JOINING_TYPE_RIGHT) | (1ull << KBTS_UNICODE_JOINING_TYPE_DUAL) | (1ull << KBTS_UNICODE_JOINING_TYPE_FORCE)) << (8 * KBTS_UNICODE_JOINING_TYPE_DUAL)) | + (((1ull << KBTS_UNICODE_JOINING_TYPE_RIGHT) | (1ull << KBTS_UNICODE_JOINING_TYPE_DUAL) | (1ull << KBTS_UNICODE_JOINING_TYPE_FORCE)) << (8 * KBTS_UNICODE_JOINING_TYPE_FORCE)); + + kbts_u64 JoiningFeatureTransition = ((kbts_u64)KBTS_JOINING_FEATURE_INIT << (8 * KBTS_JOINING_FEATURE_ISOL)) | ((kbts_u64)KBTS_JOINING_FEATURE_MEDI << (8 * KBTS_JOINING_FEATURE_FINA)) | + ((kbts_u64)KBTS_JOINING_FEATURE_MEDI << (8 * KBTS_JOINING_FEATURE_MEDI)) | ((kbts_u64)KBTS_JOINING_FEATURE_MED2 << (8 * KBTS_JOINING_FEATURE_MED2)); + + // Tag letters for joining features. + kbts_glyph PreviousGlyph_ = KBTS_ZERO; + kbts_glyph *PreviousGlyph = &PreviousGlyph_; + KBTS_FOR(GlyphIndex, 0, GlyphArray->Count) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + if(Glyph->JoiningType != KBTS_UNICODE_JOINING_TYPE_TRANSPARENT) + { + Glyph->JoiningFeature = !PreviousGlyph->JoiningType ? KBTS_JOINING_FEATURE_INIT : KBTS_JOINING_FEATURE_FINA; + + if(JoiningTypesMatchLookup & (1ull << (Glyph->JoiningType + 8 * PreviousGlyph->JoiningType))) + { + PreviousGlyph->JoiningFeature = (JoiningFeatureTransition >> (8 * PreviousGlyph->JoiningFeature)) & 0xFF; + PreviousGlyph->Flags = (PreviousGlyph->Flags & ~KBTS_JOINING_FEATURE_MASK) | KBTS_JOINING_FEATURE_TO_GLYPH_FLAG(PreviousGlyph->JoiningFeature); + + Glyph->JoiningFeature = KBTS_JOINING_FEATURE_FINA; + } + else + { + Glyph->JoiningFeature = KBTS_JOINING_FEATURE_ISOL; + } + + if(Glyph->JoiningFeature) + { + // Be careful that this properly maps kbts_joining_feature to KBTS_GLYPH_FLAG! + Glyph->Flags = (Glyph->Flags & ~KBTS_JOINING_FEATURE_MASK) | KBTS_JOINING_FEATURE_TO_GLYPH_FLAG(Glyph->JoiningFeature); + } + + PreviousGlyph = Glyph; + } + } + + S->WrittenCount = GlyphArray->Count; + KBTS_INSTRUMENT_END + } + break; + + case KBTS_OP_KIND_GPOS_METRICS: + { + KBTS_INSTRUMENT_BLOCK_BEGIN("GPOS_METRICS") + // hmtx/vmtx pass. + int ClearMarkAdvances = (Config->Shaper == KBTS_SHAPER_MYANMAR) || (Config->Shaper == KBTS_SHAPER_USE); + kbts_u32 Orientation = KBTS_ORIENTATION_HORIZONTAL; // @Hardcoded + kbts_hea *Hea = Font->Hea[Orientation]; + kbts_u16 *Mtx = Font->Mtx[Orientation]; + + kbts_long_mtx *LongMetrics = 0; + kbts_s16 *ShortMetrics = 0; + if(Hea && Mtx) + { + LongMetrics = (kbts_long_mtx *)Mtx; + ShortMetrics = (kbts_s16 *)(LongMetrics + Hea->MetricCount); + } + + kbts_long_mtx DefaultMetric = {1024, 0}; + if(Font->Head) + { + DefaultMetric.Advance = Font->Head->UnitsPerEm; + if(Orientation == KBTS_ORIENTATION_HORIZONTAL) + { + DefaultMetric.Advance /= 2; + } + } + + KBTS_FOR(GlyphIndex, 0, GlyphArray->Count) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + kbts_long_mtx Metric = DefaultMetric; + if(LongMetrics) + { + kbts_u32 Id = Glyph->Id; + + // At the end of shaping, default ignorable glyphs that are not generated by GSUB are replaced with zero-width + // whitespace glyphs (or a zero-width empty glyph if no whitespace glyph is present). + // (By the way, we do this because Harfbuzz does it, and Harfbuzz does it probably because Uniscribe does it.) + // We handle this in two steps: + // - The first is here. We want cursive attachments, and mark-to-base attachments, and other relative placements + // to take the zero width into account, and zeroing the width right at the beginning of GPOS is the most + // straighforward way to accomplish this. + // (@Incomplete: It is likely that we also need to take the default ignorable case into account when accumulating + // cursive offsets.) + // - In POST_GPOS_FIXUP, we perform the glyph ID substitution. We have to wait until all GPOS features have been + // executed to do this because they might possibly match the original ID. + if(!(Glyph->Flags & KBTS_GLYPH_FLAG_GENERATED_BY_GSUB) && (Glyph->UnicodeFlags & KBTS_UNICODE_FLAG_DEFAULT_IGNORABLE)) + { + Metric.Advance = 0; + Metric.PreviousSideBearing = 0; + } + else if(Id < Hea->MetricCount) + { + Metric = LongMetrics[Id]; + } + else + { + Metric.Advance = LongMetrics[Hea->MetricCount - 1].Advance; + Metric.PreviousSideBearing = ShortMetrics[Id - Hea->MetricCount]; + } + } + + if(!ClearMarkAdvances | (Glyph->Classes.Class != KBTS_GLYPH_CLASS_MARK)) + { + if(Orientation == KBTS_ORIENTATION_HORIZONTAL) + { + // @Cleanup: Why does harfbuzz not take bearings into account in these tests? + // P.X += Metric.PreviousSideBearing; + Glyph->AdvanceX = Metric.Advance; + } + else + { + // @Cleanup: Why does harfbuzz not take bearings into account in these tests? + // P.Y += Metric.PreviousSideBearing; + Glyph->AdvanceY = Metric.Advance; + } + } + } + KBTS_INSTRUMENT_END + } + break; + + case KBTS_OP_KIND_GPOS_FEATURES: + { + KBTS_INSTRUMENT_BLOCK_BEGIN("GPOS_FEATURES") + kbts_gsub_gpos *Gpos = Font->ShapingTables[KBTS_SHAPING_TABLE_GPOS]; + kbts_BeginFeatures(S, Config, KBTS_SHAPING_TABLE_GPOS, Op->Features); + kbts_lookup_list *LookupList = kbts_GetLookupList(Gpos); + kbts_un LookupIndex; + kbts_skip_flags SkipFlags; + kbts_u32 GlyphFilter; + kbts_feature_set LookupFeatures; + while(kbts_NextLookupIndex(S, &LookupIndex, &SkipFlags, &GlyphFilter, &LookupFeatures)) + { + kbts_lookup *PackedLookup = kbts_GetLookup(LookupList, LookupIndex); + kbts_unpacked_lookup Lookup = kbts_UnpackLookup(Font->Gdef, PackedLookup); + + kbts_un PositionedGlyphCount = 0; + while(PositionedGlyphCount < GlyphArray->Count) + { + kbts_un DeltaGlyphIndex = 1; + + if(kbts_GlyphIncludedInLookup(Config->Font, 1, LookupIndex, GlyphArray->Glyphs[PositionedGlyphCount].Id)) + { + KBTS_FOR(SubtableIndex, 0, Lookup.SubtableCount) + { + kbts_u16 *Subtable = KBTS_POINTER_OFFSET(kbts_u16, PackedLookup, Lookup.SubtableOffsets[SubtableIndex]); + kbts_do_single_adjustment_result Adjustment = kbts_DoSingleAdjustment(Config, LookupList, LookupIndex, SubtableIndex, &Lookup, Subtable, GlyphArray, PositionedGlyphCount, SkipFlags); + if(Adjustment.PerformedAdjustment) + { + DeltaGlyphIndex = Adjustment.PositionedGlyphCount; + break; + } + } + } + + PositionedGlyphCount += DeltaGlyphIndex; + } + } + KBTS_INSTRUMENT_END + } + break; + + case KBTS_OP_KIND_POST_GPOS_FIXUP: + { + KBTS_INSTRUMENT_BLOCK_BEGIN("POST_GPOS_FIXUP") + kbts_un WriteAt = 0; + kbts_glyph WhitespaceGlyph = Config->Whitespace; + int ClearMarkAdvances = kbts_ShaperClearsMarkAdvancesInPostGposFixup(Config->Shaper); + + if(ShapeState->MainDirection != ShapeState->RunDirection) + { + // Flip direction. + // This might seem like a totally superfluous thing to do, because we have to do a bunch + // of work to reverse glyph order while still preserving their relative positions. + // However, for mainly LTR documents, the anchor position will naturally be left-aligned, + // while, in RTL documents, it will naturally right-align. + // As such, going through the glyph sequence and reversing it is needed _anyway_ at some point, + // and we might as well do it here, because this is where we can take resolve attachments + // for relatively cheap, since they are always back-looking. (The next paragraph explains this + // in more detail.) + + // The unintuitive part about this pass is the glyph advances. + // Normally, when iterating over a sequence of glyphs, we see base glyphs before marks. Obviously. + // However, when flipping the sequence, we see the marks before seeing the bases, which means we + // won't have accumulated the base glyph's advance yet! So we have to go through the sequence here + // and compensate for missing advances by precomputing them and baking them into the marks. + // Another way to reach the same result would be to keep marks on the same side as their bases when + // flipping, but that is not what Harfbuzz does, and, the day we decide we want to diverge from Harfbuzz, + // we will very likely be better off not flipping the sequence at all and deleting all of this garbage code. + kbts_s32 MarkAttachAdvanceX = 0; + kbts_s32 MarkAttachAdvanceY = 0; + KBTS_FOR(GlyphIndex, 0, GlyphArray->Count) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + if(Glyph->AttachGlyphIndexPlusOne) + { + kbts_glyph *Attach = &Glyphs[Glyph->AttachGlyphIndexPlusOne - 1]; + kbts_s32 AttachAdvanceX = MarkAttachAdvanceX; + kbts_s32 AttachAdvanceY = MarkAttachAdvanceY; + if(Attach->Classes.Class != KBTS_GLYPH_CLASS_MARK) + { + AttachAdvanceX = Attach->AdvanceX; + AttachAdvanceY = Attach->AdvanceY; + } + Glyph->OffsetX += AttachAdvanceX; + Glyph->OffsetY += AttachAdvanceY; + MarkAttachAdvanceX = AttachAdvanceX; + MarkAttachAdvanceY = AttachAdvanceY; + } + } + + kbts_un SwapCount = GlyphArray->Count / 2; + KBTS_FOR(LeftIndex, 0, SwapCount) + { + kbts_un RightIndex = GlyphArray->Count - 1 - LeftIndex; + + kbts_glyph SwapGlyph = Glyphs[LeftIndex]; + Glyphs[LeftIndex] = Glyphs[RightIndex]; + Glyphs[RightIndex] = SwapGlyph; + } + } + + // Make default ignorables that weren't explicitly created by the font invisible. + // + // It is tempting to put this loop inside of an if(WhitespaceGlyph.Id), just like we do + // for dotted circle insertion. However, Harfbuzz does not do this! + // When the font does not contain a dotted circle, nothing is inserted, but when the font + // does not contain a whitespace glyph, _we still insert an empty glyph_. + KBTS_FOR(GlyphIndex, 0, GlyphArray->Count) + { + kbts_glyph Glyph = Glyphs[GlyphIndex]; + int Write = 0; + + // It might be tempting to keep glyphs that were used in GPOS, but Harfbuzz doesn't care. + if(!(Glyph.Flags & KBTS_GLYPH_FLAG_GENERATED_BY_GSUB) && (Glyph.UnicodeFlags & KBTS_UNICODE_FLAG_DEFAULT_IGNORABLE)) + { + // This glyph is default ignorable and should be ignored. + if(WhitespaceGlyph.Id) + { + Write = 1; + Glyph = WhitespaceGlyph; + } + } + else + { + if(ClearMarkAdvances && (Glyph.Classes.Class == KBTS_GLYPH_CLASS_MARK)) + { + Glyph.AdvanceX = Glyph.AdvanceY = 0; + } + Write = 1; + } + + if(Write) + { + Glyphs[WriteAt++] = Glyph; + } + } + + GlyphArray->Count = (kbts_u32)WriteAt; + GlyphArray->TotalCount = GlyphArray->Count; + KBTS_INSTRUMENT_END + } + break; + + case KBTS_OP_KIND_STCH_POSTPASS: + { + KBTS_FOR(GlyphIndex, 0, GlyphArray->Count) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + if(Glyph->Flags & (KBTS_GLYPH_FLAG_STCH_ENDPOINT | KBTS_GLYPH_FLAG_STCH_EXTENSION)) + { + kbts_un At = GlyphIndex; + + kbts_un ExtensionIndex = At; + kbts_u32 SawExtension = 0; + + kbts_s32 EndpointWidth = 0; + kbts_s32 ExtensionWidth = 0; + + while(At < GlyphArray->Count) + { + kbts_glyph *AtGlyph = &Glyphs[At]; + + if(AtGlyph->Flags & KBTS_GLYPH_FLAG_STCH_ENDPOINT) + { + EndpointWidth += AtGlyph->AdvanceX; + + At += 1; + } + else if(AtGlyph->Flags & KBTS_GLYPH_FLAG_STCH_EXTENSION) + { + ExtensionIndex = At; + ExtensionWidth += AtGlyph->AdvanceX; + SawExtension = 1; + + At += 1; + } + else + { + break; + } + } + + kbts_sn WordWidth = 0; + + while(At < GlyphArray->Count) + { + kbts_glyph *AtGlyph = &Glyphs[At]; + + int Ok = 0; + + if(!(AtGlyph->Flags & (KBTS_GLYPH_FLAG_STCH_ENDPOINT | KBTS_GLYPH_FLAG_STCH_EXTENSION)) && (AtGlyph->UnicodeFlags & KBTS_UNICODE_FLAG_PART_OF_WORD)) + { + Ok = 1; + } + + if(Ok) + { + WordWidth += AtGlyph->AdvanceX; + + At += 1; + } + else + { + break; + } + } + + if(WordWidth > EndpointWidth) + { + kbts_sn ExtensionCount = (WordWidth - EndpointWidth) / ExtensionWidth; + if((ExtensionWidth * ExtensionCount) < (WordWidth - EndpointWidth)) + { + ExtensionCount += 1; + } + + (void)ExtensionCount; + (void)ExtensionIndex; + (void)SawExtension; + /* @Incomplete + kbts_glyph_adjustment *ExtensionAdjustment = &Positions[ExtensionIndex]; + ExtensionAdjustment->LastRepeatIndex = ExtensionCount - 1; + ExtensionAdjustment->RepeatOffsetX = (WordWidth - EndpointWidth - ExtensionWidth) / ExtensionCount; + */ + } + + GlyphIndex = At; + } + } + } + break; + } + + if(Op->Kind < KBTS_OP_KIND_GPOS_METRICS) + { + kbts_un DeltaCount = S->WrittenCount - GlyphArray->Count; + GlyphArray->Count += (kbts_u32)DeltaCount; + GlyphArray->TotalCount += (kbts_u32)DeltaCount; + } + + KBTS_INSTRUMENT_END + return 0; +} + +static kbts_glyph kbts_Substitute1(kbts_shape_state *ShapeState, kbts_lookup_list *LookupList, kbts_feature *Feature, kbts_skip_flags SkipFlags, kbts_glyph *Glyph) +{ + kbts_glyph Result = *Glyph; + + kbts_glyph_array GlyphArray = kbts_GlyphArray(Glyph, 1, 1, 1); + + kbts_iterate_lookups IterateLookups = kbts_IterateLookups(LookupList, Feature); + while(kbts_NextLookup(&IterateLookups)) + { + kbts_gsub_frame Frames[8]; + Frames[0].InputGlyphCount = 1; + kbts_u32 FrameCount = 1; + + kbts_u32 GlyphCount = 1; + + while(FrameCount) + { + kbts_substitution_result_flags SubstitutionResult = kbts_DoSubstitution(ShapeState, LookupList, Frames, &FrameCount, &GlyphArray, 0, SkipFlags, 0); + if(SubstitutionResult & KBTS_SUBSTITUTION_RESULT_FLAG_GROW_BUFFER) + { + goto Done; + } + } + } + +Done:; + return Result; +} + +typedef struct kbts_attach_state +{ + kbts_syllabic_position CurrentPosition; + kbts_syllabic_position LastPositionThatWasNotPreBaseMatra; + kbts_indic_syllabic_class LastClass; + kbts_un Start; + kbts_un OnePastLast; +} kbts_attach_state; + +typedef struct kbts_begin_cluster_result +{ + kbts_un ClusterGlyphCount; + kbts_un InsertedGlyphCount; +} kbts_begin_cluster_result; + +static kbts_begin_cluster_result kbts_BeginCluster(kbts_shape_state *ShapeState, kbts_glyph *Glyphs, kbts_un GlyphCount) +{ + kbts_begin_cluster_result Result = KBTS_ZERO; + Result.ClusterGlyphCount = GlyphCount; + kbts_op_state *OpState = &ShapeState->OpState; + kbts_shape_config *Config = ShapeState->Config; + kbts_font *Font = Config->Font; + ShapeState->RealCluster = 0; + + switch(Config->Shaper) + { + case KBTS_SHAPER_INDIC: + { + kbts_lookup_list *LookupList = kbts_GetLookupList(Font->ShapingTables[KBTS_SHAPING_TABLE_GSUB]); + + kbts_un OtherCount = 0; + while((OtherCount < GlyphCount) && ((Glyphs[OtherCount].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_OTHER) || (Glyphs[OtherCount].SyllabicClass >= KBTS_INDIC_SYLLABIC_CLASS_COUNT))) + { + ++OtherCount; + } + + if(OtherCount) + { + // Not an Indic syllable. + // Just pass it along. + Result.ClusterGlyphCount = OtherCount; + } + else + { + kbts_un ScanGlyphIndex = 0; + kbts_un State = 0; + kbts_un Broken = 1; + kbts_un BrokenState = 0; + + while((ScanGlyphIndex < GlyphCount) && (State < KBTS_INDIC_SYLLABIC_STATE_COUNT)) + { + kbts_glyph *Glyph = &Glyphs[ScanGlyphIndex]; + kbts_un Class = Glyph->SyllabicClass; + + if(KBTS_IN_SET(Class, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_RA)(KBTS_INDIC_SYLLABIC_CLASS_CONSONANT) + (KBTS_INDIC_SYLLABIC_CLASS_VOWEL)(KBTS_INDIC_SYLLABIC_CLASS_DOTTED_CIRCLE) + (KBTS_INDIC_SYLLABIC_CLASS_PLACEHOLDER)(KBTS_INDIC_SYLLABIC_CLASS_SYMBOL)))) + { + Broken = 0; + } + BrokenState = (BrokenState << 1) | Broken; + + State = kbts_IndicSyllabicTransition[Class][State]; + State -= 1; // @Incomplete @Cleanup: Decrement every state by 1 in the transition table. + ScanGlyphIndex += 1; + } + + if(State > KBTS_INDIC_SYLLABIC_STATE_COUNT) + { + ScanGlyphIndex -= State - KBTS_INDIC_SYLLABIC_STATE_COUNT; + BrokenState >>= State - KBTS_INDIC_SYLLABIC_STATE_COUNT; + + if(!ScanGlyphIndex) + { + // If we backtrack all the way to the beginning, still eat a character. + ScanGlyphIndex = 1; + } + } + + // NOTE: Symbols, vedics, modifiers, matras have their syllabic positions tagged at build time. + // It is tempting to use Unicode's positional information for consonants, too, but OpenType + // _strongly_ recommends that shapers use the font's tables instead, ie. doing tentative lookups + // with specific features. + + kbts_gsub_frame *Frames = KBTS_POINTER_AFTER(kbts_gsub_frame, OpState); + kbts_glyph *OnePastLastSyllableGlyph = Glyphs + ScanGlyphIndex; + kbts_script Script = ShapeState->Config->Script; + + if((Config->Script == KBTS_SCRIPT_KANNADA) && (ScanGlyphIndex >= 3) && (Glyphs[0].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_RA) && + (Glyphs[1].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_HALANT) && (Glyphs[2].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_ZWJ)) + { + // In older versions of Unicode (~4.x, pre-2004), Ra-Virama-Zwj was recommended in Kannada + // to communicate the intent of displaying (Ra + (next consonant as below-base form)). + // This was changed in Unicode 5. Now, the recommended sequence to display (Ra + + // (next consonant as below-base form)) is Ra-Zwj-Virama. + // Since Ra-Virama-Zwj is not a useful sequence that happens organically in Kannada, + // we are free to transform it into Ra-Zwj-Virama here without losing information. + kbts_glyph Swap = Glyphs[1]; + Glyphs[1] = Glyphs[2]; + Glyphs[2] = Swap; + } + + kbts_glyph_flags RephFlags = KBTS_GLYPH_FLAG_RPHF; + kbts_un OnePastRephIndex = 0; + { // Reph tagging. + // This first pass only figures out where the reph ends. + // We delay updating glyph properties until we know whether the reph is the base or not. + kbts_glyph *First = &Glyphs[0]; + kbts_glyph *Second = &Glyphs[1]; + kbts_feature *Rphf = Config->Rphf; + + switch(Config->IndicScriptProperties.RephEncoding) + { + case KBTS_REPH_ENCODING_LOGICAL_REPHA: + if(First->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_REPHA) + { + RephFlags = 0; + OnePastRephIndex = 1; + } + break; + + case KBTS_REPH_ENCODING_IMPLICIT: + if((ScanGlyphIndex >= 2) && (Second->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_HALANT) && kbts_WouldSubstitute(ShapeState, LookupList, Frames, Rphf, 0, Glyphs, 2)) + { + OnePastRephIndex = 2; + } + break; + + case KBTS_REPH_ENCODING_EXPLICIT: + if((ScanGlyphIndex >= 3) && (Second->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_HALANT) && (Glyphs[2].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_ZWJ) && + kbts_WouldSubstitute(ShapeState, LookupList, Frames, Rphf, 0, Glyphs, 3)) + { + OnePastRephIndex = 3; + } + break; + } + + // Extend the reph with suffixed joiners. + if(OnePastRephIndex) + { + while((OnePastRephIndex < ScanGlyphIndex) && KBTS_IN_SET(Glyphs[OnePastRephIndex].SyllabicClass, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_ZWJ)(KBTS_INDIC_SYLLABIC_CLASS_ZWNJ)))) + { + OnePastRephIndex += 1; + } + } + } + + kbts_feature *Pref = Config->Pref; + kbts_un BaseIndex = ScanGlyphIndex; + kbts_un LastConsonantIndex = 0; + kbts_syllabic_position LastConsonantPosition = KBTS_SYLLABIC_POSITION_SYLLABLE_BASE; + if(Config->DottedCircle.Id && (BrokenState & 1)) + { + // Insert a dotted circle after Reph. + for(kbts_un GlyphIndex = GlyphCount; GlyphIndex > OnePastRephIndex; --GlyphIndex) + { + Glyphs[GlyphIndex] = Glyphs[GlyphIndex - 1]; + } + ScanGlyphIndex += 1; + Result.InsertedGlyphCount = 1; + + Glyphs[OnePastRephIndex] = Config->DottedCircle; + BaseIndex = OnePastRephIndex; + } + else + { + // Going backwards, tag blwf and pstf consonants until we get to the base. + kbts_glyph Scratch[3]; + Scratch[0] = Config->Virama; + Scratch[2] = Config->Virama; + + kbts_feature *Pstf = Config->Pstf; + kbts_feature *Blwf = Config->Blwf; + kbts_feature *Locl = Config->Locl; + kbts_feature *Vatu = Config->Vatu; + + // pstf forms come last, then blwf. + kbts_feature *SectionFeature = Config->Pstf; + kbts_syllabic_position SectionPosition = KBTS_SYLLABIC_POSITION_POSTBASE_CONSONANT; + // If we see no consonant/matra, then surely we want to attach to the base. + kbts_syllabic_position SyllabicPosition = KBTS_SYLLABIC_POSITION_SYLLABLE_BASE; + kbts_indic_syllabic_class LastClass = KBTS_INDIC_SYLLABIC_CLASS_COUNT; + + for(kbts_un GlyphIndex = ScanGlyphIndex; GlyphIndex > OnePastRephIndex; --GlyphIndex) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex - 1]; + kbts_indic_syllabic_class Class = Glyph->SyllabicClass; + + switch(Class) + { + case KBTS_INDIC_SYLLABIC_CLASS_CONSONANT: + case KBTS_INDIC_SYLLABIC_CLASS_RA: + case KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_WITH_STACKER: + case KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_MEDIAL: + // Apply locl first. + Scratch[1] = kbts_Substitute1(ShapeState, LookupList, Locl, KBTS_SKIP_FLAG_ZWNJ | KBTS_SKIP_FLAG_ZWJ, Glyph); + + // Microsoft says to "move backwards until a consonant is found that does not have a below-base + // or post-base form". + // As with everything else the spec says, it is wrong. There are cases in which the only consonant + // in a syllable has a below-base or post-base form. In those cases, we still want them to be the + // syllable base. + // So, as we sweep backward, set the base index on consonants unconditionally. + // @Robustness: Do we want to update Base only if we do not match Pref/Vatu? + BaseIndex = GlyphIndex - 1; + + if(kbts_WouldSubstitute(ShapeState, LookupList, Frames, Pref, 0, Scratch, 2) || kbts_WouldSubstitute(ShapeState, LookupList, Frames, Pref, 0, Scratch + 1, 2) || + kbts_WouldSubstitute(ShapeState, LookupList, Frames, Vatu, 0, Scratch, 2) || kbts_WouldSubstitute(ShapeState, LookupList, Frames, Vatu, 0, Scratch + 1, 2)) + { + SyllabicPosition = KBTS_SYLLABIC_POSITION_POSTBASE_CONSONANT; + } + else + { + for(;;) + { + if(kbts_WouldSubstitute(ShapeState, LookupList, Frames, SectionFeature, 0, Scratch, 2) || kbts_WouldSubstitute(ShapeState, LookupList, Frames, SectionFeature, 0, Scratch + 1, 2)) + { + SyllabicPosition = SectionPosition; + break; + } + else if(SectionPosition == KBTS_SYLLABIC_POSITION_POSTBASE_CONSONANT) + { + SectionFeature = Config->Blwf; + SectionPosition = KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT; + // Retry with Blwf. + } + else + { + goto DoneScanningForBase; + } + } + } + + if(!LastConsonantIndex) + { + LastConsonantIndex = GlyphIndex - 1; + LastConsonantPosition = SyllabicPosition; + } + + Glyph->SyllabicPosition = SyllabicPosition; + break; + + case KBTS_INDIC_SYLLABIC_CLASS_VOWEL: + case KBTS_INDIC_SYLLABIC_CLASS_PLACEHOLDER: + case KBTS_INDIC_SYLLABIC_CLASS_DOTTED_CIRCLE: + BaseIndex = GlyphIndex - 1; + goto DoneScanningForBase; + break; + + case KBTS_INDIC_SYLLABIC_CLASS_HALANT: + if(LastClass == KBTS_INDIC_SYLLABIC_CLASS_ZWJ) + { + // Explicit half form. + // Since half forms are always before the base, we can safely stop here. + goto DoneScanningForBase; + } + case KBTS_INDIC_SYLLABIC_CLASS_NUKTA: + case KBTS_INDIC_SYLLABIC_CLASS_ZWJ: + case KBTS_INDIC_SYLLABIC_CLASS_ZWNJ: + // @Incomplete: Register Shifter + Glyph->SyllabicPosition = SyllabicPosition; + break; + } + + LastClass = Class; + } + DoneScanningForBase:; + } + + // Fix reph position now. + if(OnePastRephIndex) + { + kbts_syllabic_position RephPosition = KBTS_SYLLABIC_POSITION_RA_TO_BECOME_REPH; + kbts_glyph_flags Flags = RephFlags; + kbts_un OnePastLast = OnePastRephIndex; + if(BaseIndex == ScanGlyphIndex) + { + RephPosition = KBTS_SYLLABIC_POSITION_SYLLABLE_BASE; + Flags = 0; + + BaseIndex = 0; + OnePastRephIndex = 0; + } + + KBTS_FOR(GlyphIndex, 0, OnePastLast) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + Glyph->SyllabicPosition = RephPosition; + Glyph->Flags |= Flags; + } + } + + if(BaseIndex < ScanGlyphIndex) + { + Glyphs[BaseIndex].SyllabicPosition = KBTS_SYLLABIC_POSITION_SYLLABLE_BASE; + + if(!LastConsonantIndex) + { + LastConsonantIndex = BaseIndex; + // LastConsonantPosition is already set to SYLLABLE_BASE. + } + } + + { // Reorder marks. + // @Cleanup @Speed: Supposedly, NORMALIZE already does this... + kbts_glyph *ReorderGlyph = Glyphs + ScanGlyphIndex - 1; + while(ReorderGlyph >= Glyphs) + { + if(ReorderGlyph->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_NUKTA) + { + kbts_glyph *Prev = ReorderGlyph - 1; + + while((Prev >= Glyphs) && KBTS_IN_SET(Prev->SyllabicClass, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_HALANT)(KBTS_INDIC_SYLLABIC_CLASS_VEDIC_SIGN)))) + { + kbts_glyph Swap = *Prev; + *Prev = Prev[1]; + Prev[1] = Swap; + + Prev -= 1; + } + + ReorderGlyph = Prev; + } + else + { + ReorderGlyph -= 1; + } + } + } + + { // @Temporary @Cleanup + // Left matras should be ordered backwards. + // We want to bake this ordering into our sort, so we increase our syllabic position bits + // and sub-order matras with the low nibble. (There should only be 4 matras tops, anyway.) + kbts_un LeftMatraCount = 0; + KBTS_FOR(GlyphIndex, 0, ScanGlyphIndex) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + Glyph->SyllabicPosition <<= 4; + + if(Glyph->SyllabicPosition == (KBTS_SYLLABIC_POSITION_PREBASE_MATRA << 4)) + { + Glyph->SyllabicPosition += (15 - LeftMatraCount++) & 0xF; + } + } + } + + { // Attach stuff to the right of consonants/matras. + // Pre-base consonants, the base consonant, and matras all have right attachments, + // while post-base consonants have left attachments. + // Since matras always come after all consonants, we try to separate the buffer into three parts: + // a pre-base+base part (right attachments), a post-base consonant part (left attachments), and + // a post-consonant part (right attachments again). + // This part handles right attachments. Left attachments were handled in the base syllable search. + kbts_attach_state States[2] = { + {KBTS_SYLLABIC_POSITION_RA_TO_BECOME_REPH << 4, KBTS_SYLLABIC_POSITION_RA_TO_BECOME_REPH << 4, KBTS_INDIC_SYLLABIC_CLASS_COUNT, OnePastRephIndex, BaseIndex}, + {(kbts_u8)(LastConsonantPosition << 4), (kbts_u8)(LastConsonantPosition << 4), KBTS_INDIC_SYLLABIC_CLASS_COUNT, LastConsonantIndex + 1, ScanGlyphIndex}, + }; + kbts_un Iterations = KBTS_MAX(States[0].OnePastLast - States[0].Start, States[1].OnePastLast - States[1].Start); + KBTS_FOR(GlyphIndex, 0, Iterations) + { + KBTS_FOR(StateIndex, 0, KBTS_ARRAY_LENGTH(States)) + { + kbts_attach_state *Attach = &States[StateIndex]; + + if((Attach->Start + GlyphIndex) < Attach->OnePastLast) + { + kbts_glyph *Glyph = &Glyphs[Attach->Start + GlyphIndex]; + kbts_indic_syllabic_class Class = Glyph->SyllabicClass; + switch(Class) + { + case KBTS_INDIC_SYLLABIC_CLASS_CONSONANT: + case KBTS_INDIC_SYLLABIC_CLASS_RA: + case KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_WITH_STACKER: + case KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_MEDIAL: + // This only happens in the pre-base state. + Glyph->SyllabicPosition = (KBTS_SYLLABIC_POSITION_PREBASE_CONSONANT << 4); + Attach->CurrentPosition = (KBTS_SYLLABIC_POSITION_PREBASE_CONSONANT << 4); + break; + + case KBTS_INDIC_SYLLABIC_CLASS_MATRA_POST: + // This specific category (which is composed of a single character) may come after + // a syllable modifier in a sequence like Consonant-SyllableModifier-MatraPost. + // In this very particular case (!), the syllable modifier is attached _to the matra_, + // and not to the consonant. + if(Attach->LastClass == KBTS_INDIC_SYLLABIC_CLASS_SYLLABLE_MODIFIER) + { + Glyph[-1].SyllabicPosition = Glyph->SyllabicPosition; + } + case KBTS_INDIC_SYLLABIC_CLASS_MATRA: + Attach->CurrentPosition = Glyph->SyllabicPosition; + if((Attach->CurrentPosition >> 4) != KBTS_SYLLABIC_POSITION_PREBASE_MATRA) + { + Attach->LastPositionThatWasNotPreBaseMatra = Attach->CurrentPosition; + } + break; + + case KBTS_INDIC_SYLLABIC_CLASS_HALANT: + if((Attach->CurrentPosition >> 4) == KBTS_SYLLABIC_POSITION_PREBASE_MATRA) + { + // Uniscribe does not reorder halants with pre-base matras. Not sure why. + Glyph->SyllabicPosition = Attach->LastPositionThatWasNotPreBaseMatra; + break; + } + case KBTS_INDIC_SYLLABIC_CLASS_NUKTA: + case KBTS_INDIC_SYLLABIC_CLASS_ZWJ: + case KBTS_INDIC_SYLLABIC_CLASS_ZWNJ: + // @Incomplete: Register Shifter + Glyph->SyllabicPosition = Attach->CurrentPosition; + break; + } + Attach->LastClass = Class; + } + } + } + } + + { // Do the sort! + // NOTE: It is important that we sort _now_, because some characters will be reordered across the base from + // where they started, which can change which features will apply to them. + KBTS_FOR(Iteration, 0, ScanGlyphIndex) + { + KBTS_FOR(GlyphIndex, 1, ScanGlyphIndex) + { + kbts_glyph *Left = &Glyphs[GlyphIndex - 1]; + kbts_glyph *Right = &Glyphs[GlyphIndex]; + + if(Left->SyllabicPosition > Right->SyllabicPosition) + { + kbts_glyph Swap = *Left; + *Left = *Right; + *Right = Swap; + + // Make sure we don't lose track of the base... + if(GlyphIndex == BaseIndex) + { + BaseIndex = GlyphIndex - 1; + } + else if((GlyphIndex - 1) == BaseIndex) + { + BaseIndex = GlyphIndex; + } + } + } + } + } + + { // @Temporary @Cleanup + // Revert our syllabic position shift for now. + KBTS_FOR(GlyphIndex, 0, ScanGlyphIndex) + { + Glyphs[GlyphIndex].SyllabicPosition >>= 4; + } + } + + // This is what Harfbuzz does: + + // - NUKT, AKHN, RKRF, VATU, CJCT are active for all characters, but they count ZWJ/ZWNJ in their sequence + // lookups. + // - Note that, by default, Harfbuzz skips ZWJ/ZWNJ in sequence lookups, and selectively disables it for CJCT. + // - Anyway, since these are active for all characters, we don't need flags for them. + + // (RPHF was already handled before sorting.) + + { // All pre-base glyphs get HALF, which is then selectively disabled in front of ZWNJs. + kbts_glyph_flags BaseFlags = 0; + if(!Config->IndicScriptProperties.BlwfPostOnly) + { + BaseFlags = KBTS_GLYPH_FLAG_BLWF; + } + + kbts_indic_syllabic_class LastClass = 0; + for(kbts_un GlyphIndex = BaseIndex; GlyphIndex > 0; --GlyphIndex) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex - 1]; + kbts_glyph_flags Flags = BaseFlags; + + if(LastClass != KBTS_INDIC_SYLLABIC_CLASS_ZWNJ) + { + Flags |= KBTS_GLYPH_FLAG_HALF; + } + + Glyph->Flags |= Flags; + LastClass = Glyph->SyllabicClass; + } + } + + // All post-base glyphs get BLWF, ABVF, PSTF. Some get PREF. + kbts_glyph Scratch[2] = {0}; + kbts_glyph *LastGlyph = 0; + KBTS_FOR(GlyphIndex, BaseIndex + 1, ScanGlyphIndex) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + // It is tempting to apply PREF to every glyph after the base. + // However, the PREF flag is also used to find the syllable base again in EndCluster, + // so we have to be precise with it. + Scratch[1] = *Glyph; + if(kbts_WouldSubstitute(ShapeState, LookupList, Frames, Pref, 0, Scratch, 2)) + { + LastGlyph->Flags |= KBTS_GLYPH_FLAG_PREF; + Glyph->Flags |= KBTS_GLYPH_FLAG_PREF; + } + + Glyph->Flags |= (KBTS_GLYPH_FLAG_BLWF | KBTS_GLYPH_FLAG_ABVF | KBTS_GLYPH_FLAG_PSTF); + Scratch[0] = Scratch[1]; + LastGlyph = Glyph; + } + + // The base only inherits stuff after it, up to whatever and not including what was grabbed by + // post-base consonants. + if(BaseIndex < ScanGlyphIndex) + { + Glyphs[BaseIndex].SyllabicPosition = KBTS_SYLLABIC_POSITION_SYLLABLE_BASE; + + kbts_u64 Classes = (1ull << KBTS_INDIC_SYLLABIC_CLASS_HALANT) | (1ull << KBTS_INDIC_SYLLABIC_CLASS_VEDIC_SIGN) | (1ull << KBTS_INDIC_SYLLABIC_CLASS_NUKTA) | + (1ull << KBTS_INDIC_SYLLABIC_CLASS_ZWJ) | (1ull << KBTS_INDIC_SYLLABIC_CLASS_ZWNJ); + kbts_glyph *Next = &Glyphs[BaseIndex + 1]; + while((Next < OnePastLastSyllableGlyph) && (Next->SyllabicPosition < KBTS_SYLLABIC_POSITION_SYLLABLE_BASE) && ((1ull << Next->SyllabicClass) & Classes)) + { + Next->SyllabicPosition = KBTS_SYLLABIC_POSITION_SYLLABLE_BASE; + + Next += 1; + } + } + + Result.ClusterGlyphCount = ScanGlyphIndex; + ShapeState->RealCluster = 1; + } + } + break; + + case KBTS_SHAPER_USE: + { + kbts_un OtherCount = 0; + while((OtherCount < GlyphCount) && ((Glyphs[OtherCount].UseClass == KBTS_USE_SYLLABIC_CLASS_OTHER) || + (Glyphs[OtherCount].UseClass == KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_MOD_POST))) + { + OtherCount += 1; + } + + if(OtherCount) + { + Result.ClusterGlyphCount = OtherCount; + } + else + { + // Parse a real cluster. + kbts_u8 State = 0; + kbts_un ScanGlyphIndex = 0; + + while((ScanGlyphIndex < GlyphCount) && (State < KBTS_USE_STATE_s0)) + { + kbts_glyph *Glyph = &Glyphs[ScanGlyphIndex++]; + State = kbts_UseTransition[Glyph->UseClass][State]; + // @Incomplete: Remove this!!! + State -= 1; + } + + if(State >= KBTS_USE_STATE_s0) + { + ScanGlyphIndex -= 1; + } + if((ScanGlyphIndex < GlyphCount) && (Glyphs[ScanGlyphIndex].UseClass == KBTS_USE_SYLLABIC_CLASS_ZWNJ)) + { + ScanGlyphIndex += 1; + } + if(!ScanGlyphIndex) ScanGlyphIndex = 1; + + Result.ClusterGlyphCount = ScanGlyphIndex; + ShapeState->RealCluster = 1; + } + } break; + + case KBTS_SHAPER_KHMER: + { + kbts_un OtherCount = 0; + while((OtherCount < GlyphCount) && ((Glyphs[OtherCount].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_OTHER) || + (Glyphs[OtherCount].SyllabicClass >= KBTS_KHMER_SYLLABIC_CLASS_COUNT))) + { + OtherCount += 1; + } + + if(OtherCount) + { + Result.ClusterGlyphCount = OtherCount; + } + else + { + kbts_u8 State = 0; + kbts_un ScanGlyphIndex = 0; + while((ScanGlyphIndex < GlyphCount) && (State < KBTS_KHMER_SYLLABIC_STATE_COUNT)) + { + kbts_glyph *Glyph = &Glyphs[ScanGlyphIndex++]; + kbts_indic_syllabic_class Class = Glyph->SyllabicClass; + + State = kbts_KhmerSyllabicTransition[Class][State]; + // @Incomplete: Remove this! + State -= 1; + } + + if(State >= KBTS_KHMER_SYLLABIC_STATE_COUNT) + { + ScanGlyphIndex -= 1; + } + if(!ScanGlyphIndex) ScanGlyphIndex = 1; + + if(Config->DottedCircle.Id && + !KBTS_IN_SET64(Glyphs->SyllabicClass, KBTS_SET64((KBTS_INDIC_SYLLABIC_CLASS_CONSONANT)(KBTS_INDIC_SYLLABIC_CLASS_RA) + (KBTS_INDIC_SYLLABIC_CLASS_VOWEL)(KBTS_INDIC_SYLLABIC_CLASS_DOTTED_CIRCLE) + (KBTS_INDIC_SYLLABIC_CLASS_PLACEHOLDER)))) + { + // Broken cluster. + // Insert a dotted circle. + for(kbts_un GlyphIndex = GlyphCount; GlyphIndex; --GlyphIndex) + { + Glyphs[GlyphIndex] = Glyphs[GlyphIndex - 1]; + } + ScanGlyphIndex += 1; + Result.InsertedGlyphCount = 1; + Glyphs[0] = Config->DottedCircle; + } + + // In Khmer, the first glyph is always the base. + + kbts_glyph PreBaseGlyphs[3]; + int SawHalantRa = 0; + kbts_un PreBaseGlyphCount = 0; + kbts_un Classes = 0; + kbts_un WriteCursor = ScanGlyphIndex - 1; + for(kbts_un GlyphIndex = ScanGlyphIndex; GlyphIndex; --GlyphIndex) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex - 1]; + kbts_indic_syllabic_class Class = Glyph->SyllabicClass; + + if(GlyphIndex > 1) {Glyph->Flags |= KBTS_GLYPH_FLAG_ABVF | KBTS_GLYPH_FLAG_BLWF | KBTS_GLYPH_FLAG_PSTF;} + + Classes = ((Classes << 8) | Class) & 0xFFFF; + + if(Class == KBTS_INDIC_SYLLABIC_CLASS_VOWEL_PRE) + { + PreBaseGlyphs[PreBaseGlyphCount++] = *Glyph; + } + else if(!SawHalantRa && (Classes == (KBTS_INDIC_SYLLABIC_CLASS_HALANT | (KBTS_INDIC_SYLLABIC_CLASS_RA << 8)))) + { + kbts_glyph *Ra = &Glyphs[GlyphIndex]; + Glyph->Flags |= KBTS_GLYPH_FLAG_PREF; + Ra->Flags |= KBTS_GLYPH_FLAG_PREF; + + PreBaseGlyphs[PreBaseGlyphCount++] = *Glyph; + PreBaseGlyphs[PreBaseGlyphCount++] = *Ra; + WriteCursor += 1; // Cancel the Ra write. + // All of the glyphs written so far need to be flagged with cfar. + KBTS_FOR(CfarGlyphIndex, WriteCursor, ScanGlyphIndex) + { + Glyphs[CfarGlyphIndex].Flags |= KBTS_GLYPH_FLAG_CFAR; + } + SawHalantRa = 1; + } + else + { + Glyphs[WriteCursor--] = *Glyph; + } + } + + KBTS_FOR(PreBaseGlyphIndex, 0, PreBaseGlyphCount) + { + Glyphs[PreBaseGlyphIndex] = PreBaseGlyphs[PreBaseGlyphIndex]; + } + + Result.ClusterGlyphCount = ScanGlyphIndex; + } + } break; + + case KBTS_SHAPER_MYANMAR: + { + kbts_un OtherCount = 0; + while((OtherCount < GlyphCount) && ((Glyphs[OtherCount].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_OTHER) || + (Glyphs[OtherCount].SyllabicClass >= KBTS_MYANMAR_SYLLABIC_CLASS_COUNT))) + { + OtherCount += 1; + } + + if(OtherCount) + { + Result.ClusterGlyphCount = OtherCount; + } + else + { + kbts_u8 State = 0; + kbts_un ScanGlyphIndex = 0; + while((ScanGlyphIndex < GlyphCount) && (State < KBTS_MYANMAR_SYLLABIC_STATE_COUNT)) + { + kbts_glyph *Glyph = &Glyphs[ScanGlyphIndex++]; + kbts_indic_syllabic_class Class = Glyph->SyllabicClass; + + State = kbts_MyanmarSyllabicTransition[Class][State]; + // @Incomplete: Remove this! + State -= 1; + } + + if(State >= KBTS_MYANMAR_SYLLABIC_STATE_COUNT) + { + ScanGlyphIndex -= 1; + } + if(!ScanGlyphIndex) ScanGlyphIndex = 1; + + ShapeState->RealCluster = 1; + Result.ClusterGlyphCount = ScanGlyphIndex; + } + } break; + } + + return Result; +} + +typedef struct kbts_end_cluster_result +{ + int InsertDottedCircle; + kbts_un DottedCircleIndex; +} kbts_end_cluster_result; + +static kbts_end_cluster_result kbts_EndCluster(kbts_shape_state *ShapeState, kbts_glyph_array *Cluster) +{ + kbts_end_cluster_result Result = KBTS_ZERO; + kbts_shape_config *Config = ShapeState->Config; + kbts_glyph *Glyphs = Cluster->Glyphs; + kbts_un GlyphCount = Cluster->Count; + + switch(Config->Shaper) + { + case KBTS_SHAPER_INDIC: + if(GlyphCount > 1) + { + // Final syllable reordering. + // We are just copying Harfbuzz here, because I've read all the documentation I can and, frankly, I have no idea. + kbts_feature *Pref = Config->Pref; + + kbts_u32 ViramaId = Config->Virama.Id; + KBTS_FOR(GlyphIndex, 0, GlyphCount) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + // Harfbuzz tests for (ligated | multiplied) here. + // I don't really get why, because, supposedly, all viramas should be + // classified as halants regardless. + if(ViramaId && (Glyph->Id == ViramaId)) + { + Glyph->SyllabicClass = KBTS_INDIC_SYLLABIC_CLASS_HALANT; + Glyph->Flags &= ~(KBTS_GLYPH_FLAG_LIGATURE | KBTS_GLYPH_FLAG_MULTIPLE_SUBSTITUTION); + } + else if(Glyph->Flags & KBTS_GLYPH_FLAG_LIGATURE) + { + // We can't know the syllabic classes of ligatures for sure. + Glyph->SyllabicClass = KBTS_INDIC_SYLLABIC_CLASS_COUNT; + } + } + + // Locate the syllable base. + kbts_un BaseIndex = GlyphCount; + { + kbts_un AfterPreBaseIndex = 0; + while((AfterPreBaseIndex < GlyphCount) && (Glyphs[AfterPreBaseIndex].SyllabicPosition < KBTS_SYLLABIC_POSITION_SYLLABLE_BASE)) + { + ++AfterPreBaseIndex; + } + + if(AfterPreBaseIndex < GlyphCount) + { + BaseIndex = AfterPreBaseIndex; + + if(Pref && ((AfterPreBaseIndex + 1) < GlyphCount)) + { + // If we find a pre-base-reordering ra, then the base is probably right after it! + kbts_un At = AfterPreBaseIndex + 1; + while((At < GlyphCount) && !(Glyphs[At].Flags & KBTS_GLYPH_FLAG_PREF)) + { + ++At; + } + + // If we are not a consonant, then we are attached to a consonant. + // If we are a pref-able consonant, but we did not form a pref, then we should be right after the base. + // Either way, we are very close to the base. + kbts_glyph *Prefable = &Glyphs[At]; + if((At < GlyphCount) && + (!(Prefable->Flags & KBTS_GLYPH_FLAG_GENERATED_BY_GSUB) || !(Prefable->Flags & KBTS_GLYPH_FLAG_LIGATURE) || (Prefable->Flags & KBTS_GLYPH_FLAG_MULTIPLE_SUBSTITUTION))) + { + while((At < GlyphCount) && (Prefable->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_HALANT)) + { + ++At; + ++Prefable; + } + + if(At < GlyphCount) + { + Prefable->SyllabicPosition = KBTS_SYLLABIC_POSITION_SYLLABLE_BASE; + BaseIndex = At; + // Fall through to the Malayalam test. + } + } + } + + if(Config->Script == KBTS_SCRIPT_MALAYALAM) + { + // In Malayalam, the base is after below-base forms. + // (We actually just give all below-base forms the base pos.) + // @Speed: This would be way simpler with a null sentinel at the end of Glyphs! + kbts_un At = BaseIndex + 1; + while(At < GlyphCount) + { + while((At < GlyphCount) && KBTS_IN_SET(Glyphs[At].SyllabicClass, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_ZWJ)(KBTS_INDIC_SYLLABIC_CLASS_ZWNJ)))) + { + ++At; + } + + if((At < GlyphCount) && (Glyphs[At].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_HALANT)) + { + ++At; + } + else + { + break; + } + + while((At < GlyphCount) && KBTS_IN_SET(Glyphs[At].SyllabicClass, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_ZWJ)(KBTS_INDIC_SYLLABIC_CLASS_ZWNJ)))) + { + ++At; + } + + if(At < GlyphCount) + { + kbts_glyph *Glyph = &Glyphs[At]; + if(kbts_SyllabicClassIsConsonant(Glyph->SyllabicClass) && (Glyph->SyllabicPosition == KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT)) + { + Glyph->SyllabicPosition = KBTS_SYLLABIC_POSITION_SYLLABLE_BASE; + BaseIndex = At; + // Do not break; keep matching below-base forms. + } + } + } + } + } + + if(BaseIndex && (BaseIndex < GlyphCount) && (Glyphs[BaseIndex].SyllabicPosition > KBTS_SYLLABIC_POSITION_SYLLABLE_BASE)) + { + BaseIndex -= 1; + } + + if((BaseIndex == GlyphCount) && (Glyphs[GlyphCount - 1].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_ZWJ)) + { + BaseIndex = GlyphCount - 1; + } + + if(BaseIndex < GlyphCount) + { + while(BaseIndex && KBTS_IN_SET(Glyphs[BaseIndex].SyllabicClass, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_NUKTA)(KBTS_INDIC_SYLLABIC_CLASS_HALANT)))) + { + BaseIndex -= 1; + } + } + } + + // Reorder matras. + if(BaseIndex && (GlyphCount > 1)) + { + kbts_un ToIndex = BaseIndex - 1; + if(BaseIndex == GlyphCount) + { + ToIndex = GlyphCount - 2; + } + + if((Config->Script != KBTS_SCRIPT_MALAYALAM) && (Config->Script != KBTS_SCRIPT_TAMIL)) + { + for(;;) + { + while(ToIndex && !KBTS_IN_SET(Glyphs[ToIndex].SyllabicClass, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_MATRA)(KBTS_INDIC_SYLLABIC_CLASS_MATRA_POST)(KBTS_INDIC_SYLLABIC_CLASS_HALANT)))) + { + --ToIndex; + } + + kbts_glyph *Glyph = &Glyphs[ToIndex]; + if((Glyph->SyllabicClass != KBTS_INDIC_SYLLABIC_CLASS_HALANT) || (Glyph->SyllabicPosition == KBTS_SYLLABIC_POSITION_PREBASE_MATRA)) + { + // We have nothing to move. + ToIndex = 0; + + break; + } + else if(ToIndex && ((ToIndex + 1) < GlyphCount) && (Glyphs[ToIndex + 1].SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_ZWJ)) + { + // Zwj+Halant cancels matra movement when the Halant is not attached to the matra. + --ToIndex; + } + else + { + break; + } + } + } + + if(ToIndex && (Glyphs[ToIndex].SyllabicPosition != KBTS_SYLLABIC_POSITION_PREBASE_MATRA)) + { + for(kbts_un MatraIndex = ToIndex; MatraIndex; --MatraIndex) + { + kbts_glyph *Matra = &Glyphs[MatraIndex - 1]; + + if(Matra->SyllabicPosition == KBTS_SYLLABIC_POSITION_PREBASE_MATRA) + { + kbts_glyph MatraToReorder = *Matra; + + KBTS_FOR(GlyphIndex, MatraIndex, ToIndex + 1) + { + Glyphs[GlyphIndex - 1] = Glyphs[GlyphIndex]; + } + + Glyphs[ToIndex] = MatraToReorder; + ToIndex -= 1; + } + } + } + } + + // Reorder reph. + // We should only reorder reph when it is a single Repha glyph, and not a Ra sequence. + if((Glyphs[0].SyllabicPosition == KBTS_SYLLABIC_POSITION_RA_TO_BECOME_REPH) && (Glyphs[1].SyllabicPosition != KBTS_SYLLABIC_POSITION_RA_TO_BECOME_REPH)) + { + kbts_reph_position RephPosition = Config->IndicScriptProperties.RephPosition; + + kbts_un ToIndex = 0; + + KBTS_FOR(GlyphIndex, 0, BaseIndex) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + if(Glyph->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_HALANT) + { + ToIndex = GlyphIndex; + + if((GlyphIndex + 1) < BaseIndex) + { + kbts_u8 NextClass = Glyphs[GlyphIndex + 1].SyllabicClass; + + if((NextClass == KBTS_INDIC_SYLLABIC_CLASS_ZWJ) || (NextClass == KBTS_INDIC_SYLLABIC_CLASS_ZWNJ)) + { + ToIndex = GlyphIndex + 1; + } + } + + break; + } + } + + if(!ToIndex) + { + if(RephPosition == KBTS_REPH_POSITION_AFTER_SUBJOINED) + { + KBTS_FOR(GlyphIndex, BaseIndex, GlyphCount) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + kbts_u8 SyllabicPosition = Glyph->SyllabicPosition; + + if(KBTS_IN_SET(SyllabicPosition, KBTS_SET32((KBTS_SYLLABIC_POSITION_POSTBASE_CONSONANT)(KBTS_SYLLABIC_POSITION_AFTER_POST)(KBTS_SYLLABIC_POSITION_SMVD)))) + { + ToIndex = GlyphIndex - 1; + + break; + } + } + } + else if(RephPosition == KBTS_REPH_POSITION_AFTER_MAIN) + { + KBTS_FOR(GlyphIndex, BaseIndex, GlyphCount) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + if(Glyph->SyllabicPosition > KBTS_SYLLABIC_POSITION_AFTER_MAIN) + { + ToIndex = GlyphIndex - 1; + + break; + } + } + } + } + + if(!ToIndex) + { + // As a fallback, move reph to the end of the syllable. + for(kbts_un GlyphIndex = GlyphCount; GlyphIndex; --GlyphIndex) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex - 1]; + + if(Glyph->SyllabicPosition != KBTS_SYLLABIC_POSITION_SMVD) + { + ToIndex = GlyphIndex - 1; + + break; + } + } + + // Matras will still come after reph. + kbts_glyph *Glyph = &Glyphs[ToIndex]; + if(Glyph->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_HALANT) + { + KBTS_FOR(MatraIndex, BaseIndex + 1, ToIndex) + { + kbts_glyph *Matra = &Glyphs[MatraIndex]; + kbts_u8 Class = Matra->SyllabicClass; + + if(KBTS_IN_SET(Class, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_MATRA)(KBTS_INDIC_SYLLABIC_CLASS_MATRA_POST)(KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_MEDIAL)))) + { + ToIndex -= 1; + } + } + } + } + + if(ToIndex) + { + // Do the reorder! + kbts_glyph Reph = Glyphs[0]; + + KBTS_FOR(GlyphIndex, 0, ToIndex) + { + Glyphs[GlyphIndex] = Glyphs[GlyphIndex + 1]; + } + + Glyphs[ToIndex] = Reph; + + if(BaseIndex && (BaseIndex <= ToIndex)) + { + BaseIndex -= 1; + } + } + } + + // Reorder pre-base-reordering consonants. + if(Pref) + { + kbts_un PrefIndex = 0; + + KBTS_FOR(GlyphIndex, BaseIndex + 1, GlyphCount) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + if(Glyph->Flags & KBTS_GLYPH_FLAG_PREF) + { + PrefIndex = GlyphIndex; + + break; + } + } + + if(PrefIndex) + { + kbts_glyph PrefGlyph = Glyphs[PrefIndex]; + + // Harfbuzz says the ideal is to check that this glyph was generated by the pref feature specifically, + // but then just uses a generic flag like this. + // The ideal solution would not be very difficult to implement! + if(PrefGlyph.Flags & KBTS_GLYPH_FLAG_GENERATED_BY_GSUB) + { + kbts_un ToIndex = 0; + + for(kbts_un GlyphIndex = BaseIndex; GlyphIndex; --GlyphIndex) + { + kbts_u8 Class = Glyphs[GlyphIndex - 1].SyllabicClass; + + if(KBTS_IN_SET(Class, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_MATRA)(KBTS_INDIC_SYLLABIC_CLASS_MATRA_POST)(KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_MEDIAL)(KBTS_INDIC_SYLLABIC_CLASS_HALANT)))) + { + ToIndex = GlyphIndex; + + break; + } + } + + if(ToIndex && (ToIndex < GlyphCount)) + { + kbts_glyph *Prev = &Glyphs[ToIndex - 1]; + kbts_u8 CurrentClass = Glyphs[ToIndex].SyllabicClass; + + if((Prev->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_HALANT) && KBTS_IN_SET(CurrentClass, KBTS_SET32((KBTS_INDIC_SYLLABIC_CLASS_ZWJ)(KBTS_INDIC_SYLLABIC_CLASS_ZWNJ)))) + { + ToIndex += 1; + } + } + + // Do the reorder! + for(kbts_un GlyphIndex = PrefIndex; GlyphIndex > ToIndex; --GlyphIndex) + { + Glyphs[GlyphIndex] = Glyphs[GlyphIndex - 1]; + } + + Glyphs[ToIndex] = PrefGlyph; + + // @Cleanup: This is probably always true? + if((BaseIndex >= ToIndex) && (BaseIndex < PrefIndex)) + { + BaseIndex += 1; + } + } + } + } + + { // Mark matras at the beginning of a word for init application. + // It is tempting to check for this at the same time as the reph reordering, but glyphs could have been + // reordered since then and the reordering procedure is clearly defined to happen in sequential steps. + kbts_glyph *First = &Glyphs[0]; + + if((First->SyllabicPosition == KBTS_SYLLABIC_POSITION_PREBASE_MATRA) && ShapeState->ClusterAtStartOfWord) + { + First->Flags |= KBTS_GLYPH_FLAG_INIT; + } + } + } + break; + + case KBTS_SHAPER_USE: + { + kbts_u64 PostBaseSet = KBTS_SET64((KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_ABOVE)(KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_BELOW) + (KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_MOD_ABOVE)(KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_MOD_BELOW) + (KBTS_USE_SYLLABIC_CLASS_CONS_FINAL_MOD_POST)(KBTS_USE_SYLLABIC_CLASS_CONS_MED_ABOVE) + (KBTS_USE_SYLLABIC_CLASS_CONS_MED_BELOW)(KBTS_USE_SYLLABIC_CLASS_CONS_MED_POST) + (KBTS_USE_SYLLABIC_CLASS_CONS_MED_PRE)(KBTS_USE_SYLLABIC_CLASS_VOWEL_ABOVE) + (KBTS_USE_SYLLABIC_CLASS_VOWEL_BELOW)(KBTS_USE_SYLLABIC_CLASS_VOWEL_POST) + (KBTS_USE_SYLLABIC_CLASS_VOWEL_PRE)(KBTS_USE_SYLLABIC_CLASS_VOWEL_MOD_ABOVE) + (KBTS_USE_SYLLABIC_CLASS_VOWEL_MOD_BELOW)(KBTS_USE_SYLLABIC_CLASS_VOWEL_MOD_POST) + (KBTS_USE_SYLLABIC_CLASS_VOWEL_MOD_PRE)); + kbts_u64 HalantSet = KBTS_SET64((KBTS_USE_SYLLABIC_CLASS_HALANT)(KBTS_USE_SYLLABIC_CLASS_HALANT_OR_VOWEL_MODIFIER)(KBTS_USE_SYLLABIC_CLASS_INVISIBLE_STACKER)); + + // In the reorderings below, we check for halants because that's what Harfbuzz does. + // Nowhere does Microsoft mention that halants should block reorderings! + kbts_glyph Repha = Glyphs[0]; + if((Repha.UseClass == KBTS_USE_SYLLABIC_CLASS_REPHA) || (Repha.Flags & KBTS_GLYPH_FLAG_RPHF)) + { + kbts_un GlyphIndex = 1; + for(; GlyphIndex < GlyphCount; ++GlyphIndex) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + + // Microsoft says that rephas are reordered "after a following full base", which is needlessly vague. + // Harfbuzz reorders them in front of the first post-base glyph. + if(KBTS_IN_SET64(Glyph->UseClass, PostBaseSet) || (!(Glyph->Flags & KBTS_GLYPH_FLAG_LIGATURE) && KBTS_IN_SET64(Glyph->UseClass, HalantSet))) + { + break; + } + + Glyphs[GlyphIndex - 1] = *Glyph; + } + + Glyphs[GlyphIndex - 1] = Repha; + } + + { + // Microsoft says that pre-base vowels and vowel modifiers should be reordered "before the base glyph + // and, if present, before a pre-base glyph reordered via the 'pref' feature". + // In practice, we tag 'pref'-generated glyphs with the VOWEL_PRE class so that they get reordered here. + // Note that the final reordered glyphs end up backwards from their original order. + kbts_glyph PreBaseVowels[16]; // @Robustness: How many vowels can there realistically be in a single cluster? + kbts_un PreBaseVowelCount = 0; + kbts_u64 SawBase = 0; + for(kbts_un GlyphIndex = GlyphCount; GlyphIndex; --GlyphIndex) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex - 1]; + SawBase |= KBTS_IN_SET64(Glyph->UseClass, KBTS_SET64((KBTS_USE_SYLLABIC_CLASS_BASE)(KBTS_USE_SYLLABIC_CLASS_BASE_OTHER)(KBTS_USE_SYLLABIC_CLASS_BASE_NUM))); + + kbts_u32 Flags = Glyph->Flags; + // Only accept the first glyphs produced by multiple substitutions. + if(((Flags & KBTS_GLYPH_FLAG_FIRST_IN_MULTIPLE_SUBSTITUTION) || !(Flags & KBTS_GLYPH_FLAG_MULTIPLE_SUBSTITUTION)) && + (KBTS_IN_SET64(Glyph->UseClass, KBTS_SET64((KBTS_USE_SYLLABIC_CLASS_VOWEL_PRE)(KBTS_USE_SYLLABIC_CLASS_VOWEL_MOD_PRE))) || + (Flags & KBTS_GLYPH_FLAG_PREF))) + { + if(PreBaseVowelCount < KBTS_ARRAY_LENGTH(PreBaseVowels)) + { + PreBaseVowels[PreBaseVowelCount++] = *Glyph; + } + } + else if(!(Glyph->Flags & KBTS_GLYPH_FLAG_LIGATURE) && KBTS_IN_SET64(Glyph->UseClass, HalantSet)) + { + // Reordering stops at halants, apparently. + // We want to write the vowels in the reverse order they appear in the glyph sequence. + // Since we are iterating backwards, they already _are_ backwards in the PreBaseVowels array, + // so there's no need to do anything. + KBTS_FOR(PreBaseVowelIndex, 0, PreBaseVowelCount) + { + Glyphs[GlyphIndex + PreBaseVowelIndex] = PreBaseVowels[PreBaseVowelIndex]; + } + PreBaseVowelCount = 0; + + // Valid bases only show up before halants. + SawBase = 0; + } + else + { + Glyphs[GlyphIndex - 1 + PreBaseVowelCount] = *Glyph; + } + } + + // Flush the rest of the vowels. + KBTS_FOR(PreBaseVowelIndex, 0, PreBaseVowelCount) + { + Glyphs[PreBaseVowelIndex] = PreBaseVowels[PreBaseVowelIndex]; + } + + // We are supposed to insert a dotted circle after repha when a base is missing. + // The issue is that we have no idea whether the first glyph is a repha or not before we apply + // RPHF. + // So, this is really sucky, but I haven't found a way to merge this logic into any already- + // existing loop, so we have to eat the extra traversal for now. + if(ShapeState->RealCluster && !SawBase) + { + Result.InsertDottedCircle = 1; + Result.DottedCircleIndex = PreBaseVowelCount; + } + } + } break; + + case KBTS_SHAPER_MYANMAR: + if(ShapeState->RealCluster) + { + kbts_un OnePastRephIndex = 0; + kbts_un BaseIndex = GlyphCount; + if(GlyphCount >= 3) + { + kbts_glyph *First = &Glyphs[0]; + kbts_glyph *Second = &Glyphs[1]; + kbts_glyph *Third = &Glyphs[2]; + + if((First->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_RA) && + (Second->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_ASAT) && + (Third->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_HALANT)) + { + First->SyllabicPosition = KBTS_SYLLABIC_POSITION_AFTER_MAIN; + Second->SyllabicPosition = KBTS_SYLLABIC_POSITION_AFTER_MAIN; + Third->SyllabicPosition = KBTS_SYLLABIC_POSITION_AFTER_MAIN; + + OnePastRephIndex = 3; + BaseIndex = 0; + } + } + + kbts_u64 BaseSet = KBTS_SET64((KBTS_INDIC_SYLLABIC_CLASS_CONSONANT) + (KBTS_INDIC_SYLLABIC_CLASS_CONSONANT_WITH_STACKER) + (KBTS_INDIC_SYLLABIC_CLASS_RA) + (KBTS_INDIC_SYLLABIC_CLASS_VOWEL) + (KBTS_INDIC_SYLLABIC_CLASS_PLACEHOLDER) + (KBTS_INDIC_SYLLABIC_CLASS_DOTTED_CIRCLE)); + KBTS_FOR(GlyphIndex, OnePastRephIndex, GlyphCount) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + kbts_indic_syllabic_class Class = Glyph->SyllabicClass; + + if((BaseIndex == GlyphCount) && KBTS_IN_SET64(Class, BaseSet)) + { + BaseIndex = GlyphIndex; + break; + } + } + + if((BaseIndex == GlyphCount) && OnePastRephIndex) + { + BaseIndex = 0; + } + + kbts_syllabic_position LastPosition = KBTS_SYLLABIC_POSITION_SYLLABLE_BASE; + kbts_syllabic_position SectionPosition = KBTS_SYLLABIC_POSITION_AFTER_MAIN; + kbts_un LastPreBaseMatraIndex = GlyphCount; + KBTS_FOR(GlyphIndex, BaseIndex + 1, GlyphCount) + { + kbts_glyph *Glyph = &Glyphs[GlyphIndex]; + kbts_syllabic_position Position = SectionPosition; + + switch(Glyph->SyllabicClass) + { + case KBTS_INDIC_SYLLABIC_CLASS_MEDIAL_RA: + Position = KBTS_SYLLABIC_POSITION_PREBASE_CONSONANT; + break; + + case KBTS_INDIC_SYLLABIC_CLASS_VOWEL_PRE: + { + Position = KBTS_SYLLABIC_POSITION_PREBASE_MATRA; + + // According to Unicode 15.0: + // For combining characters placed to the left of a base character, the combining characters start from the base + // character and are arranged leftward. + // Since these guys will get reordered into being pre-base, we need to flip them. + if(GlyphIndex > LastPreBaseMatraIndex) + { + kbts_un FlipCount = GlyphIndex - LastPreBaseMatraIndex + 1; + KBTS_FOR(FlipIndex, 0, FlipCount / 2) + { + kbts_un LeftIndex = LastPreBaseMatraIndex + FlipIndex; + kbts_un RightIndex = LastPreBaseMatraIndex + FlipCount - 1 - FlipIndex; + kbts_glyph Swap = Glyphs[LeftIndex]; + Glyphs[LeftIndex] = Glyphs[RightIndex]; + Glyphs[RightIndex] = Swap; + } + + // Readjust Glyph to compensate for the flip. + Glyph = &Glyphs[LastPreBaseMatraIndex]; + } + + LastPreBaseMatraIndex = GlyphIndex; + } break; + + case KBTS_INDIC_SYLLABIC_CLASS_VARIATION_SELECTOR: + Position = LastPosition; + break; + + case KBTS_INDIC_SYLLABIC_CLASS_VOWEL_BELOW: + if(Position == KBTS_SYLLABIC_POSITION_AFTER_MAIN) + { + Position = KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT; + } + else if(Position == KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT) + { + Position = SectionPosition; + } + break; + + case KBTS_INDIC_SYLLABIC_CLASS_VEDIC_SIGN: + if(Position == KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT) + { + Position = KBTS_SYLLABIC_POSITION_BEFORE_SUBJOINED; + } + break; + } + + if((SectionPosition == KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT) && (Glyph->SyllabicClass == KBTS_INDIC_SYLLABIC_CLASS_VEDIC_SIGN)) + { + SectionPosition = KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED; + Position = SectionPosition; + } + + Glyph->SyllabicPosition = Position; + LastPosition = Position; + } + + KBTS_FOR(Iter, 1, GlyphCount) + { + KBTS_FOR(GlyphIndex, 1, GlyphCount) + { + kbts_glyph *A = &Glyphs[GlyphIndex - 1]; + kbts_glyph *B = &Glyphs[GlyphIndex]; + + if(A->SyllabicPosition > B->SyllabicPosition) + { + kbts_glyph Swap = *A; + *A = *B; + *B = Swap; + } + } + } + } break; + } + + return Result; +} + +static kbts_op_list kbts_OpList(uint8_t *Ops, kbts_un Size) +{ + kbts_op_list Result = KBTS_ZERO; + Result.Ops = Ops; + Result.Length = Size; + return Result; +} +#define KBTS_OP_LIST(OpList) kbts_OpList((kbts_Ops_##OpList), KBTS_ARRAY_LENGTH(kbts_Ops_##OpList)) + +KBTS_EXPORT kbts_shape_config kbts_ShapeConfig(kbts_font *Font, kbts_script Script, kbts_language Language) +{ + kbts_shape_config Result = KBTS_ZERO; + + Result.Font = Font; + Result.Script = Script; + Result.Language = Language; + + kbts_gsub_gpos *Gsub = Font->ShapingTables[KBTS_SHAPING_TABLE_GSUB]; + + // Find the appropriate language system in GSUB/GPOS. + kbts_script_properties *ScriptProperties = &kbts_ScriptProperties[Script]; + int FoundScriptIsIndic3 = 0; + + KBTS_FOR(ShapingTableIndex, 0, KBTS_SHAPING_TABLE_COUNT) + { + kbts_gsub_gpos *ShapingTable = Font->ShapingTables[ShapingTableIndex]; + if(ShapingTable) + { + kbts_script_list *ScriptList = KBTS_POINTER_OFFSET(kbts_script_list, ShapingTable, ShapingTable->ScriptListOffset); + + kbts_langsys *ChosenLangsys = 0; + kbts_u32 DesiredTag = ScriptProperties->Tag; + + KBTS_FOR(ScriptIndex, 0, ScriptList->Count) + { + kbts_script_pointer ThisScript = kbts_GetScript(ScriptList, ScriptIndex); + kbts_u32 Tag = ThisScript.Tag; + + // The OpenType spec does not define or even mention "Indic3" scripts at all. + // Nevertheless, Harfbuzz at least checks for '3' at the end of script tags, and, if one exists, they choose USE. + int Indic3 = (ThisScript.Tag >> 24) == '3'; + kbts_u32 MatchMask = Indic3 ? 0xFFFFFF : 0xFFFFFFFF; + int PerfectMatch = !((Tag ^ DesiredTag) & MatchMask); + if(!ScriptIndex || PerfectMatch || (Tag == KBTS_FOURCC('D', 'F', 'L', 'T'))) + { + kbts_langsys *Langsys = kbts_GetDefaultLangsys(ThisScript.Script); + KBTS_FOR(LangsysIndex, 0, ThisScript.Script->Count) + { + kbts_langsys_pointer LangsysPointer = kbts_GetLangsys(ThisScript.Script, LangsysIndex); + + if(LangsysPointer.Tag == Language) + { + Langsys = LangsysPointer.Langsys; + break; + } + } + + // It is tempting to try to look for another script if the one we want has no langsys. + // However, it is possible for a script to purposefully have no langsys at all. In that case, + // the shaper should not apply any GSUB features. + // In that case, the shaper should not apply any GSUB features. + // So, store the result _regardless_ of whether Langsys is null or not. + ChosenLangsys = Langsys; + if(ShapingTableIndex == KBTS_SHAPING_TABLE_GSUB) + { + // Apparently, it is allowed to have script-specific GSUB tables, and a huge DFLT GPOS table. + FoundScriptIsIndic3 = Indic3; + } + // And then get out if we found the appropriate script, even if the langsys is null! + if(PerfectMatch) + { + break; + } + } + } + + Result.Langsys[ShapingTableIndex] = ChosenLangsys; + } + } + + Result.IndicScriptProperties = kbts_IndicScriptProperties(Script); + Result.Shaper = FoundScriptIsIndic3 ? KBTS_SHAPER_USE : ScriptProperties->Shaper; + Result.OpLists[0] = kbts_ShaperOpLists[Result.Shaper]; + + switch(Result.Shaper) + { + case KBTS_SHAPER_INDIC: + Result.OpLists[1] = KBTS_OP_LIST(Indic1); + Result.OpLists[2] = KBTS_OP_LIST(Indic2); + Result.OpLists[3] = KBTS_OP_LIST(Indic3); + break; + case KBTS_SHAPER_USE: + Result.OpLists[1] = KBTS_OP_LIST(Use1); + Result.OpLists[3] = KBTS_OP_LIST(Use3); + break; + case KBTS_SHAPER_KHMER: + Result.OpLists[1] = KBTS_OP_LIST(Khmer1); + Result.OpLists[3] = KBTS_OP_LIST(Khmer3); + break; + case KBTS_SHAPER_MYANMAR: + Result.OpLists[1] = KBTS_OP_LIST(Myanmar1); + Result.OpLists[2] = KBTS_OP_LIST(Myanmar2); + Result.OpLists[3] = KBTS_OP_LIST(Myanmar3); + break; + } + + Result.Features = &kbts_ShaperFeatures[Result.Shaper]; + + kbts_feature *Rclt = 0; + kbts_feature_set SyllableFeatureSet = {{KBTS_FEATURE_FLAG0(rphf) | KBTS_FEATURE_FLAG0(blwf) | KBTS_FEATURE_FLAG0(half) | KBTS_FEATURE_FLAG0(pstf) | KBTS_FEATURE_FLAG0(pref), + 0, KBTS_FEATURE_FLAG2(rclt) | KBTS_FEATURE_FLAG2(locl), KBTS_FEATURE_FLAG3(vatu)}}; + kbts_iterate_features IterateFeatures = kbts_IterateFeatures(&Result, KBTS_SHAPING_TABLE_GSUB, SyllableFeatureSet); + while(kbts_NextFeature(&IterateFeatures)) + { + switch(IterateFeatures.CurrentFeatureTag) + { + case KBTS_FEATURE_TAG_blwf: Result.Blwf = IterateFeatures.Feature; break; + case KBTS_FEATURE_TAG_pref: Result.Pref = IterateFeatures.Feature; break; + case KBTS_FEATURE_TAG_pstf: Result.Pstf = IterateFeatures.Feature; break; + case KBTS_FEATURE_TAG_locl: Result.Locl = IterateFeatures.Feature; break; + case KBTS_FEATURE_TAG_rphf: Result.Rphf = IterateFeatures.Feature; break; + case KBTS_FEATURE_TAG_half: Result.Half = IterateFeatures.Feature; break; + case KBTS_FEATURE_TAG_vatu: Result.Vatu = IterateFeatures.Feature; break; + case KBTS_FEATURE_TAG_rclt: Rclt = IterateFeatures.Feature; break; + } + } + + if((Result.Shaper == KBTS_SHAPER_ARABIC) && !Rclt) + { + Result.OpLists[0] = KBTS_OP_LIST(ArabicNoRclt); + } + + kbts_shape_state DummyState = KBTS_ZERO; + DummyState.Config = &Result; + + if(Result.IndicScriptProperties.ViramaCodepoint) + { + // Bake the locl-ized virama. + kbts_glyph Virama = kbts_CodepointToGlyph(Font, Result.IndicScriptProperties.ViramaCodepoint); + Result.Virama = kbts_Substitute1(&DummyState, kbts_GetLookupList(Gsub), Result.Locl, KBTS_SKIP_FLAG_ZWNJ | KBTS_SKIP_FLAG_ZWJ, &Virama); + } + + if((Result.Script == KBTS_SCRIPT_THAI) || (Result.Script == KBTS_SCRIPT_LAO)) + { + kbts_u32 NikhahitCodepoint = (Result.Script == KBTS_SCRIPT_THAI) ? 0xE4D : 0xECD; + kbts_u32 SaraAaCodepoint = (Result.Script == KBTS_SCRIPT_THAI) ? 0xE32 : 0xEB2; + Result.Nikhahit = kbts_CodepointToGlyph(Font, NikhahitCodepoint); + Result.SaraAa = kbts_CodepointToGlyph(Font, SaraAaCodepoint); + } + + Result.DottedCircle = kbts_CodepointToGlyph(Font, 0x25CC); + Result.Whitespace = kbts_CodepointToGlyph(Font, ' '); + + return Result; +} + +static kbts_op kbts_ReadOp(kbts_shape_state *State, kbts_u8 *Ops) +{ + kbts_op Result = KBTS_ZERO; + Result.Kind = Ops[State->Ip++]; + + if(Result.Kind == KBTS_OP_KIND_GSUB_FEATURES_WITH_USER) + { + Result.Kind = KBTS_OP_KIND_GSUB_FEATURES; + Result.Features = State->UserFeatures; + } + + if((Result.Kind == KBTS_OP_KIND_GSUB_FEATURES) || (Result.Kind == KBTS_OP_KIND_GPOS_FEATURES)) + { + kbts_un FeatureCount = Ops[State->Ip++]; + int Rtl = (State->RunDirection == KBTS_DIRECTION_RTL); + KBTS_FOR(FeatureIndex, 0, FeatureCount) + { + kbts_u32 FeatureId = Ops[State->Ip++]; + + if((FeatureId == KBTS_FEATURE_ID_ltra) && Rtl) + { + FeatureId = KBTS_FEATURE_ID_rtla; + } + else if((FeatureId == KBTS_FEATURE_ID_ltrm) && Rtl) + { + FeatureId = KBTS_FEATURE_ID_rtlm; + } + + kbts_AddFeature(&Result.Features, FeatureId); + } + } + return Result; +} + +KBTS_EXPORT int kbts_Shape(kbts_shape_state *State, kbts_shape_config *Config, kbts_direction MainDirection, kbts_direction RunDirection, kbts_glyph *Glyphs, kbts_u32 *GlyphCount, kbts_u32 GlyphCapacity) +{ + KBTS_INSTRUMENT_FUNCTION_BEGIN + State->Config = Config; + State->MainDirection = MainDirection; + State->RunDirection = RunDirection; + State->GlyphArray = kbts_GlyphArray(Glyphs, *GlyphCount, *GlyphCount, GlyphCapacity); + + kbts_glyph_array *GlyphArray = &State->GlyphArray; + kbts_glyph_array *Cluster = &State->ClusterGlyphArray; + Cluster->Glyphs = Glyphs + State->At; // In case the Glyphs array moved after a grow. + Cluster->Capacity = GlyphCapacity - State->At; + + kbts_u32 ResumePoint = State->ResumePoint; + State->ResumePoint = 0; + switch(ResumePoint) + { + case 1: goto ResumePoint1; break; + case 2: goto ResumePoint2; break; + case 3: goto ResumePoint3; break; + case 4: goto ResumePoint4; break; + case 5: goto ResumePoint5; break; + case 6: goto ResumePoint6; break; + } + + // For simple shapers, all of the shaping happens in this single loop. + // For complex shapers, this loop is preparing the text for clustering logic, which happens below. + for(State->Ip = 0; State->Ip < Config->OpLists[0].Length;) + { + State->Op = kbts_ReadOp(State, Config->OpLists[0].Ops); + ResumePoint1:; + if(kbts_ExecuteOp(State, GlyphArray)) + { + State->ResumePoint = 1; + goto GrowRequest; + } + } + + if(KBTS_IN_SET(Config->Shaper, KBTS_SET32((KBTS_SHAPER_INDIC)(KBTS_SHAPER_USE)(KBTS_SHAPER_KHMER)(KBTS_SHAPER_MYANMAR)))) + { + State->ClusterAtStartOfWord = 1; + State->At = 0; + while(State->At < GlyphArray->Count) + { + if(KBTS_IN_SET(Config->Shaper, KBTS_SET32((KBTS_SHAPER_INDIC)(KBTS_SHAPER_KHMER)))) + { + // Reserve a slot in case we need to insert a dotted circle into a broken syllable. + ResumePoint2:; + if(!kbts_GrowGlyphArray(&State->ResumePoint, GlyphArray, GlyphArray->Count, 1, 2, 1)) + { + goto GrowRequest; + } + } + + kbts_begin_cluster_result BeginClusterResult = kbts_BeginCluster(State, Glyphs + State->At, GlyphArray->Count - State->At); + GlyphArray->Count += BeginClusterResult.InsertedGlyphCount; + GlyphArray->TotalCount += BeginClusterResult.InsertedGlyphCount; + State->ClusterGlyphCount = (kbts_u32)BeginClusterResult.ClusterGlyphCount; + + *Cluster = kbts_GlyphArray(Glyphs + State->At, BeginClusterResult.ClusterGlyphCount, GlyphArray->Count - State->At, GlyphCapacity - State->At); + + kbts_glyph *LastGlyphInCluster = &Glyphs[State->At + Cluster->Count - 1]; + State->WordBreak = !(LastGlyphInCluster->UnicodeFlags & KBTS_UNICODE_FLAG_PART_OF_WORD); + + for(State->Ip = 0; State->Ip < Config->OpLists[1].Length;) + { + State->Op = kbts_ReadOp(State, Config->OpLists[1].Ops); + ResumePoint3:; + if(kbts_ExecuteOp(State, Cluster)) + { + State->ResumePoint = 3; + goto GrowRequest; + } + } + + kbts_end_cluster_result EndClusterResult = kbts_EndCluster(State, Cluster); + if(EndClusterResult.InsertDottedCircle) + { + State->DottedCircleInsertIndex = (kbts_u32)EndClusterResult.DottedCircleIndex; + ResumePoint6:; + if(!kbts_GrowGlyphArray(&State->ResumePoint, Cluster, State->DottedCircleInsertIndex, 1, 6, 0)) + { + State->RequiredGlyphCapacity = Cluster->RequiredCapacity + State->At; + goto GrowRequest; + } + Glyphs[State->At + State->DottedCircleInsertIndex] = Config->DottedCircle; + } + + for(State->Ip = 0; State->Ip < Config->OpLists[2].Length;) + { + State->Op = kbts_ReadOp(State, Config->OpLists[2].Ops); + ResumePoint4:; + if(kbts_ExecuteOp(State, Cluster)) + { + State->ResumePoint = 4; + goto GrowRequest; + } + } + + State->At += Cluster->Count; + kbts_un DeltaClusterGlyphCount = Cluster->Count - State->ClusterGlyphCount; + GlyphArray->Count += DeltaClusterGlyphCount; + GlyphArray->TotalCount += DeltaClusterGlyphCount; + State->ClusterAtStartOfWord = State->WordBreak; + } + + // Post-clustering ops work across clusters. + // This is where Indic GPOS + post-passes happen. + for(State->Ip = 0; State->Ip < Config->OpLists[3].Length;) + { + State->Op = kbts_ReadOp(State, Config->OpLists[3].Ops); + ResumePoint5:; + if(kbts_ExecuteOp(State, GlyphArray)) + { + State->ResumePoint = 5; + goto GrowRequest; + } + } + } + + if(0) + { + GrowRequest:; + kbts_TransferGrowRequest(Cluster, GlyphArray); + State->RequiredGlyphCapacity = GlyphArray->RequiredCapacity; + KBTS_INSTRUMENT_END + return 1; + } + + *GlyphCount = GlyphArray->Count; + KBTS_INSTRUMENT_END + return 0; +} + +KBTS_EXPORT kbts_cursor kbts_Cursor(kbts_direction Direction) +{ + kbts_cursor Result = KBTS_ZERO; + Result.Direction = Direction; + return Result; +} + +KBTS_EXPORT void kbts_PositionGlyph(kbts_cursor *Cursor, kbts_glyph *Glyph, kbts_s32 *X, kbts_s32 *Y) +{ + kbts_s32 AdvanceX = Glyph->AdvanceX; + kbts_s32 AdvanceY = Glyph->AdvanceY; + kbts_s32 OffsetX = Glyph->OffsetX; + kbts_s32 OffsetY = Glyph->OffsetY; + if(Cursor->Direction != KBTS_DIRECTION_RTL) + { + *X = Cursor->X + OffsetX; + *Y = Cursor->Y + OffsetY; + + Cursor->X += AdvanceX; + Cursor->Y += AdvanceY; + } + else + { + // Right-to-left should, in theory, work almost identically to left-to-right: just right-align everything. + // However, the convention for glyph bounding boxes, etc., is that they are left-aligned. + // To compensate for this, we add base glyphs' advances to their positions, which should left-align them. + // We can't accumulate the advances immediately into the cursor, though, because then mark offsets will be wrong. + // + // By the way, Harfbuzz just reverses glyphs to always be left-to-right for the sake of layout. + // The reason we try to handle right-to-left somewhat properly here is that it allows the user to position one + // glyph at a time by just going through the glyph sequence, no matter the text direction. + // This should hopefully save the user from having to allocate a buffer of glyph positions and/or doing a pre-pass + // just to get the total string width, in the case of cross-direction text. + // + // The classic Harfbuzz behavior can be obtained by passing MainDirection = LTR to Shape, even for RTL text. + // (Cursor.Direction also needs to be NONE or LTR, of course, which is the default.) + if(AdvanceX) + { + Cursor->X -= Cursor->LastAdvanceX; + Cursor->LastAdvanceX = AdvanceX; + } + + *X = Cursor->X - AdvanceX + OffsetX; + *Y = Cursor->Y + OffsetY; + + Cursor->Y += AdvanceY; + } +} + +KBTS_EXPORT kbts_un kbts_ReadFontHeader(kbts_font *Font, void *Data, kbts_un Size) +{ + // @Incomplete: Add a bounds checking/validation pass. + KBTS_UNUSED(Size); + Font->FileBase = (char *)Data; + kbts_table_directory *Directory = (kbts_table_directory *)Font->FileBase; + + Directory->TableCount = kbts_ByteSwap16(Directory->TableCount); + Directory->SearchRange = kbts_ByteSwap16(Directory->SearchRange); + Directory->EntrySelector = kbts_ByteSwap16(Directory->EntrySelector); + Directory->RangeShift = kbts_ByteSwap16(Directory->RangeShift); + + kbts_table_record *Tables = (kbts_table_record *)(Directory + 1); + + kbts_un ShapingTableSizes[KBTS_SHAPING_TABLE_COUNT] = {0}; + kbts_u32 GdefSize = 0; + + for(kbts_un TableIndex = 0; TableIndex < Directory->TableCount; ++TableIndex) + { + kbts_table_record *Table = &Tables[TableIndex]; + Table->Checksum = kbts_ByteSwap32(Table->Checksum); + Table->Offset = kbts_ByteSwap32(Table->Offset); + Table->Length = kbts_ByteSwap32(Table->Length); + void *TableBase = KBTS_POINTER_OFFSET(void, Font->FileBase, Table->Offset); + + switch(Table->Tag) + { + case KBTS_FOURCC('h', 'e', 'a', 'd'): + { + kbts_head *Head = (kbts_head *)TableBase; + kbts_ByteSwapArray16(&Head->Major, 2); + kbts_ByteSwapArray32(&Head->Revision, 2); + // We do not swap the magic number. + kbts_ByteSwapArray16(&Head->Flags, 2); + // We do not swap file times. + kbts_ByteSwapArray16((kbts_u16 *)&Head->XMin, 9); + + Font->Head = Head; + } break; + + case KBTS_FOURCC('c', 'm', 'a', 'p'): + { + kbts_cmap *Cmap = (kbts_cmap *)TableBase; + Cmap->Version = kbts_ByteSwap16(Cmap->Version); + Cmap->TableCount = kbts_ByteSwap16(Cmap->TableCount); + + kbts_encoding_record *Records = KBTS_POINTER_AFTER(kbts_encoding_record, Cmap); + + KBTS_FOR(It, 0, Cmap->TableCount) + { + kbts_encoding_record *Record = &Records[It]; + Record->EncodingId = kbts_ByteSwap16(Record->EncodingId); + Record->PlatformId = kbts_ByteSwap16(Record->PlatformId); + Record->SubtableOffset = kbts_ByteSwap32(Record->SubtableOffset); + } + + kbts_cmap_subtable_pointer PreferredSubtable = KBTS_ZERO; + kbts_u16 PreferredFormat = 1; + KBTS_FOR(It, 0, Cmap->TableCount) + { + kbts_cmap_subtable_pointer Subtable = kbts_GetCmapSubtable(Cmap, It); + kbts_u16 Format = kbts_ByteSwap16(*Subtable.Subtable); + + if(Format == 14) + { + Font->Cmap14 = (kbts_cmap_14 *)Subtable.Subtable; + } + else if(!PreferredSubtable.Subtable) + { + PreferredSubtable = Subtable; + } + else + { + kbts_u16 Precedence = kbts_CmapFormatPrecedence[Format]; + kbts_u16 PreferredPrecedence = kbts_CmapFormatPrecedence[PreferredFormat]; + + if((Precedence > PreferredPrecedence) || ((Precedence == PreferredPrecedence) && (Subtable.PlatformId == 3))) + { + PreferredSubtable = Subtable; + PreferredFormat = Format; + } + } + } + + *PreferredSubtable.Subtable = kbts_ByteSwap16(*PreferredSubtable.Subtable); + switch(*PreferredSubtable.Subtable) + { + case 0: + { + kbts_cmap_0 *Cmap0 = (kbts_cmap_0 *)PreferredSubtable.Subtable; + Cmap0->Length = kbts_ByteSwap16(Cmap0->Length); + Cmap0->Language = kbts_ByteSwap16(Cmap0->Language); + } + break; + + case 2: + { + kbts_cmap_2 *Cmap2 = (kbts_cmap_2 *)PreferredSubtable.Subtable; + kbts_ByteSwapArray16(&Cmap2->Length, 258); + + kbts_un SubHeaderCount = 0; + KBTS_FOR(It, 0, 256) + { + kbts_un SubHeaderIndex = Cmap2->SubHeaderKeys[It]; + SubHeaderCount = KBTS_MAX(SubHeaderCount, SubHeaderIndex + 1); + } + + kbts_sub_header *SubHeaders = KBTS_POINTER_AFTER(kbts_sub_header, Cmap2); + kbts_ByteSwapArray16(&SubHeaders->FirstCode, 4 * SubHeaderCount); + + kbts_u16 *GlyphIds = (kbts_u16 *)(SubHeaders + SubHeaderCount); + + kbts_sn GlyphIdCount = 0; + KBTS_FOR(It, 0, SubHeaderCount) + { + kbts_sub_header *SubHeader = &SubHeaders[It]; + + kbts_u16 *OnePastLastGlyphId = &SubHeader->IdRangeOffset + SubHeader->IdRangeOffset / 2 + SubHeader->EntryCount; + GlyphIdCount = KBTS_MAX(GlyphIdCount, OnePastLastGlyphId - GlyphIds); + } + + kbts_ByteSwapArray16(GlyphIds, (kbts_un)GlyphIdCount); + } + break; + + case 4: + { + kbts_cmap_4 *Cmap4 = (kbts_cmap_4 *)PreferredSubtable.Subtable; + kbts_ByteSwapArray16(&Cmap4->Length, 5); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Cmap4), Cmap4->SegmentCountTimesTwo * 2 + 1); + + kbts_un SegmentCount = Cmap4->SegmentCountTimesTwo / 2; + kbts_u16 *EndCodes = KBTS_POINTER_AFTER(kbts_u16, Cmap4); + kbts_u16 *StartCodes = EndCodes + SegmentCount + 1; + kbts_s16 *IdDeltas = (kbts_s16 *)(StartCodes + SegmentCount); + kbts_u16 *IdRangeOffsets = (kbts_u16 *)(IdDeltas + SegmentCount); + kbts_u16 *GlyphIds = IdRangeOffsets + SegmentCount; + + kbts_sn GlyphIdCount = 0; + + KBTS_FOR(SegmentIndex, 0, SegmentCount) + { + kbts_u16 Offset = IdRangeOffsets[SegmentIndex]; + + if(Offset) + { + kbts_u16 *IdLookup = &IdRangeOffsets[SegmentIndex] + (EndCodes[SegmentIndex] - StartCodes[SegmentIndex] + 1) + Offset / 2; + + GlyphIdCount = KBTS_MAX(GlyphIdCount, (IdLookup - GlyphIds)); + } + } + + kbts_ByteSwapArray16(GlyphIds, (kbts_un)GlyphIdCount); + } + break; + + case 6: + { + kbts_cmap_6 *Cmap6 = (kbts_cmap_6 *)PreferredSubtable.Subtable; + kbts_ByteSwapArray16(&Cmap6->Length, 4); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, Cmap6), Cmap6->EntryCount); + } + break; + + case 12: + { + kbts_cmap_12_13 *Cmap12 = (kbts_cmap_12_13 *)PreferredSubtable.Subtable; + kbts_ByteSwapArray32(&Cmap12->Length, 3); + kbts_ByteSwapArray32(KBTS_POINTER_AFTER(kbts_u32, Cmap12), Cmap12->GroupCount * 3); + } + break; + } + + Font->Cmap = PreferredSubtable.Subtable; + } + break; + + case KBTS_FOURCC('G', 'D', 'E', 'F'): + { + Font->Gdef = (kbts_gdef *)TableBase; + GdefSize = Table->Length; + + kbts_gdef *Gdef = Font->Gdef; + + kbts_ByteSwapArray16(&Gdef->Major, 6); + + if(Gdef->Minor >= 2) + { + Gdef->MarkGlyphSetsDefinitionOffset = kbts_ByteSwap16(Gdef->MarkGlyphSetsDefinitionOffset); + + if(Gdef->Minor == 3) + { + // @Incomplete + Gdef->ItemVariationStoreOffset = kbts_ByteSwap32(Gdef->ItemVariationStoreOffset); + } + } + } + break; + + case KBTS_FOURCC('G', 'S', 'U', 'B'): + case KBTS_FOURCC('G', 'P', 'O', 'S'): + { + kbts_un Index = (Table->Tag == KBTS_FOURCC('G', 'S', 'U', 'B')) ? KBTS_SHAPING_TABLE_GSUB : KBTS_SHAPING_TABLE_GPOS; + Font->ShapingTables[Index] = (kbts_gsub_gpos *)TableBase; + ShapingTableSizes[Index] = Table->Length; + } + break; + + case KBTS_FOURCC('h', 'h', 'e', 'a'): + case KBTS_FOURCC('v', 'h', 'e', 'a'): + { + kbts_un Orientation = Table->Tag == KBTS_FOURCC('h', 'h', 'e', 'a') ? KBTS_ORIENTATION_HORIZONTAL : KBTS_ORIENTATION_VERTICAL; + Font->Hea[Orientation] = (kbts_hea *)TableBase; + kbts_ByteSwapArray16((kbts_u16 *)Font->Hea[Orientation], Table->Length / sizeof(kbts_u16)); + } + break; + + case KBTS_FOURCC('h', 'm', 't', 'x'): + case KBTS_FOURCC('v', 'm', 't', 'x'): + { + kbts_un Orientation = Table->Tag == KBTS_FOURCC('h', 'm', 't', 'x') ? KBTS_ORIENTATION_HORIZONTAL : KBTS_ORIENTATION_VERTICAL; + Font->Mtx[Orientation] = KBTS_POINTER_OFFSET(kbts_u16, Font->FileBase, Table->Offset); + kbts_ByteSwapArray16(Font->Mtx[Orientation], Table->Length / sizeof(kbts_u16)); + } + break; + + case KBTS_FOURCC('m', 'a', 'x', 'p'): + { + Font->Maxp = KBTS_POINTER_OFFSET(kbts_maxp, Font->FileBase, Table->Offset); + Font->Maxp->Major = kbts_ByteSwap16(Font->Maxp->Major); + Font->Maxp->Minor = kbts_ByteSwap16(Font->Maxp->Minor); + + kbts_un U16Count = 0; + if(!Font->Maxp->Major && (Font->Maxp->Minor == 0x5000)) + { + U16Count = 1; + } + else if((Font->Maxp->Major == 1) && !Font->Maxp->Minor) + { + U16Count = 14; + } + + kbts_ByteSwapArray16(&Font->Maxp->GlyphCount, U16Count); + Font->GlyphCount = Font->Maxp->GlyphCount; + } + break; + } + } + + kbts_un Result = sizeof(kbts_u32) * ((ShapingTableSizes[KBTS_SHAPING_TABLE_GSUB] + ShapingTableSizes[KBTS_SHAPING_TABLE_GPOS] + GdefSize) / 2); + return (kbts_u32)Result; +} + +KBTS_EXPORT kbts_un kbts_ReadFontData(kbts_font *Font, void *Scratch, kbts_un ScratchSize) +{ + kbts_byteswap_context ByteSwapContext = KBTS_ZERO; + ByteSwapContext.FileBase = Font->FileBase; + ByteSwapContext.PointerCapacity = ScratchSize / sizeof(kbts_u32); + ByteSwapContext.Pointers = (kbts_u32 *)Scratch; + + kbts_un TotalLookupCount = 0; + kbts_un TotalSubtableCount = 0; + + kbts_gdef *Gdef = Font->Gdef; + if(Gdef) + { + if(Gdef->ClassDefinitionOffset) + { + kbts_u16 *ClassDefBase = KBTS_POINTER_OFFSET(kbts_u16, Gdef, Gdef->ClassDefinitionOffset); + kbts_ByteSwapClassDefinition(&ByteSwapContext, ClassDefBase); + } + + if(Gdef->MarkAttachmentClassDefinitionOffset) + { + kbts_u16 *ClassDefBase = KBTS_POINTER_OFFSET(kbts_u16, Gdef, Gdef->MarkAttachmentClassDefinitionOffset); + kbts_ByteSwapClassDefinition(&ByteSwapContext, ClassDefBase); + } + + if((Gdef->Minor >= 2) && Gdef->MarkGlyphSetsDefinitionOffset) + { + kbts_mark_glyph_sets *MarkGlyphSets = KBTS_POINTER_OFFSET(kbts_mark_glyph_sets, Gdef, Gdef->MarkGlyphSetsDefinitionOffset); + kbts_ByteSwapArray16(&MarkGlyphSets->Format, 2); + if(MarkGlyphSets->Format == 1) + { + kbts_u32 *CoverageOffsets = KBTS_POINTER_AFTER(kbts_u32, MarkGlyphSets); + kbts_ByteSwapArray32(CoverageOffsets, MarkGlyphSets->MarkGlyphSetCount); + + KBTS_FOR(MarkGlyphSetIndex, 0, MarkGlyphSets->MarkGlyphSetCount) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, MarkGlyphSets, CoverageOffsets[MarkGlyphSetIndex]); + kbts_ByteSwapCoverage(&ByteSwapContext, Coverage); + } + } + } + } + + kbts_gsub_gpos *Gsub = Font->ShapingTables[KBTS_SHAPING_TABLE_GSUB]; + if(Gsub) + { + kbts_ByteSwapGsubGposCommon(&ByteSwapContext, Gsub); + + kbts_lookup_list *LookupList = kbts_GetLookupList(Gsub); + LookupList->Count = kbts_ByteSwap16(LookupList->Count); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, LookupList), LookupList->Count); + + TotalLookupCount += LookupList->Count; + + KBTS_FOR(LookupIndex, 0, LookupList->Count) + { + kbts_lookup *PackedLookup = kbts_GetLookup(LookupList, LookupIndex); + + KBTS_DUMPF("GSUB Lookup %llu:\n", LookupIndex); + + if(kbts_ByteSwapLookup(&ByteSwapContext, PackedLookup)) + { + kbts_unpacked_lookup Lookup = kbts_UnpackLookup(Font->Gdef, PackedLookup); + KBTS_DUMPF(" Flags %u\n", Lookup.Flags); + + KBTS_FOR(SubstitutionIndex, 0, Lookup.SubtableCount) + { + kbts_u16 *Base = KBTS_POINTER_OFFSET(kbts_u16, PackedLookup, Lookup.SubtableOffsets[SubstitutionIndex]); + + KBTS_DUMPF(" Subtable %llu:\n", SubstitutionIndex); + + kbts_ByteSwapGsubLookupSubtable(&ByteSwapContext, Lookup.Type, Base); + } + } + + TotalSubtableCount += PackedLookup->SubtableCount; + } + } + + kbts_gsub_gpos *Gpos = Font->ShapingTables[KBTS_SHAPING_TABLE_GPOS]; + if(Gpos) + { + kbts_ByteSwapGsubGposCommon(&ByteSwapContext, Gpos); + + kbts_lookup_list *LookupList = kbts_GetLookupList(Gpos); + LookupList->Count = kbts_ByteSwap16(LookupList->Count); + kbts_ByteSwapArray16(KBTS_POINTER_AFTER(kbts_u16, LookupList), LookupList->Count); + + TotalLookupCount += LookupList->Count; + + KBTS_FOR(LookupIndex, 0, LookupList->Count) + { + kbts_lookup *PackedLookup = kbts_GetLookup(LookupList, LookupIndex); + + KBTS_DUMPF("GPOS Lookup %llu:\n", LookupIndex); + + if(kbts_ByteSwapLookup(&ByteSwapContext, PackedLookup)) + { + kbts_unpacked_lookup Lookup = kbts_UnpackLookup(Font->Gdef, PackedLookup); + + KBTS_DUMPF(" Flags %x\n", Lookup.Flags); + + KBTS_FOR(SubstitutionIndex, 0, Lookup.SubtableCount) + { + kbts_u16 *Base = KBTS_POINTER_OFFSET(kbts_u16, PackedLookup, Lookup.SubtableOffsets[SubstitutionIndex]); + + KBTS_DUMPF(" Subtable %llu:\n", (kbts_un)SubstitutionIndex); + + kbts_ByteSwapGposLookupSubtable(&ByteSwapContext, LookupList, Lookup.Type, Base); + } + } + + TotalSubtableCount += PackedLookup->SubtableCount; + } + } + + // At this point, we are done byteswapping the file, so we can start reusing the scratch memory. + + if(Gsub) + { + kbts_lookup_list *LookupList = kbts_GetLookupList(Gsub); + + // Figure out lookup recursion depth and other useful metrics. + // Most of these are not used yet, but would be useful for a streaming shaper and/or to inform GLYPH_BUFFER_GROW_MARGIN. + kbts_un MaximumBacktrackWithoutSkippingGlyphs = 0; + kbts_un MaximumLookaheadWithoutSkippingGlyphs = 0; + kbts_un MaximumLookupStackSize = 1; + kbts_un MaximumSubstitutionOutputSize = 1; + kbts_un MaximumInputSequenceLength = 1; + + // We are done byteswapping the file, so we can reclaim the scratch memory. + kbts_lookup_info_frame *Frames = (kbts_lookup_info_frame *)Scratch; + kbts_un FrameCapacity = ScratchSize / sizeof(kbts_lookup_info_frame); + + KBTS_FOR(RootLookupIndex, 0, LookupList->Count) + { + kbts_lookup *PackedRootLookup = kbts_GetLookup(LookupList, RootLookupIndex); + kbts_unpacked_lookup RootLookup = kbts_UnpackLookup(Gdef, PackedRootLookup); + + KBTS_FOR(RootSubtableIndex, 0, RootLookup.SubtableCount) + { + kbts_un FrameCount = 0; + { + kbts_lookup_info_frame First = KBTS_ZERO; + First.LookupType = RootLookup.Type; + First.Base = KBTS_POINTER_OFFSET(kbts_u16, PackedRootLookup, RootLookup.SubtableOffsets[RootSubtableIndex]); + First.StackSize = 1; + if(FrameCount < FrameCapacity) + { + Frames[FrameCount++] = First; + } + else + { + Font->Error = 1; + goto DoneGatheringLookupInfo; + } + } + + while(FrameCount) + { + kbts_lookup_info_frame Frame = Frames[--FrameCount]; + kbts_u16 LookupType = Frame.LookupType; + kbts_u16 *Base = Frame.Base; + kbts_u32 LookaheadOffset = Frame.LookaheadOffset; + kbts_u32 StackSize = Frame.StackSize; + + MaximumLookupStackSize = KBTS_MAX(MaximumLookupStackSize, StackSize); + + while(LookupType == 7) + { + kbts_extension *Subst = (kbts_extension *)Base; + + Base = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->Offset); + LookupType = Subst->LookupType; + } + + kbts_u32 Result = 1; + + switch(LookupType) + { + case 2: + { + kbts_multiple_substitution *Subst = (kbts_multiple_substitution *)Base; + KBTS_FOR(SequenceIndex, 0, Subst->SequenceCount) + { + kbts_sequence *Sequence = kbts_GetSequence(Subst, SequenceIndex); + + MaximumSubstitutionOutputSize = KBTS_MAX(MaximumSubstitutionOutputSize, Sequence->GlyphCount); + } + } break; + + case 4: + { + kbts_ligature_substitution *Subst = (kbts_ligature_substitution *)Base; + + KBTS_FOR(SetIndex, 0, Subst->LigatureSetCount) + { + kbts_ligature_set *Set = kbts_GetLigatureSet(Subst, SetIndex); + + KBTS_FOR(LigatureIndex, 0, Set->Count) + { + kbts_ligature *Ligature = kbts_GetLigature(Set, LigatureIndex); + + MaximumLookaheadWithoutSkippingGlyphs = KBTS_MAX(MaximumLookaheadWithoutSkippingGlyphs, LookaheadOffset + Ligature->ComponentCount - 1); + } + } + } break; + + case 5: + { + if(Base[0] == 1) + { + kbts_sequence_context_1 *Subst = (kbts_sequence_context_1 *)Base; + + KBTS_FOR(SetIndex, 0, Subst->SeqRuleSetCount) + { + kbts_sequence_rule_set *Set = kbts_GetSequenceRuleSet(Subst, SetIndex); + + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_sequence_rule *Rule = kbts_GetSequenceRule(Set, RuleIndex); + + MaximumLookaheadWithoutSkippingGlyphs = KBTS_MAX(MaximumLookaheadWithoutSkippingGlyphs, LookaheadOffset + Rule->GlyphCount - 1); + MaximumInputSequenceLength = KBTS_MAX(MaximumInputSequenceLength, Rule->GlyphCount); + + kbts_u16 *InputSequence = KBTS_POINTER_AFTER(kbts_u16, Rule); + kbts_sequence_lookup_record *Records = (kbts_sequence_lookup_record *)(InputSequence + Rule->GlyphCount - 1); + KBTS_FOR(RecordIndex, 0, Rule->SequenceLookupCount) + { + kbts_sequence_lookup_record *Record = &Records[RecordIndex]; + if(!kbts_PushLookup(Gdef, Frames, &FrameCount, FrameCapacity, kbts_GetLookup(LookupList, Record->LookupListIndex), LookaheadOffset + Record->SequenceIndex, StackSize + RecordIndex + 1)) + { + Font->Error = 1; + goto DoneGatheringLookupInfo; + } + } + } + } + } + else if(Base[0] == 2) + { + kbts_sequence_context_2 *Subst = (kbts_sequence_context_2 *)Base; + + KBTS_FOR(SetIndex, 0, Subst->ClassSequenceRuleSetCount) + { + kbts_class_sequence_rule_set *Set = kbts_GetClassSequenceRuleSet(Subst, SetIndex); + + if(Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_class_sequence_rule *Rule = kbts_GetClassSequenceRule(Set, RuleIndex); + + MaximumLookaheadWithoutSkippingGlyphs = KBTS_MAX(MaximumLookaheadWithoutSkippingGlyphs, LookaheadOffset + Rule->GlyphCount - 1); + MaximumInputSequenceLength = KBTS_MAX(MaximumInputSequenceLength, Rule->GlyphCount); + + kbts_u16 *InputSequence = KBTS_POINTER_AFTER(kbts_u16, Rule); + kbts_sequence_lookup_record *Records = (kbts_sequence_lookup_record *)(InputSequence + Rule->GlyphCount - 1); + + KBTS_FOR(RecordIndex, 0, Rule->SequenceLookupCount) + { + kbts_sequence_lookup_record *Record = &Records[RecordIndex]; + if(!kbts_PushLookup(Gdef, Frames, &FrameCount, FrameCapacity, kbts_GetLookup(LookupList, Record->LookupListIndex), LookaheadOffset + Record->SequenceIndex, StackSize + RecordIndex + 1)) + { + Font->Error = 1; + goto DoneGatheringLookupInfo; + } + } + } + } + } + } + else if(Base[0] == 3) + { + kbts_sequence_context_3 *Subst = (kbts_sequence_context_3 *)Base; + + MaximumLookaheadWithoutSkippingGlyphs = KBTS_MAX(MaximumLookaheadWithoutSkippingGlyphs, LookaheadOffset + Subst->GlyphCount - 1); + MaximumInputSequenceLength = KBTS_MAX(MaximumInputSequenceLength, Subst->GlyphCount); + + kbts_u16 *CoverageOffsets = KBTS_POINTER_AFTER(kbts_u16, Subst); + kbts_sequence_lookup_record *Records = (kbts_sequence_lookup_record *)(CoverageOffsets + Subst->GlyphCount); + + KBTS_FOR(RecordIndex, 0, Subst->SequenceLookupCount) + { + kbts_sequence_lookup_record *Record = &Records[RecordIndex]; + if(!kbts_PushLookup(Gdef, Frames, &FrameCount, FrameCapacity, kbts_GetLookup(LookupList, Record->LookupListIndex), LookaheadOffset + Record->SequenceIndex, StackSize + RecordIndex + 1)) + { + Font->Error = 1; + goto DoneGatheringLookupInfo; + } + } + } + } break; + + case 6: + { + if(Base[0] == 1) + { + kbts_chained_sequence_context_1 *Subst = (kbts_chained_sequence_context_1 *)Base; + + KBTS_FOR(SetIndex, 0, Subst->ChainedSequenceRuleSetCount) + { + kbts_chained_sequence_rule_set *Set = kbts_GetChainedSequenceRuleSet(Subst, SetIndex); + + if(Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_chained_sequence_rule *Rule = kbts_GetChainedSequenceRule(Set, RuleIndex); + kbts_unpacked_chained_sequence_rule Unpacked = kbts_UnpackChainedSequenceRule(Rule, 0); + + MaximumBacktrackWithoutSkippingGlyphs = KBTS_MAX(MaximumBacktrackWithoutSkippingGlyphs, Unpacked.BacktrackCount); + MaximumLookaheadWithoutSkippingGlyphs = KBTS_MAX(MaximumLookaheadWithoutSkippingGlyphs, LookaheadOffset + Unpacked.LookaheadCount); + MaximumInputSequenceLength = KBTS_MAX(MaximumInputSequenceLength, Unpacked.InputCount); + + KBTS_FOR(RecordIndex, 0, Unpacked.RecordCount) + { + kbts_sequence_lookup_record *Record = &Unpacked.Records[RecordIndex]; + if(!kbts_PushLookup(Gdef, Frames, &FrameCount, FrameCapacity, kbts_GetLookup(LookupList, Record->LookupListIndex), LookaheadOffset + Record->SequenceIndex, StackSize + RecordIndex + 1)) + { + Font->Error = 1; + goto DoneGatheringLookupInfo; + } + } + } + } + } + } + else if(Base[0] == 2) + { + kbts_chained_sequence_context_2 *Subst = (kbts_chained_sequence_context_2 *)Base; + + KBTS_FOR(SetIndex, 0, Subst->ChainedClassSequenceRuleSetCount) + { + // @Duplication with 6.1. + kbts_chained_sequence_rule_set *Set = kbts_GetChainedClassSequenceRuleSet(Subst, SetIndex); + + if(Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_chained_sequence_rule *Rule = kbts_GetChainedSequenceRule(Set, RuleIndex); + kbts_unpacked_chained_sequence_rule Unpacked = kbts_UnpackChainedSequenceRule(Rule, 0); + + MaximumBacktrackWithoutSkippingGlyphs = KBTS_MAX(MaximumBacktrackWithoutSkippingGlyphs, Unpacked.BacktrackCount); + MaximumLookaheadWithoutSkippingGlyphs = KBTS_MAX(MaximumLookaheadWithoutSkippingGlyphs, LookaheadOffset + Unpacked.LookaheadCount); + MaximumInputSequenceLength = KBTS_MAX(MaximumInputSequenceLength, Unpacked.InputCount); + + KBTS_FOR(RecordIndex, 0, Unpacked.RecordCount) + { + kbts_sequence_lookup_record *Record = &Unpacked.Records[RecordIndex]; + if(!kbts_PushLookup(Gdef, Frames, &FrameCount, FrameCapacity, kbts_GetLookup(LookupList, Record->LookupListIndex), LookaheadOffset + Record->SequenceIndex, StackSize + RecordIndex + 1)) + { + Font->Error = 1; + goto DoneGatheringLookupInfo; + } + } + } + } + } + } + else if(Base[0] == 3) + { + kbts_chained_sequence_context_3 *Subst = (kbts_chained_sequence_context_3 *)Base; + kbts_unpacked_chained_sequence_context_3 Unpacked = kbts_UnpackChainedSequenceContext3(Subst, 0); + + MaximumBacktrackWithoutSkippingGlyphs = KBTS_MAX(MaximumBacktrackWithoutSkippingGlyphs, Unpacked.BacktrackCount); + MaximumLookaheadWithoutSkippingGlyphs = KBTS_MAX(MaximumLookaheadWithoutSkippingGlyphs, LookaheadOffset + Unpacked.LookaheadCount); + MaximumInputSequenceLength = KBTS_MAX(MaximumInputSequenceLength, Unpacked.InputCount); + + KBTS_FOR(RecordIndex, 0, Unpacked.RecordCount) + { + kbts_sequence_lookup_record *Record = &Unpacked.Records[RecordIndex]; + if(!kbts_PushLookup(Gdef, Frames, &FrameCount, FrameCapacity, kbts_GetLookup(LookupList, Record->LookupListIndex), LookaheadOffset + Record->SequenceIndex, StackSize + RecordIndex + 1)) + { + Font->Error = 1; + goto DoneGatheringLookupInfo; + } + } + } + } break; + + case 8: + { + kbts_reverse_chain_substitution *Subst = (kbts_reverse_chain_substitution *)Base; + kbts_unpacked_reverse_chain_substitution Unpacked = kbts_UnpackReverseChainSubstitution(Subst, 0); + + MaximumBacktrackWithoutSkippingGlyphs = KBTS_MAX(MaximumBacktrackWithoutSkippingGlyphs, Unpacked.BacktrackCount); + MaximumLookaheadWithoutSkippingGlyphs = KBTS_MAX(MaximumLookaheadWithoutSkippingGlyphs, LookaheadOffset + Unpacked.LookaheadCount); + } break; + } + } + } + } + + DoneGatheringLookupInfo:; + Font->LookupInfo.MaximumBacktrackWithoutSkippingGlyphs = (kbts_u32)MaximumBacktrackWithoutSkippingGlyphs; + Font->LookupInfo.MaximumLookaheadWithoutSkippingGlyphs = (kbts_u32)MaximumLookaheadWithoutSkippingGlyphs; + Font->LookupInfo.MaximumSubstitutionOutputSize = (kbts_u32)MaximumSubstitutionOutputSize; + Font->LookupInfo.MaximumInputSequenceLength = (kbts_u32)MaximumInputSequenceLength; + Font->LookupInfo.MaximumLookupStackSize = (kbts_u32)MaximumLookupStackSize; + } + + Font->LookupCount = (kbts_u32)TotalLookupCount; + Font->SubtableCount = (kbts_u32)TotalSubtableCount; + + kbts_un GlyphLookupMatrixSizeInBytes = ((((TotalLookupCount * Font->GlyphCount) + 7) / 8) + 3) & ~3; + kbts_un GlyphLookupSubtableMatrixSizeInBytes = ((((TotalSubtableCount * Font->GlyphCount) + 7) / 8) + 3) & ~3; + kbts_un Result = GlyphLookupMatrixSizeInBytes + GlyphLookupSubtableMatrixSizeInBytes + sizeof(kbts_u32) * TotalLookupCount + sizeof(kbts_lookup_subtable_info) * TotalSubtableCount; + return Result; +} + +KBTS_EXPORT int kbts_PostReadFontInitialize(kbts_font *Font, void *Memory, kbts_un MemorySize) +{ + if(kbts_FontIsValid(Font) && Font->Maxp) + { + // Bake table filters. + kbts_un GlyphCount = Font->GlyphCount; + + kbts_un GlyphLookupMatrixSizeInBits = Font->LookupCount * GlyphCount; + kbts_un GlyphLookupMatrixSizeInBytes = (GlyphLookupMatrixSizeInBits + 7) / 8; + GlyphLookupMatrixSizeInBytes = (GlyphLookupMatrixSizeInBytes + 3) & ~3; // Align to u32 + + kbts_un GlyphLookupSubtableMatrixSizeInBits = Font->SubtableCount * GlyphCount; + kbts_un GlyphLookupSubtableMatrixSizeInBytes = (GlyphLookupSubtableMatrixSizeInBits + 7) / 8; + GlyphLookupSubtableMatrixSizeInBytes = (GlyphLookupSubtableMatrixSizeInBytes + 3) & ~3; // Align to u32 + + memset(Memory, 0, MemorySize); + + kbts_u32 *GlyphLookupMatrix = (kbts_u32 *)Memory; + kbts_u32 *GlyphLookupSubtableMatrix = KBTS_POINTER_OFFSET(kbts_u32, GlyphLookupMatrix, GlyphLookupMatrixSizeInBytes); + kbts_u32 *LookupSubtableIndexOffsets = KBTS_POINTER_OFFSET(kbts_u32, GlyphLookupSubtableMatrix, GlyphLookupSubtableMatrixSizeInBytes); + kbts_lookup_subtable_info *SubtableInfos = KBTS_POINTER_OFFSET(kbts_lookup_subtable_info, LookupSubtableIndexOffsets, sizeof(kbts_u32) * Font->LookupCount); + kbts_un GposLookupIndexOffset = 0; + + kbts_un RunningLookupIndex = 0; + kbts_un RunningSubtableIndex = 0; + + KBTS_FOR(ShapingTableIndex, 0, KBTS_SHAPING_TABLE_COUNT) + { + kbts_gsub_gpos *ShapingTable = Font->ShapingTables[ShapingTableIndex]; + + if(ShapingTableIndex == KBTS_SHAPING_TABLE_GPOS) + { + GposLookupIndexOffset = RunningLookupIndex; + } + + if(ShapingTable) + { + kbts_lookup_list *LookupList = kbts_GetLookupList(ShapingTable); + KBTS_FOR(LookupIndex, 0, LookupList->Count) + { + kbts_lookup *PackedLookup = kbts_GetLookup(LookupList, LookupIndex); + kbts_unpacked_lookup Lookup = kbts_UnpackLookup(Font->Gdef, PackedLookup); + + LookupSubtableIndexOffsets[RunningLookupIndex] = (kbts_u32)RunningSubtableIndex; + + KBTS_FOR(SubtableIndex, 0, Lookup.SubtableCount) + { + kbts_lookup_subtable_info SubtableInfo = KBTS_ZERO; + kbts_u32 LookupType = Lookup.Type; + kbts_u16 *Base = KBTS_POINTER_OFFSET(kbts_u16, PackedLookup, Lookup.SubtableOffsets[SubtableIndex]); + + while(((ShapingTableIndex == KBTS_SHAPING_TABLE_GSUB) && (LookupType == 7)) || + ((ShapingTableIndex == KBTS_SHAPING_TABLE_GPOS) && (LookupType == 9))) + { + kbts_extension *Extension = (kbts_extension *)Base; + LookupType = Extension->LookupType; + Base = KBTS_POINTER_OFFSET(kbts_u16, Extension, Extension->Offset); + } + + KBTS_FOR(GlyphIndex, 0, GlyphCount) + { + kbts_glyph Glyph = KBTS_ZERO; + Glyph.Id = (kbts_u16)GlyphIndex; + Glyph.Classes = kbts_GlyphClasses(Font, Glyph.Id); + + // @Duplication + kbts_cover_glyph_result Cover = KBTS_ZERO; + Cover.Valid = kbts_GlyphPassesLookupFilter(&Glyph, &Lookup); + if(Cover.Valid && kbts_LookupBeginsWithCoverage((kbts_shaping_table)ShapingTableIndex, Lookup.Type, Base[0])) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Base, Base[1]); + Cover = kbts_CoverGlyph(Coverage, Glyph.Id); + } + + // The "primary" slot here refers to the "current glyph" when matching. + // It is the first glyph in the input sequence, not counting backtrack. + // We use the primary slot for per-feature filtering. + int InPrimary = Cover.Valid; + // The secondary slot is anything else: input sequence, lookahead, backtrack, ligature components. + // They are used for subtable filtering. + int InSecondary = 0; + + if((ShapingTableIndex == KBTS_SHAPING_TABLE_GSUB) && (LookupType == 4)) + { + kbts_ligature_substitution *Subst = (kbts_ligature_substitution *)Base; + KBTS_FOR(SetIndex, 0, Subst->LigatureSetCount) + { + kbts_ligature_set *Set = kbts_GetLigatureSet(Subst, SetIndex); + KBTS_FOR(LigatureIndex, 0, Set->Count) + { + kbts_ligature *Ligature = kbts_GetLigature(Set, LigatureIndex); + kbts_u16 *Ids = KBTS_POINTER_AFTER(kbts_u16, Ligature); + + SubtableInfo.MinimumFollowupPlusOne = KBTS_MIN(SubtableInfo.MinimumFollowupPlusOne - 1, Ligature->ComponentCount - 1) + 1; + + KBTS_FOR(IdIndex, 1, Ligature->ComponentCount) + { + kbts_u16 LigatureGlyphId = Ids[IdIndex - 1]; + if(LigatureGlyphId == Glyph.Id) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + } + } + } + else if(((ShapingTableIndex == KBTS_SHAPING_TABLE_GSUB) && (LookupType == 5)) || + ((ShapingTableIndex == KBTS_SHAPING_TABLE_GPOS) && (LookupType == 7))) + { + if(Base[0] == 1) + { + kbts_sequence_context_1 *Subst = (kbts_sequence_context_1 *)Base; + + KBTS_FOR(SetIndex, 0, Subst->SeqRuleSetCount) + { + kbts_sequence_rule_set *Set = kbts_GetSequenceRuleSet(Subst, SetIndex); + + if(Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_sequence_rule *Rule = kbts_GetSequenceRule(Set, RuleIndex); + SubtableInfo.MinimumFollowupPlusOne = KBTS_MIN(SubtableInfo.MinimumFollowupPlusOne - 1, Rule->GlyphCount - 1) + 1; + + kbts_u16 *SequenceIds = KBTS_POINTER_AFTER(kbts_u16, Rule); + KBTS_FOR(InputIndex, 1, Rule->GlyphCount) + { + kbts_u16 SequenceId = SequenceIds[InputIndex - 1]; + if(SequenceId == Glyph.Id) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + } + } + } + } + else if(Base[0] == 2) + { + kbts_sequence_context_2 *Subst = (kbts_sequence_context_2 *)Base; + kbts_u16 *ClassDefBase = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->ClassDefOffset); + kbts_u32 Class = kbts_GlyphClassFromTable(ClassDefBase, Glyph.Id); + + KBTS_FOR(SetIndex, 0, Subst->ClassSequenceRuleSetCount) + { + kbts_class_sequence_rule_set *Set = kbts_GetClassSequenceRuleSet(Subst, SetIndex); + if(Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_class_sequence_rule *Rule = kbts_GetClassSequenceRule(Set, RuleIndex); + kbts_u16 *SequenceClasses = KBTS_POINTER_AFTER(kbts_u16, Rule); + + SubtableInfo.MinimumFollowupPlusOne = KBTS_MIN(SubtableInfo.MinimumFollowupPlusOne - 1, Rule->GlyphCount - 1) + 1; + + KBTS_FOR(SequenceIndex, 1, Rule->GlyphCount) + { + if(SequenceClasses[SequenceIndex - 1] == Class) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + } + } + } + } + else if(Base[0] == 3) + { + kbts_sequence_context_3 *Subst = (kbts_sequence_context_3 *)Base; + kbts_u16 *CoverageOffsets = KBTS_POINTER_AFTER(kbts_u16, Subst); + + SubtableInfo.MinimumFollowupPlusOne = KBTS_MIN(SubtableInfo.MinimumFollowupPlusOne - 1, Subst->GlyphCount - 1) + 1; + + InPrimary = 0; + KBTS_FOR(CoverageIndex, 0, Subst->GlyphCount) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Subst, CoverageOffsets[CoverageIndex]); + kbts_cover_glyph_result SequenceCover = kbts_CoverGlyph(Coverage, Glyph.Id); + if(SequenceCover.Valid) + { + if(!CoverageIndex) + { + InPrimary = 1; + } + else + { + InSecondary = 1; + } + goto DoneCheckingForInclusion; + } + } + } + } + else if(((ShapingTableIndex == KBTS_SHAPING_TABLE_GSUB) && (LookupType == 6)) || + ((ShapingTableIndex == KBTS_SHAPING_TABLE_GPOS) && (LookupType == 8))) + { + if(Base[0] == 1) + { + kbts_chained_sequence_context_1 *Subst = (kbts_chained_sequence_context_1 *)Base; + kbts_u16 *ChainedSequenceRuleSetOffsets = KBTS_POINTER_AFTER(kbts_u16, Subst); + + KBTS_FOR(SetIndex, 0, Subst->ChainedSequenceRuleSetCount) + { + kbts_chained_sequence_rule_set *Set = KBTS_POINTER_OFFSET(kbts_chained_sequence_rule_set, Subst, ChainedSequenceRuleSetOffsets[SetIndex]); + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_chained_sequence_rule *Rule = kbts_GetChainedClassSequenceRule(Set, RuleIndex); + kbts_unpacked_chained_sequence_rule Unpacked = kbts_UnpackChainedSequenceRule(Rule, 0); + + SubtableInfo.MinimumBacktrackPlusOne = KBTS_MIN(SubtableInfo.MinimumBacktrackPlusOne - 1, Unpacked.BacktrackCount) + 1; + SubtableInfo.MinimumFollowupPlusOne = KBTS_MIN(SubtableInfo.MinimumFollowupPlusOne - 1, Unpacked.InputCount - 1 + Unpacked.LookaheadCount) + 1; + + KBTS_FOR(BacktrackIndex, 0, Unpacked.BacktrackCount) + { + if(Unpacked.Backtrack[BacktrackIndex] == Glyph.Id) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + KBTS_FOR(InputIndex, 1, Unpacked.InputCount) + { + if(Unpacked.Input[InputIndex - 1] == Glyph.Id) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + KBTS_FOR(LookaheadIndex, 0, Unpacked.LookaheadCount) + { + if(Unpacked.Lookahead[LookaheadIndex] == Glyph.Id) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + } + } + } + else if(Base[0] == 2) + { + kbts_chained_sequence_context_2 *Subst = (kbts_chained_sequence_context_2 *)Base; + kbts_u16 *BacktrackClassDefinition = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->BacktrackClassDefOffset); + kbts_u16 *InputClassDefinition = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->InputClassDefOffset); + kbts_u16 *LookaheadClassDefinition = KBTS_POINTER_OFFSET(kbts_u16, Subst, Subst->LookaheadClassDefOffset); + + kbts_u16 BacktrackClass = kbts_GlyphClassFromTable(BacktrackClassDefinition, Glyph.Id); + kbts_u16 InputClass = kbts_GlyphClassFromTable(InputClassDefinition, Glyph.Id); + kbts_u16 LookaheadClass = kbts_GlyphClassFromTable(LookaheadClassDefinition, Glyph.Id); + + KBTS_FOR(SetIndex, 0, Subst->ChainedClassSequenceRuleSetCount) + { + kbts_chained_sequence_rule_set *Set = kbts_GetChainedClassSequenceRuleSet(Subst, SetIndex); + if(Set) + { + KBTS_FOR(RuleIndex, 0, Set->Count) + { + kbts_chained_sequence_rule *Rule = kbts_GetChainedSequenceRule(Set, RuleIndex); + kbts_unpacked_chained_sequence_rule Unpacked = kbts_UnpackChainedSequenceRule(Rule, 0); + + SubtableInfo.MinimumBacktrackPlusOne = KBTS_MIN(SubtableInfo.MinimumBacktrackPlusOne - 1, Unpacked.BacktrackCount) + 1; + SubtableInfo.MinimumFollowupPlusOne = KBTS_MIN(SubtableInfo.MinimumFollowupPlusOne - 1, Unpacked.InputCount - 1 + Unpacked.LookaheadCount) + 1; + + KBTS_FOR(BacktrackIndex, 0, Unpacked.BacktrackCount) + { + if(Unpacked.Backtrack[BacktrackIndex] == BacktrackClass) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + KBTS_FOR(InputIndex, 1, Unpacked.InputCount) + { + if(Unpacked.Input[InputIndex - 1] == InputClass) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + KBTS_FOR(LookaheadIndex, 0, Unpacked.LookaheadCount) + { + if(Unpacked.Lookahead[LookaheadIndex] == LookaheadClass) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + } + } + } + } + else if(Base[0] == 3) + { + kbts_chained_sequence_context_3 *Subst = (kbts_chained_sequence_context_3 *)Base; + kbts_unpacked_chained_sequence_context_3 Unpacked = kbts_UnpackChainedSequenceContext3(Subst, 0); + + SubtableInfo.MinimumBacktrackPlusOne = KBTS_MIN(SubtableInfo.MinimumBacktrackPlusOne - 1, Unpacked.BacktrackCount) + 1; + SubtableInfo.MinimumFollowupPlusOne = KBTS_MIN(SubtableInfo.MinimumFollowupPlusOne - 1, Unpacked.InputCount - 1 + Unpacked.LookaheadCount) + 1; + + KBTS_FOR(BacktrackCoverageIndex, 0, Unpacked.BacktrackCount) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.BacktrackCoverageOffsets[BacktrackCoverageIndex]); + kbts_cover_glyph_result SequenceCover = kbts_CoverGlyph(Coverage, Glyph.Id); + if(SequenceCover.Valid) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + + InPrimary = 0; + KBTS_FOR(InputCoverageIndex, 0, Unpacked.InputCount) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.InputCoverageOffsets[InputCoverageIndex]); + kbts_cover_glyph_result SequenceCover = kbts_CoverGlyph(Coverage, Glyph.Id); + if(SequenceCover.Valid) + { + if(!InputCoverageIndex) + { + InPrimary = 1; + } + else + { + InSecondary = 1; + } + goto DoneCheckingForInclusion; + } + } + + KBTS_FOR(LookaheadCoverageIndex, 0, Unpacked.LookaheadCount) + { + kbts_coverage *Coverage = KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.LookaheadCoverageOffsets[LookaheadCoverageIndex]); + kbts_cover_glyph_result SequenceCover = kbts_CoverGlyph(Coverage, Glyph.Id); + if(SequenceCover.Valid) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + } + } + else if((ShapingTableIndex == KBTS_SHAPING_TABLE_GSUB) && (LookupType == 8)) + { + kbts_reverse_chain_substitution *Subst = (kbts_reverse_chain_substitution *)Base; + kbts_unpacked_reverse_chain_substitution Unpacked = kbts_UnpackReverseChainSubstitution(Subst, 0); + + SubtableInfo.MinimumBacktrackPlusOne = KBTS_MIN(SubtableInfo.MinimumBacktrackPlusOne - 1, Unpacked.BacktrackCount) + 1; + SubtableInfo.MinimumFollowupPlusOne = KBTS_MIN(SubtableInfo.MinimumFollowupPlusOne - 1, Unpacked.LookaheadCount) + 1; + + KBTS_FOR(BacktrackIndex, 0, Unpacked.BacktrackCount) + { + kbts_cover_glyph_result BacktrackCover = kbts_CoverGlyph(KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.BacktrackCoverageOffsets[BacktrackIndex]), Glyph.Id); + if(BacktrackCover.Valid) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + KBTS_FOR(LookaheadIndex, 0, Unpacked.LookaheadCount) + { + kbts_cover_glyph_result LookaheadCover = kbts_CoverGlyph(KBTS_POINTER_OFFSET(kbts_coverage, Subst, Unpacked.LookaheadCoverageOffsets[LookaheadIndex]), Glyph.Id); + if(LookaheadCover.Valid) + { + InSecondary = 1; + goto DoneCheckingForInclusion; + } + } + } + DoneCheckingForInclusion:; + + if(InPrimary) + { + kbts_un FlatIndex = RunningLookupIndex * GlyphCount + GlyphIndex; + kbts_un WordIndex = FlatIndex / 32; + kbts_un BitIndex = FlatIndex % 32; + GlyphLookupMatrix[WordIndex] |= (1 << BitIndex); + } + if(InPrimary || InSecondary) + { + kbts_un FlatIndex = RunningSubtableIndex * GlyphCount + GlyphIndex; + kbts_un WordIndex = FlatIndex / 32; + kbts_un BitIndex = FlatIndex % 32; + GlyphLookupSubtableMatrix[WordIndex] |= (1 << BitIndex); + } + } + + SubtableInfos[RunningSubtableIndex] = SubtableInfo; + RunningSubtableIndex += 1; + } + + RunningLookupIndex += 1; + } + } + } + + Font->SubtableInfos = SubtableInfos; + Font->GlyphLookupMatrix = GlyphLookupMatrix; + Font->GlyphLookupSubtableMatrix = GlyphLookupSubtableMatrix; + Font->LookupSubtableIndexOffsets = LookupSubtableIndexOffsets; + Font->GposLookupIndexOffset = (kbts_u32)GposLookupIndexOffset; + Font->GlyphCount = (kbts_u32)GlyphCount; + } + + return kbts_FontIsValid(Font); +} + +KBTS_EXPORT int kbts_FontIsValid(kbts_font *Font) +{ + int Result = !Font->Error; + return Result; +} + +#ifndef KB_TEXT_SHAPE_NO_CRT +KBTS_EXPORT kbts_font kbts_FontFromFile(const char *FileName) +{ + kbts_font Result = KBTS_ZERO; + + FILE *File; +# ifndef _MSC_VER + File = fopen(FileName, "rb"); +# else + fopen_s(&File, FileName, "rb"); +# endif + + if(File) + { + fseek(File, 0, SEEK_END); + long FileSize = ftell(File); + fseek(File, 0, SEEK_SET); + + void *Data = malloc((kbts_un)FileSize); + kbts_un Ok = fread(Data, (kbts_un)FileSize, 1, File); + fclose(File); + + if(Ok) + { + kbts_un ScratchSize = kbts_ReadFontHeader(&Result, Data, (kbts_un)FileSize); + + void *Scratch = malloc(ScratchSize); + kbts_un MemorySize = kbts_ReadFontData(&Result, Scratch, ScratchSize); + + void *Memory = Scratch; + if(MemorySize > ScratchSize) + { + free(Scratch); + Memory = malloc(MemorySize); + } + + kbts_PostReadFontInitialize(&Result, Memory, MemorySize); + } + } + + return Result; +} + +KBTS_EXPORT void kbts_FreeFont(kbts_font *Font) +{ + if(Font->FileBase) + { + free(Font->FileBase); + if(Font->GlyphLookupMatrix) + { + free(Font->GlyphLookupMatrix); // This frees everything else. + } + } +} +#endif + +KBTS_EXPORT int kbts_BreakStateIsValid(kbts_break_state *State) +{ + int Result = !(State->Flags & KBTS_BREAK_STATE_FLAG_RAN_OUT_OF_REORDER_BUFFER_SPACE); + return Result; +} + +static void kbts_DoBreak(kbts_break_state *State, kbts_s32 Position, kbts_u8 Flags, kbts_direction Direction, kbts_script Script) +{ + if(kbts_BreakStateIsValid(State) && Flags && (State->BreakCount < KBTS_BREAK_REORDER_BUFFER_SIZE)) + { + if(State->BreakCount < KBTS_BREAK_REORDER_BUFFER_SIZE) + { + kbts_break Break = KBTS_ZERO; + Break.Position = State->CurrentPosition + (kbts_u32)Position; + Break.Flags = Flags; + Break.Direction = Direction; + Break.Script = Script; + + int Matched = 0; + KBTS_FOR(BreakIndex, 0, State->BreakCount) + { + kbts_break *Existing = &State->Breaks[BreakIndex]; + + if(Existing->Position == Break.Position) + { + Existing->Flags |= Break.Flags; + if(Break.Flags & KBTS_BREAK_FLAG_DIRECTION) Existing->Direction = Break.Direction; + if(Break.Flags & KBTS_BREAK_FLAG_SCRIPT) Existing->Script = Break.Script; + Matched = 1; + break; + } + else if(Existing->Position < Break.Position) + { + kbts_break Swap = *Existing; + *Existing = Break; + Break = Swap; + } + } + State->Breaks[State->BreakCount] = Break; + State->BreakCount += !Matched; + } + else + { + // This should never happen as long as we call Break() after every BreakAddCodepoint(). + State->Flags |= KBTS_BREAK_STATE_FLAG_RAN_OUT_OF_REORDER_BUFFER_SPACE; + } + } +} + +// The line break state is a 4-character history. Each character is a bags of 12 bits (padded to 16 bits). +// Each character specifies allowed and required breaks on 6 levels of priority. +// A required break implies an allowed break. +// A priority N break implies priority 0..N-1 breaks. +enum { + KBTS_LINE_BREAK_ALLOWED0 = 1, + KBTS_LINE_BREAK_ALLOWED1 = 3, + KBTS_LINE_BREAK_ALLOWED2 = 7, + KBTS_LINE_BREAK_ALLOWED3 = 0xF, + KBTS_LINE_BREAK_ALLOWED4 = 0x1F, + KBTS_LINE_BREAK_ALLOWED5 = 0x3F, + KBTS_LINE_BREAK_REQUIRED0 = (1 << 6) | KBTS_LINE_BREAK_ALLOWED0, + KBTS_LINE_BREAK_REQUIRED1 = (3 << 6) | KBTS_LINE_BREAK_ALLOWED1, + KBTS_LINE_BREAK_REQUIRED2 = (7 << 6) | KBTS_LINE_BREAK_ALLOWED2, + KBTS_LINE_BREAK_REQUIRED3 = (0xF << 6) | KBTS_LINE_BREAK_ALLOWED3, + KBTS_LINE_BREAK_REQUIRED4 = (0x1F << 6) | KBTS_LINE_BREAK_ALLOWED4, + KBTS_LINE_BREAK_REQUIRED5 = (0x3F << 6) | KBTS_LINE_BREAK_ALLOWED5, + KBTS_LINE_BREAK_REQUIRED_MASK = 0x3F << 6, + KBTS_LINE_BREAK_ALLOWED_MASK = 0x3F, + KBTS_LINE_BREAK_MASK = KBTS_LINE_BREAK_REQUIRED_MASK | KBTS_LINE_BREAK_ALLOWED_MASK, +}; + +static void kbts_DoLineBreak(kbts_break_state *State, int Position, kbts_u64 EffectiveLineBreaks, int Rtl, kbts_script Script) +{ + if(EffectiveLineBreaks & KBTS_LINE_BREAK_MASK) + { + kbts_u8 Flags = 0; + if(EffectiveLineBreaks & KBTS_LINE_BREAK_ALLOWED_MASK) Flags |= KBTS_BREAK_FLAG_LINE_SOFT; + if(EffectiveLineBreaks & KBTS_LINE_BREAK_REQUIRED_MASK) Flags |= KBTS_BREAK_FLAG_LINE_HARD; + + kbts_DoBreak(State, Position, Flags, Rtl, Script); + } +} + +static void kbts_BreakAddCodepoint_(kbts_break_state *State, kbts_u32 Codepoint, kbts_u32 PositionIncrement, int MaybeEndOfText) +{ + // In these macros, and in FlagState, and in the way we buffer our state in general, + // index 0 means _after_ the codepoint currently being added, + // index 1 means _before_ the codepoint currently being added. +#define KBTS_BREAK(Flags, Position) do {FlagState |= ((Flags) << (8 * (Position)));} while(0) +#define KBTS_BREAK2(Flags, Position0, Position1) do {FlagState |= ((Flags) << (8 * (Position0))) | ((Flags) << (8 * (Position1)));} while(0) + if(!kbts_BreakStateIsValid(State)) return; + + kbts_u8 Script = kbts_GetUnicodeScript(Codepoint); + kbts_unicode_bidirectional_class BidirectionalClass = kbts_GetUnicodeBidirectionalClass(Codepoint); + kbts_u8 UnicodeFlags = kbts_GetUnicodeFlags(Codepoint); + kbts_u32 MatchingBracket = kbts_GetUnicodeMatchingBracket(Codepoint); + kbts_u8 GraphemeBreakClass = kbts_GetUnicodeGraphemeBreakClass(Codepoint); + kbts_u8 LineBreakClass = kbts_GetUnicodeLineBreakClass(Codepoint); + kbts_u8 WordBreakClass = kbts_GetUnicodeWordBreakClass(Codepoint); + kbts_u8 LastScript = State->LastScripts[0]; + kbts_u32 FlagState = State->FlagState << 8; + kbts_u8 LastLineBreakClass = State->LastLineBreakClass; + // Super secret cheat code for signaling end-of-text + int EndOfText = (Codepoint == 3) && MaybeEndOfText; + int StartOfText = !(State->Flags & KBTS_BREAK_STATE_FLAG_STARTED); + kbts_u32 LineBreakHistory = State->LineBreakHistory; + kbts_u32 WordBreakHistory = State->WordBreakHistory; + kbts_u8 LastWordBreakClass = State->LastWordBreakClass; + kbts_s16 WordBreak2PositionOffset = State->WordBreak2PositionOffset; + kbts_u8 LastWordBreakClassIncludingIgnored = State->LastWordBreakClassIncludingIgnored; + kbts_s16 PositionOffset2 = State->PositionOffset2; + kbts_s16 PositionOffset3 = State->PositionOffset3; + kbts_u32 Flags = State->Flags; + kbts_direction LastDirection = State->LastDirection; + + if(StartOfText) + { + LineBreakHistory = LastLineBreakClass = KBTS_LINE_BREAK_CLASS_SOT; + WordBreakHistory = LastWordBreakClass = KBTS_WORD_BREAK_CLASS_SOT; + } + + + if((Script == KBTS_SCRIPT_DEFAULT) || (Script == KBTS_SCRIPT_DEFAULT2)) + { + Script = LastScript; + } + + // Bracket pairing overrides default directions/scripts. + if(UnicodeFlags & KBTS_UNICODE_FLAG_OPEN_BRACKET) + { + if(State->BracketCount < KBTS_ARRAY_LENGTH(State->Brackets)) + { + kbts_bracket *Bracket = &State->Brackets[State->BracketCount++]; + + // @Incomplete: Canonicalize the bracket. + Bracket->Codepoint = Codepoint; + Bracket->Direction = KBTS_DIRECTION_NONE; + Bracket->Script = Script; + + State->Flags |= KBTS_BREAK_STATE_FLAG_LAST_WAS_BRACKET; + } + } + else if(UnicodeFlags & KBTS_UNICODE_FLAG_CLOSE_BRACKET) + { + if(State->BracketCount) + { + kbts_un FoundBracketIndex = 0; + kbts_bracket *FoundBracket = 0; + + // @Incomplete: Canonicalize the bracket. + KBTS_FOR(BracketIndex, 0, State->BracketCount) + { + kbts_bracket *Bracket = &State->Brackets[State->BracketCount - 1 - BracketIndex]; + + if(Bracket->Codepoint == MatchingBracket) + { + FoundBracket = Bracket; + FoundBracketIndex = State->BracketCount - 1 - BracketIndex; + + break; + } + } + + if(FoundBracket) + { + BidirectionalClass = FoundBracket->Direction; + Script = FoundBracket->Script; + + State->BracketCount = (kbts_u32)FoundBracketIndex; + } + } + } + + { // Direction breaking. + kbts_u8 Bidirectional2 = State->BidirectionalClass2; + kbts_u8 Bidirectional1 = State->BidirectionalClass1; + + switch(BidirectionalClass) + { + case KBTS_UNICODE_BIDIRECTIONAL_CLASS_NSM: BidirectionalClass = Bidirectional1; break; + + case KBTS_UNICODE_BIDIRECTIONAL_CLASS_L: + Flags &= ~(KBTS_BREAK_STATE_FLAG_SAW_R_AFTER_L | KBTS_BREAK_STATE_FLAG_SAW_AL_AFTER_LR); + break; + + case KBTS_UNICODE_BIDIRECTIONAL_CLASS_R: + Flags |= KBTS_BREAK_STATE_FLAG_SAW_R_AFTER_L; + Flags &= ~KBTS_BREAK_STATE_FLAG_SAW_AL_AFTER_LR; + break; + + case KBTS_UNICODE_BIDIRECTIONAL_CLASS_AL: + // Rule W3 occurs before W7, so we treat AL as R for the purposes of rule W7. + Flags |= (KBTS_BREAK_STATE_FLAG_SAW_AL_AFTER_LR | KBTS_BREAK_STATE_FLAG_SAW_R_AFTER_L); + BidirectionalClass = KBTS_UNICODE_BIDIRECTIONAL_CLASS_R; + break; + + case KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN: + if(Flags & KBTS_BREAK_STATE_FLAG_SAW_AL_AFTER_LR) + { + BidirectionalClass = KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN; + goto CaseAn; + } + if((Bidirectional2 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN) && ((Bidirectional1 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_ES) || (Bidirectional1 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_CS))) + { + Bidirectional1 = KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN; + } + if(!(Flags & KBTS_BREAK_STATE_FLAG_SAW_R_AFTER_L)) + { + BidirectionalClass = KBTS_UNICODE_BIDIRECTIONAL_CLASS_L; + } + break; + case KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN: + CaseAn:; + if((Bidirectional2 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN) && (Bidirectional1 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_CS)) + { + Bidirectional1 = KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN; + } + break; + case KBTS_UNICODE_BIDIRECTIONAL_CLASS_ET: + if(Bidirectional1 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN) + { + BidirectionalClass = KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN; + } + break; + } + + if(KBTS_IN_SET(BidirectionalClass, KBTS_SET32((KBTS_UNICODE_BIDIRECTIONAL_CLASS_ET)(KBTS_UNICODE_BIDIRECTIONAL_CLASS_ES)(KBTS_UNICODE_BIDIRECTIONAL_CLASS_CS)))) + { + BidirectionalClass = KBTS_UNICODE_BIDIRECTIONAL_CLASS_NI; + } + + if(Bidirectional1 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_NI) + { + if(KBTS_IN_SET(Bidirectional2, KBTS_SET32((KBTS_UNICODE_BIDIRECTIONAL_CLASS_R)(KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN)(KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN))) && + KBTS_IN_SET(BidirectionalClass, KBTS_SET32((KBTS_UNICODE_BIDIRECTIONAL_CLASS_R)(KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN)(KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN)))) + { + Bidirectional1 = KBTS_UNICODE_BIDIRECTIONAL_CLASS_R; + } + else if((Bidirectional2 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_L) && (BidirectionalClass == KBTS_UNICODE_BIDIRECTIONAL_CLASS_L)) + { + Bidirectional1 = KBTS_UNICODE_BIDIRECTIONAL_CLASS_L; + } + else + { + if (State->MainDirection == KBTS_DIRECTION_LTR) Bidirectional1 = KBTS_UNICODE_BIDIRECTIONAL_CLASS_L; + else if(State->MainDirection == KBTS_DIRECTION_RTL) Bidirectional1 = KBTS_UNICODE_BIDIRECTIONAL_CLASS_R; + } + } + + // These rules happen at the very end, so we wait until the last slot to apply them. + if((Bidirectional2 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN) || (Bidirectional2 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN)) + { + Bidirectional2 = KBTS_UNICODE_BIDIRECTIONAL_CLASS_L; + } + + // @Incomplete: ET+ EN -> EN+ EN + kbts_direction Direction = KBTS_DIRECTION_NONE; + if(Bidirectional2 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_L) Direction = KBTS_DIRECTION_LTR; + else if(Bidirectional2 == KBTS_UNICODE_BIDIRECTIONAL_CLASS_R) Direction = KBTS_DIRECTION_RTL; + if(Direction && (Direction != LastDirection)) + { + LastDirection = Direction; + KBTS_BREAK(KBTS_BREAK_FLAG_DIRECTION, 3); + + if(!State->MainDirection) + { + State->MainDirection = (kbts_u8)Direction; + } + } + + State->BidirectionalClass2 = Bidirectional1; + State->BidirectionalClass1 = BidirectionalClass; + } + + if(Script != LastScript) + { + KBTS_BREAK(KBTS_BREAK_FLAG_SCRIPT, 1); + } + + { // Grapheme breaking. + if(EndOfText && !StartOfText) + { + KBTS_BREAK(KBTS_BREAK_FLAG_GRAPHEME, 1); + State->GraphemeBreakState = KBTS_GRAPHEME_BREAK_STATE_START; + } + else + { + kbts_u8 GraphemeBreakState = kbts_GraphemeBreakTransition[GraphemeBreakClass][State->GraphemeBreakState]; + switch(GraphemeBreakState) + { + case KBTS_GRAPHEME_BREAK_STATE_b01: KBTS_BREAK2(KBTS_BREAK_FLAG_GRAPHEME, 1, 0); GraphemeBreakState = KBTS_GRAPHEME_BREAK_STATE_START; break; + case KBTS_GRAPHEME_BREAK_STATE_b0: KBTS_BREAK(KBTS_BREAK_FLAG_GRAPHEME, 0); GraphemeBreakState = KBTS_GRAPHEME_BREAK_STATE_START; break; + + case KBTS_GRAPHEME_BREAK_STATE_b1: + case KBTS_GRAPHEME_BREAK_STATE_b1toCR: + case KBTS_GRAPHEME_BREAK_STATE_b1toL: + case KBTS_GRAPHEME_BREAK_STATE_b1toLVxV: + case KBTS_GRAPHEME_BREAK_STATE_b1toLVTxT: + case KBTS_GRAPHEME_BREAK_STATE_b1toIndicConsonantxIndicLinker: + case KBTS_GRAPHEME_BREAK_STATE_PADDING0: // Padding values are just here to help the compiler. + case KBTS_GRAPHEME_BREAK_STATE_PADDING1: + case KBTS_GRAPHEME_BREAK_STATE_b1toExtendedPictographic: + case KBTS_GRAPHEME_BREAK_STATE_PADDING2: + case KBTS_GRAPHEME_BREAK_STATE_PADDING3: + case KBTS_GRAPHEME_BREAK_STATE_b1toRI: + case KBTS_GRAPHEME_BREAK_STATE_b1toSKIP: + KBTS_BREAK(KBTS_BREAK_FLAG_GRAPHEME, 1); + GraphemeBreakState -= KBTS_GRAPHEME_BREAK_STATE_b1; + } + + State->GraphemeBreakState = GraphemeBreakState; + } + } + + // Word breaks. + // We buffer 3 characters for word breaks. + // Each character gets 3 bits (padded to 4) representing 3 levels of priority. + #define KBTS_WORD_BREAK_BITS(Priority, Position) (((1 << ((Priority) + 1)) - 1) << ((Position) * 4)) + #define KBTS_C2(A, B) case (KBTS_WORD_BREAK_CLASS_##A << 8) | (KBTS_WORD_BREAK_CLASS_##B) + #define KBTS_C3(A, B, C) case (KBTS_WORD_BREAK_CLASS_##A << 16) | (KBTS_WORD_BREAK_CLASS_##B << 8) | (KBTS_WORD_BREAK_CLASS_##C) + + // Ignore [EX FO ZWJ] after ^[_sot_ CR LF NL]. + // @Cleanup: This is the only time we explicitly use EX and FO. They can be merged. + if(KBTS_IN_SET(WordBreakClass, KBTS_SET32((KBTS_WORD_BREAK_CLASS_EX)(KBTS_WORD_BREAK_CLASS_FO)(KBTS_WORD_BREAK_CLASS_ZWJ))) && + !KBTS_IN_SET(LastWordBreakClass, KBTS_SET32((KBTS_WORD_BREAK_CLASS_SOT)(KBTS_WORD_BREAK_CLASS_CR)(KBTS_WORD_BREAK_CLASS_LF)(KBTS_WORD_BREAK_CLASS_NL)))) + { + WordBreak2PositionOffset -= PositionIncrement; + State->WordBreak2PositionOffset = WordBreak2PositionOffset; + } + else + { + kbts_u32 WordBreaks = State->WordBreaks << 4; + kbts_u32 WordUnbreaks = State->WordUnbreaks << 4; + WordBreakHistory = (WordBreakHistory << 8) | WordBreakClass; + + WordBreaks |= KBTS_WORD_BREAK_BITS(0, 1) | KBTS_WORD_BREAK_BITS(0, 0); + if(StartOfText) + { + WordBreaks |= KBTS_WORD_BREAK_BITS(2, 1); + } + + if(KBTS_IN_SET(WordBreakClass, KBTS_SET32((KBTS_WORD_BREAK_CLASS_CR)(KBTS_WORD_BREAK_CLASS_LF)(KBTS_WORD_BREAK_CLASS_NL)))) + { + WordBreaks |= KBTS_WORD_BREAK_BITS(1, 1) | KBTS_WORD_BREAK_BITS(1, 0); + } + else if(KBTS_IN_SET(WordBreakClass, KBTS_SET32((KBTS_WORD_BREAK_CLASS_Oep)(KBTS_WORD_BREAK_CLASS_ALep)))) + { + // ZWJ x {Extended_Pictographic} + if(LastWordBreakClassIncludingIgnored == KBTS_WORD_BREAK_CLASS_ZWJ) + { + WordUnbreaks |= KBTS_WORD_BREAK_BITS(0, 1); + } + } + + switch(WordBreakHistory & 0xFFFF) + { + KBTS_C2(CR, LF): WordUnbreaks |= KBTS_WORD_BREAK_BITS(1, 1); break; + + KBTS_C2(WSS, WSS): + // WSS x WSS is a special rule, because it is supposed to happen _before_ ignores. + if(WordBreak2PositionOffset >= 0) WordUnbreaks |= KBTS_WORD_BREAK_BITS(0, 1); + break; + + // (RI RI)* RI x RI + KBTS_C2(RI, RI): + WordBreakHistory = 0; + // fallthrough + KBTS_C2(HL, SQ): + KBTS_C2(ALnep, ALnep): KBTS_C2(ALnep, ALep): KBTS_C2(ALnep, HL): KBTS_C2(ALnep, NM): KBTS_C2(ALnep, ENL): + KBTS_C2(ALep, ALnep): KBTS_C2(ALep, ALep): KBTS_C2(ALep, HL): KBTS_C2(ALep, NM): KBTS_C2(ALep, ENL): + KBTS_C2(HL, ALnep): KBTS_C2(HL, ALep): KBTS_C2(HL, HL): KBTS_C2(HL, NM): KBTS_C2(HL, ENL): + KBTS_C2(NM, ALnep): KBTS_C2(NM, ALep): KBTS_C2(NM, HL): KBTS_C2(NM, NM): KBTS_C2(NM, ENL): + KBTS_C2(KA, KA): KBTS_C2(KA, ENL): + KBTS_C2(ENL, ALnep): KBTS_C2(ENL, ALep): KBTS_C2(ENL, HL): KBTS_C2(ENL, NM): KBTS_C2(ENL, KA): KBTS_C2(ENL, ENL): + WordUnbreaks |= KBTS_WORD_BREAK_BITS(0, 1); break; + } + + switch(WordBreakHistory & 0xFFFFFF) + { + KBTS_C3(ALnep, ML, ALnep): KBTS_C3(ALnep, ML, ALep): KBTS_C3(ALnep, ML, HL): + KBTS_C3(ALnep, MNL, ALnep): KBTS_C3(ALnep, MNL, ALep): KBTS_C3(ALnep, MNL, HL): + KBTS_C3(ALnep, SQ, ALnep): KBTS_C3(ALnep, SQ, ALep): KBTS_C3(ALnep, SQ, HL): + KBTS_C3(ALep, ML, ALnep): KBTS_C3(ALep, ML, ALep): KBTS_C3(ALep, ML, HL): + KBTS_C3(ALep, MNL, ALnep): KBTS_C3(ALep, MNL, ALep): KBTS_C3(ALep, MNL, HL): + KBTS_C3(ALep, SQ, ALnep): KBTS_C3(ALep, SQ, ALep): KBTS_C3(ALep, SQ, HL): + KBTS_C3(HL, ML, ALnep): KBTS_C3(HL, ML, ALep): KBTS_C3(HL, ML, HL): + KBTS_C3(HL, MNL, ALnep): KBTS_C3(HL, MNL, ALep): KBTS_C3(HL, MNL, HL): + KBTS_C3(HL, SQ, ALnep): KBTS_C3(HL, SQ, ALep): KBTS_C3(HL, SQ, HL): + KBTS_C3(HL, DQ, HL): + KBTS_C3(NM, MN, NM): KBTS_C3(NM, MNL, NM): KBTS_C3(NM, SQ, NM): + WordUnbreaks |= KBTS_WORD_BREAK_BITS(0, 1) | KBTS_WORD_BREAK_BITS(0, 2); break; + } + + kbts_u32 EffectiveWordBreaks = WordBreaks & ~WordUnbreaks; + if(EffectiveWordBreaks & KBTS_WORD_BREAK_BITS(2, 2)) + { + kbts_DoBreak(State, PositionOffset2 + WordBreak2PositionOffset, KBTS_BREAK_FLAG_WORD, 0, 0); + } + if(EndOfText) + { + // Always break at the end of the text. + KBTS_BREAK(KBTS_BREAK_FLAG_WORD, 1); + // Do not break after the end of the text. + } + + State->WordBreaks = (kbts_u16)WordBreaks; + State->WordUnbreaks = (kbts_u16)WordUnbreaks; + State->LastWordBreakClass = WordBreakClass; + State->WordBreak2PositionOffset = 0; + State->WordBreakHistory = WordBreakHistory; + } + State->LastWordBreakClassIncludingIgnored = WordBreakClass; + #undef KBTS_WORD_BREAK_BITS + #undef KBTS_C2 + #undef KBTS_C3 + + kbts_s16 LineBreak3PositionOffset = State->LineBreak3PositionOffset; + kbts_s16 LineBreak2PositionOffset = State->LineBreak2PositionOffset; + { // Line breaking. + kbts_u64 LineBreaks = State->LineBreaks << 16; + kbts_u64 LineUnbreaks = State->LineUnbreaks << 16; + kbts_u64 LineUnbreaksAsync = State->LineUnbreaksAsync << 16; + + #define KBTS_C1(A) case KBTS_LINE_BREAK_CLASS_##A + #define KBTS_C2(A, B) case (KBTS_LINE_BREAK_CLASS_##A << 8) | (KBTS_LINE_BREAK_CLASS_##B) + #define KBTS_C3(A, B, C) case (KBTS_LINE_BREAK_CLASS_##A << 16) | (KBTS_LINE_BREAK_CLASS_##B << 8) | KBTS_LINE_BREAK_CLASS_##C + #define KBTS_C4(A, B, C, D) case (KBTS_LINE_BREAK_CLASS_##A << 24) | (KBTS_LINE_BREAK_CLASS_##B << 16) | (KBTS_LINE_BREAK_CLASS_##C << 8) | KBTS_LINE_BREAK_CLASS_##D + #define KBTS_REQUIRED_LINE_BREAK(Priority, Position) do {LineBreaks |= (kbts_u64)KBTS_LINE_BREAK_REQUIRED##Priority << ((Position) * 16);} while(0) + #define KBTS_LINE_BREAK(Priority, Position) do {LineBreaks |= (kbts_u64)KBTS_LINE_BREAK_ALLOWED##Priority << ((Position) * 16);} while(0) + #define KBTS_LINE_UNBREAK(Priority, Position) do {LineUnbreaks |= (kbts_u64)KBTS_LINE_BREAK_REQUIRED##Priority << ((Position) * 16);} while(0) + #define KBTS_LINE_UNBREAK_ASYNC(Priority, Position) do {LineUnbreaksAsync |= (kbts_u64)KBTS_LINE_BREAK_REQUIRED##Priority << ((Position) * 16);} while(0) + + if(EndOfText) + { + // Depending on the current line break state, we might need very different breaks. + // For now, we copy the transitions from the first row of the transition table, but + // we might want to special-case these. + LineBreakClass = KBTS_LINE_BREAK_CLASS_Onea; + } + else if(LineBreakClass > KBTS_LINE_BREAK_CLASS_COUNT) + { + // These guys have special rules. + if((LineBreakClass == KBTS_LINE_BREAK_CLASS_CM) || (LineBreakClass == KBTS_LINE_BREAK_CLASS_ZWJ)) + { + if(LineBreakClass == KBTS_LINE_BREAK_CLASS_ZWJ) + { + KBTS_LINE_UNBREAK_ASYNC(3, 0); + } + + switch(LastLineBreakClass) + { + case KBTS_LINE_BREAK_CLASS_SOT: + case KBTS_LINE_BREAK_CLASS_BK: + case KBTS_LINE_BREAK_CLASS_CR: + case KBTS_LINE_BREAK_CLASS_LF: + case KBTS_LINE_BREAK_CLASS_NL: + case KBTS_LINE_BREAK_CLASS_SP: + case KBTS_LINE_BREAK_CLASS_ZW: + LineBreakClass = KBTS_LINE_BREAK_CLASS_ALnea; + break; + + default: + // The standard says to treat X [CM ZWJ]* as X. + // This means that we need to hoist [CM ZWJ] completely out of the line breaking logic. + // However, we give our results in index offsets relative to the current glyph, so we + // do have to acknowledge that we are skipping glyphs. + goto LineBreakAbsorbCharacter; + } + } + else if(LineBreakClass == KBTS_LINE_BREAK_CLASS_CJ) + { + LineBreakClass = State->JapaneseLineBreakStyle == KBTS_JAPANESE_LINE_BREAK_STYLE_STRICT ? KBTS_LINE_BREAK_CLASS_NSea : KBTS_LINE_BREAK_CLASS_IDea; + } + } + + if(LastLineBreakClass == LineBreakClass) + { + // @Incomplete: Handle repeats that aren't SP*. + if(LineBreakClass == KBTS_LINE_BREAK_CLASS_SP) + { + goto LineBreakAbsorbCharacter; + } + } + + LineBreakHistory = (LineBreakHistory << 8) | LineBreakClass; + + if(EndOfText) + { + // Always break at the end of text. + KBTS_REQUIRED_LINE_BREAK(5, 1); + + // x QUPf _eot_ + if((LineBreakHistory & 0xFF00) == (KBTS_LINE_BREAK_CLASS_QUPf << 8)) + { + KBTS_LINE_UNBREAK(3, 2); + } + } + + KBTS_LINE_BREAK(0, 0); + KBTS_LINE_BREAK(0, 1); + + switch(LineBreakClass) + { + KBTS_C1(BK): + KBTS_C1(CR): + KBTS_C1(LF): + KBTS_C1(NL): KBTS_LINE_UNBREAK(4, 1); KBTS_REQUIRED_LINE_BREAK(5, 0); break; + KBTS_C1(ZW): KBTS_LINE_BREAK(4, 0); KBTS_LINE_UNBREAK(4, 1); break; + KBTS_C1(BB): KBTS_LINE_UNBREAK(0, 0); break; + + KBTS_C1(GLea): + KBTS_C1(GLnea): + KBTS_C1(OPea): + KBTS_C1(OPnea): KBTS_LINE_UNBREAK(3, 0); break; + + KBTS_C1(WJ): KBTS_LINE_UNBREAK(3, 0); KBTS_LINE_UNBREAK(3, 1); break; + + KBTS_C1(CLea): + KBTS_C1(CLnea): + KBTS_C1(CPea): + KBTS_C1(CPnea): + KBTS_C1(EXea): + KBTS_C1(EXnea): + KBTS_C1(SY): KBTS_LINE_UNBREAK(3, 1); break; + + KBTS_C1(IS): KBTS_LINE_UNBREAK(2, 1); break; + + KBTS_C1(SP): KBTS_LINE_UNBREAK(4, 1); KBTS_LINE_BREAK(2, 0); break; + + KBTS_C1(QU): KBTS_LINE_UNBREAK(1, 1); KBTS_LINE_UNBREAK(1, 0); break; + KBTS_C1(QUPi): KBTS_LINE_UNBREAK(1, 0); break; + KBTS_C1(QUPf): KBTS_LINE_UNBREAK(1, 1); break; + KBTS_C1(CB): KBTS_LINE_BREAK(1, 0); KBTS_LINE_BREAK(1, 1); break; + + KBTS_C1(BAnea): + KBTS_C1(BAea): + KBTS_C1(HYPHEN): + KBTS_C1(HY): + KBTS_C1(NSnea): + KBTS_C1(NSea): + KBTS_C1(INnea): + KBTS_C1(INea): + KBTS_LINE_UNBREAK(0, 1); break; + } + + switch(LineBreakHistory & 0xFFFF) + { + KBTS_C2(CR, LF): KBTS_LINE_UNBREAK(5, 1); break; + KBTS_C2(ZW, SP): KBTS_LINE_BREAK(4, 0); break; + + + KBTS_C2(OPea, QUPi): + KBTS_C2(GLea, QUPi): + KBTS_C2(OPea, SP): + KBTS_C2(OPnea,SP): + KBTS_LINE_UNBREAK(3, 0); + break; + + KBTS_C2(SOT, QUPi): + KBTS_C2(BK, QUPi): + KBTS_C2(CR, QUPi): + KBTS_C2(LF, QUPi): + KBTS_C2(NL, QUPi): + KBTS_C2(SP, QUPi): + KBTS_C2(ZW, QUPi): + KBTS_C2(GLnea, QUPi): + KBTS_C2(QU, QUPi): + KBTS_C2(OPnea, QUPi): + KBTS_LINE_UNBREAK(1, 1); + KBTS_LINE_UNBREAK(1, 0); + KBTS_LINE_UNBREAK(3, 0); + break; + + KBTS_C2(QUPi, QUPi): + KBTS_LINE_UNBREAK(3, 0); + KBTS_LINE_UNBREAK(1, 2); + KBTS_LINE_UNBREAK(1, 1); + KBTS_LINE_UNBREAK(1, 0); + break; + + KBTS_C2(QUPf, QUPi): + KBTS_LINE_UNBREAK(1, 1); + KBTS_LINE_UNBREAK(1, 0); + KBTS_LINE_UNBREAK(3, 0); + KBTS_LINE_UNBREAK(3, 2); + KBTS_LINE_UNBREAK(1, 1); + break; + + KBTS_C2(QUPf, GLnea): + KBTS_LINE_UNBREAK(3, 2); + KBTS_LINE_UNBREAK(3, 1); + KBTS_LINE_UNBREAK(1, 1); + break; + + KBTS_C2(QUPf, BK): + KBTS_C2(QUPf, CR): + KBTS_C2(QUPf, LF): + KBTS_C2(QUPf, NL): + KBTS_C2(QUPf, ZW): + KBTS_C2(QUPf, WJ): + KBTS_C2(QUPf, CLnea): + KBTS_C2(QUPf, CPnea): + KBTS_C2(QUPf, EXnea): + KBTS_C2(QUPf, SY): + KBTS_C2(QUPf, IS): + KBTS_C2(QUPf, SP): + KBTS_LINE_UNBREAK(3, 2); + KBTS_LINE_UNBREAK(1, 1); + break; + + KBTS_C2(QUPf, QUPf): + KBTS_LINE_UNBREAK(3, 2); + KBTS_LINE_UNBREAK(1, 1); + KBTS_LINE_UNBREAK(1, 0); + break; + + KBTS_C2(QUPf, QU): + KBTS_LINE_UNBREAK(3, 2); + KBTS_LINE_UNBREAK(1, 1); + KBTS_LINE_UNBREAK(1, 0); + break; + + KBTS_C2(QUPf, GLea): + KBTS_LINE_UNBREAK(3, 2); + KBTS_LINE_UNBREAK(3, 1); + break; + + KBTS_C2(QUPf, CPea): + KBTS_C2(QUPf, CLea): + KBTS_C2(QUPf, EXea): + KBTS_LINE_UNBREAK(3, 2); + break; + + KBTS_C2(QUPi, QU): + KBTS_LINE_UNBREAK(1, 1); + KBTS_LINE_UNBREAK(1, 0); + KBTS_LINE_UNBREAK(1, 2); + break; + + KBTS_C2(QUPi, QUPf): + KBTS_LINE_UNBREAK(1, 1); + KBTS_LINE_UNBREAK(1, 0); + KBTS_LINE_UNBREAK(1, 2); + break; + + KBTS_C2(QUPi, GLnea): + KBTS_LINE_UNBREAK(1, 2); + KBTS_LINE_UNBREAK(3, 1); + break; + + KBTS_C2(QUPi, Onea): KBTS_C2(QUPi, Ope): KBTS_C2(QUPi, BK): KBTS_C2(QUPi, CR): KBTS_C2(QUPi, LF): KBTS_C2(QUPi, NL): KBTS_C2(QUPi, SP): KBTS_C2(QUPi, ZW): + KBTS_C2(QUPi, WJ): KBTS_C2(QUPi, CLnea): KBTS_C2(QUPi, CPnea): KBTS_C2(QUPi, EXnea): KBTS_C2(QUPi, SY): KBTS_C2(QUPi, BAnea): + KBTS_C2(QUPi, OPnea): KBTS_C2(QUPi, IS): KBTS_C2(QUPi, NSnea): KBTS_C2(QUPi, B2): KBTS_C2(QUPi, CB): + KBTS_C2(QUPi, HY): KBTS_C2(QUPi, HYPHEN): KBTS_C2(QUPi, INnea): KBTS_C2(QUPi, BB): KBTS_C2(QUPi, HL): KBTS_C2(QUPi, ALnea): KBTS_C2(QUPi, NU): KBTS_C2(QUPi, PRnea): + KBTS_C2(QUPi, IDnea): KBTS_C2(QUPi, IDpe): KBTS_C2(QUPi, EBnea): KBTS_C2(QUPi, POnea): KBTS_C2(QUPi, JV): KBTS_C2(QUPi, JT): KBTS_C2(QUPi, AP): KBTS_C2(QUPi, AK): + KBTS_C2(QUPi, DOTTED_CIRCLE): KBTS_C2(QUPi, AS): KBTS_C2(QUPi, VF): KBTS_C2(QUPi, VI): KBTS_C2(QUPi, RI): + KBTS_LINE_UNBREAK(1, 2); break; + + + KBTS_C2(QUPf, Onea): KBTS_C2(QUPf, Ope): + KBTS_C2(QUPf, BAnea): + KBTS_C2(QUPf, OPnea): KBTS_C2(QUPf, NSnea): KBTS_C2(QUPf, B2): KBTS_C2(QUPf, CB): + KBTS_C2(QUPf, HY): KBTS_C2(QUPf, HYPHEN): KBTS_C2(QUPf, INnea): KBTS_C2(QUPf, BB): KBTS_C2(QUPf, HL): KBTS_C2(QUPf, ALnea): KBTS_C2(QUPf, NU): KBTS_C2(QUPf, PRnea): + KBTS_C2(QUPf, IDnea): KBTS_C2(QUPf, IDpe): KBTS_C2(QUPf, EBnea): KBTS_C2(QUPf, POnea): KBTS_C2(QUPf, JV): KBTS_C2(QUPf, JT): KBTS_C2(QUPf, AP): KBTS_C2(QUPf, AK): + KBTS_C2(QUPf, DOTTED_CIRCLE): KBTS_C2(QUPf, AS): KBTS_C2(QUPf, VF): KBTS_C2(QUPf, VI): KBTS_C2(QUPf, RI): + KBTS_LINE_UNBREAK(1, 1); break; + + KBTS_C2(SOT, QU): KBTS_C2(SOT, QUPf): + KBTS_C2(Onea, QU): KBTS_C2(Ope, QU): KBTS_C2(BK, QU): KBTS_C2(CR, QU): KBTS_C2(LF, QU): KBTS_C2(NL, QU): KBTS_C2(SP, QU): KBTS_C2(ZW, QU): + KBTS_C2(WJ, QU): KBTS_C2(GLnea, QU): KBTS_C2(CLnea, QU): KBTS_C2(CPnea, QU): KBTS_C2(EXnea, QU): KBTS_C2(SY, QU): KBTS_C2(BAnea, QU): + KBTS_C2(OPnea, QU): KBTS_C2(QU, QU): KBTS_C2(IS, QU): KBTS_C2(NSnea, QU): KBTS_C2(B2, QU): KBTS_C2(CB, QU): + KBTS_C2(HY, QU): KBTS_C2(HYPHEN, QU): KBTS_C2(INnea, QU): KBTS_C2(BB, QU): KBTS_C2(HL, QU): KBTS_C2(ALnea, QU): KBTS_C2(NU, QU): KBTS_C2(PRnea, QU): + KBTS_C2(IDnea, QU): KBTS_C2(IDpe, QU): KBTS_C2(EBnea, QU): KBTS_C2(POnea, QU): KBTS_C2(JV, QU): KBTS_C2(JT, QU): KBTS_C2(AP, QU): KBTS_C2(AK, QU): + KBTS_C2(DOTTED_CIRCLE, QU): KBTS_C2(AS, QU): KBTS_C2(VF, QU): KBTS_C2(VI, QU): KBTS_C2(RI, QU): + KBTS_C2(Onea, QUPi): KBTS_C2(Ope, QUPi): + KBTS_C2(WJ, QUPi): KBTS_C2(CLnea, QUPi): KBTS_C2(CPnea, QUPi): KBTS_C2(EXnea, QUPi): KBTS_C2(SY, QUPi): KBTS_C2(BAnea, QUPi): + KBTS_C2(IS, QUPi): + KBTS_C2(NSnea, QUPi): + KBTS_C2(B2, QUPi): + KBTS_C2(CB, QUPi): + KBTS_C2(HY, QUPi): KBTS_C2(HYPHEN, QUPi): KBTS_C2(INnea, QUPi): KBTS_C2(BB, QUPi): KBTS_C2(HL, QUPi): KBTS_C2(ALnea, QUPi): KBTS_C2(NU, QUPi): KBTS_C2(PRnea, QUPi): + KBTS_C2(IDnea, QUPi): KBTS_C2(IDpe, QUPi): KBTS_C2(EBnea, QUPi): KBTS_C2(POnea, QUPi): KBTS_C2(JV, QUPi): KBTS_C2(JT, QUPi): KBTS_C2(AP, QUPi): KBTS_C2(AK, QUPi): + KBTS_C2(DOTTED_CIRCLE, QUPi): KBTS_C2(AS, QUPi): KBTS_C2(VF, QUPi): KBTS_C2(VI, QUPi): KBTS_C2(RI, QUPi): + KBTS_C2(Onea, QUPf): KBTS_C2(Ope, QUPf): KBTS_C2(BK, QUPf): KBTS_C2(CR, QUPf): KBTS_C2(LF, QUPf): KBTS_C2(NL, QUPf): KBTS_C2(SP, QUPf): KBTS_C2(ZW, QUPf): + KBTS_C2(WJ, QUPf): KBTS_C2(GLnea, QUPf): KBTS_C2(CLnea, QUPf): KBTS_C2(CPnea, QUPf): KBTS_C2(EXnea, QUPf): KBTS_C2(SY, QUPf): KBTS_C2(BAnea, QUPf): + KBTS_C2(OPnea, QUPf): KBTS_C2(QU, QUPf): KBTS_C2(IS, QUPf): KBTS_C2(NSnea, QUPf): KBTS_C2(B2, QUPf): KBTS_C2(CB, QUPf): + KBTS_C2(HY, QUPf): KBTS_C2(HYPHEN, QUPf): KBTS_C2(INnea, QUPf): KBTS_C2(BB, QUPf): KBTS_C2(HL, QUPf): KBTS_C2(ALnea, QUPf): KBTS_C2(NU, QUPf): KBTS_C2(PRnea, QUPf): + KBTS_C2(IDnea, QUPf): KBTS_C2(IDpe, QUPf): KBTS_C2(EBnea, QUPf): KBTS_C2(POnea, QUPf): KBTS_C2(JV, QUPf): KBTS_C2(JT, QUPf): KBTS_C2(AP, QUPf): KBTS_C2(AK, QUPf): + KBTS_C2(DOTTED_CIRCLE, QUPf): KBTS_C2(AS, QUPf): KBTS_C2(VF, QUPf): KBTS_C2(VI, QUPf): KBTS_C2(RI, QUPf): + KBTS_LINE_UNBREAK(1, 1); KBTS_LINE_UNBREAK(1, 0); break; + + KBTS_C2(HL, NU): KBTS_C2(ALnea, NU): KBTS_C2(ALea, NU): KBTS_C2(DOTTED_CIRCLE, NU): + KBTS_C2(NU, ALnea): KBTS_C2(NU, ALea): KBTS_C2(NU, DOTTED_CIRCLE): KBTS_C2(NU, HL): + KBTS_C2(PRnea, IDnea): KBTS_C2(PRnea, IDea): KBTS_C2(PRnea, IDpe): KBTS_C2(PRnea, EBea): KBTS_C2(PRnea, EBnea): KBTS_C2(PRnea, EM): + KBTS_C2(PRea, IDnea): KBTS_C2(PRea, IDea): KBTS_C2(PRea, IDpe): KBTS_C2(PRea, EBea): KBTS_C2(PRea, EBnea): KBTS_C2(PRea, EM): + KBTS_C2(IDnea, POea): KBTS_C2(IDnea, POnea): KBTS_C2(IDea, POea): KBTS_C2(IDea, POnea): KBTS_C2(IDpe, POea): KBTS_C2(IDpe, POnea): + KBTS_C2(EBnea, POea): KBTS_C2(EBnea, POnea): KBTS_C2(EBea, POea): KBTS_C2(EBea, POnea): KBTS_C2(EM, POea): KBTS_C2(EM, POnea): + KBTS_C2(PRea, ALea): KBTS_C2(PRea, ALnea): KBTS_C2(PRea, DOTTED_CIRCLE): KBTS_C2(PRea, HL): + KBTS_C2(PRnea, ALea): KBTS_C2(PRnea, ALnea): KBTS_C2(PRnea, DOTTED_CIRCLE): KBTS_C2(PRnea, HL): + KBTS_C2(POea, ALea): KBTS_C2(POea, ALnea): KBTS_C2(POea, DOTTED_CIRCLE): KBTS_C2(POea, HL): + KBTS_C2(POnea, ALea): KBTS_C2(POnea, ALnea): KBTS_C2(POnea, DOTTED_CIRCLE): KBTS_C2(POnea, HL): + KBTS_C2(ALea, PRea): KBTS_C2(ALea, PRnea): KBTS_C2(ALea, POea): KBTS_C2(ALea, POnea): + KBTS_C2(ALnea, PRea): KBTS_C2(ALnea, PRnea): KBTS_C2(ALnea, POea): KBTS_C2(ALnea, POnea): + KBTS_C2(DOTTED_CIRCLE, PRea): KBTS_C2(DOTTED_CIRCLE, PRnea): KBTS_C2(DOTTED_CIRCLE, POea): KBTS_C2(DOTTED_CIRCLE, POnea): + KBTS_C2(HL, PRea): KBTS_C2(HL, PRnea): KBTS_C2(HL, POea): KBTS_C2(HL, POnea): + KBTS_C2(NU, POea): KBTS_C2(NU, POnea): KBTS_C2(NU, PRea): KBTS_C2(NU, PRnea): KBTS_C2(NU, NU): + KBTS_C2(POea, NU): KBTS_C2(POnea, NU): KBTS_C2(PRea, NU): KBTS_C2(PRnea, NU): + KBTS_C2(SY, HL): + KBTS_C2(JL, JL): KBTS_C2(JL, JV): KBTS_C2(JL, H2): KBTS_C2(JL, H3): + KBTS_C2(JV, JV): KBTS_C2(JV, JT): KBTS_C2(H2, JV): KBTS_C2(H2, JT): + KBTS_C2(JT, JT): KBTS_C2(H3, JT): + KBTS_C2(JL, POea): KBTS_C2(JL, POnea): KBTS_C2(JV, POea): KBTS_C2(JV, POnea): KBTS_C2(JT, POea): KBTS_C2(JT, POnea): + KBTS_C2(H2, POea): KBTS_C2(H2, POnea): KBTS_C2(H3, POea): KBTS_C2(H3, POnea): + KBTS_C2(PRea, JL): KBTS_C2(PRea, JV): KBTS_C2(PRea, JT): KBTS_C2(PRea, H2): KBTS_C2(PRea, H3): + KBTS_C2(PRnea, JL): KBTS_C2(PRnea, JV): KBTS_C2(PRnea, JT): KBTS_C2(PRnea, H2): KBTS_C2(PRnea, H3): + KBTS_C2(ALea, ALea): KBTS_C2(ALea, ALnea): KBTS_C2(ALea, DOTTED_CIRCLE): KBTS_C2(ALea, HL): + KBTS_C2(ALnea, ALea): KBTS_C2(ALnea, ALnea): KBTS_C2(ALnea, DOTTED_CIRCLE): KBTS_C2(ALnea, HL): + KBTS_C2(DOTTED_CIRCLE, ALea): KBTS_C2(DOTTED_CIRCLE, ALnea): KBTS_C2(DOTTED_CIRCLE, DOTTED_CIRCLE): KBTS_C2(DOTTED_CIRCLE, HL): + KBTS_C2(HL, ALea): KBTS_C2(HL, ALnea): KBTS_C2(HL, DOTTED_CIRCLE): KBTS_C2(HL, HL): + KBTS_C2(AP, AK): KBTS_C2(AP, DOTTED_CIRCLE): KBTS_C2(AP, AS): + KBTS_C2(AK, VF): KBTS_C2(AK, VI): KBTS_C2(DOTTED_CIRCLE, VF): KBTS_C2(DOTTED_CIRCLE, VI): KBTS_C2(AS, VF): KBTS_C2(AS, VI): + KBTS_C2(IS, ALea): KBTS_C2(IS, ALnea): KBTS_C2(IS, DOTTED_CIRCLE): KBTS_C2(IS, HL): + KBTS_C2(ALea, OPnea): KBTS_C2(ALnea, OPnea): KBTS_C2(DOTTED_CIRCLE, OPnea): KBTS_C2(HL, OPnea): KBTS_C2(NU, OPnea): + KBTS_C2(CPnea, ALea): KBTS_C2(CPnea, ALnea): KBTS_C2(CPnea, DOTTED_CIRCLE): KBTS_C2(CPnea, HL): KBTS_C2(CPnea, NU): + KBTS_C2(EBea, EM): KBTS_C2(EBnea, EM): KBTS_C2(Ope, EM): KBTS_C2(IDpe, EM): + KBTS_C2(HY, NU): KBTS_C2(IS, NU): + KBTS_LINE_UNBREAK(0, 1); break; + + KBTS_C2(Oea, GLea):KBTS_C2(Oea, GLnea): + KBTS_C2(Onea, GLea):KBTS_C2(Onea, GLnea): + KBTS_C2(Ope, GLea):KBTS_C2(Ope, GLnea): + KBTS_C2(BK, GLea):KBTS_C2(BK, GLnea): + KBTS_C2(CR, GLea):KBTS_C2(CR, GLnea): + KBTS_C2(LF, GLea):KBTS_C2(LF, GLnea): + KBTS_C2(NL, GLea):KBTS_C2(NL, GLnea): + KBTS_C2(ZW, GLea):KBTS_C2(ZW, GLnea): + KBTS_C2(WJ, GLea):KBTS_C2(WJ, GLnea): + KBTS_C2(GLea, GLea):KBTS_C2(GLea, GLnea): + KBTS_C2(GLnea, GLea):KBTS_C2(GLnea, GLnea): + KBTS_C2(CLea, GLea):KBTS_C2(CLea, GLnea): + KBTS_C2(CLnea, GLea):KBTS_C2(CLnea, GLnea): + KBTS_C2(CPea, GLea):KBTS_C2(CPea, GLnea): + KBTS_C2(CPnea, GLea):KBTS_C2(CPnea, GLnea): + KBTS_C2(EXea, GLea):KBTS_C2(EXea, GLnea): + KBTS_C2(EXnea, GLea):KBTS_C2(EXnea, GLnea): + KBTS_C2(SY, GLea):KBTS_C2(SY, GLnea): + KBTS_C2(OPea, GLea):KBTS_C2(OPea, GLnea): + KBTS_C2(OPnea, GLea):KBTS_C2(OPnea, GLnea): + KBTS_C2(QU, GLea):KBTS_C2(QU, GLnea): + KBTS_C2(QUPi, GLea): + KBTS_C2(IS, GLea):KBTS_C2(IS, GLnea): + KBTS_C2(NSea, GLea):KBTS_C2(NSea, GLnea): + KBTS_C2(NSnea, GLea):KBTS_C2(NSnea, GLnea): + KBTS_C2(B2, GLea):KBTS_C2(B2, GLnea): + KBTS_C2(CB, GLea):KBTS_C2(CB, GLnea): + KBTS_C2(INea, GLea):KBTS_C2(INea, GLnea): + KBTS_C2(INnea, GLea):KBTS_C2(INnea, GLnea): + KBTS_C2(BB, GLea):KBTS_C2(BB, GLnea): + KBTS_C2(HL, GLea):KBTS_C2(HL, GLnea): + KBTS_C2(ALea, GLea):KBTS_C2(ALea, GLnea): + KBTS_C2(ALnea, GLea):KBTS_C2(ALnea, GLnea): + KBTS_C2(NU, GLea):KBTS_C2(NU, GLnea): + KBTS_C2(PRea, GLea):KBTS_C2(PRea, GLnea): + KBTS_C2(PRnea, GLea):KBTS_C2(PRnea, GLnea): + KBTS_C2(IDea, GLea):KBTS_C2(IDea, GLnea): + KBTS_C2(IDnea, GLea):KBTS_C2(IDnea, GLnea): + KBTS_C2(IDpe, GLea):KBTS_C2(IDpe, GLnea): + KBTS_C2(EBea, GLea):KBTS_C2(EBea, GLnea): + KBTS_C2(EBnea, GLea):KBTS_C2(EBnea, GLnea): + KBTS_C2(EM, GLea):KBTS_C2(EM, GLnea): + KBTS_C2(POea, GLea):KBTS_C2(POea, GLnea): + KBTS_C2(POnea, GLea):KBTS_C2(POnea, GLnea): + KBTS_C2(JL, GLea):KBTS_C2(JL, GLnea): + KBTS_C2(JV, GLea):KBTS_C2(JV, GLnea): + KBTS_C2(JT, GLea):KBTS_C2(JT, GLnea): + KBTS_C2(H2, GLea):KBTS_C2(H2, GLnea): + KBTS_C2(H3, GLea):KBTS_C2(H3, GLnea): + KBTS_C2(AP, GLea):KBTS_C2(AP, GLnea): + KBTS_C2(AK, GLea):KBTS_C2(AK, GLnea): + KBTS_C2(DOTTED_CIRCLE, GLea):KBTS_C2(DOTTED_CIRCLE, GLnea): + KBTS_C2(AS, GLea):KBTS_C2(AS, GLnea): + KBTS_C2(VF, GLea):KBTS_C2(VF, GLnea): + KBTS_C2(VI, GLea):KBTS_C2(VI, GLnea): + KBTS_C2(RI, GLea):KBTS_C2(RI, GLnea): + KBTS_LINE_UNBREAK(3, 1); break; + + + KBTS_C2(CLea, NSnea): KBTS_C2(CLea, NSea): KBTS_C2(CLnea, NSnea): KBTS_C2(CLnea, NSea): + KBTS_C2(CPea, NSnea): KBTS_C2(CPea, NSea): KBTS_C2(CPnea, NSnea): KBTS_C2(CPnea, NSea): + KBTS_C2(B2, B2): + KBTS_LINE_UNBREAK(2, 1); break; + + KBTS_C2(RI, RI): // (RI RI)* RI x RI + KBTS_LINE_UNBREAK(0, 1); + LineBreakHistory = 0; + break; + } + + switch(LineBreakHistory & 0xFFFFFF) + { + KBTS_C3(SOT, QUPi, SP): KBTS_C3(BK, QUPi, SP): KBTS_C3(CR, QUPi, SP): KBTS_C3(LF, QUPi, SP): KBTS_C3(NL, QUPi, SP): KBTS_C3(OPea, QUPi, SP): KBTS_C3(OPnea, QUPi, SP): + KBTS_C3(SP, QUPi, SP): KBTS_C3(ZW, QUPi, SP): KBTS_C3(QU, QUPi, SP): KBTS_C3(QUPi, QUPi, SP): KBTS_C3(QUPf, QUPi, SP): KBTS_C3(GLea, QUPi, SP): KBTS_C3(GLnea, QUPi, SP): + KBTS_LINE_UNBREAK(3, 0); break; + + KBTS_C3(SP, IS, NU): + KBTS_LINE_BREAK(3, 2); break; + + KBTS_C3(CLea, SP, NSnea): KBTS_C3(CLea, SP, NSea): KBTS_C3(CLnea, SP, NSnea): KBTS_C3(CLnea, SP, NSea): + KBTS_C3(CPea, SP, NSnea): KBTS_C3(CPea, SP, NSea): KBTS_C3(CPnea, SP, NSnea): KBTS_C3(CPnea, SP, NSea): + KBTS_C3(B2, SP, B2): + KBTS_LINE_UNBREAK(2, 1); break; + + KBTS_C3(SOT, HY, ALnea): KBTS_C3(SOT, HY, ALea): KBTS_C3(SOT, HY, DOTTED_CIRCLE): KBTS_C3(SOT, HYPHEN, ALnea): KBTS_C3(SOT, HYPHEN, ALea): KBTS_C3(SOT, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(BK, HY, ALnea): KBTS_C3(BK, HY, ALea): KBTS_C3(BK, HY, DOTTED_CIRCLE): KBTS_C3(BK, HYPHEN, ALnea): KBTS_C3(BK, HYPHEN, ALea): KBTS_C3(BK, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(LF, HY, ALnea): KBTS_C3(LF, HY, ALea): KBTS_C3(LF, HY, DOTTED_CIRCLE): KBTS_C3(LF, HYPHEN, ALnea): KBTS_C3(LF, HYPHEN, ALea): KBTS_C3(LF, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(NL, HY, ALnea): KBTS_C3(NL, HY, ALea): KBTS_C3(NL, HY, DOTTED_CIRCLE): KBTS_C3(NL, HYPHEN, ALnea): KBTS_C3(NL, HYPHEN, ALea): KBTS_C3(NL, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(CR, HY, ALnea): KBTS_C3(CR, HY, ALea): KBTS_C3(CR, HY, DOTTED_CIRCLE): KBTS_C3(CR, HYPHEN, ALnea): KBTS_C3(CR, HYPHEN, ALea): KBTS_C3(CR, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(SP, HY, ALnea): KBTS_C3(SP, HY, ALea): KBTS_C3(SP, HY, DOTTED_CIRCLE): KBTS_C3(SP, HYPHEN, ALnea): KBTS_C3(SP, HYPHEN, ALea): KBTS_C3(SP, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(ZW, HY, ALnea): KBTS_C3(ZW, HY, ALea): KBTS_C3(ZW, HY, DOTTED_CIRCLE): KBTS_C3(ZW, HYPHEN, ALnea): KBTS_C3(ZW, HYPHEN, ALea): KBTS_C3(ZW, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(CB, HY, ALnea): KBTS_C3(CB, HY, ALea): KBTS_C3(CB, HY, DOTTED_CIRCLE): KBTS_C3(CB, HYPHEN, ALnea): KBTS_C3(CB, HYPHEN, ALea): KBTS_C3(CB, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(GLnea, HY, ALnea): KBTS_C3(GLnea, HY, ALea): KBTS_C3(GLnea, HY, DOTTED_CIRCLE): KBTS_C3(GLnea, HYPHEN, ALnea): KBTS_C3(GLnea, HYPHEN, ALea): KBTS_C3(GLnea, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(GLea, HY, ALnea): KBTS_C3(GLea, HY, ALea): KBTS_C3(GLea, HY, DOTTED_CIRCLE): KBTS_C3(GLea, HYPHEN, ALnea): KBTS_C3(GLea, HYPHEN, ALea): KBTS_C3(GLea, HYPHEN, DOTTED_CIRCLE): + KBTS_C3(NU, SY, POea): KBTS_C3(NU, SY, POnea): KBTS_C3(NU, SY, PRea): KBTS_C3(NU, SY, PRnea): KBTS_C3(NU, SY, NU): + KBTS_C3(NU, IS, POea): KBTS_C3(NU, IS, POnea): KBTS_C3(NU, IS, PRea): KBTS_C3(NU, IS, PRnea): KBTS_C3(NU, IS, NU): + KBTS_C3(NU, CLea, POea): KBTS_C3(NU, CLea, POnea): KBTS_C3(NU, CLea, PRea): KBTS_C3(NU, CLea, PRnea): + KBTS_C3(NU, CLnea, POea): KBTS_C3(NU, CLnea, POnea): KBTS_C3(NU, CLnea, PRea): KBTS_C3(NU, CLnea, PRnea): + KBTS_C3(NU, CPea, POea): KBTS_C3(NU, CPea, POnea): KBTS_C3(NU, CPea, PRea): KBTS_C3(NU, CPea, PRnea): + KBTS_C3(NU, CPnea, POea): KBTS_C3(NU, CPnea, POnea): KBTS_C3(NU, CPnea, PRea): KBTS_C3(NU, CPnea, PRnea): + KBTS_C3(AK, VI, AK): KBTS_C3(AK, VI, DOTTED_CIRCLE): KBTS_C3(DOTTED_CIRCLE, VI, AK): KBTS_C3(DOTTED_CIRCLE, VI, DOTTED_CIRCLE): KBTS_C3(AS, VI, AK): KBTS_C3(AS, VI, DOTTED_CIRCLE): + KBTS_LINE_UNBREAK(0, 1); break; + + KBTS_C3(POea, OPea, NU): KBTS_C3(POea, OPnea, NU): KBTS_C3(POnea, OPea, NU): KBTS_C3(POnea, OPnea, NU): + KBTS_C3(PRea, OPea, NU): KBTS_C3(PRea, OPnea, NU): KBTS_C3(PRnea, OPea, NU): KBTS_C3(PRnea, OPnea, NU): + KBTS_LINE_UNBREAK(0, 2); break; + + KBTS_C3(AK, AK, VF): KBTS_C3(AK, DOTTED_CIRCLE, VF): KBTS_C3(AK, AS, VF): + KBTS_C3(DOTTED_CIRCLE, AK, VF): KBTS_C3(DOTTED_CIRCLE, DOTTED_CIRCLE, VF): KBTS_C3(DOTTED_CIRCLE, AS, VF): + KBTS_C3(AS, AK, VF): KBTS_C3(AS, DOTTED_CIRCLE, VF): KBTS_C3(AS, AS, VF): + KBTS_LINE_UNBREAK(0, 2); break; + + KBTS_C3(HL, BAnea, Oea): KBTS_C3(HL, BAnea, Onea): KBTS_C3(HL, BAnea, Ope): KBTS_C3(HL, BAnea, BK): KBTS_C3(HL, BAnea, CR): KBTS_C3(HL, BAnea, LF): + KBTS_C3(HL, BAnea, NL): KBTS_C3(HL, BAnea, SP): KBTS_C3(HL, BAnea, ZW): KBTS_C3(HL, BAnea, WJ): KBTS_C3(HL, BAnea, GLea): KBTS_C3(HL, BAnea, GLnea): + KBTS_C3(HL, BAnea, CLea): KBTS_C3(HL, BAnea, CLnea): KBTS_C3(HL, BAnea, CPea): KBTS_C3(HL, BAnea, CPnea): KBTS_C3(HL, BAnea, EXea): KBTS_C3(HL, BAnea, EXnea): + KBTS_C3(HL, BAnea, SY): KBTS_C3(HL, BAnea, BAea): KBTS_C3(HL, BAnea, BAnea): KBTS_C3(HL, BAnea, OPea): KBTS_C3(HL, BAnea, OPnea): KBTS_C3(HL, BAnea, QU): + KBTS_C3(HL, BAnea, QUPi): KBTS_C3(HL, BAnea, QUPf): KBTS_C3(HL, BAnea, IS): KBTS_C3(HL, BAnea, NSea): KBTS_C3(HL, BAnea, NSnea): KBTS_C3(HL, BAnea, B2): + KBTS_C3(HL, BAnea, CB): KBTS_C3(HL, BAnea, HY): KBTS_C3(HL, BAnea, HYPHEN): KBTS_C3(HL, BAnea, INea): KBTS_C3(HL, BAnea, INnea): KBTS_C3(HL, BAnea, BB): + KBTS_C3(HL, BAnea, ALea): KBTS_C3(HL, BAnea, ALnea): KBTS_C3(HL, BAnea, NU): KBTS_C3(HL, BAnea, PRea): KBTS_C3(HL, BAnea, PRnea): KBTS_C3(HL, BAnea, IDea): + KBTS_C3(HL, BAnea, IDnea): KBTS_C3(HL, BAnea, IDpe): KBTS_C3(HL, BAnea, EBea): KBTS_C3(HL, BAnea, EBnea): KBTS_C3(HL, BAnea, EM): KBTS_C3(HL, BAnea, POea): + KBTS_C3(HL, BAnea, POnea): KBTS_C3(HL, BAnea, JL): KBTS_C3(HL, BAnea, JV): KBTS_C3(HL, BAnea, JT): KBTS_C3(HL, BAnea, H2): KBTS_C3(HL, BAnea, H3): + KBTS_C3(HL, BAnea, AP): KBTS_C3(HL, BAnea, AK): KBTS_C3(HL, BAnea, DOTTED_CIRCLE): KBTS_C3(HL, BAnea, AS): KBTS_C3(HL, BAnea, VF): KBTS_C3(HL, BAnea, VI): KBTS_C3(HL, BAnea, RI): + KBTS_C3(HL, HYPHEN, Oea): KBTS_C3(HL, HYPHEN, Onea): KBTS_C3(HL, HYPHEN, Ope): KBTS_C3(HL, HYPHEN, BK): KBTS_C3(HL, HYPHEN, CR): KBTS_C3(HL, HYPHEN, LF): + KBTS_C3(HL, HYPHEN, NL): KBTS_C3(HL, HYPHEN, SP): KBTS_C3(HL, HYPHEN, ZW): KBTS_C3(HL, HYPHEN, WJ): KBTS_C3(HL, HYPHEN, GLea): KBTS_C3(HL, HYPHEN, GLnea): + KBTS_C3(HL, HYPHEN, CLea): KBTS_C3(HL, HYPHEN, CLnea): KBTS_C3(HL, HYPHEN, CPea): KBTS_C3(HL, HYPHEN, CPnea): KBTS_C3(HL, HYPHEN, EXea): KBTS_C3(HL, HYPHEN, EXnea): + KBTS_C3(HL, HYPHEN, SY): KBTS_C3(HL, HYPHEN, BAea): KBTS_C3(HL, HYPHEN, BAnea): KBTS_C3(HL, HYPHEN, OPea): KBTS_C3(HL, HYPHEN, OPnea): KBTS_C3(HL, HYPHEN, QU): + KBTS_C3(HL, HYPHEN, QUPi): KBTS_C3(HL, HYPHEN, QUPf): KBTS_C3(HL, HYPHEN, IS): KBTS_C3(HL, HYPHEN, NSea): KBTS_C3(HL, HYPHEN, NSnea): KBTS_C3(HL, HYPHEN, B2): + KBTS_C3(HL, HYPHEN, CB): KBTS_C3(HL, HYPHEN, HY): KBTS_C3(HL, HYPHEN, HYPHEN): KBTS_C3(HL, HYPHEN, INea): KBTS_C3(HL, HYPHEN, INnea): KBTS_C3(HL, HYPHEN, BB): + KBTS_C3(HL, HYPHEN, ALea): KBTS_C3(HL, HYPHEN, ALnea): KBTS_C3(HL, HYPHEN, NU): KBTS_C3(HL, HYPHEN, PRea): KBTS_C3(HL, HYPHEN, PRnea): KBTS_C3(HL, HYPHEN, IDea): + KBTS_C3(HL, HYPHEN, IDnea): KBTS_C3(HL, HYPHEN, IDpe): KBTS_C3(HL, HYPHEN, EBea): KBTS_C3(HL, HYPHEN, EBnea): KBTS_C3(HL, HYPHEN, EM): KBTS_C3(HL, HYPHEN, POea): + KBTS_C3(HL, HYPHEN, POnea): KBTS_C3(HL, HYPHEN, JL): KBTS_C3(HL, HYPHEN, JV): KBTS_C3(HL, HYPHEN, JT): KBTS_C3(HL, HYPHEN, H2): KBTS_C3(HL, HYPHEN, H3): + KBTS_C3(HL, HYPHEN, AP): KBTS_C3(HL, HYPHEN, AK): KBTS_C3(HL, HYPHEN, DOTTED_CIRCLE): KBTS_C3(HL, HYPHEN, AS): KBTS_C3(HL, HYPHEN, VF): KBTS_C3(HL, HYPHEN, VI): KBTS_C3(HL, HYPHEN, RI): + KBTS_C3(HL, HY, Oea): KBTS_C3(HL, HY, Onea): KBTS_C3(HL, HY, Ope): KBTS_C3(HL, HY, BK): KBTS_C3(HL, HY, CR): KBTS_C3(HL, HY, LF): + KBTS_C3(HL, HY, NL): KBTS_C3(HL, HY, SP): KBTS_C3(HL, HY, ZW): KBTS_C3(HL, HY, WJ): KBTS_C3(HL, HY, GLea): KBTS_C3(HL, HY, GLnea): + KBTS_C3(HL, HY, CLea): KBTS_C3(HL, HY, CLnea): KBTS_C3(HL, HY, CPea): KBTS_C3(HL, HY, CPnea): KBTS_C3(HL, HY, EXea): KBTS_C3(HL, HY, EXnea): + KBTS_C3(HL, HY, SY): KBTS_C3(HL, HY, BAea): KBTS_C3(HL, HY, BAnea): KBTS_C3(HL, HY, OPea): KBTS_C3(HL, HY, OPnea): KBTS_C3(HL, HY, QU): + KBTS_C3(HL, HY, QUPi): KBTS_C3(HL, HY, QUPf): KBTS_C3(HL, HY, IS): KBTS_C3(HL, HY, NSea): KBTS_C3(HL, HY, NSnea): KBTS_C3(HL, HY, B2): + KBTS_C3(HL, HY, CB): KBTS_C3(HL, HY, HY): KBTS_C3(HL, HY, HYPHEN): KBTS_C3(HL, HY, INea): KBTS_C3(HL, HY, INnea): KBTS_C3(HL, HY, BB): + KBTS_C3(HL, HY, ALea): KBTS_C3(HL, HY, ALnea): KBTS_C3(HL, HY, NU): KBTS_C3(HL, HY, PRea): KBTS_C3(HL, HY, PRnea): KBTS_C3(HL, HY, IDea): + KBTS_C3(HL, HY, IDnea): KBTS_C3(HL, HY, IDpe): KBTS_C3(HL, HY, EBea): KBTS_C3(HL, HY, EBnea): KBTS_C3(HL, HY, EM): KBTS_C3(HL, HY, POea): + KBTS_C3(HL, HY, POnea): KBTS_C3(HL, HY, JL): KBTS_C3(HL, HY, JV): KBTS_C3(HL, HY, JT): KBTS_C3(HL, HY, H2): KBTS_C3(HL, HY, H3): + KBTS_C3(HL, HY, AP): KBTS_C3(HL, HY, AK): KBTS_C3(HL, HY, DOTTED_CIRCLE): KBTS_C3(HL, HY, AS): KBTS_C3(HL, HY, VF): KBTS_C3(HL, HY, VI): KBTS_C3(HL, HY, RI): + KBTS_LINE_UNBREAK(0, 1); break; + } + + switch(LineBreakHistory) + { + KBTS_C4(NU, SY, CLnea, POnea): KBTS_C4(NU, SY, CLnea, POea): KBTS_C4(NU, SY, CLnea, PRnea): KBTS_C4(NU, SY, CLnea, PRea): + KBTS_C4(NU, SY, CLea, POnea): KBTS_C4(NU, SY, CLea, POea): KBTS_C4(NU, SY, CLea, PRnea): KBTS_C4(NU, SY, CLea, PRea): + KBTS_C4(NU, SY, CPnea, POnea): KBTS_C4(NU, SY, CPnea, POea): KBTS_C4(NU, SY, CPnea, PRnea): KBTS_C4(NU, SY, CPnea, PRea): + KBTS_C4(NU, SY, CPea, POnea): KBTS_C4(NU, SY, CPea, POea): KBTS_C4(NU, SY, CPea, PRnea): KBTS_C4(NU, SY, CPea, PRea): + KBTS_C4(NU, IS, CLnea, POnea): KBTS_C4(NU, IS, CLnea, POea): KBTS_C4(NU, IS, CLnea, PRnea): KBTS_C4(NU, IS, CLnea, PRea): + KBTS_C4(NU, IS, CLea, POnea): KBTS_C4(NU, IS, CLea, POea): KBTS_C4(NU, IS, CLea, PRnea): KBTS_C4(NU, IS, CLea, PRea): + KBTS_C4(NU, IS, CPnea, POnea): KBTS_C4(NU, IS, CPnea, POea): KBTS_C4(NU, IS, CPnea, PRnea): KBTS_C4(NU, IS, CPnea, PRea): + KBTS_C4(NU, IS, CPea, POnea): KBTS_C4(NU, IS, CPea, POea): KBTS_C4(NU, IS, CPea, PRnea): KBTS_C4(NU, IS, CPea, PRea): + KBTS_LINE_UNBREAK(0, 1); break; + + KBTS_C4(POea, OPea, IS, NU): KBTS_C4(POea, OPnea, IS, NU): KBTS_C4(POnea, OPea, IS, NU): KBTS_C4(POnea, OPnea, IS, NU): + KBTS_C4(PRea, OPea, IS, NU): KBTS_C4(PRea, OPnea, IS, NU): KBTS_C4(PRnea, OPea, IS, NU): KBTS_C4(PRnea, OPnea, IS, NU): + KBTS_LINE_UNBREAK(0, 3); break; + } + + if(StartOfText) + { + // Never break lines. + KBTS_LINE_UNBREAK(5, 1); + // Always break graphemes. + KBTS_BREAK(KBTS_BREAK_FLAG_GRAPHEME, 1); + } + + #undef KBTS_C1 + #undef KBTS_C2 + #undef KBTS_C3 + #undef KBTS_C4 + #undef KBTS_REQUIRED_LINE_BREAK + #undef KBTS_LINE_BREAK + #undef KBTS_LINE_UNBREAK + + kbts_u64 EffectiveLineBreaks = LineBreaks & ~(LineUnbreaks | LineUnbreaksAsync); + + kbts_DoLineBreak(State, PositionOffset3 + LineBreak3PositionOffset, EffectiveLineBreaks >> 48, 0, 0); + if(EndOfText) + { + kbts_DoLineBreak(State, PositionOffset2 + LineBreak2PositionOffset, EffectiveLineBreaks >> 32, 0, 0); + { // @Cleanup: This is the same flag code as DoLineBreak, but we want to use FlagState buffering for this. + // The only places where we want to manually call DoBreak is for asynchronous/buffered guys. + kbts_u8 FlushFlags = 0; + if((EffectiveLineBreaks >> 16) & KBTS_LINE_BREAK_ALLOWED_MASK) FlushFlags |= KBTS_BREAK_FLAG_LINE_SOFT; + if((EffectiveLineBreaks >> 16) & KBTS_LINE_BREAK_REQUIRED_MASK) FlushFlags |= KBTS_BREAK_FLAG_LINE_HARD; + KBTS_BREAK(FlushFlags, 1); + } + // Lines are never broken after the end of text. + } + + State->LineBreaks = LineBreaks; + State->LineUnbreaks = LineUnbreaks; + State->LineBreak2PositionOffset = 0; + State->LineBreak3PositionOffset = LineBreak2PositionOffset; + State->LastLineBreakClass = LineBreakClass; + State->LineBreakHistory = LineBreakHistory; + State->LastDirection = (kbts_u8)LastDirection; + + if(0) + { + LineBreakAbsorbCharacter:; + State->LineBreak2PositionOffset -= PositionIncrement; + State->LineBreak3PositionOffset -= PositionIncrement; + } + + // This always gets updated. + State->LineUnbreaksAsync = LineUnbreaksAsync; + } + + // This is where we flush the normal breaks that don't need any special position adjustment. + kbts_DoBreak(State, PositionOffset3, (FlagState >> 24) & 0xFF, LastDirection, State->LastScripts[1]); + if(EndOfText) + { + kbts_DoBreak(State, PositionOffset2, (FlagState >> 16) & 0xFF, 0, LastScript); + kbts_DoBreak(State, 0, (FlagState >> 8) & 0xFF, 0, Script); + kbts_DoBreak(State, PositionIncrement, FlagState & 0xFF, 0, Script); + } + + State->FlagState = FlagState; + State->Flags |= KBTS_BREAK_STATE_FLAG_STARTED; + if(EndOfText) State->Flags |= KBTS_BREAK_STATE_FLAG_END; + State->PositionOffset2 = (kbts_s16)-(int)PositionIncrement; + State->PositionOffset3 = (kbts_s16)(PositionOffset2 - (int)PositionIncrement); + State->CurrentPosition += PositionIncrement; + + State->LastScripts[1] = State->LastScripts[0]; + State->LastScripts[0] = Script; +#undef KBTS_BREAK +#undef KBTS_BREAK2 +} + +KBTS_EXPORT void kbts_BreakFlush(kbts_break_state *State) +{ + // We pass 3, aka. ASCII end-of-text, at the end of text. + kbts_BreakAddCodepoint_(State, 3, 0, 1); +} + +KBTS_EXPORT void kbts_BreakAddCodepoint(kbts_break_state *State, kbts_u32 Codepoint, kbts_u32 PositionIncrement, int EndOfText) +{ + kbts_BreakAddCodepoint_(State, Codepoint, PositionIncrement, 0); + if(EndOfText) kbts_BreakFlush(State); +} + +KBTS_EXPORT int kbts_Break(kbts_break_state *State, kbts_break *Break) +{ + int Result = 0; + kbts_un Threshold = State->Flags & KBTS_BREAK_STATE_FLAG_END ? 0 : KBTS_BREAK_REORDER_BUFFER_FLUSH_THRESHOLD; + + if(kbts_BreakStateIsValid(State) && (State->BreakCount > Threshold)) + { + kbts_break *ToFlush = &State->Breaks[State->BreakCount - 1]; + // @Incomplete: Handle wrapping. + if(ToFlush->Position >= State->LastFlushedBreakPosition) + { + *Break = *ToFlush; + State->LastFlushedBreakPosition = ToFlush->Position; + State->BreakCount -= 1; + Result = 1; + } + else + { + State->Flags |= KBTS_BREAK_STATE_FLAG_RAN_OUT_OF_REORDER_BUFFER_SPACE; + } + } + + return Result; +} + +KBTS_EXPORT void kbts_BeginBreak(kbts_break_state *State, kbts_direction MainDirection, kbts_japanese_line_break_style JapaneseLineBreakStyle) +{ + if(State) + { + memset(State, 0, sizeof(*State)); + State->MainDirection = (kbts_u8)MainDirection; + State->JapaneseLineBreakStyle = JapaneseLineBreakStyle; + } +} + +KBTS_EXPORT kbts_decode kbts_DecodeUtf8(const char *Utf8, kbts_un Length) +{ + kbts_decode Result = KBTS_ZERO; + const char *Utf8Start = Utf8; + + if(Length) + { + kbts_u8 First = (kbts_u8)*Utf8++; + kbts_un FollowupCharacterCount = 0; + + switch((First & 0xF0) >> 4) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + { + Result.Codepoint = First & 0x7F; + Result.Valid = 1; + } + break; + + case 0xC: + case 0xD: + { + FollowupCharacterCount = 1; + Result.Codepoint = First & 0x1F; + Result.Valid = 1; + } + break; + + case 0xE: + { + FollowupCharacterCount = 2; + Result.Codepoint = First & 0xF; + Result.Valid = 1; + } + break; + + case 0xF: + { + FollowupCharacterCount = 3; + Result.Codepoint = First & 7; + Result.Valid = 1; + } + break; + } + + if(Length > FollowupCharacterCount) + { + KBTS_FOR(FollowupCharacterIndex, 0, FollowupCharacterCount) + { + kbts_u8 C = (kbts_u8)*Utf8++; + + if((C & 0xC0) == 0x80) + { + Result.Codepoint = (Result.Codepoint << 6) | (C & 0x3F); + } + else + { + Result.Valid = 0; + + break; + } + } + } + else + { + Result.Valid = 0; + } + } + + Result.SourceCharactersConsumed = (kbts_u32)(Utf8 - Utf8Start); + + return Result; +} + +KBTS_EXPORT int kbts_ShaperIsComplex(kbts_shaper Shaper) +{ + int Result = Shaper != KBTS_SHAPER_DEFAULT; // @Incomplete? + + return Result; +} + +KBTS_EXPORT int kbts_ScriptIsComplex(kbts_script Script) +{ + kbts_script_properties *Properties = &kbts_ScriptProperties[Script]; + int Result = kbts_ShaperIsComplex(Properties->Shaper); + return Result; +} + +#endif +#undef KBTS_X_FEATURES diff --git a/modules/kb_text_shape/macos.jai b/modules/kb_text_shape/macos.jai new file mode 100644 index 0000000..5cbebd1 --- /dev/null +++ b/modules/kb_text_shape/macos.jai @@ -0,0 +1,3694 @@ +// +// This file was auto-generated using the following command: +// +// jai generate.jai - -compile -debug +// + + + +kbts_s32 :: s32; + +KB_TEXT_SHAPE_POINTER_SIZE :: 8; + +KBTS_MAX_SIMULTANEOUS_FEATURES :: 16; + +KBTS_BREAK_REORDER_BUFFER_FLUSH_THRESHOLD :: 4; +KBTS_BREAK_REORDER_BUFFER_SIZE :: KBTS_BREAK_REORDER_BUFFER_FLUSH_THRESHOLD * 2; + +kbts_joining_feature :: enum u8 { + NONE :: 0; + ISOL :: 1; + FINA :: 2; + FIN2 :: 3; + FIN3 :: 4; + MEDI :: 5; + MED2 :: 6; + INIT :: 7; + + COUNT :: 8; + + KBTS_JOINING_FEATURE_NONE :: NONE; + KBTS_JOINING_FEATURE_ISOL :: ISOL; + KBTS_JOINING_FEATURE_FINA :: FINA; + KBTS_JOINING_FEATURE_FIN2 :: FIN2; + KBTS_JOINING_FEATURE_FIN3 :: FIN3; + KBTS_JOINING_FEATURE_MEDI :: MEDI; + KBTS_JOINING_FEATURE_MED2 :: MED2; + KBTS_JOINING_FEATURE_INIT :: INIT; + + KBTS_JOINING_FEATURE_COUNT :: COUNT; +} + +kbts_reph_position :: enum u8 { + AFTER_POST :: 0; + BEFORE_POST :: 1; + BEFORE_SUBJOINED :: 2; + AFTER_SUBJOINED :: 3; + AFTER_MAIN :: 4; + + COUNT :: 5; + + KBTS_REPH_POSITION_AFTER_POST :: AFTER_POST; + KBTS_REPH_POSITION_BEFORE_POST :: BEFORE_POST; + KBTS_REPH_POSITION_BEFORE_SUBJOINED :: BEFORE_SUBJOINED; + KBTS_REPH_POSITION_AFTER_SUBJOINED :: AFTER_SUBJOINED; + KBTS_REPH_POSITION_AFTER_MAIN :: AFTER_MAIN; + + KBTS_REPH_POSITION_COUNT :: COUNT; +} + +kbts_reph_encoding :: enum u8 { + IMPLICIT :: 0; + EXPLICIT :: 1; + LOGICAL_REPHA :: 2; + VISUAL_REPHA :: 3; + + COUNT :: 4; + + KBTS_REPH_ENCODING_IMPLICIT :: IMPLICIT; + KBTS_REPH_ENCODING_EXPLICIT :: EXPLICIT; + KBTS_REPH_ENCODING_LOGICAL_REPHA :: LOGICAL_REPHA; + KBTS_REPH_ENCODING_VISUAL_REPHA :: VISUAL_REPHA; + + KBTS_REPH_ENCODING_COUNT :: COUNT; +} + +kbts_syllabic_position :: enum u8 { + NONE :: 0; + + RA_TO_BECOME_REPH :: 1; + + PREBASE_MATRA :: 2; + PREBASE_CONSONANT :: 3; + + SYLLABLE_BASE :: 4; + AFTER_MAIN :: 5; + + ABOVEBASE_CONSONANT :: 6; + + BEFORE_SUBJOINED :: 7; + BELOWBASE_CONSONANT :: 8; + AFTER_SUBJOINED :: 9; + + BEFORE_POST :: 10; + POSTBASE_CONSONANT :: 11; + AFTER_POST :: 12; + + FINAL_CONSONANT :: 13; + SMVD :: 14; + + COUNT :: 15; + + KBTS_SYLLABIC_POSITION_NONE :: NONE; + + KBTS_SYLLABIC_POSITION_RA_TO_BECOME_REPH :: RA_TO_BECOME_REPH; + + KBTS_SYLLABIC_POSITION_PREBASE_MATRA :: PREBASE_MATRA; + KBTS_SYLLABIC_POSITION_PREBASE_CONSONANT :: PREBASE_CONSONANT; + + KBTS_SYLLABIC_POSITION_SYLLABLE_BASE :: SYLLABLE_BASE; + KBTS_SYLLABIC_POSITION_AFTER_MAIN :: AFTER_MAIN; + + KBTS_SYLLABIC_POSITION_ABOVEBASE_CONSONANT :: ABOVEBASE_CONSONANT; + + KBTS_SYLLABIC_POSITION_BEFORE_SUBJOINED :: BEFORE_SUBJOINED; + KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT :: BELOWBASE_CONSONANT; + KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED :: AFTER_SUBJOINED; + + KBTS_SYLLABIC_POSITION_BEFORE_POST :: BEFORE_POST; + KBTS_SYLLABIC_POSITION_POSTBASE_CONSONANT :: POSTBASE_CONSONANT; + KBTS_SYLLABIC_POSITION_AFTER_POST :: AFTER_POST; + + KBTS_SYLLABIC_POSITION_FINAL_CONSONANT :: FINAL_CONSONANT; + KBTS_SYLLABIC_POSITION_SMVD :: SMVD; + + KBTS_SYLLABIC_POSITION_COUNT :: COUNT; +} + +kbts_language :: enum u32 { + DONT_KNOW :: 0; + + A_HMAO :: 541347144; + AARI :: 541676097; + ABAZA :: 541147713; + ABKHAZIAN :: 541803073; + ACHI :: 542262081; + ACHOLI :: 541606721; + ADYGHE :: 542721089; + AFAR :: 542262849; + AFRIKAANS :: 541804097; + AGAW :: 542590785; + AITON :: 542067009; + AKAN :: 541150017; + ALBANIAN :: 541675859; + ALSATIAN :: 542329921; + ALTAI :: 542395457; + ALUO :: 541150809; + AMERICAN_PHONETIC :: 1213222977; + AMHARIC :: 541609281; + ANGLO_SAXON :: 541544001; + ARABIC :: 541151809; + ARAGONESE :: 541545025; + ARAKANESE :: 541807169; + ARAKWAL :: 542591826; + ARMENIAN :: 541415752; + ARMENIAN_EAST :: 809851208; + AROMANIAN :: 542135634; + ARPITAN :: 542134854; + ASSAMESE :: 541938497; + ASTURIAN :: 542397249; + ATHAPASKAN :: 541611073; + ATSINA :: 542331969; + AVAR :: 542266945; + AVATIME :: 542004801; + AWADHI :: 541153089; + AYMARA :: 541940033; + AZERBAIDJANI :: 541416001; + BADAGA :: 541344066; + BAGHELKHANDI :: 541540674; + BAGRI :: 542197570; + BALANTE :: 542002242; + BALINESE :: 541999426; + BALKAR :: 541868354; + BALTI :: 542395458; + BALUCHI :: 541674562; + BAMBARA :: 541216066; + BAMILEKE :: 541871426; + BANDA :: 809779522; + BANDJALANG :: 542721090; + BANGLA :: 542000450; + BASHKIR :: 541610818; + BASQUE :: 542201157; + BATAK :: 541807682; + BATAK_ALAS_KLUET :: 542790722; + BATAK_ANGKOLA :: 541215553; + BATAK_DAIRI :: 541348930; + BATAK_KARO :: 542659650; + BATAK_MANDAILING :: 541938754; + BATAK_SIMALUNGUN :: 542331970; + BATAK_TOBA :: 541278786; + BAULE :: 542458178; + BAVARIAN :: 542261570; + BELARUSIAN :: 541869378; + BEMBA :: 541934914; + BENCH :: 541606722; + BERBER :: 542261826; + BETI :: 541676610; + BETTE_KURUMA :: 541218136; + BHILI :: 541673538; + BHOJPURI :: 542066754; + BHUTANESE :: 542005828; + BIBLE_CREE :: 542262082; + BIKOL :: 541804866; + BILEN :: 541870402; + BISHNUPRIYA_MANIPURI :: 542724162; + BISLAMA :: 542329154; + BLACKFOOT :: 541477698; + BODO :: 542659138; + BOSNIAN :: 542330690; + BOUYEI :: 541279056; + BRAHUI :: 541610562; + BRAJ_BHASHA :: 541676098; + BRETON :: 541413954; + BUGIS :: 541545794; + BULGARIAN :: 542263106; + BUMTHANGKHA :: 542788171; + BURMESE :: 541938242; + BURUSHASKI :: 541807426; + CAJUN_FRENCH :: 541282886; + CARRIER :: 542265923; + CATALAN :: 542392643; + CAYUGA :: 542720323; + CEBUANO :: 541214019; + CENTRAL_YUPIK :: 542462789; + CHAHA_GURAGE :: 541542467; + CHAMORRO :: 541149251; + CHATTISGARHI :: 541608003; + CHECHEN :: 541411395; + CHEROKEE :: 542263363; + CHEYENNE :: 542722115; + CHICHEWA :: 541673539; + CHIGA :: 541542211; + CHIMILA :: 541540931; + CHIN :: 542001489; + CHINANTEC :: 1313358659; + CHINESE_PHONETIC :: 542132314; + CHINESE_SIMPLIFIED :: 542328922; + CHINESE_TRADITIONAL :: 542394458; + CHINESE_TRADITIONAL_HONG_KONG :: 541608026; + CHINESE_TRADITIONAL_MACAO :: 1297369178; + CHIPEWYAN :: 542132291; + CHITTAGONIAN :: 541545539; + CHOCTAW :: 542066755; + CHUKCHI :: 541804611; + CHURCH_SLAVONIC :: 541872963; + CHUUKESE :: 810240067; + CHUVASH :: 542459971; + COMORIAN :: 542264643; + COMOX :: 542068547; + COPTIC :: 542134083; + CORNISH :: 542265155; + CORSICAN :: 542330691; + CREE :: 541413955; + CREOLES :: 542134339; + CRIMEAN_TATAR :: 542396995; + CRIOULO :: 541148491; + CROATIAN :: 542528072; + CYPRIOT_ARABIC :: 542720833; + CZECH :: 542724931; + DAGBANI :: 541540676; + DAN :: 541740612; + DANGME :: 541544004; + DANISH :: 541999428; + DARGWA :: 542261572; + DARI :: 541676100; + DAYI :: 542654788; + DEFAULT :: 1953261156; + DEHONG_DAI :: 541344852; + DHANGU :: 541542468; + DHIVEHI :: 542525764; + DHUWAL :: 541742404; + DIMLI :: 542198084; + DINKA :: 541806148; + DIVEHI :: 542525764; + DJAMBARRPUYNGU :: 810699332; + DOGRI :: 542066500; + DOGRI_MACROLANGUAGE :: 542263108; + DUNGAN :: 542004548; + DUTCH :: 541346894; + DZONGKHA :: 542005828; + EASTERN_ABENAKI :: 542196033; + EASTERN_CHAM :: 541936195; + EASTERN_CREE :: 542262085; + EASTERN_MANINKAKAN :: 541805893; + EASTERN_PWO_KAREN :: 542132811; + EBIRA :: 541672005; + EDO :: 542065733; + EFIK :: 541673029; + EMBERA_BAUDO :: 541279298; + EMBERA_CATIO :: 542069827; + EMBERA_CHAMI :: 541674819; + EMBERA_TADO :: 541279316; + ENGLISH :: 541544005; + EPENA :: 541149779; + ERZYA :: 542790213; + KB_TEXT_SHAPEANTO :: 542069838; + ESTONIAN :: 541676613; + EVEN :: 542004805; + EVENKI :: 541808197; + EWE :: 541415237; + FALAM_CHIN :: 541868360; + FANG :: 810434886; + FANTI :: 542392646; + FAROESE :: 542330694; + FEFE :: 542133574; + FIJIAN :: 541674054; + FILIPINO :: 541870416; + FINNISH :: 542001478; + FLEMISH :: 541412422; + FON :: 542003014; + FOREST_ENETS :: 541412934; + FRENCH :: 541151814; + FRENCH_ANTILLEAN :: 541999430; + FRISIAN :: 541676102; + FRIULIAN :: 541872710; + FULAH :: 541873478; + FUTA :: 541152326; + GA :: 541344071; + GAGAUZ :: 541540679; + GALICIAN :: 541868359; + GANDA :: 541545804; + GARHWALI :: 542589255; + GARO :: 542069319; + GARSHUNI :: 542261575; + GEBA_KAREN :: 542201419; + GEEZ :: 542786887; + GEORGIAN :: 542392651; + GEPO :: 542132057; + GERMAN :: 542459204; + GIKUYU :: 541804875; + GILAKI :: 541805639; + GILBERTESE :: 810305863; + GILYAK :: 541870407; + GITHABUL :: 541608263; + GOGO :: 541544263; + GONDI :: 542003015; + GREEK :: 541871173; + GREENLANDIC :: 542003783; + GUARANI :: 541152583; + GUINEA :: 542133063; + GUJARATI :: 541742407; + GUMATJ :: 542002759; + GUMUZ :: 542788935; + GUPAPUYNGU :: 541480263; + GUSII :: 542790983; + HAIDA :: 810107208; + HAITIAN_CREOLE :: 541671752; + HALKOMELEM :: 542266696; + HAMMER_BANNA :: 541999688; + HARARI :: 541676104; + HARAUTI :: 542261576; + HARYANVI :: 541280066; + HAUSA :: 542458184; + HAVASUPAI_WALAPAI_YAVAPAI :: 541480281; + HAWAIIAN :: 542589256; + HAYA :: 542720328; + HAZARAGI :: 542785864; + HEBREW :: 542267209; + HEILTSUK :: 541672776; + HERERO :: 542262600; + HIGH_MARI :: 541150536; + HILIGAYNON :: 541870408; + HINDI :: 542001480; + HINDKO :: 541347400; + HIRI_MOTU :: 542068040; + HMONG :: 542002504; + HMONG_DAW :: 542594893; + HMONG_SHUAT :: 542788936; + HO :: 538988360; + HUNGARIAN :: 542004552; + IBAN :: 541147721; + IBIBIO :: 541213257; + ICELANDIC :: 541872969; + IDO :: 542065737; + IGBO :: 542065225; + IJO :: 542067273; + ILOKANO :: 542067785; + INARI_SAMI :: 541938505; + INDONESIAN :: 541347401; + INGUSH :: 541544009; + INTERLINGUA :: 541150793; + INTERLINGUE :: 541412425; + INUKTITUT :: 542461513; + INUPIAT :: 541806665; + IPA_PHONETIC :: 542134345; + IRISH :: 541676105; + IRISH_TRADITIONAL :: 542397001; + IRULA :: 542462537; + ITALIAN :: 541152329; + JAMAICAN_CREOLE :: 541933898; + JAPANESE :: 541999434; + JAVANESE :: 542523722; + JENNU_KURUMA :: 541742424; + JUDEO_TAT :: 542393418; + JULA :: 541873482; + KABARDIAN :: 541213003; + KABYLE :: 809648459; + KACHCHI :: 541278539; + KADIWEU :: 541278795; + KALENJIN :: 541868363; + KALMYK :: 541936715; + KAMBA :: 541216075; + KANAUJI :: 541739586; + KANNADA :: 541999435; + KANURI :: 542264907; + KAQCHIKEL :: 541802819; + KARACHAY :: 542261579; + KARAIM :: 541938251; + KARAKALPAK :: 541807179; + KARELIAN :: 541872715; + KAREN :: 542003787; + KASHMIRI :: 541610827; + KASHUBIAN :: 541217603; + KATE :: 541543755; + KAZAKH :: 542785867; + KEBENA :: 541214027; + KEKCHI :: 541803851; + KHAKASS :: 541149259; + KHAMTI_SHAN :: 542394443; + KHAMYANG :: 542462795; + KHANTY_KAZIM :: 541804619; + KHANTY_SHURISHKAR :: 542328907; + KHANTY_VAKHI :: 542525515; + KHASI :: 541676363; + KHENGKHA :: 541477720; + KHINALUG :: 541739595; + KHMER :: 541935691; + KHORASANI_TURKIC :: 542788939; + KHOWAR :: 542591051; + KHUTSURI_GEORGIAN :: 541411147; + KICHE :: 541283665; + KIKONGO :: 542003019; + KILDIN_SAMI :: 541938507; + KINYARWANDA :: 541152594; + KIRMANJKI :: 542460235; + KISII :: 542329163; + KITUBA :: 542591821; + KODAGU :: 541347659; + KOKNI :: 542001995; + KOMI :: 541937483; + KOMI_PERMYAK :: 542134091; + KOMI_ZYRIAN :: 542789451; + KOMO :: 542068043; + KOMSO :: 542330187; + KONGO :: 810438475; + KONKANI :: 541806411; + KOORETE :: 542397003; + KOREAN :: 542265163; + KOREAO_OLD_HANGUL :: 541609803; + KORYAK :: 541808971; + KOSRAEAN :: 542330699; + KPELLE :: 541872203; + KPELLE_LIBERIA :: 541413464; + KRIO :: 541676107; + KRYMCHAK :: 542393162; + KUANYAMA :: 541152587; + KUBE :: 541476683; + KUI :: 541676875; + KULVI :: 541807947; + KUMAONI :: 542002507; + KUMYK :: 541939019; + KURDISH :: 542266699; + KURUKH :: 542463307; + KUY :: 542725451; + KWAKWALA :: 541808459; + KYRGYZ :: 542263627; + L_CREE :: 542262092; + LADAKHI :: 541803596; + LADIN :: 541344076; + LADINO :: 541349194; + LAHULI :: 541606220; + LAK :: 541802828; + LAKI :: 541674316; + LAMBANI :: 541933900; + LAMPUNG :: 542132812; + LAO :: 542064972; + LATIN :: 542392652; + LATVIAN :: 541677132; + LAZ :: 542785868; + LELEMI :: 541476172; + LEZGI :: 542786892; + LIGURIAN :: 541739340; + LIMBU :: 541216076; + LIMBURGISH :: 541935948; + LINGALA :: 542001484; + LIPO :: 542068812; + LISU :: 542329164; + LITHUANIAN :: 541611084; + LIV :: 542525772; + LOJBAN :: 542065226; + LOMA :: 541937484; + LOMBARD :: 542068044; + LOMWE :: 542592332; + LOW_MARI :: 541150540; + LOW_SAXON :: 542327886; + LOWER_SORBIAN :: 541217612; + LU :: 541344344; + LUBA_KATANGA :: 541218124; + LUBA_LULUA :: 541152588; + LULE_SAMI :: 541938508; + LUO :: 542070092; + LURI :: 541282892; + LUSHOOTSEED :: 542397772; + LUXEMBOURGISH :: 542790732; + LUYIA :: 541611340; + MACEDONIAN :: 541346637; + MADURA :: 541344077; + MAGAHI :: 541540685; + MAITHILI :: 541611085; + MAJANG :: 541737293; + MAKASAR :: 542264141; + MAKHUWA :: 541802829; + MAKONDE :: 541410379; + MALAGASY :: 541543501; + MALAY :: 542723149; + MALAYALAM :: 541868365; + MALAYALAM_REFORMED :: 542264397; + MALE :: 541412429; + MALINKE :: 542002253; + MALTESE :: 542331981; + MAM :: 541933901; + MANCHU :: 541606733; + MANDAR :: 542262349; + MANDINKA :: 541347405; + MANINKA :: 541806157; + MANIPURI :: 541675085; + MANO :: 542524749; + MANSI :: 541999437; + MANX :: 542658125; + MAORI :: 541676109; + MAPUDUNGUN :: 542130509; + MARATHI :: 542261581; + MARSHALLESE :: 541606221; + MARWARI :: 542589261; + MAYAN :: 542005581; + MAZANDERANI :: 542005837; + MBEMBE_TIGON :: 541153870; + MBO :: 542065229; + MBUNDU :: 541999693; + MEDUMBA :: 542529858; + MEEN :: 542000461; + MENDE :: 541410381; + MERU :: 542262605; + MEWATI :: 541938775; + MINANGKABAU :: 542001485; + MINJANGBAL :: 541215320; + MIRANDESE :: 541873997; + MIZO :: 542787917; + MOHAWK :: 541609805; + MOKSHA :: 541806413; + MOLDAVIAN :: 541871949; + MON :: 542003021; + MONGOLIAN :: 541544013; + MOOSE_CREE :: 542262093; + MORISYEN :: 541410893; + MOROCCAN :: 542265165; + MOSSI :: 542330957; + MUNDARI :: 542004557; + MUSCOGEE :: 542332237; + N_CREE :: 542262094; + NAGA_ASSAMESE :: 541540686; + NAGARI :: 542263118; + NAHUATL :: 541606222; + NANAI :: 541999438; + NASKAPI :: 542327118; + NAURUAN :: 542458190; + NAVAJO :: 542523726; + NDAU :: 541279310; + NDEBELE :: 541213774; + NDONGA :: 541541454; + NEAPOLITAN :: 542130510; + NEPALI :: 542131534; + NEWARI :: 542590286; + NGBAKA :: 541149006; + NIGERIAN_FULFULDE :: 542528838; + NIMADI :: 541413198; + NISI :: 542329166; + NIUEAN :: 542460238; + NKO :: 542067534; + NOGAI :: 541544270; + NORFOLK :: 541608272; + NORTH_SLAVEY :: 542327635; + NORTHERN_EMBERA :: 542133573; + NORTHERN_SAMI :: 541938510; + NORTHERN_SOTHO :: 542069582; + NORTHERN_TAI :: 541152334; + NORWAY_HOUSE_CREE :: 541280334; + NORWEGIAN :: 542265166; + NORWEGIAN_NYNORSK :: 542005582; + NOVIAL :: 542527310; + NUMANGGANG :: 542134094; + NUNAVIK_INUKTITUT :: 542461513; + NUU_CHAH_NULTH :: 541807950; + NYAMWEZI :: 541940046; + NYANKOLE :: 541870926; + OCCITAN :: 541672271; + ODIA :: 541676111; + OJI_CREE :: 542262095; + OJIBWAY :: 541215311; + OLD_IRISH :: 541149011; + OLD_JAVANESE :: 542589259; + ONEIDA :: 541412943; + ONONDAGA :: 542068303; + OROMO :: 542069327; + OSSETIAN :: 542331727; + PA_O_KAREN :: 541805634; + PALAUAN :: 542458192; + PALAUNG :: 541543504; + PALESTINIAN_ARAMAIC :: 541147472; + PALI :: 541868368; + PALPA :: 542130512; + PAMPANGAN :: 541933904; + PANGASINAN :: 541540688; + PAPIAMENTU :: 810565968; + PASHTO :: 542327120; + PATTANI_MALAY :: 541148749; + PENNSYLVANIA_GERMAN :: 541279312; + PERSIAN :: 542261574; + PHAKE :: 541805136; + PICARD :: 541344592; + PIEMONTESE :: 542330192; + PILAGA :: 541543504; + PITE_SAMI :: 541411923; + POCOMCHI :: 541609808; + POHNPEIAN :: 542003024; + POLISH :: 541805648; + POLYTONIC_GREEK :: 542263120; + PORTUGUESE :: 541545552; + PROVENCAL :: 542069328; + PUNJABI :: 541999440; + QUECHUA :: 542790993; + QUECHUA_BOLIVIA :: 541611345; + QUECHUA_ECUADOR :: 541677137; + QUECHUA_PERU :: 541611857; + R_CREE :: 542262098; + RAJASTHANI :: 541737298; + RAKHINE :: 541807169; + RAROTONGAN :: 542261586; + REJANG :: 541738322; + RIANG :: 541149522; + RIPUARIAN :: 541610827; + RITARUNGO :: 542394706; + ROHINGYA :: 541542482; + ROMANIAN :: 541937490; + ROMANSH :: 542330194; + ROMANY :: 542723922; + ROTUMAN :: 541938770; + RUNDI :: 542004562; + RUSSIAN :: 542332242; + RUSSIAN_BURIAT :: 542458450; + RUSYN :: 542724946; + SADRI :: 541344083; + SAKHA :: 541802841; + SAMOAN :: 542068051; + SAMOGITIAN :: 542328659; + SAN_BLAS_KUNA :: 541807939; + SANGO :: 542066515; + SANSKRIT :: 541999443; + SANTALI :: 542392659; + SARAIKI :: 541807187; + SARDINIAN :: 541348435; + SASAK :: 542327123; + SATERLAND_FRISIAN :: 542200915; + SAYISI :: 542720339; + SCOTS :: 541672275; + SCOTTISH_GAELIC :: 541409607; + SEKOTA :: 541738323; + SELKUP :: 541869395; + SENA :: 541150803; + SENECA :: 541410643; + SERBIAN :: 541217363; + SERER :: 542265939; + SGAW_KAREN :: 542593867; + SHAN :: 542001235; + SHONA :: 541150803; + SIBE :: 541215059; + SICILIAN :: 541999955; + SIDAMO :: 541346131; + SILESIAN :: 541874771; + SILTE_GURAGE :: 541542739; + SINDHI :: 541347411; + SINHALA :: 541609555; + SKOLT_SAMI :: 542329683; + SLAVEY :: 541150291; + SLOVAK :: 542722899; + SLOVENIAN :: 542526547; + SMALL_FLOWERY_MIAO :: 541935187; + SODO_GURAGE :: 541544275; + SOGA :: 541544280; + SOMALI :: 541871443; + SONGE :: 542134099; + SONINKE :: 541806163; + SOUTH_SLAVEY :: 541872979; + SOUTHERN_KIWAI :: 541346379; + SOUTHERN_SAMI :: 541938515; + SOUTHERN_SOTHO :: 542396243; + SPANISH :: 542135109; + STANDARD_MOROCCAN_TAMAZIGHT :: 541607770; + STRAITS_SALISH :: 542266451; + SUKUMA :: 541807955; + SUNDANESE :: 542004563; + SURI :: 542266707; + SUTU :: 542398547; + SVAN :: 541152851; + SWADAYA_ARAMAIC :: 541153107; + SWAHILI :: 541808467; + SWATI :: 542791507; + SWEDISH :: 541414995; + SYLHETI :: 541874515; + SYRIAC :: 542267731; + SYRIAC_EASTERN :: 1314019667; + SYRIAC_ESTRANGELA :: 1163024723; + SYRIAC_WESTERN :: 1246910803; + TABASARAN :: 541213012; + TACHELHIT :: 541673555; + TAGALOG :: 541869908; + TAHAGGART_TAMAHAQ :: 542525524; + TAHITIAN :: 542394452; + TAI_LAING :: 541870676; + TAJIKI :: 541737300; + TALYSH :: 542723156; + TAMASHEK :: 541609300; + TAMASHEQ :: 542196052; + TAMAZIGHT :: 541940308; + TAMIL :: 541933908; + TARIFIT :: 541477202; + TATAR :: 542392660; + TAWALLAMMAT_TAMAJAQ :: 542200916; + TAY :: 542792020; + TAYART_TAMAJEQ :: 542787668; + TELUGU :: 541869396; + TEMNE :: 542002516; + TETUM :: 542393684; + TH_CREE :: 542262100; + THAI :: 541149268; + THAILAND_MON :: 1414418253; + THOMPSON :: 542132308; + TIBETAN :: 541215060; + TIGRE :: 542263124; + TIGRINYA :: 542721876; + TIV :: 542525780; + TLINGIT :: 541674580; + TOBO :: 542523988; + TODO :: 541347668; + TOK_PISIN :: 541675604; + TOMA :: 809783124; + TONGA :: 541544020; + TONGAN :: 542000980; + TORKI :: 541219393; + TSHANGLA :: 541741908; + TSONGA :: 541545300; + TSWANA :: 541150804; + TULU :: 541873492; + TUMBUKA :: 541939028; + TUNDRA_ENETS :: 541412948; + TURKISH :: 541807188; + TURKMEN :: 541936468; + TUROYO_ARAMAIC :: 541152596; + TUSCARORA :: 542332244; + TUVALU :: 541873748; + TUVIN :: 542528852; + TWI :: 541677396; + TZOTZIL :: 542071380; + UDI :: 541672533; + UDMURT :: 541934677; + UKRAINIAN :: 542264149; + UMBUNDU :: 541216085; + UME_SAMI :: 542460499; + UPPER_SAXON :: 542464083; + UPPER_SORBIAN :: 541217621; + URALIC_PHONETIC :: 542134357; + URDU :: 541348437; + UYGHUR :: 541546837; + UZBEK :: 541219413; + VENDA :: 542000470; + VENETIAN :: 541279574; + VIETNAMESE :: 542394710; + VLAX_ROMANI :: 542723410; + VOLAPUK :: 541871958; + VORO :: 542069334; + WA :: 538984791; + WACI_GBE :: 541672279; + WAGDI :: 541540695; + WAKHI :: 541868631; + WALLOON :: 542002263; + WARAY_WARAY :: 542261591; + WAYANAD_CHETTI :: 542397507; + WAYUU :: 541283655; + WELSH :: 541869399; + WENDAT :: 542393431; + WEST_CREE :: 542262103; + WESTERN_CHAM :: 541149763; + WESTERN_KAYAH :: 542464331; + WESTERN_PANJABI :: 541216336; + WESTERN_PWO_KAREN :: 542070608; + WOLOF :: 541477975; + WOODS_CREE :: 542262084; + WUDING_LUQUAN_YI :: 542201689; + WYANDOT :: 542005591; + XHOSA :: 542328920; + Y_CREE :: 542262105; + YAO :: 542064985; + YAPESE :: 542130521; + YI_CLASSIC :: 541280601; + YI_MODERN :: 541935961; + YIDDISH :: 541673802; + YORUBA :: 541147737; + ZAMBOANGA_CHAVACANO :: 541803075; + ZANDE :: 541347418; + ZARMA :: 542263876; + ZAZAKI :: 541153882; + ZEALANDIC :: 541148506; + ZHUANG :: 541149274; + ZULU :: 541873498; + + KBTS_LANGUAGE_DONT_KNOW :: DONT_KNOW; + + KBTS_LANGUAGE_A_HMAO :: A_HMAO; + KBTS_LANGUAGE_AARI :: AARI; + KBTS_LANGUAGE_ABAZA :: ABAZA; + KBTS_LANGUAGE_ABKHAZIAN :: ABKHAZIAN; + KBTS_LANGUAGE_ACHI :: ACHI; + KBTS_LANGUAGE_ACHOLI :: ACHOLI; + KBTS_LANGUAGE_ADYGHE :: ADYGHE; + KBTS_LANGUAGE_AFAR :: AFAR; + KBTS_LANGUAGE_AFRIKAANS :: AFRIKAANS; + KBTS_LANGUAGE_AGAW :: AGAW; + KBTS_LANGUAGE_AITON :: AITON; + KBTS_LANGUAGE_AKAN :: AKAN; + KBTS_LANGUAGE_ALBANIAN :: ALBANIAN; + KBTS_LANGUAGE_ALSATIAN :: ALSATIAN; + KBTS_LANGUAGE_ALTAI :: ALTAI; + KBTS_LANGUAGE_ALUO :: ALUO; + KBTS_LANGUAGE_AMERICAN_PHONETIC :: AMERICAN_PHONETIC; + KBTS_LANGUAGE_AMHARIC :: AMHARIC; + KBTS_LANGUAGE_ANGLO_SAXON :: ANGLO_SAXON; + KBTS_LANGUAGE_ARABIC :: ARABIC; + KBTS_LANGUAGE_ARAGONESE :: ARAGONESE; + KBTS_LANGUAGE_ARAKANESE :: ARAKANESE; + KBTS_LANGUAGE_ARAKWAL :: ARAKWAL; + KBTS_LANGUAGE_ARMENIAN :: ARMENIAN; + KBTS_LANGUAGE_ARMENIAN_EAST :: ARMENIAN_EAST; + KBTS_LANGUAGE_AROMANIAN :: AROMANIAN; + KBTS_LANGUAGE_ARPITAN :: ARPITAN; + KBTS_LANGUAGE_ASSAMESE :: ASSAMESE; + KBTS_LANGUAGE_ASTURIAN :: ASTURIAN; + KBTS_LANGUAGE_ATHAPASKAN :: ATHAPASKAN; + KBTS_LANGUAGE_ATSINA :: ATSINA; + KBTS_LANGUAGE_AVAR :: AVAR; + KBTS_LANGUAGE_AVATIME :: AVATIME; + KBTS_LANGUAGE_AWADHI :: AWADHI; + KBTS_LANGUAGE_AYMARA :: AYMARA; + KBTS_LANGUAGE_AZERBAIDJANI :: AZERBAIDJANI; + KBTS_LANGUAGE_BADAGA :: BADAGA; + KBTS_LANGUAGE_BAGHELKHANDI :: BAGHELKHANDI; + KBTS_LANGUAGE_BAGRI :: BAGRI; + KBTS_LANGUAGE_BALANTE :: BALANTE; + KBTS_LANGUAGE_BALINESE :: BALINESE; + KBTS_LANGUAGE_BALKAR :: BALKAR; + KBTS_LANGUAGE_BALTI :: BALTI; + KBTS_LANGUAGE_BALUCHI :: BALUCHI; + KBTS_LANGUAGE_BAMBARA :: BAMBARA; + KBTS_LANGUAGE_BAMILEKE :: BAMILEKE; + KBTS_LANGUAGE_BANDA :: BANDA; + KBTS_LANGUAGE_BANDJALANG :: BANDJALANG; + KBTS_LANGUAGE_BANGLA :: BANGLA; + KBTS_LANGUAGE_BASHKIR :: BASHKIR; + KBTS_LANGUAGE_BASQUE :: BASQUE; + KBTS_LANGUAGE_BATAK :: BATAK; + KBTS_LANGUAGE_BATAK_ALAS_KLUET :: BATAK_ALAS_KLUET; + KBTS_LANGUAGE_BATAK_ANGKOLA :: BATAK_ANGKOLA; + KBTS_LANGUAGE_BATAK_DAIRI :: BATAK_DAIRI; + KBTS_LANGUAGE_BATAK_KARO :: BATAK_KARO; + KBTS_LANGUAGE_BATAK_MANDAILING :: BATAK_MANDAILING; + KBTS_LANGUAGE_BATAK_SIMALUNGUN :: BATAK_SIMALUNGUN; + KBTS_LANGUAGE_BATAK_TOBA :: BATAK_TOBA; + KBTS_LANGUAGE_BAULE :: BAULE; + KBTS_LANGUAGE_BAVARIAN :: BAVARIAN; + KBTS_LANGUAGE_BELARUSIAN :: BELARUSIAN; + KBTS_LANGUAGE_BEMBA :: BEMBA; + KBTS_LANGUAGE_BENCH :: BENCH; + KBTS_LANGUAGE_BERBER :: BERBER; + KBTS_LANGUAGE_BETI :: BETI; + KBTS_LANGUAGE_BETTE_KURUMA :: BETTE_KURUMA; + KBTS_LANGUAGE_BHILI :: BHILI; + KBTS_LANGUAGE_BHOJPURI :: BHOJPURI; + KBTS_LANGUAGE_BHUTANESE :: BHUTANESE; + KBTS_LANGUAGE_BIBLE_CREE :: BIBLE_CREE; + KBTS_LANGUAGE_BIKOL :: BIKOL; + KBTS_LANGUAGE_BILEN :: BILEN; + KBTS_LANGUAGE_BISHNUPRIYA_MANIPURI :: BISHNUPRIYA_MANIPURI; + KBTS_LANGUAGE_BISLAMA :: BISLAMA; + KBTS_LANGUAGE_BLACKFOOT :: BLACKFOOT; + KBTS_LANGUAGE_BODO :: BODO; + KBTS_LANGUAGE_BOSNIAN :: BOSNIAN; + KBTS_LANGUAGE_BOUYEI :: BOUYEI; + KBTS_LANGUAGE_BRAHUI :: BRAHUI; + KBTS_LANGUAGE_BRAJ_BHASHA :: BRAJ_BHASHA; + KBTS_LANGUAGE_BRETON :: BRETON; + KBTS_LANGUAGE_BUGIS :: BUGIS; + KBTS_LANGUAGE_BULGARIAN :: BULGARIAN; + KBTS_LANGUAGE_BUMTHANGKHA :: BUMTHANGKHA; + KBTS_LANGUAGE_BURMESE :: BURMESE; + KBTS_LANGUAGE_BURUSHASKI :: BURUSHASKI; + KBTS_LANGUAGE_CAJUN_FRENCH :: CAJUN_FRENCH; + KBTS_LANGUAGE_CARRIER :: CARRIER; + KBTS_LANGUAGE_CATALAN :: CATALAN; + KBTS_LANGUAGE_CAYUGA :: CAYUGA; + KBTS_LANGUAGE_CEBUANO :: CEBUANO; + KBTS_LANGUAGE_CENTRAL_YUPIK :: CENTRAL_YUPIK; + KBTS_LANGUAGE_CHAHA_GURAGE :: CHAHA_GURAGE; + KBTS_LANGUAGE_CHAMORRO :: CHAMORRO; + KBTS_LANGUAGE_CHATTISGARHI :: CHATTISGARHI; + KBTS_LANGUAGE_CHECHEN :: CHECHEN; + KBTS_LANGUAGE_CHEROKEE :: CHEROKEE; + KBTS_LANGUAGE_CHEYENNE :: CHEYENNE; + KBTS_LANGUAGE_CHICHEWA :: CHICHEWA; + KBTS_LANGUAGE_CHIGA :: CHIGA; + KBTS_LANGUAGE_CHIMILA :: CHIMILA; + KBTS_LANGUAGE_CHIN :: CHIN; + KBTS_LANGUAGE_CHINANTEC :: CHINANTEC; + KBTS_LANGUAGE_CHINESE_PHONETIC :: CHINESE_PHONETIC; + KBTS_LANGUAGE_CHINESE_SIMPLIFIED :: CHINESE_SIMPLIFIED; + KBTS_LANGUAGE_CHINESE_TRADITIONAL :: CHINESE_TRADITIONAL; + KBTS_LANGUAGE_CHINESE_TRADITIONAL_HONG_KONG :: CHINESE_TRADITIONAL_HONG_KONG; + KBTS_LANGUAGE_CHINESE_TRADITIONAL_MACAO :: CHINESE_TRADITIONAL_MACAO; + KBTS_LANGUAGE_CHIPEWYAN :: CHIPEWYAN; + KBTS_LANGUAGE_CHITTAGONIAN :: CHITTAGONIAN; + KBTS_LANGUAGE_CHOCTAW :: CHOCTAW; + KBTS_LANGUAGE_CHUKCHI :: CHUKCHI; + KBTS_LANGUAGE_CHURCH_SLAVONIC :: CHURCH_SLAVONIC; + KBTS_LANGUAGE_CHUUKESE :: CHUUKESE; + KBTS_LANGUAGE_CHUVASH :: CHUVASH; + KBTS_LANGUAGE_COMORIAN :: COMORIAN; + KBTS_LANGUAGE_COMOX :: COMOX; + KBTS_LANGUAGE_COPTIC :: COPTIC; + KBTS_LANGUAGE_CORNISH :: CORNISH; + KBTS_LANGUAGE_CORSICAN :: CORSICAN; + KBTS_LANGUAGE_CREE :: CREE; + KBTS_LANGUAGE_CREOLES :: CREOLES; + KBTS_LANGUAGE_CRIMEAN_TATAR :: CRIMEAN_TATAR; + KBTS_LANGUAGE_CRIOULO :: CRIOULO; + KBTS_LANGUAGE_CROATIAN :: CROATIAN; + KBTS_LANGUAGE_CYPRIOT_ARABIC :: CYPRIOT_ARABIC; + KBTS_LANGUAGE_CZECH :: CZECH; + KBTS_LANGUAGE_DAGBANI :: DAGBANI; + KBTS_LANGUAGE_DAN :: DAN; + KBTS_LANGUAGE_DANGME :: DANGME; + KBTS_LANGUAGE_DANISH :: DANISH; + KBTS_LANGUAGE_DARGWA :: DARGWA; + KBTS_LANGUAGE_DARI :: DARI; + KBTS_LANGUAGE_DAYI :: DAYI; + KBTS_LANGUAGE_DEFAULT :: DEFAULT; + KBTS_LANGUAGE_DEHONG_DAI :: DEHONG_DAI; + KBTS_LANGUAGE_DHANGU :: DHANGU; + KBTS_LANGUAGE_DHIVEHI :: DHIVEHI; + KBTS_LANGUAGE_DHUWAL :: DHUWAL; + KBTS_LANGUAGE_DIMLI :: DIMLI; + KBTS_LANGUAGE_DINKA :: DINKA; + KBTS_LANGUAGE_DIVEHI :: DIVEHI; + KBTS_LANGUAGE_DJAMBARRPUYNGU :: DJAMBARRPUYNGU; + KBTS_LANGUAGE_DOGRI :: DOGRI; + KBTS_LANGUAGE_DOGRI_MACROLANGUAGE :: DOGRI_MACROLANGUAGE; + KBTS_LANGUAGE_DUNGAN :: DUNGAN; + KBTS_LANGUAGE_DUTCH :: DUTCH; + KBTS_LANGUAGE_DZONGKHA :: DZONGKHA; + KBTS_LANGUAGE_EASTERN_ABENAKI :: EASTERN_ABENAKI; + KBTS_LANGUAGE_EASTERN_CHAM :: EASTERN_CHAM; + KBTS_LANGUAGE_EASTERN_CREE :: EASTERN_CREE; + KBTS_LANGUAGE_EASTERN_MANINKAKAN :: EASTERN_MANINKAKAN; + KBTS_LANGUAGE_EASTERN_PWO_KAREN :: EASTERN_PWO_KAREN; + KBTS_LANGUAGE_EBIRA :: EBIRA; + KBTS_LANGUAGE_EDO :: EDO; + KBTS_LANGUAGE_EFIK :: EFIK; + KBTS_LANGUAGE_EMBERA_BAUDO :: EMBERA_BAUDO; + KBTS_LANGUAGE_EMBERA_CATIO :: EMBERA_CATIO; + KBTS_LANGUAGE_EMBERA_CHAMI :: EMBERA_CHAMI; + KBTS_LANGUAGE_EMBERA_TADO :: EMBERA_TADO; + KBTS_LANGUAGE_ENGLISH :: ENGLISH; + KBTS_LANGUAGE_EPENA :: EPENA; + KBTS_LANGUAGE_ERZYA :: ERZYA; + KBTS_LANGUAGE_KB_TEXT_SHAPEANTO :: KB_TEXT_SHAPEANTO; + KBTS_LANGUAGE_ESTONIAN :: ESTONIAN; + KBTS_LANGUAGE_EVEN :: EVEN; + KBTS_LANGUAGE_EVENKI :: EVENKI; + KBTS_LANGUAGE_EWE :: EWE; + KBTS_LANGUAGE_FALAM_CHIN :: FALAM_CHIN; + KBTS_LANGUAGE_FANG :: FANG; + KBTS_LANGUAGE_FANTI :: FANTI; + KBTS_LANGUAGE_FAROESE :: FAROESE; + KBTS_LANGUAGE_FEFE :: FEFE; + KBTS_LANGUAGE_FIJIAN :: FIJIAN; + KBTS_LANGUAGE_FILIPINO :: FILIPINO; + KBTS_LANGUAGE_FINNISH :: FINNISH; + KBTS_LANGUAGE_FLEMISH :: FLEMISH; + KBTS_LANGUAGE_FON :: FON; + KBTS_LANGUAGE_FOREST_ENETS :: FOREST_ENETS; + KBTS_LANGUAGE_FRENCH :: FRENCH; + KBTS_LANGUAGE_FRENCH_ANTILLEAN :: FRENCH_ANTILLEAN; + KBTS_LANGUAGE_FRISIAN :: FRISIAN; + KBTS_LANGUAGE_FRIULIAN :: FRIULIAN; + KBTS_LANGUAGE_FULAH :: FULAH; + KBTS_LANGUAGE_FUTA :: FUTA; + KBTS_LANGUAGE_GA :: GA; + KBTS_LANGUAGE_GAGAUZ :: GAGAUZ; + KBTS_LANGUAGE_GALICIAN :: GALICIAN; + KBTS_LANGUAGE_GANDA :: GANDA; + KBTS_LANGUAGE_GARHWALI :: GARHWALI; + KBTS_LANGUAGE_GARO :: GARO; + KBTS_LANGUAGE_GARSHUNI :: GARSHUNI; + KBTS_LANGUAGE_GEBA_KAREN :: GEBA_KAREN; + KBTS_LANGUAGE_GEEZ :: GEEZ; + KBTS_LANGUAGE_GEORGIAN :: GEORGIAN; + KBTS_LANGUAGE_GEPO :: GEPO; + KBTS_LANGUAGE_GERMAN :: GERMAN; + KBTS_LANGUAGE_GIKUYU :: GIKUYU; + KBTS_LANGUAGE_GILAKI :: GILAKI; + KBTS_LANGUAGE_GILBERTESE :: GILBERTESE; + KBTS_LANGUAGE_GILYAK :: GILYAK; + KBTS_LANGUAGE_GITHABUL :: GITHABUL; + KBTS_LANGUAGE_GOGO :: GOGO; + KBTS_LANGUAGE_GONDI :: GONDI; + KBTS_LANGUAGE_GREEK :: GREEK; + KBTS_LANGUAGE_GREENLANDIC :: GREENLANDIC; + KBTS_LANGUAGE_GUARANI :: GUARANI; + KBTS_LANGUAGE_GUINEA :: GUINEA; + KBTS_LANGUAGE_GUJARATI :: GUJARATI; + KBTS_LANGUAGE_GUMATJ :: GUMATJ; + KBTS_LANGUAGE_GUMUZ :: GUMUZ; + KBTS_LANGUAGE_GUPAPUYNGU :: GUPAPUYNGU; + KBTS_LANGUAGE_GUSII :: GUSII; + KBTS_LANGUAGE_HAIDA :: HAIDA; + KBTS_LANGUAGE_HAITIAN_CREOLE :: HAITIAN_CREOLE; + KBTS_LANGUAGE_HALKOMELEM :: HALKOMELEM; + KBTS_LANGUAGE_HAMMER_BANNA :: HAMMER_BANNA; + KBTS_LANGUAGE_HARARI :: HARARI; + KBTS_LANGUAGE_HARAUTI :: HARAUTI; + KBTS_LANGUAGE_HARYANVI :: HARYANVI; + KBTS_LANGUAGE_HAUSA :: HAUSA; + KBTS_LANGUAGE_HAVASUPAI_WALAPAI_YAVAPAI :: HAVASUPAI_WALAPAI_YAVAPAI; + KBTS_LANGUAGE_HAWAIIAN :: HAWAIIAN; + KBTS_LANGUAGE_HAYA :: HAYA; + KBTS_LANGUAGE_HAZARAGI :: HAZARAGI; + KBTS_LANGUAGE_HEBREW :: HEBREW; + KBTS_LANGUAGE_HEILTSUK :: HEILTSUK; + KBTS_LANGUAGE_HERERO :: HERERO; + KBTS_LANGUAGE_HIGH_MARI :: HIGH_MARI; + KBTS_LANGUAGE_HILIGAYNON :: HILIGAYNON; + KBTS_LANGUAGE_HINDI :: HINDI; + KBTS_LANGUAGE_HINDKO :: HINDKO; + KBTS_LANGUAGE_HIRI_MOTU :: HIRI_MOTU; + KBTS_LANGUAGE_HMONG :: HMONG; + KBTS_LANGUAGE_HMONG_DAW :: HMONG_DAW; + KBTS_LANGUAGE_HMONG_SHUAT :: HMONG_SHUAT; + KBTS_LANGUAGE_HO :: HO; + KBTS_LANGUAGE_HUNGARIAN :: HUNGARIAN; + KBTS_LANGUAGE_IBAN :: IBAN; + KBTS_LANGUAGE_IBIBIO :: IBIBIO; + KBTS_LANGUAGE_ICELANDIC :: ICELANDIC; + KBTS_LANGUAGE_IDO :: IDO; + KBTS_LANGUAGE_IGBO :: IGBO; + KBTS_LANGUAGE_IJO :: IJO; + KBTS_LANGUAGE_ILOKANO :: ILOKANO; + KBTS_LANGUAGE_INARI_SAMI :: INARI_SAMI; + KBTS_LANGUAGE_INDONESIAN :: INDONESIAN; + KBTS_LANGUAGE_INGUSH :: INGUSH; + KBTS_LANGUAGE_INTERLINGUA :: INTERLINGUA; + KBTS_LANGUAGE_INTERLINGUE :: INTERLINGUE; + KBTS_LANGUAGE_INUKTITUT :: INUKTITUT; + KBTS_LANGUAGE_INUPIAT :: INUPIAT; + KBTS_LANGUAGE_IPA_PHONETIC :: IPA_PHONETIC; + KBTS_LANGUAGE_IRISH :: IRISH; + KBTS_LANGUAGE_IRISH_TRADITIONAL :: IRISH_TRADITIONAL; + KBTS_LANGUAGE_IRULA :: IRULA; + KBTS_LANGUAGE_ITALIAN :: ITALIAN; + KBTS_LANGUAGE_JAMAICAN_CREOLE :: JAMAICAN_CREOLE; + KBTS_LANGUAGE_JAPANESE :: JAPANESE; + KBTS_LANGUAGE_JAVANESE :: JAVANESE; + KBTS_LANGUAGE_JENNU_KURUMA :: JENNU_KURUMA; + KBTS_LANGUAGE_JUDEO_TAT :: JUDEO_TAT; + KBTS_LANGUAGE_JULA :: JULA; + KBTS_LANGUAGE_KABARDIAN :: KABARDIAN; + KBTS_LANGUAGE_KABYLE :: KABYLE; + KBTS_LANGUAGE_KACHCHI :: KACHCHI; + KBTS_LANGUAGE_KADIWEU :: KADIWEU; + KBTS_LANGUAGE_KALENJIN :: KALENJIN; + KBTS_LANGUAGE_KALMYK :: KALMYK; + KBTS_LANGUAGE_KAMBA :: KAMBA; + KBTS_LANGUAGE_KANAUJI :: KANAUJI; + KBTS_LANGUAGE_KANNADA :: KANNADA; + KBTS_LANGUAGE_KANURI :: KANURI; + KBTS_LANGUAGE_KAQCHIKEL :: KAQCHIKEL; + KBTS_LANGUAGE_KARACHAY :: KARACHAY; + KBTS_LANGUAGE_KARAIM :: KARAIM; + KBTS_LANGUAGE_KARAKALPAK :: KARAKALPAK; + KBTS_LANGUAGE_KARELIAN :: KARELIAN; + KBTS_LANGUAGE_KAREN :: KAREN; + KBTS_LANGUAGE_KASHMIRI :: KASHMIRI; + KBTS_LANGUAGE_KASHUBIAN :: KASHUBIAN; + KBTS_LANGUAGE_KATE :: KATE; + KBTS_LANGUAGE_KAZAKH :: KAZAKH; + KBTS_LANGUAGE_KEBENA :: KEBENA; + KBTS_LANGUAGE_KEKCHI :: KEKCHI; + KBTS_LANGUAGE_KHAKASS :: KHAKASS; + KBTS_LANGUAGE_KHAMTI_SHAN :: KHAMTI_SHAN; + KBTS_LANGUAGE_KHAMYANG :: KHAMYANG; + KBTS_LANGUAGE_KHANTY_KAZIM :: KHANTY_KAZIM; + KBTS_LANGUAGE_KHANTY_SHURISHKAR :: KHANTY_SHURISHKAR; + KBTS_LANGUAGE_KHANTY_VAKHI :: KHANTY_VAKHI; + KBTS_LANGUAGE_KHASI :: KHASI; + KBTS_LANGUAGE_KHENGKHA :: KHENGKHA; + KBTS_LANGUAGE_KHINALUG :: KHINALUG; + KBTS_LANGUAGE_KHMER :: KHMER; + KBTS_LANGUAGE_KHORASANI_TURKIC :: KHORASANI_TURKIC; + KBTS_LANGUAGE_KHOWAR :: KHOWAR; + KBTS_LANGUAGE_KHUTSURI_GEORGIAN :: KHUTSURI_GEORGIAN; + KBTS_LANGUAGE_KICHE :: KICHE; + KBTS_LANGUAGE_KIKONGO :: KIKONGO; + KBTS_LANGUAGE_KILDIN_SAMI :: KILDIN_SAMI; + KBTS_LANGUAGE_KINYARWANDA :: KINYARWANDA; + KBTS_LANGUAGE_KIRMANJKI :: KIRMANJKI; + KBTS_LANGUAGE_KISII :: KISII; + KBTS_LANGUAGE_KITUBA :: KITUBA; + KBTS_LANGUAGE_KODAGU :: KODAGU; + KBTS_LANGUAGE_KOKNI :: KOKNI; + KBTS_LANGUAGE_KOMI :: KOMI; + KBTS_LANGUAGE_KOMI_PERMYAK :: KOMI_PERMYAK; + KBTS_LANGUAGE_KOMI_ZYRIAN :: KOMI_ZYRIAN; + KBTS_LANGUAGE_KOMO :: KOMO; + KBTS_LANGUAGE_KOMSO :: KOMSO; + KBTS_LANGUAGE_KONGO :: KONGO; + KBTS_LANGUAGE_KONKANI :: KONKANI; + KBTS_LANGUAGE_KOORETE :: KOORETE; + KBTS_LANGUAGE_KOREAN :: KOREAN; + KBTS_LANGUAGE_KOREAO_OLD_HANGUL :: KOREAO_OLD_HANGUL; + KBTS_LANGUAGE_KORYAK :: KORYAK; + KBTS_LANGUAGE_KOSRAEAN :: KOSRAEAN; + KBTS_LANGUAGE_KPELLE :: KPELLE; + KBTS_LANGUAGE_KPELLE_LIBERIA :: KPELLE_LIBERIA; + KBTS_LANGUAGE_KRIO :: KRIO; + KBTS_LANGUAGE_KRYMCHAK :: KRYMCHAK; + KBTS_LANGUAGE_KUANYAMA :: KUANYAMA; + KBTS_LANGUAGE_KUBE :: KUBE; + KBTS_LANGUAGE_KUI :: KUI; + KBTS_LANGUAGE_KULVI :: KULVI; + KBTS_LANGUAGE_KUMAONI :: KUMAONI; + KBTS_LANGUAGE_KUMYK :: KUMYK; + KBTS_LANGUAGE_KURDISH :: KURDISH; + KBTS_LANGUAGE_KURUKH :: KURUKH; + KBTS_LANGUAGE_KUY :: KUY; + KBTS_LANGUAGE_KWAKWALA :: KWAKWALA; + KBTS_LANGUAGE_KYRGYZ :: KYRGYZ; + KBTS_LANGUAGE_L_CREE :: L_CREE; + KBTS_LANGUAGE_LADAKHI :: LADAKHI; + KBTS_LANGUAGE_LADIN :: LADIN; + KBTS_LANGUAGE_LADINO :: LADINO; + KBTS_LANGUAGE_LAHULI :: LAHULI; + KBTS_LANGUAGE_LAK :: LAK; + KBTS_LANGUAGE_LAKI :: LAKI; + KBTS_LANGUAGE_LAMBANI :: LAMBANI; + KBTS_LANGUAGE_LAMPUNG :: LAMPUNG; + KBTS_LANGUAGE_LAO :: LAO; + KBTS_LANGUAGE_LATIN :: LATIN; + KBTS_LANGUAGE_LATVIAN :: LATVIAN; + KBTS_LANGUAGE_LAZ :: LAZ; + KBTS_LANGUAGE_LELEMI :: LELEMI; + KBTS_LANGUAGE_LEZGI :: LEZGI; + KBTS_LANGUAGE_LIGURIAN :: LIGURIAN; + KBTS_LANGUAGE_LIMBU :: LIMBU; + KBTS_LANGUAGE_LIMBURGISH :: LIMBURGISH; + KBTS_LANGUAGE_LINGALA :: LINGALA; + KBTS_LANGUAGE_LIPO :: LIPO; + KBTS_LANGUAGE_LISU :: LISU; + KBTS_LANGUAGE_LITHUANIAN :: LITHUANIAN; + KBTS_LANGUAGE_LIV :: LIV; + KBTS_LANGUAGE_LOJBAN :: LOJBAN; + KBTS_LANGUAGE_LOMA :: LOMA; + KBTS_LANGUAGE_LOMBARD :: LOMBARD; + KBTS_LANGUAGE_LOMWE :: LOMWE; + KBTS_LANGUAGE_LOW_MARI :: LOW_MARI; + KBTS_LANGUAGE_LOW_SAXON :: LOW_SAXON; + KBTS_LANGUAGE_LOWER_SORBIAN :: LOWER_SORBIAN; + KBTS_LANGUAGE_LU :: LU; + KBTS_LANGUAGE_LUBA_KATANGA :: LUBA_KATANGA; + KBTS_LANGUAGE_LUBA_LULUA :: LUBA_LULUA; + KBTS_LANGUAGE_LULE_SAMI :: LULE_SAMI; + KBTS_LANGUAGE_LUO :: LUO; + KBTS_LANGUAGE_LURI :: LURI; + KBTS_LANGUAGE_LUSHOOTSEED :: LUSHOOTSEED; + KBTS_LANGUAGE_LUXEMBOURGISH :: LUXEMBOURGISH; + KBTS_LANGUAGE_LUYIA :: LUYIA; + KBTS_LANGUAGE_MACEDONIAN :: MACEDONIAN; + KBTS_LANGUAGE_MADURA :: MADURA; + KBTS_LANGUAGE_MAGAHI :: MAGAHI; + KBTS_LANGUAGE_MAITHILI :: MAITHILI; + KBTS_LANGUAGE_MAJANG :: MAJANG; + KBTS_LANGUAGE_MAKASAR :: MAKASAR; + KBTS_LANGUAGE_MAKHUWA :: MAKHUWA; + KBTS_LANGUAGE_MAKONDE :: MAKONDE; + KBTS_LANGUAGE_MALAGASY :: MALAGASY; + KBTS_LANGUAGE_MALAY :: MALAY; + KBTS_LANGUAGE_MALAYALAM :: MALAYALAM; + KBTS_LANGUAGE_MALAYALAM_REFORMED :: MALAYALAM_REFORMED; + KBTS_LANGUAGE_MALE :: MALE; + KBTS_LANGUAGE_MALINKE :: MALINKE; + KBTS_LANGUAGE_MALTESE :: MALTESE; + KBTS_LANGUAGE_MAM :: MAM; + KBTS_LANGUAGE_MANCHU :: MANCHU; + KBTS_LANGUAGE_MANDAR :: MANDAR; + KBTS_LANGUAGE_MANDINKA :: MANDINKA; + KBTS_LANGUAGE_MANINKA :: MANINKA; + KBTS_LANGUAGE_MANIPURI :: MANIPURI; + KBTS_LANGUAGE_MANO :: MANO; + KBTS_LANGUAGE_MANSI :: MANSI; + KBTS_LANGUAGE_MANX :: MANX; + KBTS_LANGUAGE_MAORI :: MAORI; + KBTS_LANGUAGE_MAPUDUNGUN :: MAPUDUNGUN; + KBTS_LANGUAGE_MARATHI :: MARATHI; + KBTS_LANGUAGE_MARSHALLESE :: MARSHALLESE; + KBTS_LANGUAGE_MARWARI :: MARWARI; + KBTS_LANGUAGE_MAYAN :: MAYAN; + KBTS_LANGUAGE_MAZANDERANI :: MAZANDERANI; + KBTS_LANGUAGE_MBEMBE_TIGON :: MBEMBE_TIGON; + KBTS_LANGUAGE_MBO :: MBO; + KBTS_LANGUAGE_MBUNDU :: MBUNDU; + KBTS_LANGUAGE_MEDUMBA :: MEDUMBA; + KBTS_LANGUAGE_MEEN :: MEEN; + KBTS_LANGUAGE_MENDE :: MENDE; + KBTS_LANGUAGE_MERU :: MERU; + KBTS_LANGUAGE_MEWATI :: MEWATI; + KBTS_LANGUAGE_MINANGKABAU :: MINANGKABAU; + KBTS_LANGUAGE_MINJANGBAL :: MINJANGBAL; + KBTS_LANGUAGE_MIRANDESE :: MIRANDESE; + KBTS_LANGUAGE_MIZO :: MIZO; + KBTS_LANGUAGE_MOHAWK :: MOHAWK; + KBTS_LANGUAGE_MOKSHA :: MOKSHA; + KBTS_LANGUAGE_MOLDAVIAN :: MOLDAVIAN; + KBTS_LANGUAGE_MON :: MON; + KBTS_LANGUAGE_MONGOLIAN :: MONGOLIAN; + KBTS_LANGUAGE_MOOSE_CREE :: MOOSE_CREE; + KBTS_LANGUAGE_MORISYEN :: MORISYEN; + KBTS_LANGUAGE_MOROCCAN :: MOROCCAN; + KBTS_LANGUAGE_MOSSI :: MOSSI; + KBTS_LANGUAGE_MUNDARI :: MUNDARI; + KBTS_LANGUAGE_MUSCOGEE :: MUSCOGEE; + KBTS_LANGUAGE_N_CREE :: N_CREE; + KBTS_LANGUAGE_NAGA_ASSAMESE :: NAGA_ASSAMESE; + KBTS_LANGUAGE_NAGARI :: NAGARI; + KBTS_LANGUAGE_NAHUATL :: NAHUATL; + KBTS_LANGUAGE_NANAI :: NANAI; + KBTS_LANGUAGE_NASKAPI :: NASKAPI; + KBTS_LANGUAGE_NAURUAN :: NAURUAN; + KBTS_LANGUAGE_NAVAJO :: NAVAJO; + KBTS_LANGUAGE_NDAU :: NDAU; + KBTS_LANGUAGE_NDEBELE :: NDEBELE; + KBTS_LANGUAGE_NDONGA :: NDONGA; + KBTS_LANGUAGE_NEAPOLITAN :: NEAPOLITAN; + KBTS_LANGUAGE_NEPALI :: NEPALI; + KBTS_LANGUAGE_NEWARI :: NEWARI; + KBTS_LANGUAGE_NGBAKA :: NGBAKA; + KBTS_LANGUAGE_NIGERIAN_FULFULDE :: NIGERIAN_FULFULDE; + KBTS_LANGUAGE_NIMADI :: NIMADI; + KBTS_LANGUAGE_NISI :: NISI; + KBTS_LANGUAGE_NIUEAN :: NIUEAN; + KBTS_LANGUAGE_NKO :: NKO; + KBTS_LANGUAGE_NOGAI :: NOGAI; + KBTS_LANGUAGE_NORFOLK :: NORFOLK; + KBTS_LANGUAGE_NORTH_SLAVEY :: NORTH_SLAVEY; + KBTS_LANGUAGE_NORTHERN_EMBERA :: NORTHERN_EMBERA; + KBTS_LANGUAGE_NORTHERN_SAMI :: NORTHERN_SAMI; + KBTS_LANGUAGE_NORTHERN_SOTHO :: NORTHERN_SOTHO; + KBTS_LANGUAGE_NORTHERN_TAI :: NORTHERN_TAI; + KBTS_LANGUAGE_NORWAY_HOUSE_CREE :: NORWAY_HOUSE_CREE; + KBTS_LANGUAGE_NORWEGIAN :: NORWEGIAN; + KBTS_LANGUAGE_NORWEGIAN_NYNORSK :: NORWEGIAN_NYNORSK; + KBTS_LANGUAGE_NOVIAL :: NOVIAL; + KBTS_LANGUAGE_NUMANGGANG :: NUMANGGANG; + KBTS_LANGUAGE_NUNAVIK_INUKTITUT :: NUNAVIK_INUKTITUT; + KBTS_LANGUAGE_NUU_CHAH_NULTH :: NUU_CHAH_NULTH; + KBTS_LANGUAGE_NYAMWEZI :: NYAMWEZI; + KBTS_LANGUAGE_NYANKOLE :: NYANKOLE; + KBTS_LANGUAGE_OCCITAN :: OCCITAN; + KBTS_LANGUAGE_ODIA :: ODIA; + KBTS_LANGUAGE_OJI_CREE :: OJI_CREE; + KBTS_LANGUAGE_OJIBWAY :: OJIBWAY; + KBTS_LANGUAGE_OLD_IRISH :: OLD_IRISH; + KBTS_LANGUAGE_OLD_JAVANESE :: OLD_JAVANESE; + KBTS_LANGUAGE_ONEIDA :: ONEIDA; + KBTS_LANGUAGE_ONONDAGA :: ONONDAGA; + KBTS_LANGUAGE_OROMO :: OROMO; + KBTS_LANGUAGE_OSSETIAN :: OSSETIAN; + KBTS_LANGUAGE_PA_O_KAREN :: PA_O_KAREN; + KBTS_LANGUAGE_PALAUAN :: PALAUAN; + KBTS_LANGUAGE_PALAUNG :: PALAUNG; + KBTS_LANGUAGE_PALESTINIAN_ARAMAIC :: PALESTINIAN_ARAMAIC; + KBTS_LANGUAGE_PALI :: PALI; + KBTS_LANGUAGE_PALPA :: PALPA; + KBTS_LANGUAGE_PAMPANGAN :: PAMPANGAN; + KBTS_LANGUAGE_PANGASINAN :: PANGASINAN; + KBTS_LANGUAGE_PAPIAMENTU :: PAPIAMENTU; + KBTS_LANGUAGE_PASHTO :: PASHTO; + KBTS_LANGUAGE_PATTANI_MALAY :: PATTANI_MALAY; + KBTS_LANGUAGE_PENNSYLVANIA_GERMAN :: PENNSYLVANIA_GERMAN; + KBTS_LANGUAGE_PERSIAN :: PERSIAN; + KBTS_LANGUAGE_PHAKE :: PHAKE; + KBTS_LANGUAGE_PICARD :: PICARD; + KBTS_LANGUAGE_PIEMONTESE :: PIEMONTESE; + KBTS_LANGUAGE_PILAGA :: PILAGA; + KBTS_LANGUAGE_PITE_SAMI :: PITE_SAMI; + KBTS_LANGUAGE_POCOMCHI :: POCOMCHI; + KBTS_LANGUAGE_POHNPEIAN :: POHNPEIAN; + KBTS_LANGUAGE_POLISH :: POLISH; + KBTS_LANGUAGE_POLYTONIC_GREEK :: POLYTONIC_GREEK; + KBTS_LANGUAGE_PORTUGUESE :: PORTUGUESE; + KBTS_LANGUAGE_PROVENCAL :: PROVENCAL; + KBTS_LANGUAGE_PUNJABI :: PUNJABI; + KBTS_LANGUAGE_QUECHUA :: QUECHUA; + KBTS_LANGUAGE_QUECHUA_BOLIVIA :: QUECHUA_BOLIVIA; + KBTS_LANGUAGE_QUECHUA_ECUADOR :: QUECHUA_ECUADOR; + KBTS_LANGUAGE_QUECHUA_PERU :: QUECHUA_PERU; + KBTS_LANGUAGE_R_CREE :: R_CREE; + KBTS_LANGUAGE_RAJASTHANI :: RAJASTHANI; + KBTS_LANGUAGE_RAKHINE :: RAKHINE; + KBTS_LANGUAGE_RAROTONGAN :: RAROTONGAN; + KBTS_LANGUAGE_REJANG :: REJANG; + KBTS_LANGUAGE_RIANG :: RIANG; + KBTS_LANGUAGE_RIPUARIAN :: RIPUARIAN; + KBTS_LANGUAGE_RITARUNGO :: RITARUNGO; + KBTS_LANGUAGE_ROHINGYA :: ROHINGYA; + KBTS_LANGUAGE_ROMANIAN :: ROMANIAN; + KBTS_LANGUAGE_ROMANSH :: ROMANSH; + KBTS_LANGUAGE_ROMANY :: ROMANY; + KBTS_LANGUAGE_ROTUMAN :: ROTUMAN; + KBTS_LANGUAGE_RUNDI :: RUNDI; + KBTS_LANGUAGE_RUSSIAN :: RUSSIAN; + KBTS_LANGUAGE_RUSSIAN_BURIAT :: RUSSIAN_BURIAT; + KBTS_LANGUAGE_RUSYN :: RUSYN; + KBTS_LANGUAGE_SADRI :: SADRI; + KBTS_LANGUAGE_SAKHA :: SAKHA; + KBTS_LANGUAGE_SAMOAN :: SAMOAN; + KBTS_LANGUAGE_SAMOGITIAN :: SAMOGITIAN; + KBTS_LANGUAGE_SAN_BLAS_KUNA :: SAN_BLAS_KUNA; + KBTS_LANGUAGE_SANGO :: SANGO; + KBTS_LANGUAGE_SANSKRIT :: SANSKRIT; + KBTS_LANGUAGE_SANTALI :: SANTALI; + KBTS_LANGUAGE_SARAIKI :: SARAIKI; + KBTS_LANGUAGE_SARDINIAN :: SARDINIAN; + KBTS_LANGUAGE_SASAK :: SASAK; + KBTS_LANGUAGE_SATERLAND_FRISIAN :: SATERLAND_FRISIAN; + KBTS_LANGUAGE_SAYISI :: SAYISI; + KBTS_LANGUAGE_SCOTS :: SCOTS; + KBTS_LANGUAGE_SCOTTISH_GAELIC :: SCOTTISH_GAELIC; + KBTS_LANGUAGE_SEKOTA :: SEKOTA; + KBTS_LANGUAGE_SELKUP :: SELKUP; + KBTS_LANGUAGE_SENA :: SENA; + KBTS_LANGUAGE_SENECA :: SENECA; + KBTS_LANGUAGE_SERBIAN :: SERBIAN; + KBTS_LANGUAGE_SERER :: SERER; + KBTS_LANGUAGE_SGAW_KAREN :: SGAW_KAREN; + KBTS_LANGUAGE_SHAN :: SHAN; + KBTS_LANGUAGE_SHONA :: SHONA; + KBTS_LANGUAGE_SIBE :: SIBE; + KBTS_LANGUAGE_SICILIAN :: SICILIAN; + KBTS_LANGUAGE_SIDAMO :: SIDAMO; + KBTS_LANGUAGE_SILESIAN :: SILESIAN; + KBTS_LANGUAGE_SILTE_GURAGE :: SILTE_GURAGE; + KBTS_LANGUAGE_SINDHI :: SINDHI; + KBTS_LANGUAGE_SINHALA :: SINHALA; + KBTS_LANGUAGE_SKOLT_SAMI :: SKOLT_SAMI; + KBTS_LANGUAGE_SLAVEY :: SLAVEY; + KBTS_LANGUAGE_SLOVAK :: SLOVAK; + KBTS_LANGUAGE_SLOVENIAN :: SLOVENIAN; + KBTS_LANGUAGE_SMALL_FLOWERY_MIAO :: SMALL_FLOWERY_MIAO; + KBTS_LANGUAGE_SODO_GURAGE :: SODO_GURAGE; + KBTS_LANGUAGE_SOGA :: SOGA; + KBTS_LANGUAGE_SOMALI :: SOMALI; + KBTS_LANGUAGE_SONGE :: SONGE; + KBTS_LANGUAGE_SONINKE :: SONINKE; + KBTS_LANGUAGE_SOUTH_SLAVEY :: SOUTH_SLAVEY; + KBTS_LANGUAGE_SOUTHERN_KIWAI :: SOUTHERN_KIWAI; + KBTS_LANGUAGE_SOUTHERN_SAMI :: SOUTHERN_SAMI; + KBTS_LANGUAGE_SOUTHERN_SOTHO :: SOUTHERN_SOTHO; + KBTS_LANGUAGE_SPANISH :: SPANISH; + KBTS_LANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT :: STANDARD_MOROCCAN_TAMAZIGHT; + KBTS_LANGUAGE_STRAITS_SALISH :: STRAITS_SALISH; + KBTS_LANGUAGE_SUKUMA :: SUKUMA; + KBTS_LANGUAGE_SUNDANESE :: SUNDANESE; + KBTS_LANGUAGE_SURI :: SURI; + KBTS_LANGUAGE_SUTU :: SUTU; + KBTS_LANGUAGE_SVAN :: SVAN; + KBTS_LANGUAGE_SWADAYA_ARAMAIC :: SWADAYA_ARAMAIC; + KBTS_LANGUAGE_SWAHILI :: SWAHILI; + KBTS_LANGUAGE_SWATI :: SWATI; + KBTS_LANGUAGE_SWEDISH :: SWEDISH; + KBTS_LANGUAGE_SYLHETI :: SYLHETI; + KBTS_LANGUAGE_SYRIAC :: SYRIAC; + KBTS_LANGUAGE_SYRIAC_EASTERN :: SYRIAC_EASTERN; + KBTS_LANGUAGE_SYRIAC_ESTRANGELA :: SYRIAC_ESTRANGELA; + KBTS_LANGUAGE_SYRIAC_WESTERN :: SYRIAC_WESTERN; + KBTS_LANGUAGE_TABASARAN :: TABASARAN; + KBTS_LANGUAGE_TACHELHIT :: TACHELHIT; + KBTS_LANGUAGE_TAGALOG :: TAGALOG; + KBTS_LANGUAGE_TAHAGGART_TAMAHAQ :: TAHAGGART_TAMAHAQ; + KBTS_LANGUAGE_TAHITIAN :: TAHITIAN; + KBTS_LANGUAGE_TAI_LAING :: TAI_LAING; + KBTS_LANGUAGE_TAJIKI :: TAJIKI; + KBTS_LANGUAGE_TALYSH :: TALYSH; + KBTS_LANGUAGE_TAMASHEK :: TAMASHEK; + KBTS_LANGUAGE_TAMASHEQ :: TAMASHEQ; + KBTS_LANGUAGE_TAMAZIGHT :: TAMAZIGHT; + KBTS_LANGUAGE_TAMIL :: TAMIL; + KBTS_LANGUAGE_TARIFIT :: TARIFIT; + KBTS_LANGUAGE_TATAR :: TATAR; + KBTS_LANGUAGE_TAWALLAMMAT_TAMAJAQ :: TAWALLAMMAT_TAMAJAQ; + KBTS_LANGUAGE_TAY :: TAY; + KBTS_LANGUAGE_TAYART_TAMAJEQ :: TAYART_TAMAJEQ; + KBTS_LANGUAGE_TELUGU :: TELUGU; + KBTS_LANGUAGE_TEMNE :: TEMNE; + KBTS_LANGUAGE_TETUM :: TETUM; + KBTS_LANGUAGE_TH_CREE :: TH_CREE; + KBTS_LANGUAGE_THAI :: THAI; + KBTS_LANGUAGE_THAILAND_MON :: THAILAND_MON; + KBTS_LANGUAGE_THOMPSON :: THOMPSON; + KBTS_LANGUAGE_TIBETAN :: TIBETAN; + KBTS_LANGUAGE_TIGRE :: TIGRE; + KBTS_LANGUAGE_TIGRINYA :: TIGRINYA; + KBTS_LANGUAGE_TIV :: TIV; + KBTS_LANGUAGE_TLINGIT :: TLINGIT; + KBTS_LANGUAGE_TOBO :: TOBO; + KBTS_LANGUAGE_TODO :: TODO; + KBTS_LANGUAGE_TOK_PISIN :: TOK_PISIN; + KBTS_LANGUAGE_TOMA :: TOMA; + KBTS_LANGUAGE_TONGA :: TONGA; + KBTS_LANGUAGE_TONGAN :: TONGAN; + KBTS_LANGUAGE_TORKI :: TORKI; + KBTS_LANGUAGE_TSHANGLA :: TSHANGLA; + KBTS_LANGUAGE_TSONGA :: TSONGA; + KBTS_LANGUAGE_TSWANA :: TSWANA; + KBTS_LANGUAGE_TULU :: TULU; + KBTS_LANGUAGE_TUMBUKA :: TUMBUKA; + KBTS_LANGUAGE_TUNDRA_ENETS :: TUNDRA_ENETS; + KBTS_LANGUAGE_TURKISH :: TURKISH; + KBTS_LANGUAGE_TURKMEN :: TURKMEN; + KBTS_LANGUAGE_TUROYO_ARAMAIC :: TUROYO_ARAMAIC; + KBTS_LANGUAGE_TUSCARORA :: TUSCARORA; + KBTS_LANGUAGE_TUVALU :: TUVALU; + KBTS_LANGUAGE_TUVIN :: TUVIN; + KBTS_LANGUAGE_TWI :: TWI; + KBTS_LANGUAGE_TZOTZIL :: TZOTZIL; + KBTS_LANGUAGE_UDI :: UDI; + KBTS_LANGUAGE_UDMURT :: UDMURT; + KBTS_LANGUAGE_UKRAINIAN :: UKRAINIAN; + KBTS_LANGUAGE_UMBUNDU :: UMBUNDU; + KBTS_LANGUAGE_UME_SAMI :: UME_SAMI; + KBTS_LANGUAGE_UPPER_SAXON :: UPPER_SAXON; + KBTS_LANGUAGE_UPPER_SORBIAN :: UPPER_SORBIAN; + KBTS_LANGUAGE_URALIC_PHONETIC :: URALIC_PHONETIC; + KBTS_LANGUAGE_URDU :: URDU; + KBTS_LANGUAGE_UYGHUR :: UYGHUR; + KBTS_LANGUAGE_UZBEK :: UZBEK; + KBTS_LANGUAGE_VENDA :: VENDA; + KBTS_LANGUAGE_VENETIAN :: VENETIAN; + KBTS_LANGUAGE_VIETNAMESE :: VIETNAMESE; + KBTS_LANGUAGE_VLAX_ROMANI :: VLAX_ROMANI; + KBTS_LANGUAGE_VOLAPUK :: VOLAPUK; + KBTS_LANGUAGE_VORO :: VORO; + KBTS_LANGUAGE_WA :: WA; + KBTS_LANGUAGE_WACI_GBE :: WACI_GBE; + KBTS_LANGUAGE_WAGDI :: WAGDI; + KBTS_LANGUAGE_WAKHI :: WAKHI; + KBTS_LANGUAGE_WALLOON :: WALLOON; + KBTS_LANGUAGE_WARAY_WARAY :: WARAY_WARAY; + KBTS_LANGUAGE_WAYANAD_CHETTI :: WAYANAD_CHETTI; + KBTS_LANGUAGE_WAYUU :: WAYUU; + KBTS_LANGUAGE_WELSH :: WELSH; + KBTS_LANGUAGE_WENDAT :: WENDAT; + KBTS_LANGUAGE_WEST_CREE :: WEST_CREE; + KBTS_LANGUAGE_WESTERN_CHAM :: WESTERN_CHAM; + KBTS_LANGUAGE_WESTERN_KAYAH :: WESTERN_KAYAH; + KBTS_LANGUAGE_WESTERN_PANJABI :: WESTERN_PANJABI; + KBTS_LANGUAGE_WESTERN_PWO_KAREN :: WESTERN_PWO_KAREN; + KBTS_LANGUAGE_WOLOF :: WOLOF; + KBTS_LANGUAGE_WOODS_CREE :: WOODS_CREE; + KBTS_LANGUAGE_WUDING_LUQUAN_YI :: WUDING_LUQUAN_YI; + KBTS_LANGUAGE_WYANDOT :: WYANDOT; + KBTS_LANGUAGE_XHOSA :: XHOSA; + KBTS_LANGUAGE_Y_CREE :: Y_CREE; + KBTS_LANGUAGE_YAO :: YAO; + KBTS_LANGUAGE_YAPESE :: YAPESE; + KBTS_LANGUAGE_YI_CLASSIC :: YI_CLASSIC; + KBTS_LANGUAGE_YI_MODERN :: YI_MODERN; + KBTS_LANGUAGE_YIDDISH :: YIDDISH; + KBTS_LANGUAGE_YORUBA :: YORUBA; + KBTS_LANGUAGE_ZAMBOANGA_CHAVACANO :: ZAMBOANGA_CHAVACANO; + KBTS_LANGUAGE_ZANDE :: ZANDE; + KBTS_LANGUAGE_ZARMA :: ZARMA; + KBTS_LANGUAGE_ZAZAKI :: ZAZAKI; + KBTS_LANGUAGE_ZEALANDIC :: ZEALANDIC; + KBTS_LANGUAGE_ZHUANG :: ZHUANG; + KBTS_LANGUAGE_ZULU :: ZULU; +} + +kbts_break_flags :: enum u32 { + DIRECTION :: 1; + + SCRIPT :: 2; + + GRAPHEME :: 4; + + WORD :: 8; + + LINE_SOFT :: 16; + + LINE_HARD :: 32; + + LINE :: 48; + ANY :: 63; + + KBTS_BREAK_FLAG_DIRECTION :: DIRECTION; + + KBTS_BREAK_FLAG_SCRIPT :: SCRIPT; + + KBTS_BREAK_FLAG_GRAPHEME :: GRAPHEME; + + KBTS_BREAK_FLAG_WORD :: WORD; + + KBTS_BREAK_FLAG_LINE_SOFT :: LINE_SOFT; + + KBTS_BREAK_FLAG_LINE_HARD :: LINE_HARD; + + KBTS_BREAK_FLAG_LINE :: LINE; + KBTS_BREAK_FLAG_ANY :: ANY; +} + +kbts_op_kind :: enum u8 { + END :: 0; + + PRE_NORMALIZE_DOTTED_CIRCLES :: 1; + NORMALIZE :: 2; + NORMALIZE_HANGUL :: 3; + FLAG_JOINING_LETTERS :: 4; + GSUB_FEATURES :: 5; + GSUB_FEATURES_WITH_USER :: 6; + + GPOS_METRICS :: 7; + GPOS_FEATURES :: 8; + + POST_GPOS_FIXUP :: 9; + STCH_POSTPASS :: 10; + + COUNT :: 11; + + KBTS_OP_KIND_END :: END; + + KBTS_OP_KIND_PRE_NORMALIZE_DOTTED_CIRCLES :: PRE_NORMALIZE_DOTTED_CIRCLES; + KBTS_OP_KIND_NORMALIZE :: NORMALIZE; + KBTS_OP_KIND_NORMALIZE_HANGUL :: NORMALIZE_HANGUL; + KBTS_OP_KIND_FLAG_JOINING_LETTERS :: FLAG_JOINING_LETTERS; + KBTS_OP_KIND_GSUB_FEATURES :: GSUB_FEATURES; + KBTS_OP_KIND_GSUB_FEATURES_WITH_USER :: GSUB_FEATURES_WITH_USER; + + KBTS_OP_KIND_GPOS_METRICS :: GPOS_METRICS; + KBTS_OP_KIND_GPOS_FEATURES :: GPOS_FEATURES; + + KBTS_OP_KIND_POST_GPOS_FIXUP :: POST_GPOS_FIXUP; + KBTS_OP_KIND_STCH_POSTPASS :: STCH_POSTPASS; + + KBTS_OP_KIND_COUNT :: COUNT; +} + +kbts_glyph_flags :: enum u32 { + ISOL :: 1; + FINA :: 2; + FIN2 :: 4; + FIN3 :: 8; + MEDI :: 16; + MED2 :: 32; + INIT :: 64; + + LJMO :: 128; + VJMO :: 256; + TJMO :: 512; + RPHF :: 1024; + BLWF :: 2048; + HALF :: 4096; + PSTF :: 8192; + ABVF :: 16384; + PREF :: 32768; + NUMR :: 65536; + FRAC :: 131072; + DNOM :: 262144; + CFAR :: 524288; + + DO_NOT_DECOMPOSE :: 2097152; + FIRST_IN_MULTIPLE_SUBSTITUTION :: 4194304; + NO_BREAK :: 8388608; + CURSIVE :: 16777216; + GENERATED_BY_GSUB :: 33554432; + USED_IN_GPOS :: 67108864; + + STCH_ENDPOINT :: 134217728; + STCH_EXTENSION :: 268435456; + + LIGATURE :: 536870912; + MULTIPLE_SUBSTITUTION :: 1073741824; + + KBTS_GLYPH_FLAG_ISOL :: ISOL; + KBTS_GLYPH_FLAG_FINA :: FINA; + KBTS_GLYPH_FLAG_FIN2 :: FIN2; + KBTS_GLYPH_FLAG_FIN3 :: FIN3; + KBTS_GLYPH_FLAG_MEDI :: MEDI; + KBTS_GLYPH_FLAG_MED2 :: MED2; + KBTS_GLYPH_FLAG_INIT :: INIT; + + KBTS_GLYPH_FLAG_LJMO :: LJMO; + KBTS_GLYPH_FLAG_VJMO :: VJMO; + KBTS_GLYPH_FLAG_TJMO :: TJMO; + KBTS_GLYPH_FLAG_RPHF :: RPHF; + KBTS_GLYPH_FLAG_BLWF :: BLWF; + KBTS_GLYPH_FLAG_HALF :: HALF; + KBTS_GLYPH_FLAG_PSTF :: PSTF; + KBTS_GLYPH_FLAG_ABVF :: ABVF; + KBTS_GLYPH_FLAG_PREF :: PREF; + KBTS_GLYPH_FLAG_NUMR :: NUMR; + KBTS_GLYPH_FLAG_FRAC :: FRAC; + KBTS_GLYPH_FLAG_DNOM :: DNOM; + KBTS_GLYPH_FLAG_CFAR :: CFAR; + + KBTS_GLYPH_FLAG_DO_NOT_DECOMPOSE :: DO_NOT_DECOMPOSE; + KBTS_GLYPH_FLAG_FIRST_IN_MULTIPLE_SUBSTITUTION :: FIRST_IN_MULTIPLE_SUBSTITUTION; + KBTS_GLYPH_FLAG_NO_BREAK :: NO_BREAK; + KBTS_GLYPH_FLAG_CURSIVE :: CURSIVE; + KBTS_GLYPH_FLAG_GENERATED_BY_GSUB :: GENERATED_BY_GSUB; + KBTS_GLYPH_FLAG_USED_IN_GPOS :: USED_IN_GPOS; + + KBTS_GLYPH_FLAG_STCH_ENDPOINT :: STCH_ENDPOINT; + KBTS_GLYPH_FLAG_STCH_EXTENSION :: STCH_EXTENSION; + + KBTS_GLYPH_FLAG_LIGATURE :: LIGATURE; + KBTS_GLYPH_FLAG_MULTIPLE_SUBSTITUTION :: MULTIPLE_SUBSTITUTION; +} + +kbts_japanese_line_break_style :: enum u8 { + STRICT :: 0; + + NORMAL :: 1; + + LOOSE :: 2; + + COUNT :: 3; + + KBTS_JAPANESE_LINE_BREAK_STYLE_STRICT :: STRICT; + + KBTS_JAPANESE_LINE_BREAK_STYLE_NORMAL :: NORMAL; + + KBTS_JAPANESE_LINE_BREAK_STYLE_LOOSE :: LOOSE; + + KBTS_JAPANESE_LINE_BREAK_STYLE_COUNT :: COUNT; +} + +kbts_orientation :: enum u32 { + HORIZONTAL :: 0; + VERTICAL :: 1; + + COUNT :: 2; + + KBTS_ORIENTATION_HORIZONTAL :: HORIZONTAL; + KBTS_ORIENTATION_VERTICAL :: VERTICAL; + + KBTS_ORIENTATION_COUNT :: COUNT; +} + +kbts_direction :: enum u32 { + NONE :: 0; + LTR :: 1; + RTL :: 2; + + COUNT :: 3; + + KBTS_DIRECTION_NONE :: NONE; + KBTS_DIRECTION_LTR :: LTR; + KBTS_DIRECTION_RTL :: RTL; + + KBTS_DIRECTION_COUNT :: COUNT; +} + +kbts_unicode_joining_type :: enum u8 { + NONE :: 0; + LEFT :: 1; + DUAL :: 2; + FORCE :: 3; + RIGHT :: 4; + TRANSPARENT :: 5; + COUNT :: 6; + + KBTS_UNICODE_JOINING_TYPE_NONE :: NONE; + KBTS_UNICODE_JOINING_TYPE_LEFT :: LEFT; + KBTS_UNICODE_JOINING_TYPE_DUAL :: DUAL; + KBTS_UNICODE_JOINING_TYPE_FORCE :: FORCE; + KBTS_UNICODE_JOINING_TYPE_RIGHT :: RIGHT; + KBTS_UNICODE_JOINING_TYPE_TRANSPARENT :: TRANSPARENT; + KBTS_UNICODE_JOINING_TYPE_COUNT :: COUNT; +} + +kbts_unicode_flags :: u8; +kbts_unicode_flag_enum :: enum u32 { + MODIFIER_COMBINING_MARK :: 1; + DEFAULT_IGNORABLE :: 2; + OPEN_BRACKET :: 4; + CLOSE_BRACKET :: 8; + PART_OF_WORD :: 16; + DECIMAL_DIGIT :: 32; + NON_SPACING_MARK :: 64; + + KBTS_UNICODE_FLAG_MODIFIER_COMBINING_MARK :: MODIFIER_COMBINING_MARK; + KBTS_UNICODE_FLAG_DEFAULT_IGNORABLE :: DEFAULT_IGNORABLE; + KBTS_UNICODE_FLAG_OPEN_BRACKET :: OPEN_BRACKET; + KBTS_UNICODE_FLAG_CLOSE_BRACKET :: CLOSE_BRACKET; + KBTS_UNICODE_FLAG_PART_OF_WORD :: PART_OF_WORD; + KBTS_UNICODE_FLAG_DECIMAL_DIGIT :: DECIMAL_DIGIT; + KBTS_UNICODE_FLAG_NON_SPACING_MARK :: NON_SPACING_MARK; +} + +kbts_unicode_bidirectional_class :: enum u8 { + NI :: 0; + L :: 1; + R :: 2; + NSM :: 3; + AL :: 4; + AN :: 5; + EN :: 6; + ES :: 7; + ET :: 8; + CS :: 9; + COUNT :: 10; + + KBTS_UNICODE_BIDIRECTIONAL_CLASS_NI :: NI; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_L :: L; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_R :: R; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_NSM :: NSM; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_AL :: AL; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN :: AN; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN :: EN; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_ES :: ES; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_ET :: ET; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_CS :: CS; + KBTS_UNICODE_BIDIRECTIONAL_CLASS_COUNT :: COUNT; +} + +kbts_line_break_class :: enum u8 { + Onea :: 0; + Oea :: 1; + Ope :: 2; + BK :: 3; + CR :: 4; + LF :: 5; + NL :: 6; + SP :: 7; + ZW :: 8; + WJ :: 9; + GLnea :: 10; + GLea :: 11; + CLnea :: 12; + CLea :: 13; + CPnea :: 14; + CPea :: 15; + EXnea :: 16; + EXea :: 17; + SY :: 18; + BAnea :: 19; + BAea :: 20; + OPnea :: 21; + OPea :: 22; + QU :: 23; + QUPi :: 24; + QUPf :: 25; + IS :: 26; + NSnea :: 27; + NSea :: 28; + B2 :: 29; + CB :: 30; + HY :: 31; + HYPHEN :: 32; + INnea :: 33; + INea :: 34; + BB :: 35; + HL :: 36; + ALnea :: 37; + ALea :: 38; + NU :: 39; + PRnea :: 40; + PRea :: 41; + IDnea :: 42; + IDea :: 43; + IDpe :: 44; + EBnea :: 45; + EBea :: 46; + EM :: 47; + POnea :: 48; + POea :: 49; + JL :: 50; + JV :: 51; + JT :: 52; + H2 :: 53; + H3 :: 54; + AP :: 55; + AK :: 56; + DOTTED_CIRCLE :: 57; + AS :: 58; + VF :: 59; + VI :: 60; + RI :: 61; + + COUNT :: 62; + + CM :: 63; + ZWJ :: 64; + + CJ :: 65; + + SOT :: 66; + EOT :: 67; + + KBTS_LINE_BREAK_CLASS_Onea :: Onea; + KBTS_LINE_BREAK_CLASS_Oea :: Oea; + KBTS_LINE_BREAK_CLASS_Ope :: Ope; + KBTS_LINE_BREAK_CLASS_BK :: BK; + KBTS_LINE_BREAK_CLASS_CR :: CR; + KBTS_LINE_BREAK_CLASS_LF :: LF; + KBTS_LINE_BREAK_CLASS_NL :: NL; + KBTS_LINE_BREAK_CLASS_SP :: SP; + KBTS_LINE_BREAK_CLASS_ZW :: ZW; + KBTS_LINE_BREAK_CLASS_WJ :: WJ; + KBTS_LINE_BREAK_CLASS_GLnea :: GLnea; + KBTS_LINE_BREAK_CLASS_GLea :: GLea; + KBTS_LINE_BREAK_CLASS_CLnea :: CLnea; + KBTS_LINE_BREAK_CLASS_CLea :: CLea; + KBTS_LINE_BREAK_CLASS_CPnea :: CPnea; + KBTS_LINE_BREAK_CLASS_CPea :: CPea; + KBTS_LINE_BREAK_CLASS_EXnea :: EXnea; + KBTS_LINE_BREAK_CLASS_EXea :: EXea; + KBTS_LINE_BREAK_CLASS_SY :: SY; + KBTS_LINE_BREAK_CLASS_BAnea :: BAnea; + KBTS_LINE_BREAK_CLASS_BAea :: BAea; + KBTS_LINE_BREAK_CLASS_OPnea :: OPnea; + KBTS_LINE_BREAK_CLASS_OPea :: OPea; + KBTS_LINE_BREAK_CLASS_QU :: QU; + KBTS_LINE_BREAK_CLASS_QUPi :: QUPi; + KBTS_LINE_BREAK_CLASS_QUPf :: QUPf; + KBTS_LINE_BREAK_CLASS_IS :: IS; + KBTS_LINE_BREAK_CLASS_NSnea :: NSnea; + KBTS_LINE_BREAK_CLASS_NSea :: NSea; + KBTS_LINE_BREAK_CLASS_B2 :: B2; + KBTS_LINE_BREAK_CLASS_CB :: CB; + KBTS_LINE_BREAK_CLASS_HY :: HY; + KBTS_LINE_BREAK_CLASS_HYPHEN :: HYPHEN; + KBTS_LINE_BREAK_CLASS_INnea :: INnea; + KBTS_LINE_BREAK_CLASS_INea :: INea; + KBTS_LINE_BREAK_CLASS_BB :: BB; + KBTS_LINE_BREAK_CLASS_HL :: HL; + KBTS_LINE_BREAK_CLASS_ALnea :: ALnea; + KBTS_LINE_BREAK_CLASS_ALea :: ALea; + KBTS_LINE_BREAK_CLASS_NU :: NU; + KBTS_LINE_BREAK_CLASS_PRnea :: PRnea; + KBTS_LINE_BREAK_CLASS_PRea :: PRea; + KBTS_LINE_BREAK_CLASS_IDnea :: IDnea; + KBTS_LINE_BREAK_CLASS_IDea :: IDea; + KBTS_LINE_BREAK_CLASS_IDpe :: IDpe; + KBTS_LINE_BREAK_CLASS_EBnea :: EBnea; + KBTS_LINE_BREAK_CLASS_EBea :: EBea; + KBTS_LINE_BREAK_CLASS_EM :: EM; + KBTS_LINE_BREAK_CLASS_POnea :: POnea; + KBTS_LINE_BREAK_CLASS_POea :: POea; + KBTS_LINE_BREAK_CLASS_JL :: JL; + KBTS_LINE_BREAK_CLASS_JV :: JV; + KBTS_LINE_BREAK_CLASS_JT :: JT; + KBTS_LINE_BREAK_CLASS_H2 :: H2; + KBTS_LINE_BREAK_CLASS_H3 :: H3; + KBTS_LINE_BREAK_CLASS_AP :: AP; + KBTS_LINE_BREAK_CLASS_AK :: AK; + KBTS_LINE_BREAK_CLASS_DOTTED_CIRCLE :: DOTTED_CIRCLE; + KBTS_LINE_BREAK_CLASS_AS :: AS; + KBTS_LINE_BREAK_CLASS_VF :: VF; + KBTS_LINE_BREAK_CLASS_VI :: VI; + KBTS_LINE_BREAK_CLASS_RI :: RI; + + KBTS_LINE_BREAK_CLASS_COUNT :: COUNT; + + KBTS_LINE_BREAK_CLASS_CM :: CM; + KBTS_LINE_BREAK_CLASS_ZWJ :: ZWJ; + + KBTS_LINE_BREAK_CLASS_CJ :: CJ; + + KBTS_LINE_BREAK_CLASS_SOT :: SOT; + KBTS_LINE_BREAK_CLASS_EOT :: EOT; +} + +kbts_word_break_class :: enum u8 { + Onep :: 0; + Oep :: 1; + CR :: 2; + LF :: 3; + NL :: 4; + EX :: 5; + ZWJ :: 6; + RI :: 7; + FO :: 8; + KA :: 9; + HL :: 10; + ALnep :: 11; + ALep :: 12; + SQ :: 13; + DQ :: 14; + MNL :: 15; + ML :: 16; + MN :: 17; + NM :: 18; + ENL :: 19; + WSS :: 20; + + SOT :: 21; + + KBTS_WORD_BREAK_CLASS_Onep :: Onep; + KBTS_WORD_BREAK_CLASS_Oep :: Oep; + KBTS_WORD_BREAK_CLASS_CR :: CR; + KBTS_WORD_BREAK_CLASS_LF :: LF; + KBTS_WORD_BREAK_CLASS_NL :: NL; + KBTS_WORD_BREAK_CLASS_EX :: EX; + KBTS_WORD_BREAK_CLASS_ZWJ :: ZWJ; + KBTS_WORD_BREAK_CLASS_RI :: RI; + KBTS_WORD_BREAK_CLASS_FO :: FO; + KBTS_WORD_BREAK_CLASS_KA :: KA; + KBTS_WORD_BREAK_CLASS_HL :: HL; + KBTS_WORD_BREAK_CLASS_ALnep :: ALnep; + KBTS_WORD_BREAK_CLASS_ALep :: ALep; + KBTS_WORD_BREAK_CLASS_SQ :: SQ; + KBTS_WORD_BREAK_CLASS_DQ :: DQ; + KBTS_WORD_BREAK_CLASS_MNL :: MNL; + KBTS_WORD_BREAK_CLASS_ML :: ML; + KBTS_WORD_BREAK_CLASS_MN :: MN; + KBTS_WORD_BREAK_CLASS_NM :: NM; + KBTS_WORD_BREAK_CLASS_ENL :: ENL; + KBTS_WORD_BREAK_CLASS_WSS :: WSS; + + KBTS_WORD_BREAK_CLASS_SOT :: SOT; +} + +kbts_shaper :: enum u32 { + DEFAULT :: 0; + ARABIC :: 1; + HANGUL :: 2; + HEBREW :: 3; + INDIC :: 4; + KHMER :: 5; + MYANMAR :: 6; + TIBETAN :: 7; + USE :: 8; + + COUNT :: 9; + + KBTS_SHAPER_DEFAULT :: DEFAULT; + KBTS_SHAPER_ARABIC :: ARABIC; + KBTS_SHAPER_HANGUL :: HANGUL; + KBTS_SHAPER_HEBREW :: HEBREW; + KBTS_SHAPER_INDIC :: INDIC; + KBTS_SHAPER_KHMER :: KHMER; + KBTS_SHAPER_MYANMAR :: MYANMAR; + KBTS_SHAPER_TIBETAN :: TIBETAN; + KBTS_SHAPER_USE :: USE; + + KBTS_SHAPER_COUNT :: COUNT; +} + +kbts_script :: enum u32 { + DONT_KNOW :: 0; + ADLAM :: 1; + AHOM :: 2; + ANATOLIAN_HIEROGLYPHS :: 3; + ARABIC :: 4; + ARMENIAN :: 5; + AVESTAN :: 6; + BALINESE :: 7; + BAMUM :: 8; + BASSA_VAH :: 9; + BATAK :: 10; + BENGALI :: 11; + BHAIKSUKI :: 12; + BOPOMOFO :: 13; + BRAHMI :: 14; + BUGINESE :: 15; + BUHID :: 16; + CANADIAN_SYLLABICS :: 17; + CARIAN :: 18; + CAUCASIAN_ALBANIAN :: 19; + CHAKMA :: 20; + CHAM :: 21; + CHEROKEE :: 22; + CHORASMIAN :: 23; + CJK_IDEOGRAPHIC :: 24; + COPTIC :: 25; + CYPRIOT_SYLLABARY :: 26; + CYPRO_MINOAN :: 27; + CYRILLIC :: 28; + DEFAULT :: 29; + DEFAULT2 :: 30; + DESERET :: 31; + DEVANAGARI :: 32; + DIVES_AKURU :: 33; + DOGRA :: 34; + DUPLOYAN :: 35; + EGYPTIAN_HIEROGLYPHS :: 36; + ELBASAN :: 37; + ELYMAIC :: 38; + ETHIOPIC :: 39; + GARAY :: 40; + GEORGIAN :: 41; + GLAGOLITIC :: 42; + GOTHIC :: 43; + GRANTHA :: 44; + GREEK :: 45; + GUJARATI :: 46; + GUNJALA_GONDI :: 47; + GURMUKHI :: 48; + GURUNG_KHEMA :: 49; + HANGUL :: 50; + HANIFI_ROHINGYA :: 51; + HANUNOO :: 52; + HATRAN :: 53; + HEBREW :: 54; + HIRAGANA :: 55; + IMPERIAL_ARAMAIC :: 56; + INSCRIPTIONAL_PAHLAVI :: 57; + INSCRIPTIONAL_PARTHIAN :: 58; + JAVANESE :: 59; + KAITHI :: 60; + KANNADA :: 61; + KATAKANA :: 62; + KAWI :: 63; + KAYAH_LI :: 64; + KHAROSHTHI :: 65; + KHITAN_SMALL_SCRIPT :: 66; + KHMER :: 67; + KHOJKI :: 68; + KHUDAWADI :: 69; + KIRAT_RAI :: 70; + LAO :: 71; + LATIN :: 72; + LEPCHA :: 73; + LIMBU :: 74; + LINEAR_A :: 75; + LINEAR_B :: 76; + LISU :: 77; + LYCIAN :: 78; + LYDIAN :: 79; + MAHAJANI :: 80; + MAKASAR :: 81; + MALAYALAM :: 82; + MANDAIC :: 83; + MANICHAEAN :: 84; + MARCHEN :: 85; + MASARAM_GONDI :: 86; + MEDEFAIDRIN :: 87; + MEETEI_MAYEK :: 88; + MENDE_KIKAKUI :: 89; + MEROITIC_CURSIVE :: 90; + MEROITIC_HIEROGLYPHS :: 91; + MIAO :: 92; + MODI :: 93; + MONGOLIAN :: 94; + MRO :: 95; + MULTANI :: 96; + MYANMAR :: 97; + NABATAEAN :: 98; + NAG_MUNDARI :: 99; + NANDINAGARI :: 100; + NEWA :: 101; + NEW_TAI_LUE :: 102; + NKO :: 103; + NUSHU :: 104; + NYIAKENG_PUACHUE_HMONG :: 105; + OGHAM :: 106; + OL_CHIKI :: 107; + OL_ONAL :: 108; + OLD_ITALIC :: 109; + OLD_HUNGARIAN :: 110; + OLD_NORTH_ARABIAN :: 111; + OLD_PERMIC :: 112; + OLD_PERSIAN_CUNEIFORM :: 113; + OLD_SOGDIAN :: 114; + OLD_SOUTH_ARABIAN :: 115; + OLD_TURKIC :: 116; + OLD_UYGHUR :: 117; + ODIA :: 118; + OSAGE :: 119; + OSMANYA :: 120; + PAHAWH_HMONG :: 121; + PALMYRENE :: 122; + PAU_CIN_HAU :: 123; + PHAGS_PA :: 124; + PHOENICIAN :: 125; + PSALTER_PAHLAVI :: 126; + REJANG :: 127; + RUNIC :: 128; + SAMARITAN :: 129; + SAURASHTRA :: 130; + SHARADA :: 131; + SHAVIAN :: 132; + SIDDHAM :: 133; + SIGN_WRITING :: 134; + SOGDIAN :: 135; + SINHALA :: 136; + SORA_SOMPENG :: 137; + SOYOMBO :: 138; + SUMERO_AKKADIAN_CUNEIFORM :: 139; + SUNDANESE :: 140; + SUNUWAR :: 141; + SYLOTI_NAGRI :: 142; + SYRIAC :: 143; + TAGALOG :: 144; + TAGBANWA :: 145; + TAI_LE :: 146; + TAI_THAM :: 147; + TAI_VIET :: 148; + TAKRI :: 149; + TAMIL :: 150; + TANGSA :: 151; + TANGUT :: 152; + TELUGU :: 153; + THAANA :: 154; + THAI :: 155; + TIBETAN :: 156; + TIFINAGH :: 157; + TIRHUTA :: 158; + TODHRI :: 159; + TOTO :: 160; + TULU_TIGALARI :: 161; + UGARITIC_CUNEIFORM :: 162; + VAI :: 163; + VITHKUQI :: 164; + WANCHO :: 165; + WARANG_CITI :: 166; + YEZIDI :: 167; + YI :: 168; + ZANABAZAR_SQUARE :: 169; + COUNT :: 170; + + KBTS_SCRIPT_DONT_KNOW :: DONT_KNOW; + KBTS_SCRIPT_ADLAM :: ADLAM; + KBTS_SCRIPT_AHOM :: AHOM; + KBTS_SCRIPT_ANATOLIAN_HIEROGLYPHS :: ANATOLIAN_HIEROGLYPHS; + KBTS_SCRIPT_ARABIC :: ARABIC; + KBTS_SCRIPT_ARMENIAN :: ARMENIAN; + KBTS_SCRIPT_AVESTAN :: AVESTAN; + KBTS_SCRIPT_BALINESE :: BALINESE; + KBTS_SCRIPT_BAMUM :: BAMUM; + KBTS_SCRIPT_BASSA_VAH :: BASSA_VAH; + KBTS_SCRIPT_BATAK :: BATAK; + KBTS_SCRIPT_BENGALI :: BENGALI; + KBTS_SCRIPT_BHAIKSUKI :: BHAIKSUKI; + KBTS_SCRIPT_BOPOMOFO :: BOPOMOFO; + KBTS_SCRIPT_BRAHMI :: BRAHMI; + KBTS_SCRIPT_BUGINESE :: BUGINESE; + KBTS_SCRIPT_BUHID :: BUHID; + KBTS_SCRIPT_CANADIAN_SYLLABICS :: CANADIAN_SYLLABICS; + KBTS_SCRIPT_CARIAN :: CARIAN; + KBTS_SCRIPT_CAUCASIAN_ALBANIAN :: CAUCASIAN_ALBANIAN; + KBTS_SCRIPT_CHAKMA :: CHAKMA; + KBTS_SCRIPT_CHAM :: CHAM; + KBTS_SCRIPT_CHEROKEE :: CHEROKEE; + KBTS_SCRIPT_CHORASMIAN :: CHORASMIAN; + KBTS_SCRIPT_CJK_IDEOGRAPHIC :: CJK_IDEOGRAPHIC; + KBTS_SCRIPT_COPTIC :: COPTIC; + KBTS_SCRIPT_CYPRIOT_SYLLABARY :: CYPRIOT_SYLLABARY; + KBTS_SCRIPT_CYPRO_MINOAN :: CYPRO_MINOAN; + KBTS_SCRIPT_CYRILLIC :: CYRILLIC; + KBTS_SCRIPT_DEFAULT :: DEFAULT; + KBTS_SCRIPT_DEFAULT2 :: DEFAULT2; + KBTS_SCRIPT_DESERET :: DESERET; + KBTS_SCRIPT_DEVANAGARI :: DEVANAGARI; + KBTS_SCRIPT_DIVES_AKURU :: DIVES_AKURU; + KBTS_SCRIPT_DOGRA :: DOGRA; + KBTS_SCRIPT_DUPLOYAN :: DUPLOYAN; + KBTS_SCRIPT_EGYPTIAN_HIEROGLYPHS :: EGYPTIAN_HIEROGLYPHS; + KBTS_SCRIPT_ELBASAN :: ELBASAN; + KBTS_SCRIPT_ELYMAIC :: ELYMAIC; + KBTS_SCRIPT_ETHIOPIC :: ETHIOPIC; + KBTS_SCRIPT_GARAY :: GARAY; + KBTS_SCRIPT_GEORGIAN :: GEORGIAN; + KBTS_SCRIPT_GLAGOLITIC :: GLAGOLITIC; + KBTS_SCRIPT_GOTHIC :: GOTHIC; + KBTS_SCRIPT_GRANTHA :: GRANTHA; + KBTS_SCRIPT_GREEK :: GREEK; + KBTS_SCRIPT_GUJARATI :: GUJARATI; + KBTS_SCRIPT_GUNJALA_GONDI :: GUNJALA_GONDI; + KBTS_SCRIPT_GURMUKHI :: GURMUKHI; + KBTS_SCRIPT_GURUNG_KHEMA :: GURUNG_KHEMA; + KBTS_SCRIPT_HANGUL :: HANGUL; + KBTS_SCRIPT_HANIFI_ROHINGYA :: HANIFI_ROHINGYA; + KBTS_SCRIPT_HANUNOO :: HANUNOO; + KBTS_SCRIPT_HATRAN :: HATRAN; + KBTS_SCRIPT_HEBREW :: HEBREW; + KBTS_SCRIPT_HIRAGANA :: HIRAGANA; + KBTS_SCRIPT_IMPERIAL_ARAMAIC :: IMPERIAL_ARAMAIC; + KBTS_SCRIPT_INSCRIPTIONAL_PAHLAVI :: INSCRIPTIONAL_PAHLAVI; + KBTS_SCRIPT_INSCRIPTIONAL_PARTHIAN :: INSCRIPTIONAL_PARTHIAN; + KBTS_SCRIPT_JAVANESE :: JAVANESE; + KBTS_SCRIPT_KAITHI :: KAITHI; + KBTS_SCRIPT_KANNADA :: KANNADA; + KBTS_SCRIPT_KATAKANA :: KATAKANA; + KBTS_SCRIPT_KAWI :: KAWI; + KBTS_SCRIPT_KAYAH_LI :: KAYAH_LI; + KBTS_SCRIPT_KHAROSHTHI :: KHAROSHTHI; + KBTS_SCRIPT_KHITAN_SMALL_SCRIPT :: KHITAN_SMALL_SCRIPT; + KBTS_SCRIPT_KHMER :: KHMER; + KBTS_SCRIPT_KHOJKI :: KHOJKI; + KBTS_SCRIPT_KHUDAWADI :: KHUDAWADI; + KBTS_SCRIPT_KIRAT_RAI :: KIRAT_RAI; + KBTS_SCRIPT_LAO :: LAO; + KBTS_SCRIPT_LATIN :: LATIN; + KBTS_SCRIPT_LEPCHA :: LEPCHA; + KBTS_SCRIPT_LIMBU :: LIMBU; + KBTS_SCRIPT_LINEAR_A :: LINEAR_A; + KBTS_SCRIPT_LINEAR_B :: LINEAR_B; + KBTS_SCRIPT_LISU :: LISU; + KBTS_SCRIPT_LYCIAN :: LYCIAN; + KBTS_SCRIPT_LYDIAN :: LYDIAN; + KBTS_SCRIPT_MAHAJANI :: MAHAJANI; + KBTS_SCRIPT_MAKASAR :: MAKASAR; + KBTS_SCRIPT_MALAYALAM :: MALAYALAM; + KBTS_SCRIPT_MANDAIC :: MANDAIC; + KBTS_SCRIPT_MANICHAEAN :: MANICHAEAN; + KBTS_SCRIPT_MARCHEN :: MARCHEN; + KBTS_SCRIPT_MASARAM_GONDI :: MASARAM_GONDI; + KBTS_SCRIPT_MEDEFAIDRIN :: MEDEFAIDRIN; + KBTS_SCRIPT_MEETEI_MAYEK :: MEETEI_MAYEK; + KBTS_SCRIPT_MENDE_KIKAKUI :: MENDE_KIKAKUI; + KBTS_SCRIPT_MEROITIC_CURSIVE :: MEROITIC_CURSIVE; + KBTS_SCRIPT_MEROITIC_HIEROGLYPHS :: MEROITIC_HIEROGLYPHS; + KBTS_SCRIPT_MIAO :: MIAO; + KBTS_SCRIPT_MODI :: MODI; + KBTS_SCRIPT_MONGOLIAN :: MONGOLIAN; + KBTS_SCRIPT_MRO :: MRO; + KBTS_SCRIPT_MULTANI :: MULTANI; + KBTS_SCRIPT_MYANMAR :: MYANMAR; + KBTS_SCRIPT_NABATAEAN :: NABATAEAN; + KBTS_SCRIPT_NAG_MUNDARI :: NAG_MUNDARI; + KBTS_SCRIPT_NANDINAGARI :: NANDINAGARI; + KBTS_SCRIPT_NEWA :: NEWA; + KBTS_SCRIPT_NEW_TAI_LUE :: NEW_TAI_LUE; + KBTS_SCRIPT_NKO :: NKO; + KBTS_SCRIPT_NUSHU :: NUSHU; + KBTS_SCRIPT_NYIAKENG_PUACHUE_HMONG :: NYIAKENG_PUACHUE_HMONG; + KBTS_SCRIPT_OGHAM :: OGHAM; + KBTS_SCRIPT_OL_CHIKI :: OL_CHIKI; + KBTS_SCRIPT_OL_ONAL :: OL_ONAL; + KBTS_SCRIPT_OLD_ITALIC :: OLD_ITALIC; + KBTS_SCRIPT_OLD_HUNGARIAN :: OLD_HUNGARIAN; + KBTS_SCRIPT_OLD_NORTH_ARABIAN :: OLD_NORTH_ARABIAN; + KBTS_SCRIPT_OLD_PERMIC :: OLD_PERMIC; + KBTS_SCRIPT_OLD_PERSIAN_CUNEIFORM :: OLD_PERSIAN_CUNEIFORM; + KBTS_SCRIPT_OLD_SOGDIAN :: OLD_SOGDIAN; + KBTS_SCRIPT_OLD_SOUTH_ARABIAN :: OLD_SOUTH_ARABIAN; + KBTS_SCRIPT_OLD_TURKIC :: OLD_TURKIC; + KBTS_SCRIPT_OLD_UYGHUR :: OLD_UYGHUR; + KBTS_SCRIPT_ODIA :: ODIA; + KBTS_SCRIPT_OSAGE :: OSAGE; + KBTS_SCRIPT_OSMANYA :: OSMANYA; + KBTS_SCRIPT_PAHAWH_HMONG :: PAHAWH_HMONG; + KBTS_SCRIPT_PALMYRENE :: PALMYRENE; + KBTS_SCRIPT_PAU_CIN_HAU :: PAU_CIN_HAU; + KBTS_SCRIPT_PHAGS_PA :: PHAGS_PA; + KBTS_SCRIPT_PHOENICIAN :: PHOENICIAN; + KBTS_SCRIPT_PSALTER_PAHLAVI :: PSALTER_PAHLAVI; + KBTS_SCRIPT_REJANG :: REJANG; + KBTS_SCRIPT_RUNIC :: RUNIC; + KBTS_SCRIPT_SAMARITAN :: SAMARITAN; + KBTS_SCRIPT_SAURASHTRA :: SAURASHTRA; + KBTS_SCRIPT_SHARADA :: SHARADA; + KBTS_SCRIPT_SHAVIAN :: SHAVIAN; + KBTS_SCRIPT_SIDDHAM :: SIDDHAM; + KBTS_SCRIPT_SIGN_WRITING :: SIGN_WRITING; + KBTS_SCRIPT_SOGDIAN :: SOGDIAN; + KBTS_SCRIPT_SINHALA :: SINHALA; + KBTS_SCRIPT_SORA_SOMPENG :: SORA_SOMPENG; + KBTS_SCRIPT_SOYOMBO :: SOYOMBO; + KBTS_SCRIPT_SUMERO_AKKADIAN_CUNEIFORM :: SUMERO_AKKADIAN_CUNEIFORM; + KBTS_SCRIPT_SUNDANESE :: SUNDANESE; + KBTS_SCRIPT_SUNUWAR :: SUNUWAR; + KBTS_SCRIPT_SYLOTI_NAGRI :: SYLOTI_NAGRI; + KBTS_SCRIPT_SYRIAC :: SYRIAC; + KBTS_SCRIPT_TAGALOG :: TAGALOG; + KBTS_SCRIPT_TAGBANWA :: TAGBANWA; + KBTS_SCRIPT_TAI_LE :: TAI_LE; + KBTS_SCRIPT_TAI_THAM :: TAI_THAM; + KBTS_SCRIPT_TAI_VIET :: TAI_VIET; + KBTS_SCRIPT_TAKRI :: TAKRI; + KBTS_SCRIPT_TAMIL :: TAMIL; + KBTS_SCRIPT_TANGSA :: TANGSA; + KBTS_SCRIPT_TANGUT :: TANGUT; + KBTS_SCRIPT_TELUGU :: TELUGU; + KBTS_SCRIPT_THAANA :: THAANA; + KBTS_SCRIPT_THAI :: THAI; + KBTS_SCRIPT_TIBETAN :: TIBETAN; + KBTS_SCRIPT_TIFINAGH :: TIFINAGH; + KBTS_SCRIPT_TIRHUTA :: TIRHUTA; + KBTS_SCRIPT_TODHRI :: TODHRI; + KBTS_SCRIPT_TOTO :: TOTO; + KBTS_SCRIPT_TULU_TIGALARI :: TULU_TIGALARI; + KBTS_SCRIPT_UGARITIC_CUNEIFORM :: UGARITIC_CUNEIFORM; + KBTS_SCRIPT_VAI :: VAI; + KBTS_SCRIPT_VITHKUQI :: VITHKUQI; + KBTS_SCRIPT_WANCHO :: WANCHO; + KBTS_SCRIPT_WARANG_CITI :: WARANG_CITI; + KBTS_SCRIPT_YEZIDI :: YEZIDI; + KBTS_SCRIPT_YI :: YI; + KBTS_SCRIPT_ZANABAZAR_SQUARE :: ZANABAZAR_SQUARE; + KBTS_SCRIPT_COUNT :: COUNT; +} + +kbts_feature_tag :: enum u32 { + isol :: 1819243369; + fina :: 1634625894; + fin2 :: 846096742; + fin3 :: 862873958; + medi :: 1768187245; + med2 :: 845440365; + init :: 1953066601; + ljmo :: 1869441644; + vjmo :: 1869441654; + tjmo :: 1869441652; + rphf :: 1718120562; + blwf :: 1719102562; + half :: 1718378856; + pstf :: 1718907760; + abvf :: 1719034465; + pref :: 1717924464; + numr :: 1919776110; + frac :: 1667330662; + dnom :: 1836019300; + cfar :: 1918985827; + aalt :: 1953259873; + abvm :: 1836474977; + abvs :: 1937138273; + afrc :: 1668441697; + akhn :: 1852336993; + apkn :: 1852534881; + blwm :: 1836543074; + blws :: 1937206370; + calt :: 1953259875; + case_ :: 1702060387; + ccmp :: 1886217059; + chws :: 1937205347; + cjct :: 1952672355; + clig :: 1734962275; + cpct :: 1952673891; + cpsp :: 1886613603; + cswh :: 1752658787; + curs :: 1936880995; + cv01 :: 825259619; + cv02 :: 842036835; + cv03 :: 858814051; + cv04 :: 875591267; + cv05 :: 892368483; + cv06 :: 909145699; + cv07 :: 925922915; + cv08 :: 942700131; + cv09 :: 959477347; + cv10 :: 808547939; + cv11 :: 825325155; + cv12 :: 842102371; + cv13 :: 858879587; + cv14 :: 875656803; + cv15 :: 892434019; + cv16 :: 909211235; + cv17 :: 925988451; + cv18 :: 942765667; + cv19 :: 959542883; + cv20 :: 808613475; + cv21 :: 825390691; + cv22 :: 842167907; + cv23 :: 858945123; + cv24 :: 875722339; + cv25 :: 892499555; + cv26 :: 909276771; + cv27 :: 926053987; + cv28 :: 942831203; + cv29 :: 959608419; + cv30 :: 808679011; + cv31 :: 825456227; + cv32 :: 842233443; + cv33 :: 859010659; + cv34 :: 875787875; + cv35 :: 892565091; + cv36 :: 909342307; + cv37 :: 926119523; + cv38 :: 942896739; + cv39 :: 959673955; + cv40 :: 808744547; + cv41 :: 825521763; + cv42 :: 842298979; + cv43 :: 859076195; + cv44 :: 875853411; + cv45 :: 892630627; + cv46 :: 909407843; + cv47 :: 926185059; + cv48 :: 942962275; + cv49 :: 959739491; + cv50 :: 808810083; + cv51 :: 825587299; + cv52 :: 842364515; + cv53 :: 859141731; + cv54 :: 875918947; + cv55 :: 892696163; + cv56 :: 909473379; + cv57 :: 926250595; + cv58 :: 943027811; + cv59 :: 959805027; + cv60 :: 808875619; + cv61 :: 825652835; + cv62 :: 842430051; + cv63 :: 859207267; + cv64 :: 875984483; + cv65 :: 892761699; + cv66 :: 909538915; + cv67 :: 926316131; + cv68 :: 943093347; + cv69 :: 959870563; + cv70 :: 808941155; + cv71 :: 825718371; + cv72 :: 842495587; + cv73 :: 859272803; + cv74 :: 876050019; + cv75 :: 892827235; + cv76 :: 909604451; + cv77 :: 926381667; + cv78 :: 943158883; + cv79 :: 959936099; + cv80 :: 809006691; + cv81 :: 825783907; + cv82 :: 842561123; + cv83 :: 859338339; + cv84 :: 876115555; + cv85 :: 892892771; + cv86 :: 909669987; + cv87 :: 926447203; + cv88 :: 943224419; + cv89 :: 960001635; + cv90 :: 809072227; + cv91 :: 825849443; + cv92 :: 842626659; + cv93 :: 859403875; + cv94 :: 876181091; + cv95 :: 892958307; + cv96 :: 909735523; + cv97 :: 926512739; + cv98 :: 943289955; + cv99 :: 960067171; + c2pc :: 1668297315; + c2sc :: 1668493923; + dist :: 1953720676; + dlig :: 1734962276; + dtls :: 1936487524; + expt :: 1953527909; + falt :: 1953259878; + flac :: 1667329126; + fwid :: 1684633446; + haln :: 1852596584; + halt :: 1953259880; + hist :: 1953720680; + hkna :: 1634626408; + hlig :: 1734962280; + hngl :: 1818717800; + hojo :: 1869246312; + hwid :: 1684633448; + ital :: 1818326121; + jalt :: 1953259882; + jp78 :: 943157354; + jp83 :: 859336810; + jp90 :: 809070698; + jp04 :: 875589738; + kern :: 1852990827; + lfbd :: 1684170348; + liga :: 1634167148; + lnum :: 1836412524; + locl :: 1818455916; + ltra :: 1634890860; + ltrm :: 1836217452; + mark :: 1802658157; + mgrk :: 1802659693; + mkmk :: 1802333037; + mset :: 1952805741; + nalt :: 1953259886; + nlck :: 1801677934; + nukt :: 1953199470; + onum :: 1836412527; + opbd :: 1684172911; + ordn :: 1852076655; + ornm :: 1835954799; + palt :: 1953259888; + pcap :: 1885430640; + pkna :: 1634626416; + pnum :: 1836412528; + pres :: 1936028272; + psts :: 1937011568; + pwid :: 1684633456; + qwid :: 1684633457; + rand :: 1684955506; + rclt :: 1953260402; + rkrf :: 1718774642; + rlig :: 1734962290; + rtbd :: 1684173938; + rtla :: 1634497650; + rtlm :: 1835824242; + ruby :: 2036495730; + rvrn :: 1852995186; + salt :: 1953259891; + sinf :: 1718511987; + size :: 1702521203; + smcp :: 1885564275; + smpl :: 1819307379; + ss01 :: 825258867; + ss02 :: 842036083; + ss03 :: 858813299; + ss04 :: 875590515; + ss05 :: 892367731; + ss06 :: 909144947; + ss07 :: 925922163; + ss08 :: 942699379; + ss09 :: 959476595; + ss10 :: 808547187; + ss11 :: 825324403; + ss12 :: 842101619; + ss13 :: 858878835; + ss14 :: 875656051; + ss15 :: 892433267; + ss16 :: 909210483; + ss17 :: 925987699; + ss18 :: 942764915; + ss19 :: 959542131; + ss20 :: 808612723; + ssty :: 2037674867; + stch :: 1751348339; + subs :: 1935832435; + sups :: 1936749939; + swsh :: 1752397683; + test :: 1953719668; + titl :: 1819568500; + tnam :: 1835101812; + tnum :: 1836412532; + trad :: 1684107892; + twid :: 1684633460; + unic :: 1667853941; + valt :: 1953259894; + vapk :: 1802527094; + vatu :: 1970561398; + vchw :: 2003329910; + vert :: 1953654134; + vhal :: 1818323062; + vkna :: 1634626422; + vkrn :: 1852992374; + vpal :: 1818325110; + vrt2 :: 846492278; + vrtr :: 1920234102; + zero :: 1869768058; + + KBTS_FEATURE_TAG_isol :: isol; + KBTS_FEATURE_TAG_fina :: fina; + KBTS_FEATURE_TAG_fin2 :: fin2; + KBTS_FEATURE_TAG_fin3 :: fin3; + KBTS_FEATURE_TAG_medi :: medi; + KBTS_FEATURE_TAG_med2 :: med2; + KBTS_FEATURE_TAG_init :: init; + KBTS_FEATURE_TAG_ljmo :: ljmo; + KBTS_FEATURE_TAG_vjmo :: vjmo; + KBTS_FEATURE_TAG_tjmo :: tjmo; + KBTS_FEATURE_TAG_rphf :: rphf; + KBTS_FEATURE_TAG_blwf :: blwf; + KBTS_FEATURE_TAG_half :: half; + KBTS_FEATURE_TAG_pstf :: pstf; + KBTS_FEATURE_TAG_abvf :: abvf; + KBTS_FEATURE_TAG_pref :: pref; + KBTS_FEATURE_TAG_numr :: numr; + KBTS_FEATURE_TAG_frac :: frac; + KBTS_FEATURE_TAG_dnom :: dnom; + KBTS_FEATURE_TAG_cfar :: cfar; + KBTS_FEATURE_TAG_aalt :: aalt; + KBTS_FEATURE_TAG_abvm :: abvm; + KBTS_FEATURE_TAG_abvs :: abvs; + KBTS_FEATURE_TAG_afrc :: afrc; + KBTS_FEATURE_TAG_akhn :: akhn; + KBTS_FEATURE_TAG_apkn :: apkn; + KBTS_FEATURE_TAG_blwm :: blwm; + KBTS_FEATURE_TAG_blws :: blws; + KBTS_FEATURE_TAG_calt :: calt; + KBTS_FEATURE_TAG_case :: case_; + KBTS_FEATURE_TAG_ccmp :: ccmp; + KBTS_FEATURE_TAG_chws :: chws; + KBTS_FEATURE_TAG_cjct :: cjct; + KBTS_FEATURE_TAG_clig :: clig; + KBTS_FEATURE_TAG_cpct :: cpct; + KBTS_FEATURE_TAG_cpsp :: cpsp; + KBTS_FEATURE_TAG_cswh :: cswh; + KBTS_FEATURE_TAG_curs :: curs; + KBTS_FEATURE_TAG_cv01 :: cv01; + KBTS_FEATURE_TAG_cv02 :: cv02; + KBTS_FEATURE_TAG_cv03 :: cv03; + KBTS_FEATURE_TAG_cv04 :: cv04; + KBTS_FEATURE_TAG_cv05 :: cv05; + KBTS_FEATURE_TAG_cv06 :: cv06; + KBTS_FEATURE_TAG_cv07 :: cv07; + KBTS_FEATURE_TAG_cv08 :: cv08; + KBTS_FEATURE_TAG_cv09 :: cv09; + KBTS_FEATURE_TAG_cv10 :: cv10; + KBTS_FEATURE_TAG_cv11 :: cv11; + KBTS_FEATURE_TAG_cv12 :: cv12; + KBTS_FEATURE_TAG_cv13 :: cv13; + KBTS_FEATURE_TAG_cv14 :: cv14; + KBTS_FEATURE_TAG_cv15 :: cv15; + KBTS_FEATURE_TAG_cv16 :: cv16; + KBTS_FEATURE_TAG_cv17 :: cv17; + KBTS_FEATURE_TAG_cv18 :: cv18; + KBTS_FEATURE_TAG_cv19 :: cv19; + KBTS_FEATURE_TAG_cv20 :: cv20; + KBTS_FEATURE_TAG_cv21 :: cv21; + KBTS_FEATURE_TAG_cv22 :: cv22; + KBTS_FEATURE_TAG_cv23 :: cv23; + KBTS_FEATURE_TAG_cv24 :: cv24; + KBTS_FEATURE_TAG_cv25 :: cv25; + KBTS_FEATURE_TAG_cv26 :: cv26; + KBTS_FEATURE_TAG_cv27 :: cv27; + KBTS_FEATURE_TAG_cv28 :: cv28; + KBTS_FEATURE_TAG_cv29 :: cv29; + KBTS_FEATURE_TAG_cv30 :: cv30; + KBTS_FEATURE_TAG_cv31 :: cv31; + KBTS_FEATURE_TAG_cv32 :: cv32; + KBTS_FEATURE_TAG_cv33 :: cv33; + KBTS_FEATURE_TAG_cv34 :: cv34; + KBTS_FEATURE_TAG_cv35 :: cv35; + KBTS_FEATURE_TAG_cv36 :: cv36; + KBTS_FEATURE_TAG_cv37 :: cv37; + KBTS_FEATURE_TAG_cv38 :: cv38; + KBTS_FEATURE_TAG_cv39 :: cv39; + KBTS_FEATURE_TAG_cv40 :: cv40; + KBTS_FEATURE_TAG_cv41 :: cv41; + KBTS_FEATURE_TAG_cv42 :: cv42; + KBTS_FEATURE_TAG_cv43 :: cv43; + KBTS_FEATURE_TAG_cv44 :: cv44; + KBTS_FEATURE_TAG_cv45 :: cv45; + KBTS_FEATURE_TAG_cv46 :: cv46; + KBTS_FEATURE_TAG_cv47 :: cv47; + KBTS_FEATURE_TAG_cv48 :: cv48; + KBTS_FEATURE_TAG_cv49 :: cv49; + KBTS_FEATURE_TAG_cv50 :: cv50; + KBTS_FEATURE_TAG_cv51 :: cv51; + KBTS_FEATURE_TAG_cv52 :: cv52; + KBTS_FEATURE_TAG_cv53 :: cv53; + KBTS_FEATURE_TAG_cv54 :: cv54; + KBTS_FEATURE_TAG_cv55 :: cv55; + KBTS_FEATURE_TAG_cv56 :: cv56; + KBTS_FEATURE_TAG_cv57 :: cv57; + KBTS_FEATURE_TAG_cv58 :: cv58; + KBTS_FEATURE_TAG_cv59 :: cv59; + KBTS_FEATURE_TAG_cv60 :: cv60; + KBTS_FEATURE_TAG_cv61 :: cv61; + KBTS_FEATURE_TAG_cv62 :: cv62; + KBTS_FEATURE_TAG_cv63 :: cv63; + KBTS_FEATURE_TAG_cv64 :: cv64; + KBTS_FEATURE_TAG_cv65 :: cv65; + KBTS_FEATURE_TAG_cv66 :: cv66; + KBTS_FEATURE_TAG_cv67 :: cv67; + KBTS_FEATURE_TAG_cv68 :: cv68; + KBTS_FEATURE_TAG_cv69 :: cv69; + KBTS_FEATURE_TAG_cv70 :: cv70; + KBTS_FEATURE_TAG_cv71 :: cv71; + KBTS_FEATURE_TAG_cv72 :: cv72; + KBTS_FEATURE_TAG_cv73 :: cv73; + KBTS_FEATURE_TAG_cv74 :: cv74; + KBTS_FEATURE_TAG_cv75 :: cv75; + KBTS_FEATURE_TAG_cv76 :: cv76; + KBTS_FEATURE_TAG_cv77 :: cv77; + KBTS_FEATURE_TAG_cv78 :: cv78; + KBTS_FEATURE_TAG_cv79 :: cv79; + KBTS_FEATURE_TAG_cv80 :: cv80; + KBTS_FEATURE_TAG_cv81 :: cv81; + KBTS_FEATURE_TAG_cv82 :: cv82; + KBTS_FEATURE_TAG_cv83 :: cv83; + KBTS_FEATURE_TAG_cv84 :: cv84; + KBTS_FEATURE_TAG_cv85 :: cv85; + KBTS_FEATURE_TAG_cv86 :: cv86; + KBTS_FEATURE_TAG_cv87 :: cv87; + KBTS_FEATURE_TAG_cv88 :: cv88; + KBTS_FEATURE_TAG_cv89 :: cv89; + KBTS_FEATURE_TAG_cv90 :: cv90; + KBTS_FEATURE_TAG_cv91 :: cv91; + KBTS_FEATURE_TAG_cv92 :: cv92; + KBTS_FEATURE_TAG_cv93 :: cv93; + KBTS_FEATURE_TAG_cv94 :: cv94; + KBTS_FEATURE_TAG_cv95 :: cv95; + KBTS_FEATURE_TAG_cv96 :: cv96; + KBTS_FEATURE_TAG_cv97 :: cv97; + KBTS_FEATURE_TAG_cv98 :: cv98; + KBTS_FEATURE_TAG_cv99 :: cv99; + KBTS_FEATURE_TAG_c2pc :: c2pc; + KBTS_FEATURE_TAG_c2sc :: c2sc; + KBTS_FEATURE_TAG_dist :: dist; + KBTS_FEATURE_TAG_dlig :: dlig; + KBTS_FEATURE_TAG_dtls :: dtls; + KBTS_FEATURE_TAG_expt :: expt; + KBTS_FEATURE_TAG_falt :: falt; + KBTS_FEATURE_TAG_flac :: flac; + KBTS_FEATURE_TAG_fwid :: fwid; + KBTS_FEATURE_TAG_haln :: haln; + KBTS_FEATURE_TAG_halt :: halt; + KBTS_FEATURE_TAG_hist :: hist; + KBTS_FEATURE_TAG_hkna :: hkna; + KBTS_FEATURE_TAG_hlig :: hlig; + KBTS_FEATURE_TAG_hngl :: hngl; + KBTS_FEATURE_TAG_hojo :: hojo; + KBTS_FEATURE_TAG_hwid :: hwid; + KBTS_FEATURE_TAG_ital :: ital; + KBTS_FEATURE_TAG_jalt :: jalt; + KBTS_FEATURE_TAG_jp78 :: jp78; + KBTS_FEATURE_TAG_jp83 :: jp83; + KBTS_FEATURE_TAG_jp90 :: jp90; + KBTS_FEATURE_TAG_jp04 :: jp04; + KBTS_FEATURE_TAG_kern :: kern; + KBTS_FEATURE_TAG_lfbd :: lfbd; + KBTS_FEATURE_TAG_liga :: liga; + KBTS_FEATURE_TAG_lnum :: lnum; + KBTS_FEATURE_TAG_locl :: locl; + KBTS_FEATURE_TAG_ltra :: ltra; + KBTS_FEATURE_TAG_ltrm :: ltrm; + KBTS_FEATURE_TAG_mark :: mark; + KBTS_FEATURE_TAG_mgrk :: mgrk; + KBTS_FEATURE_TAG_mkmk :: mkmk; + KBTS_FEATURE_TAG_mset :: mset; + KBTS_FEATURE_TAG_nalt :: nalt; + KBTS_FEATURE_TAG_nlck :: nlck; + KBTS_FEATURE_TAG_nukt :: nukt; + KBTS_FEATURE_TAG_onum :: onum; + KBTS_FEATURE_TAG_opbd :: opbd; + KBTS_FEATURE_TAG_ordn :: ordn; + KBTS_FEATURE_TAG_ornm :: ornm; + KBTS_FEATURE_TAG_palt :: palt; + KBTS_FEATURE_TAG_pcap :: pcap; + KBTS_FEATURE_TAG_pkna :: pkna; + KBTS_FEATURE_TAG_pnum :: pnum; + KBTS_FEATURE_TAG_pres :: pres; + KBTS_FEATURE_TAG_psts :: psts; + KBTS_FEATURE_TAG_pwid :: pwid; + KBTS_FEATURE_TAG_qwid :: qwid; + KBTS_FEATURE_TAG_rand :: rand; + KBTS_FEATURE_TAG_rclt :: rclt; + KBTS_FEATURE_TAG_rkrf :: rkrf; + KBTS_FEATURE_TAG_rlig :: rlig; + KBTS_FEATURE_TAG_rtbd :: rtbd; + KBTS_FEATURE_TAG_rtla :: rtla; + KBTS_FEATURE_TAG_rtlm :: rtlm; + KBTS_FEATURE_TAG_ruby :: ruby; + KBTS_FEATURE_TAG_rvrn :: rvrn; + KBTS_FEATURE_TAG_salt :: salt; + KBTS_FEATURE_TAG_sinf :: sinf; + KBTS_FEATURE_TAG_size :: size; + KBTS_FEATURE_TAG_smcp :: smcp; + KBTS_FEATURE_TAG_smpl :: smpl; + KBTS_FEATURE_TAG_ss01 :: ss01; + KBTS_FEATURE_TAG_ss02 :: ss02; + KBTS_FEATURE_TAG_ss03 :: ss03; + KBTS_FEATURE_TAG_ss04 :: ss04; + KBTS_FEATURE_TAG_ss05 :: ss05; + KBTS_FEATURE_TAG_ss06 :: ss06; + KBTS_FEATURE_TAG_ss07 :: ss07; + KBTS_FEATURE_TAG_ss08 :: ss08; + KBTS_FEATURE_TAG_ss09 :: ss09; + KBTS_FEATURE_TAG_ss10 :: ss10; + KBTS_FEATURE_TAG_ss11 :: ss11; + KBTS_FEATURE_TAG_ss12 :: ss12; + KBTS_FEATURE_TAG_ss13 :: ss13; + KBTS_FEATURE_TAG_ss14 :: ss14; + KBTS_FEATURE_TAG_ss15 :: ss15; + KBTS_FEATURE_TAG_ss16 :: ss16; + KBTS_FEATURE_TAG_ss17 :: ss17; + KBTS_FEATURE_TAG_ss18 :: ss18; + KBTS_FEATURE_TAG_ss19 :: ss19; + KBTS_FEATURE_TAG_ss20 :: ss20; + KBTS_FEATURE_TAG_ssty :: ssty; + KBTS_FEATURE_TAG_stch :: stch; + KBTS_FEATURE_TAG_subs :: subs; + KBTS_FEATURE_TAG_sups :: sups; + KBTS_FEATURE_TAG_swsh :: swsh; + KBTS_FEATURE_TAG_test :: test; + KBTS_FEATURE_TAG_titl :: titl; + KBTS_FEATURE_TAG_tnam :: tnam; + KBTS_FEATURE_TAG_tnum :: tnum; + KBTS_FEATURE_TAG_trad :: trad; + KBTS_FEATURE_TAG_twid :: twid; + KBTS_FEATURE_TAG_unic :: unic; + KBTS_FEATURE_TAG_valt :: valt; + KBTS_FEATURE_TAG_vapk :: vapk; + KBTS_FEATURE_TAG_vatu :: vatu; + KBTS_FEATURE_TAG_vchw :: vchw; + KBTS_FEATURE_TAG_vert :: vert; + KBTS_FEATURE_TAG_vhal :: vhal; + KBTS_FEATURE_TAG_vkna :: vkna; + KBTS_FEATURE_TAG_vkrn :: vkrn; + KBTS_FEATURE_TAG_vpal :: vpal; + KBTS_FEATURE_TAG_vrt2 :: vrt2; + KBTS_FEATURE_TAG_vrtr :: vrtr; + KBTS_FEATURE_TAG_zero :: zero; +} + +kbts_feature_id :: enum u32 { + isol :: 0; + fina :: 1; + fin2 :: 2; + fin3 :: 3; + medi :: 4; + med2 :: 5; + init :: 6; + ljmo :: 7; + vjmo :: 8; + tjmo :: 9; + rphf :: 10; + blwf :: 11; + half :: 12; + pstf :: 13; + abvf :: 14; + pref :: 15; + numr :: 16; + frac :: 17; + dnom :: 18; + cfar :: 19; + aalt :: 20; + abvm :: 21; + abvs :: 22; + afrc :: 23; + akhn :: 24; + apkn :: 25; + blwm :: 26; + blws :: 27; + calt :: 28; + case_ :: 29; + ccmp :: 30; + chws :: 31; + cjct :: 32; + clig :: 33; + cpct :: 34; + cpsp :: 35; + cswh :: 36; + curs :: 37; + cv01 :: 38; + cv02 :: 39; + cv03 :: 40; + cv04 :: 41; + cv05 :: 42; + cv06 :: 43; + cv07 :: 44; + cv08 :: 45; + cv09 :: 46; + cv10 :: 47; + cv11 :: 48; + cv12 :: 49; + cv13 :: 50; + cv14 :: 51; + cv15 :: 52; + cv16 :: 53; + cv17 :: 54; + cv18 :: 55; + cv19 :: 56; + cv20 :: 57; + cv21 :: 58; + cv22 :: 59; + cv23 :: 60; + cv24 :: 61; + cv25 :: 62; + cv26 :: 63; + cv27 :: 64; + cv28 :: 65; + cv29 :: 66; + cv30 :: 67; + cv31 :: 68; + cv32 :: 69; + cv33 :: 70; + cv34 :: 71; + cv35 :: 72; + cv36 :: 73; + cv37 :: 74; + cv38 :: 75; + cv39 :: 76; + cv40 :: 77; + cv41 :: 78; + cv42 :: 79; + cv43 :: 80; + cv44 :: 81; + cv45 :: 82; + cv46 :: 83; + cv47 :: 84; + cv48 :: 85; + cv49 :: 86; + cv50 :: 87; + cv51 :: 88; + cv52 :: 89; + cv53 :: 90; + cv54 :: 91; + cv55 :: 92; + cv56 :: 93; + cv57 :: 94; + cv58 :: 95; + cv59 :: 96; + cv60 :: 97; + cv61 :: 98; + cv62 :: 99; + cv63 :: 100; + cv64 :: 101; + cv65 :: 102; + cv66 :: 103; + cv67 :: 104; + cv68 :: 105; + cv69 :: 106; + cv70 :: 107; + cv71 :: 108; + cv72 :: 109; + cv73 :: 110; + cv74 :: 111; + cv75 :: 112; + cv76 :: 113; + cv77 :: 114; + cv78 :: 115; + cv79 :: 116; + cv80 :: 117; + cv81 :: 118; + cv82 :: 119; + cv83 :: 120; + cv84 :: 121; + cv85 :: 122; + cv86 :: 123; + cv87 :: 124; + cv88 :: 125; + cv89 :: 126; + cv90 :: 127; + cv91 :: 128; + cv92 :: 129; + cv93 :: 130; + cv94 :: 131; + cv95 :: 132; + cv96 :: 133; + cv97 :: 134; + cv98 :: 135; + cv99 :: 136; + c2pc :: 137; + c2sc :: 138; + dist :: 139; + dlig :: 140; + dtls :: 141; + expt :: 142; + falt :: 143; + flac :: 144; + fwid :: 145; + haln :: 146; + halt :: 147; + hist :: 148; + hkna :: 149; + hlig :: 150; + hngl :: 151; + hojo :: 152; + hwid :: 153; + ital :: 154; + jalt :: 155; + jp78 :: 156; + jp83 :: 157; + jp90 :: 158; + jp04 :: 159; + kern :: 160; + lfbd :: 161; + liga :: 162; + lnum :: 163; + locl :: 164; + ltra :: 165; + ltrm :: 166; + mark :: 167; + mgrk :: 168; + mkmk :: 169; + mset :: 170; + nalt :: 171; + nlck :: 172; + nukt :: 173; + onum :: 174; + opbd :: 175; + ordn :: 176; + ornm :: 177; + palt :: 178; + pcap :: 179; + pkna :: 180; + pnum :: 181; + pres :: 182; + psts :: 183; + pwid :: 184; + qwid :: 185; + rand :: 186; + rclt :: 187; + rkrf :: 188; + rlig :: 189; + rtbd :: 190; + rtla :: 191; + rtlm :: 192; + ruby :: 193; + rvrn :: 194; + salt :: 195; + sinf :: 196; + size :: 197; + smcp :: 198; + smpl :: 199; + ss01 :: 200; + ss02 :: 201; + ss03 :: 202; + ss04 :: 203; + ss05 :: 204; + ss06 :: 205; + ss07 :: 206; + ss08 :: 207; + ss09 :: 208; + ss10 :: 209; + ss11 :: 210; + ss12 :: 211; + ss13 :: 212; + ss14 :: 213; + ss15 :: 214; + ss16 :: 215; + ss17 :: 216; + ss18 :: 217; + ss19 :: 218; + ss20 :: 219; + ssty :: 220; + stch :: 221; + subs :: 222; + sups :: 223; + swsh :: 224; + test :: 225; + titl :: 226; + tnam :: 227; + tnum :: 228; + trad :: 229; + twid :: 230; + unic :: 231; + valt :: 232; + vapk :: 233; + vatu :: 234; + vchw :: 235; + vert :: 236; + vhal :: 237; + vkna :: 238; + vkrn :: 239; + vpal :: 240; + vrt2 :: 241; + vrtr :: 242; + zero :: 243; + COUNT :: 244; + + KBTS_FEATURE_ID_isol :: isol; + KBTS_FEATURE_ID_fina :: fina; + KBTS_FEATURE_ID_fin2 :: fin2; + KBTS_FEATURE_ID_fin3 :: fin3; + KBTS_FEATURE_ID_medi :: medi; + KBTS_FEATURE_ID_med2 :: med2; + KBTS_FEATURE_ID_init :: init; + KBTS_FEATURE_ID_ljmo :: ljmo; + KBTS_FEATURE_ID_vjmo :: vjmo; + KBTS_FEATURE_ID_tjmo :: tjmo; + KBTS_FEATURE_ID_rphf :: rphf; + KBTS_FEATURE_ID_blwf :: blwf; + KBTS_FEATURE_ID_half :: half; + KBTS_FEATURE_ID_pstf :: pstf; + KBTS_FEATURE_ID_abvf :: abvf; + KBTS_FEATURE_ID_pref :: pref; + KBTS_FEATURE_ID_numr :: numr; + KBTS_FEATURE_ID_frac :: frac; + KBTS_FEATURE_ID_dnom :: dnom; + KBTS_FEATURE_ID_cfar :: cfar; + KBTS_FEATURE_ID_aalt :: aalt; + KBTS_FEATURE_ID_abvm :: abvm; + KBTS_FEATURE_ID_abvs :: abvs; + KBTS_FEATURE_ID_afrc :: afrc; + KBTS_FEATURE_ID_akhn :: akhn; + KBTS_FEATURE_ID_apkn :: apkn; + KBTS_FEATURE_ID_blwm :: blwm; + KBTS_FEATURE_ID_blws :: blws; + KBTS_FEATURE_ID_calt :: calt; + KBTS_FEATURE_ID_case :: case_; + KBTS_FEATURE_ID_ccmp :: ccmp; + KBTS_FEATURE_ID_chws :: chws; + KBTS_FEATURE_ID_cjct :: cjct; + KBTS_FEATURE_ID_clig :: clig; + KBTS_FEATURE_ID_cpct :: cpct; + KBTS_FEATURE_ID_cpsp :: cpsp; + KBTS_FEATURE_ID_cswh :: cswh; + KBTS_FEATURE_ID_curs :: curs; + KBTS_FEATURE_ID_cv01 :: cv01; + KBTS_FEATURE_ID_cv02 :: cv02; + KBTS_FEATURE_ID_cv03 :: cv03; + KBTS_FEATURE_ID_cv04 :: cv04; + KBTS_FEATURE_ID_cv05 :: cv05; + KBTS_FEATURE_ID_cv06 :: cv06; + KBTS_FEATURE_ID_cv07 :: cv07; + KBTS_FEATURE_ID_cv08 :: cv08; + KBTS_FEATURE_ID_cv09 :: cv09; + KBTS_FEATURE_ID_cv10 :: cv10; + KBTS_FEATURE_ID_cv11 :: cv11; + KBTS_FEATURE_ID_cv12 :: cv12; + KBTS_FEATURE_ID_cv13 :: cv13; + KBTS_FEATURE_ID_cv14 :: cv14; + KBTS_FEATURE_ID_cv15 :: cv15; + KBTS_FEATURE_ID_cv16 :: cv16; + KBTS_FEATURE_ID_cv17 :: cv17; + KBTS_FEATURE_ID_cv18 :: cv18; + KBTS_FEATURE_ID_cv19 :: cv19; + KBTS_FEATURE_ID_cv20 :: cv20; + KBTS_FEATURE_ID_cv21 :: cv21; + KBTS_FEATURE_ID_cv22 :: cv22; + KBTS_FEATURE_ID_cv23 :: cv23; + KBTS_FEATURE_ID_cv24 :: cv24; + KBTS_FEATURE_ID_cv25 :: cv25; + KBTS_FEATURE_ID_cv26 :: cv26; + KBTS_FEATURE_ID_cv27 :: cv27; + KBTS_FEATURE_ID_cv28 :: cv28; + KBTS_FEATURE_ID_cv29 :: cv29; + KBTS_FEATURE_ID_cv30 :: cv30; + KBTS_FEATURE_ID_cv31 :: cv31; + KBTS_FEATURE_ID_cv32 :: cv32; + KBTS_FEATURE_ID_cv33 :: cv33; + KBTS_FEATURE_ID_cv34 :: cv34; + KBTS_FEATURE_ID_cv35 :: cv35; + KBTS_FEATURE_ID_cv36 :: cv36; + KBTS_FEATURE_ID_cv37 :: cv37; + KBTS_FEATURE_ID_cv38 :: cv38; + KBTS_FEATURE_ID_cv39 :: cv39; + KBTS_FEATURE_ID_cv40 :: cv40; + KBTS_FEATURE_ID_cv41 :: cv41; + KBTS_FEATURE_ID_cv42 :: cv42; + KBTS_FEATURE_ID_cv43 :: cv43; + KBTS_FEATURE_ID_cv44 :: cv44; + KBTS_FEATURE_ID_cv45 :: cv45; + KBTS_FEATURE_ID_cv46 :: cv46; + KBTS_FEATURE_ID_cv47 :: cv47; + KBTS_FEATURE_ID_cv48 :: cv48; + KBTS_FEATURE_ID_cv49 :: cv49; + KBTS_FEATURE_ID_cv50 :: cv50; + KBTS_FEATURE_ID_cv51 :: cv51; + KBTS_FEATURE_ID_cv52 :: cv52; + KBTS_FEATURE_ID_cv53 :: cv53; + KBTS_FEATURE_ID_cv54 :: cv54; + KBTS_FEATURE_ID_cv55 :: cv55; + KBTS_FEATURE_ID_cv56 :: cv56; + KBTS_FEATURE_ID_cv57 :: cv57; + KBTS_FEATURE_ID_cv58 :: cv58; + KBTS_FEATURE_ID_cv59 :: cv59; + KBTS_FEATURE_ID_cv60 :: cv60; + KBTS_FEATURE_ID_cv61 :: cv61; + KBTS_FEATURE_ID_cv62 :: cv62; + KBTS_FEATURE_ID_cv63 :: cv63; + KBTS_FEATURE_ID_cv64 :: cv64; + KBTS_FEATURE_ID_cv65 :: cv65; + KBTS_FEATURE_ID_cv66 :: cv66; + KBTS_FEATURE_ID_cv67 :: cv67; + KBTS_FEATURE_ID_cv68 :: cv68; + KBTS_FEATURE_ID_cv69 :: cv69; + KBTS_FEATURE_ID_cv70 :: cv70; + KBTS_FEATURE_ID_cv71 :: cv71; + KBTS_FEATURE_ID_cv72 :: cv72; + KBTS_FEATURE_ID_cv73 :: cv73; + KBTS_FEATURE_ID_cv74 :: cv74; + KBTS_FEATURE_ID_cv75 :: cv75; + KBTS_FEATURE_ID_cv76 :: cv76; + KBTS_FEATURE_ID_cv77 :: cv77; + KBTS_FEATURE_ID_cv78 :: cv78; + KBTS_FEATURE_ID_cv79 :: cv79; + KBTS_FEATURE_ID_cv80 :: cv80; + KBTS_FEATURE_ID_cv81 :: cv81; + KBTS_FEATURE_ID_cv82 :: cv82; + KBTS_FEATURE_ID_cv83 :: cv83; + KBTS_FEATURE_ID_cv84 :: cv84; + KBTS_FEATURE_ID_cv85 :: cv85; + KBTS_FEATURE_ID_cv86 :: cv86; + KBTS_FEATURE_ID_cv87 :: cv87; + KBTS_FEATURE_ID_cv88 :: cv88; + KBTS_FEATURE_ID_cv89 :: cv89; + KBTS_FEATURE_ID_cv90 :: cv90; + KBTS_FEATURE_ID_cv91 :: cv91; + KBTS_FEATURE_ID_cv92 :: cv92; + KBTS_FEATURE_ID_cv93 :: cv93; + KBTS_FEATURE_ID_cv94 :: cv94; + KBTS_FEATURE_ID_cv95 :: cv95; + KBTS_FEATURE_ID_cv96 :: cv96; + KBTS_FEATURE_ID_cv97 :: cv97; + KBTS_FEATURE_ID_cv98 :: cv98; + KBTS_FEATURE_ID_cv99 :: cv99; + KBTS_FEATURE_ID_c2pc :: c2pc; + KBTS_FEATURE_ID_c2sc :: c2sc; + KBTS_FEATURE_ID_dist :: dist; + KBTS_FEATURE_ID_dlig :: dlig; + KBTS_FEATURE_ID_dtls :: dtls; + KBTS_FEATURE_ID_expt :: expt; + KBTS_FEATURE_ID_falt :: falt; + KBTS_FEATURE_ID_flac :: flac; + KBTS_FEATURE_ID_fwid :: fwid; + KBTS_FEATURE_ID_haln :: haln; + KBTS_FEATURE_ID_halt :: halt; + KBTS_FEATURE_ID_hist :: hist; + KBTS_FEATURE_ID_hkna :: hkna; + KBTS_FEATURE_ID_hlig :: hlig; + KBTS_FEATURE_ID_hngl :: hngl; + KBTS_FEATURE_ID_hojo :: hojo; + KBTS_FEATURE_ID_hwid :: hwid; + KBTS_FEATURE_ID_ital :: ital; + KBTS_FEATURE_ID_jalt :: jalt; + KBTS_FEATURE_ID_jp78 :: jp78; + KBTS_FEATURE_ID_jp83 :: jp83; + KBTS_FEATURE_ID_jp90 :: jp90; + KBTS_FEATURE_ID_jp04 :: jp04; + KBTS_FEATURE_ID_kern :: kern; + KBTS_FEATURE_ID_lfbd :: lfbd; + KBTS_FEATURE_ID_liga :: liga; + KBTS_FEATURE_ID_lnum :: lnum; + KBTS_FEATURE_ID_locl :: locl; + KBTS_FEATURE_ID_ltra :: ltra; + KBTS_FEATURE_ID_ltrm :: ltrm; + KBTS_FEATURE_ID_mark :: mark; + KBTS_FEATURE_ID_mgrk :: mgrk; + KBTS_FEATURE_ID_mkmk :: mkmk; + KBTS_FEATURE_ID_mset :: mset; + KBTS_FEATURE_ID_nalt :: nalt; + KBTS_FEATURE_ID_nlck :: nlck; + KBTS_FEATURE_ID_nukt :: nukt; + KBTS_FEATURE_ID_onum :: onum; + KBTS_FEATURE_ID_opbd :: opbd; + KBTS_FEATURE_ID_ordn :: ordn; + KBTS_FEATURE_ID_ornm :: ornm; + KBTS_FEATURE_ID_palt :: palt; + KBTS_FEATURE_ID_pcap :: pcap; + KBTS_FEATURE_ID_pkna :: pkna; + KBTS_FEATURE_ID_pnum :: pnum; + KBTS_FEATURE_ID_pres :: pres; + KBTS_FEATURE_ID_psts :: psts; + KBTS_FEATURE_ID_pwid :: pwid; + KBTS_FEATURE_ID_qwid :: qwid; + KBTS_FEATURE_ID_rand :: rand; + KBTS_FEATURE_ID_rclt :: rclt; + KBTS_FEATURE_ID_rkrf :: rkrf; + KBTS_FEATURE_ID_rlig :: rlig; + KBTS_FEATURE_ID_rtbd :: rtbd; + KBTS_FEATURE_ID_rtla :: rtla; + KBTS_FEATURE_ID_rtlm :: rtlm; + KBTS_FEATURE_ID_ruby :: ruby; + KBTS_FEATURE_ID_rvrn :: rvrn; + KBTS_FEATURE_ID_salt :: salt; + KBTS_FEATURE_ID_sinf :: sinf; + KBTS_FEATURE_ID_size :: size; + KBTS_FEATURE_ID_smcp :: smcp; + KBTS_FEATURE_ID_smpl :: smpl; + KBTS_FEATURE_ID_ss01 :: ss01; + KBTS_FEATURE_ID_ss02 :: ss02; + KBTS_FEATURE_ID_ss03 :: ss03; + KBTS_FEATURE_ID_ss04 :: ss04; + KBTS_FEATURE_ID_ss05 :: ss05; + KBTS_FEATURE_ID_ss06 :: ss06; + KBTS_FEATURE_ID_ss07 :: ss07; + KBTS_FEATURE_ID_ss08 :: ss08; + KBTS_FEATURE_ID_ss09 :: ss09; + KBTS_FEATURE_ID_ss10 :: ss10; + KBTS_FEATURE_ID_ss11 :: ss11; + KBTS_FEATURE_ID_ss12 :: ss12; + KBTS_FEATURE_ID_ss13 :: ss13; + KBTS_FEATURE_ID_ss14 :: ss14; + KBTS_FEATURE_ID_ss15 :: ss15; + KBTS_FEATURE_ID_ss16 :: ss16; + KBTS_FEATURE_ID_ss17 :: ss17; + KBTS_FEATURE_ID_ss18 :: ss18; + KBTS_FEATURE_ID_ss19 :: ss19; + KBTS_FEATURE_ID_ss20 :: ss20; + KBTS_FEATURE_ID_ssty :: ssty; + KBTS_FEATURE_ID_stch :: stch; + KBTS_FEATURE_ID_subs :: subs; + KBTS_FEATURE_ID_sups :: sups; + KBTS_FEATURE_ID_swsh :: swsh; + KBTS_FEATURE_ID_test :: test; + KBTS_FEATURE_ID_titl :: titl; + KBTS_FEATURE_ID_tnam :: tnam; + KBTS_FEATURE_ID_tnum :: tnum; + KBTS_FEATURE_ID_trad :: trad; + KBTS_FEATURE_ID_twid :: twid; + KBTS_FEATURE_ID_unic :: unic; + KBTS_FEATURE_ID_valt :: valt; + KBTS_FEATURE_ID_vapk :: vapk; + KBTS_FEATURE_ID_vatu :: vatu; + KBTS_FEATURE_ID_vchw :: vchw; + KBTS_FEATURE_ID_vert :: vert; + KBTS_FEATURE_ID_vhal :: vhal; + KBTS_FEATURE_ID_vkna :: vkna; + KBTS_FEATURE_ID_vkrn :: vkrn; + KBTS_FEATURE_ID_vpal :: vpal; + KBTS_FEATURE_ID_vrt2 :: vrt2; + KBTS_FEATURE_ID_vrtr :: vrtr; + KBTS_FEATURE_ID_zero :: zero; + KBTS_FEATURE_ID_COUNT :: COUNT; +} + +kbts_shaping_table :: enum u8 { + GSUB :: 0; + GPOS :: 1; + COUNT :: 2; + + KBTS_SHAPING_TABLE_GSUB :: GSUB; + KBTS_SHAPING_TABLE_GPOS :: GPOS; + KBTS_SHAPING_TABLE_COUNT :: COUNT; +} + +kbts_lookup_info :: struct { + MaximumBacktrackWithoutSkippingGlyphs: u32; + MaximumLookaheadWithoutSkippingGlyphs: u32; + MaximumSubstitutionOutputSize: u32; + MaximumInputSequenceLength: u32; + MaximumLookupStackSize: u32; +} + +kbts_gdef :: struct {} +kbts_cmap_14 :: struct {} +kbts_gsub_gpos :: struct {} +kbts_maxp :: struct {} +kbts_hea :: struct {} +kbts_iterate_features :: struct {} + +kbts_shaper_properties :: struct {} +kbts_feature :: struct {} +kbts_head :: struct {} + +kbts_lookup_subtable_info :: struct { + MinimumBacktrackPlusOne: u32; + MinimumFollowupPlusOne: u32; +} + +kbts_font :: struct { + FileBase: *u8; + Head: *kbts_head; + Cmap: *u16; + Gdef: *kbts_gdef; + Cmap14: *kbts_cmap_14; + ShapingTables: [2] *kbts_gsub_gpos; + Fvar: *void; + Maxp: *kbts_maxp; + + Hea: [2] *kbts_hea; + Mtx: [2] *u16; + + LookupInfo: kbts_lookup_info; + + GlyphCount: u32; + LookupCount: u32; + SubtableCount: u32; + + GlyphLookupMatrix: *u32; + GlyphLookupSubtableMatrix: *u32; + LookupSubtableIndexOffsets: *u32; + SubtableInfos: *kbts_lookup_subtable_info; + GposLookupIndexOffset: u32; + + Error: s32; +} + +kbts_glyph_classes :: struct { + Class: u16; + MarkAttachmentClass: u16; +} + +kbts_feature_set :: struct { + Flags: [4] u64; +} + +kbts_feature_override :: struct { + Id: kbts_feature_id; + EnabledOrAlternatePlusOne: u32; +} + +kbts_glyph_config :: struct { + EnabledFeatures: kbts_feature_set; + DisabledFeatures: kbts_feature_set; + FeatureOverrideCount: u32; + FeatureOverrides: *kbts_feature_override; +} + +kbts_glyph :: struct { + Codepoint: u32; + Id: u16; + Uid: u16; + Classes: kbts_glyph_classes; + + Decomposition: u64; + + Config: *kbts_glyph_config; + + Flags: kbts_glyph_flags; + + OffsetX: s32; + OffsetY: s32; + AdvanceX: s32; + AdvanceY: s32; + + ParentInfo: u32; + + LigatureUid: u16; + LigatureComponentIndexPlusOne: u16; + + AttachGlyphIndexPlusOne: u16; + + JoiningFeature: kbts_joining_feature; + + JoiningType: kbts_unicode_joining_type; + Script: u8; + UnicodeFlags: u8; + SyllabicClass: u8; + SyllabicPosition: u8; + UseClass: u8; + CombiningClass: u8; + + MarkOrdering: u8; +} + +kbts_glyph_array :: struct { + Glyphs: *kbts_glyph; + Count: u32; + TotalCount: u32; + Capacity: u32; + RequiredCapacity: u32; +} + +kbts_op_state_normalize :: struct { + CodepointsToDecomposeCount: u64; + AboveBaseGlyphCount: u64; +} + +kbts_op_state_gsub :: struct { + LookupFeatures: kbts_feature_set; + LookupIndex: u64; + GlyphFilter: u32; + SkipFlags: u32; +} + +kbts_op_state_normalize_hangul :: struct { + LvtGlyphs: [4] kbts_glyph; + LvtGlyphCount: u64; +} + +kbts_op_state_op_specific :: union { + Normalize: kbts_op_state_normalize; + Gsub: kbts_op_state_gsub; + NormalizeHangul: kbts_op_state_normalize_hangul; +} + +kbts_lookup_indices :: struct { + FeatureId: u32; + SkipFlags: u32; + GlyphFilter: u32; + Count: u32; + Indices: *u16; +} + +kbts_op :: struct { + Kind: kbts_op_kind; + Features: kbts_feature_set; +} + +kbts_op_state :: struct { + WrittenCount: u64; + GlyphIndex: u64; + FrameCount: u32; + ResumePoint: u32; + + FeatureCount: u32; + FeatureLookupIndices: [16] kbts_lookup_indices; + + OpSpecific: kbts_op_state_op_specific; +} + +kbts_op_list :: struct { + Ops: *u8; + Length: u64; +} + +kbts_indic_script_properties :: struct { + ViramaCodepoint: u32; + BlwfPostOnly: u8; + RephPosition: kbts_reph_position; + RephEncoding: kbts_reph_encoding; + RightSideMatraPosition: kbts_syllabic_position; + AboveBaseMatraPosition: kbts_syllabic_position; + BelowBaseMatraPosition: kbts_syllabic_position; +} + +kbts_langsys :: struct {} +kbts_shape_config :: struct { + Font: *kbts_font; + Script: kbts_script; + Language: kbts_language; + Langsys: [2] *kbts_langsys; + OpLists: [4] kbts_op_list; + + Features: *kbts_feature_set; + + Shaper: kbts_shaper; + ShaperProperties: *kbts_shaper_properties; + + IndicScriptProperties: kbts_indic_script_properties; + Blwf: *kbts_feature; + Pref: *kbts_feature; + Pstf: *kbts_feature; + Locl: *kbts_feature; + Rphf: *kbts_feature; + Half: *kbts_feature; + Vatu: *kbts_feature; + + Virama: kbts_glyph; + + DottedCircle: kbts_glyph; + Whitespace: kbts_glyph; + + Nikhahit: kbts_glyph; + SaraAa: kbts_glyph; +} + +kbts_shape_state :: struct { + Op: kbts_op; + Config: *kbts_shape_config; + MainDirection: kbts_direction; + RunDirection: kbts_direction; + + UserFeatures: kbts_feature_set; + + GlyphArray: kbts_glyph_array; + ClusterGlyphArray: kbts_glyph_array; + + DottedCircleInsertIndex: u32; + + GlyphCountStartingFromCurrentCluster: u32; + + At: u32; + ResumePoint: u32; + OpGlyphOffset: u32; + ClusterGlyphCount: u32; + Ip: u32; + NextGlyphUid: u32; + + RequiredGlyphCapacity: u32; + + RealCluster: s32; + ClusterAtStartOfWord: s32; + WordBreak: s32; + + OpState: kbts_op_state; +} + +kbts_cursor :: struct { + Direction: kbts_direction; + LastAdvanceX: s32; + X: s32; + Y: s32; +} + +kbts_break :: struct { + Position: u32; + Flags: kbts_break_flags; + Direction: kbts_direction; + Script: kbts_script; +} + +kbts_bracket :: struct { + Codepoint: u32; + Direction: u8; + Script: u8; +} + +kbts_break_state_flags :: enum u32 { + STARTED :: 1; + END :: 2; + RAN_OUT_OF_REORDER_BUFFER_SPACE :: 4; + + SAW_R_AFTER_L :: 8; + SAW_AL_AFTER_LR :: 16; + LAST_WAS_BRACKET :: 32; + + KBTS_BREAK_STATE_FLAG_STARTED :: STARTED; + KBTS_BREAK_STATE_FLAG_END :: END; + KBTS_BREAK_STATE_FLAG_RAN_OUT_OF_REORDER_BUFFER_SPACE :: RAN_OUT_OF_REORDER_BUFFER_SPACE; + + KBTS_BREAK_STATE_FLAG_SAW_R_AFTER_L :: SAW_R_AFTER_L; + KBTS_BREAK_STATE_FLAG_SAW_AL_AFTER_LR :: SAW_AL_AFTER_LR; + KBTS_BREAK_STATE_FLAG_LAST_WAS_BRACKET :: LAST_WAS_BRACKET; +} + +kbts_break_state :: struct { + Breaks: [8] kbts_break; + BreakCount: u32; + MainDirection: kbts_direction; + + LastFlushedBreakPosition: u32; + CurrentPosition: u32; + + LastScripts: [2] u8; + + Brackets: [64] kbts_bracket; + BracketCount: u32; + Flags: kbts_break_state_flags; + + FlagState: u32; + PositionOffset2: s16; + PositionOffset3: s16; + + WordBreakHistory: u32; + WordBreaks: u16; + WordUnbreaks: u16; + WordBreak2PositionOffset: s16; + + LineBreaks: u64; + + LineUnbreaksAsync: u64; + LineUnbreaks: u64; + LineBreakHistory: u32; + LineBreak2PositionOffset: s16; + LineBreak3PositionOffset: s16; + + LastDirection: u8; + BidirectionalClass2: u8; + BidirectionalClass1: u8; + + JapaneseLineBreakStyle: kbts_japanese_line_break_style; + GraphemeBreakState: u8; + LastLineBreakClass: u8; + LastWordBreakClass: u8; + LastWordBreakClassIncludingIgnored: u8; +} + +kbts_decode :: struct { + Codepoint: u32; + + SourceCharactersConsumed: u32; + Valid: u32; +} + +kbts_FeatureOverride :: (Id: kbts_feature_id, Alternate: s32, Value: u32) -> kbts_feature_override #foreign kb_text_shape; +kbts_GlyphConfig :: (FeatureOverrides: *kbts_feature_override, FeatureOverrideCount: u32) -> kbts_glyph_config #foreign kb_text_shape; +kbts_FontFromFile :: (FileName: *u8) -> kbts_font #foreign kb_text_shape; +kbts_FreeFont :: (Font: *kbts_font) -> void #foreign kb_text_shape; +kbts_CreateShapeState :: (Font: *kbts_font) -> *kbts_shape_state #foreign kb_text_shape; +kbts_FreeShapeState :: (State: *kbts_shape_state) -> void #foreign kb_text_shape; + +kbts_FontIsValid :: (Font: *kbts_font) -> s32 #foreign kb_text_shape; +kbts_ReadFontHeader :: (Font: *kbts_font, Data: *void, Size: u64) -> u64 #foreign kb_text_shape; +kbts_ReadFontData :: (Font: *kbts_font, Scratch: *void, ScratchSize: u64) -> u64 #foreign kb_text_shape; +kbts_PostReadFontInitialize :: (Font: *kbts_font, Memory: *void, MemorySize: u64) -> s32 #foreign kb_text_shape; +kbts_SizeOfShapeState :: (Font: *kbts_font) -> u64 #foreign kb_text_shape; +kbts_PlaceShapeState :: (Address: *void, Size: u64) -> *kbts_shape_state #foreign kb_text_shape; +kbts_ResetShapeState :: (State: *kbts_shape_state) -> void #foreign kb_text_shape; +kbts_ShapeConfig :: (Font: *kbts_font, Script: kbts_script, Language: kbts_language) -> kbts_shape_config #foreign kb_text_shape; +kbts_ShaperIsComplex :: (Shaper: kbts_shaper) -> s32 #foreign kb_text_shape; +kbts_Shape :: (State: *kbts_shape_state, Config: *kbts_shape_config, MainDirection: kbts_direction, RunDirection: kbts_direction, Glyphs: *kbts_glyph, GlyphCount: *u32, GlyphCapacity: u32) -> s32 #foreign kb_text_shape; +kbts_Cursor :: (Direction: kbts_direction) -> kbts_cursor #foreign kb_text_shape; +kbts_PositionGlyph :: (Cursor: *kbts_cursor, Glyph: *kbts_glyph, X: *s32, Y: *s32) -> void #foreign kb_text_shape; +kbts_BeginBreak :: (State: *kbts_break_state, MainDirection: kbts_direction, JapaneseLineBreakStyle: kbts_japanese_line_break_style) -> void #foreign kb_text_shape; +kbts_BreakStateIsValid :: (State: *kbts_break_state) -> s32 #foreign kb_text_shape; +kbts_BreakAddCodepoint :: (State: *kbts_break_state, Codepoint: u32, PositionIncrement: u32, EndOfText: s32) -> void #foreign kb_text_shape; +kbts_BreakFlush :: (State: *kbts_break_state) -> void #foreign kb_text_shape; +kbts_Break :: (State: *kbts_break_state, Break: *kbts_break) -> s32 #foreign kb_text_shape; +kbts_DecodeUtf8 :: (Utf8: *u8, Length: u64) -> kbts_decode #foreign kb_text_shape; +kbts_CodepointToGlyph :: (Font: *kbts_font, Codepoint: u32) -> kbts_glyph #foreign kb_text_shape; +kbts_InferScript :: (Direction: *kbts_direction, Script: *kbts_script, GlyphScript: kbts_script) -> void #foreign kb_text_shape; +kbts_ScriptIsComplex :: (Script: kbts_script) -> s32 #foreign kb_text_shape; + +#scope_file + + +#if OS == .WINDOWS { + kb_text_shape :: #library "windows/kb_text_shape"; +} else #if OS == .LINUX { + kb_text_shape :: #library "linux/kb_text_shape"; +} else #if OS == .MACOS { + kb_text_shape :: #library "macos/kb_text_shape"; +} else #if OS == .ANDROID { + #if CPU == .X64 { + kb_text_shape :: #library "android/x64/kb_text_shape"; + } else #if CPU == .ARM64 { + kb_text_shape :: #library "android/arm64/kb_text_shape"; + } +} else #if OS == .PS5 { + kb_text_shape :: #library "ps5/kb_text_shape"; +} else { + #assert false; +} + diff --git a/modules/kb_text_shape/macos/kb_text_shape.a b/modules/kb_text_shape/macos/kb_text_shape.a new file mode 100644 index 0000000000000000000000000000000000000000..f41352477dfd50b93f0bae717bcdc9de451e6c5a GIT binary patch literal 1048600 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 ^{e_ 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

RYVH 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

@0%44V08ySbV< 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 F{y*6Dl%D_q literal 0 HcmV?d00001 diff --git a/modules/kb_text_shape/macos/kb_text_shape.dylib b/modules/kb_text_shape/macos/kb_text_shape.dylib new file mode 100755 index 0000000000000000000000000000000000000000..ddd36de7ef16c32b8afdc4b567d1cc2ec8508281 GIT binary patch literal 689072 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 nR + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.kb_text_shape.dylib + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/modules/kb_text_shape/macos/kb_text_shape.dylib.dSYM/Contents/Resources/DWARF/kb_text_shape.dylib b/modules/kb_text_shape/macos/kb_text_shape.dylib.dSYM/Contents/Resources/DWARF/kb_text_shape.dylib new file mode 100644 index 0000000000000000000000000000000000000000..8440be2005cf48fc01c4d839bd3d22f2e293623f GIT binary patch literal 364463 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

S1|9)fU~k|?;47f0lxq} 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

g?tL7^Y13)EZV^DybwKOwOGIr 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 ^jgl@ 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 F{}0ihl&Js! literal 0 HcmV?d00001 diff --git a/modules/kb_text_shape/macos/kb_text_shape_arm64.dylib b/modules/kb_text_shape/macos/kb_text_shape_arm64.dylib new file mode 100755 index 0000000000000000000000000000000000000000..755aa25e611e9983fd0bd8f34f7d24562dab728d GIT binary patch literal 689080 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%0A9PS=^(T0UQ*>2s;?pXZ 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 + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.kb_text_shape_arm64.dylib + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/modules/kb_text_shape/macos/kb_text_shape_arm64.dylib.dSYM/Contents/Resources/DWARF/kb_text_shape_arm64.dylib b/modules/kb_text_shape/macos/kb_text_shape_arm64.dylib.dSYM/Contents/Resources/DWARF/kb_text_shape_arm64.dylib new file mode 100644 index 0000000000000000000000000000000000000000..7dfcd61b15a7662de7a4e1f3ad4d421d9bac01a3 GIT binary patch literal 364463 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%0AW2Y}y{ z0RHl99&Kdx{ubw3p^q|`iD%YH;J1>$GMn8`u$)HIzQ>VIB;J%QM=J%nY;RozDu0#G zTqBv51Ci=j8E(&R6<7Nc?L)0!GX z>TjUx1Cji3zOx)HI4x<)UgJC|C-6HS? znBTFYHu@2pfe2&(Xac#wYyjsH*aDy%0H+SX00P}k7{+h_a^eLZw&=Oh2Ol#dI}!&< z@tljyFm(b)u$E5DfyOU%;@Rxgkh9(f9?l!--fVwwOeRl2Mp_boPH=m7P#Haqua4&A zc4Y0#PKkwT!LJ|@|F0^hYk&uczpU_T;N6JtSNMy-<&>INvsY993*bE2&wM@m8Q{J= z!mmiV1-VJsiu?`R{78I53l7^I@R`{3Nz9KZSmJwBWQ>GK8KzOksGP`d9&e7D0n~^i5x+c6 z#|=L|=Fen~7AD$SR6M*s4llSL-8?mbE!>(FZW=ET|9Jp!q}B=G2Z;Y9xKC=yi2)~2 z;e20^{>uPXHoHpK&}tyowYX{gNan8tYRKHBndLxyW^XWlm(-+g@7ByLFwH*)@MxY| zIcvtP-Ix!9r@rRYYnsDuMB08eh`@UVwj(uZ`$qvt+s|oistNdH0bJTXe%KVQVfccNGX+%L_U&5DI1Pq%3mEO`V)LBwthd{M zcOia`IxO!!;QffV$XNvQ)~~>a5pS9E6=C#hr9~Jc_&(;&T% zz-<6(0XVw>d;}n_GioP(ObZHnWwK)`_Rn3^3*^8v%}k>|fW%hUg<%8xU$|OX$(Z*U z3ZnBhxEBJDD;R|Vg4L?IX-L(4U_crB!YhDFwf&c>#vcKfYW=9fhhfj;H_XKjRqdYz zF4cLvRA=8$#WjW2`5yQe!QVd*J)-JnC3I6(&iLzca3e} zFzIWW0q%a4MpPH1F&$|%Bk`>Pp;}%J2JoJN^4}G9*$Zpz2y4tfOn!fY64ny*uDl#`iAZQhVPY zz}oBUNZxw`I2!TwApF4qjt3H0H~hSnzdr!yR;fBMG)mP8XC{D9RXC~BZ^W2MRT#~x zfPShF`c`CX)5xabj|NC3cYsSJKcWhB1aPV3M+Ju-G*?0s)5NEYopd29hvyOo_tM;K zi1X(`%^Yb%!FnZGXB04vK{+zdw;MuoY<*r14;!+61U`oRfpWg3)%IM|m`*%jjK~AI zzpL=O2dco72l71tWZp0AJX7ZV)R~si2`b*B;V2U985jn(n(n(yPxsXsGTm3GCH;_e z$|0qv`wEeiwFbDXT@O_msUYzO5N~Jh3WR8%))wZ%f>qMSG%D%!aAB%7vk}smr9Y18 zsvL9ZSWynok<$HfxE!ga#~kPvDm+=RHo)vknw_B1T&tPvG<@8cYhIGW>LFKf2i-gX zl{%Kpy=p+RQl}gR8TaOTfA;-;pmsrb0{x;*Ib$u}y!^~gq5{tO-lXmG8~TGf z5P^3O?1Gx~2W{Hx{$LpZ8SyrO{??u)_gm3SA0PXXSOcxQ#L2cAhhpz!B_=MwL# z@Xvq`Bc7n}pwBc$5f3VSIPeL?yD7X9_*CN8X?@_ciC-_}ZUsA{RS};rxNJz;q5~jZ zTG0U9-NwsyBzu=;Ft)y1sdbT9#YQ~MVG~fCQqA!vtFW^HSl1%8<%Xq?+mvyL;gWOCqV>ZPr~9xS zyjUII#reKb;SZP>V(t%Lqd0;6fLY9~+Ygu}>L9R+kfuJW3$x&gGg^=Tyc5a#n6w6t zJNI1}Qft#i#iL;x@e&y1L2A_@&M0nImW}H;JFP}0&)vCh9v6mb{8P~3+Q2^DTXAiG zGw|-(04K)XP1rJt8NQ-U`<W-|}luXl@s}atQ zL$&J*7^ckC4X+oGWg1brG(>54h~`eRas`71LRq5iBO$RfSoC3;9(FZM(=J2e$DtIR zqM~XHd&cu0}g|YM+(QoYk}s{%$UM zwm)>*^Z@&kvmI=@Zc z(8mu+^7oS=$LYZ6mmtfZP}aD040v{H;E&2d3RXuyZlT1tD?A%`PvSciJ_⪙*SY# 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

w@PU3@ppciUDr>Vv0w0=DtjnCQ<>9dga9Y>%&x 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 F{{bdNU^4&! literal 0 HcmV?d00001 diff --git a/src/main.jai b/src/main.jai index 67be86b..655ef62 100644 --- a/src/main.jai +++ b/src/main.jai @@ -1,19 +1,42 @@ #import "Basic"; +#import "GL"; +#import "freetype-2.12.1"; +#import "Hash_Table"; +#import "Math"; +#import "File"; +#import "String"; + #import "SDL3"; -#import "k"; +#import "kb_text_shape"; #load "text.jai"; #load "ui.jai"; +#load "stb_textedit.jai"; +#load "math/colourspace.jai"; +#load "math/math.jai"; +#load "platform/input.jai"; +#load "platform/opengl.jai"; +#load "platform/shader.jai"; +#load "platform/texture.jai"; + +window_width :: 1280; +window_height :: 720; window : *SDL_Window; running : bool = true; +frame : u64; + main :: () { log("Hello, Sailor!"); SDL_Init(SDL_INIT_VIDEO); - window = SDL_CreateWindow("MExplorer", 100, 100, 0); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); + + window = SDL_CreateWindow("MExplorer", 100, 100, SDL_WINDOW_OPENGL); while (running) { event : SDL_Event; diff --git a/src/math/colourspace.jai b/src/math/colourspace.jai new file mode 100644 index 0000000..1966115 --- /dev/null +++ b/src/math/colourspace.jai @@ -0,0 +1,39 @@ +float_to_srgb :: (l: float) -> float { + if (l <= 0) { + return 0.0; + } else if (l < 0.0031308) { + return 12.92 * l; + } else if (l < 1) { + return 1.055 * pow(l, 0.41666) - 0.055; + } else { + return 1.0; + } +} + +linear_to_srgb :: (linear: Vector3) -> Vector3 { + return .{float_to_srgb(linear.x), float_to_srgb(linear.y), float_to_srgb(linear.z)}; +} + +linear_to_srgb :: (linear: Vector4) -> Vector4 { + return .{float_to_srgb(linear.x), float_to_srgb(linear.y), float_to_srgb(linear.z), linear.w}; +} + +srgb_to_linear :: (s: float) -> float { + if (s <= 0.04045) { + return s / 12.92; + } else { + return pow((s + 0.055) / 1.055, 2.4); + } +} + +srgb_to_linear :: (srgb: Vector3) -> Vector3 { + return .{srgb_to_linear(srgb.x), srgb_to_linear(srgb.y), srgb_to_linear(srgb.z)}; +} + +srgb_to_linear :: (srgb: Vector4) -> Vector4 { + return .{srgb_to_linear(srgb.x), srgb_to_linear(srgb.y), srgb_to_linear(srgb.z), srgb.w}; +} + +srgb_to_linear :: (srgb: [4]float) -> [4]float { + return .[srgb_to_linear(srgb[0]), srgb_to_linear(srgb[1]), srgb_to_linear(srgb[2]), srgb[3]]; +} diff --git a/src/math/math.jai b/src/math/math.jai new file mode 100644 index 0000000..a31d87b --- /dev/null +++ b/src/math/math.jai @@ -0,0 +1,101 @@ +v2 :: (x: float) -> Vector2 { + return .{x, x}; +} + +v2 :: (x: s64) -> Vector2 { + return .{xx x, xx x}; +} + +v3 :: (x: float, y: float, z: float) -> Vector3 { + return .{x, y, z}; +} + +v3 :: (x: float) -> Vector3 { + return .{x, x, x}; +} + +v3 :: (v: Vector2, a: float) -> Vector3 { + return .{v.x, v.y, a}; +} + +v4 :: (x: float, y: float, z: float, w: float) -> Vector4 { + return .{x, y, z, w}; +} + +v4 :: (v: Vector2) -> Vector4 { + return .{v.x, v.y, 0.0, 0.0}; +} + +v4 :: (v: Vector3, f: float) -> Vector4 { + return .{v.x, v.y, v.z, f}; +} + +v4 :: (x: float) -> Vector4 { + return .{x, x, x, x}; +} + +orthographic_gl :: (left: float, right: float, bottom: float, top: float, near: float, far: float) -> Matrix4 { + m : Matrix4; + + m._11 = 2.0 / (right - left); + m._14 = -(right + left) / (right - left); + + m._22 = 2.0 / (top - bottom); + m._24 = -(top + bottom) / (top - bottom); + + m._33 = -2.0 / (far - near); + m._34 = -(far + near) / (far - near); + + m._44 = 1.0; + + return m; +} + +vec2i :: struct { + x : s32; + y : s32; +} + +operator == :: (a: vec2i, b: vec2i) -> bool { + return a.x == b.x && a.y == b.y; +} + +operator + :: (a: vec2i, b: vec2i) -> vec2i { + return .{a.x + b.x, a.y + b.y}; +} + +operator - :: (a: vec2i, b: vec2i) -> vec2i { + return .{a.x - b.x, a.y - b.y}; +} + +box :: struct { + bottom_left : vec2i; + top_right : vec2i; +} + +whbox :: struct { + bottom_left : vec2i; + size : vec2i; +} + +box_to_whbox :: (b: box) -> whbox { + return whbox.{b.bottom_left, .{b.top_right.x - b.bottom_left.x, b.top_right.y - b.bottom_left.y}}; +} + +whbox_to_box :: (b: whbox) -> box { + return box.{b.bottom_left, .{b.bottom_left.x + b.size.x, b.bottom_left.y + b.size.y}}; +} + +operator == :: (a: box, b: box) -> bool { + return (a.bottom_left == b.bottom_left) && (a.top_right == b.top_right); +} + +intersect :: (a: box, b: box) -> box { + intersection := box.{.{max(a.bottom_left.x, b.bottom_left.x), max(a.bottom_left.y, b.bottom_left.y)}, + .{min(a.top_right.x, b.top_right.x), min(a.top_right.y, b.top_right.y)}}; + if intersection.bottom_left.x < intersection.top_right.x && intersection.bottom_left.y < intersection.top_right.y { + return intersection; + } else { + return .{}; + } +} diff --git a/src/platform/input.jai b/src/platform/input.jai new file mode 100644 index 0000000..5b8e908 --- /dev/null +++ b/src/platform/input.jai @@ -0,0 +1,19 @@ +InputTransition :: struct { + left_down : bool; + left_up : bool; + + right_down : bool; + right_up : bool; + + mouse_wheel : s64; + motion_delta : Vector2; +} + +InputState :: struct { + left_mouse : bool; + right_mouse : bool; + + last_char : u8; +} + +input_transitions : [..]InputTransition; diff --git a/src/platform/opengl.jai b/src/platform/opengl.jai new file mode 100644 index 0000000..16200c7 --- /dev/null +++ b/src/platform/opengl.jai @@ -0,0 +1,142 @@ +// OpenGLState :: struct { +// last_active_texture : GLenum; +// last_program : GLuint; +// last_texture : GLuint; +// last_array_buffer : GLuint; + +// #if !#exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) { +// // This is part of VAO on OpenGL 3.0+ and OpenGL ES 3.0+. +// last_element_array_buffer : GLint; +// } +// #if #exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) { +// last_vertex_array_object : GLuint; +// } + +// #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE) { +// last_polygon_mode : [2] GLint; +// } + +// last_viewport : [4] GLint; +// last_scissor_box : [4]GLint; +// last_blend_src_rgb : GLenum; +// last_blend_dst_rgb : GLenum; +// last_blend_src_alpha : GLenum; +// last_blend_dst_alpha : GLenum; +// last_blend_equation_rgb : GLenum; +// last_blend_equation_alpha : GLenum; + +// last_enable_blend : GLboolean; +// last_enable_cull_face : GLboolean; +// last_enable_depth_test : GLboolean; +// last_enable_stencil_test : GLboolean; +// last_enable_scissor_test : GLboolean; +// } + +// save_opengl_state :: (using state: *OpenGLState) { + +// glGetIntegerv(GL_ACTIVE_TEXTURE, cast(*GLint) *last_active_texture); +// glActiveTexture(GL_TEXTURE0); +// glGetIntegerv(GL_CURRENT_PROGRAM, cast(*GLint) *last_program); + +// glGetIntegerv(GL_TEXTURE_BINDING_2D, cast(*GLint) *last_texture); + +// // #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_BIND_SAMPLER) { +// // last_sampler : GLuint; +// // if bd.GlVersion >= 330 || bd.GlProfileIsES3 { +// // glGetIntegerv(GL_SAMPLER_BINDING, cast(*GLint) *last_sampler); +// // } else { +// // last_sampler = 0; +// // } +// // } + + +// glGetIntegerv(GL_ARRAY_BUFFER_BINDING, cast(*GLint) *last_array_buffer); + +// #if !#exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) { +// // This is part of VAO on OpenGL 3.0+ and OpenGL ES 3.0+. +// glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, *last_element_array_buffer); + +// GetState(*last_vtx_attrib_state_pos, xx bd.AttribLocationVtxPos); +// GetState(*last_vtx_attrib_state_uv, xx bd.AttribLocationVtxUV); +// GetState(*last_vtx_attrib_state_colour, xx bd.AttribLocationVtxColor); +// } +// #if #exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) { +// glGetIntegerv(GL_VERTEX_ARRAY_BINDING, cast(*GLint) *last_vertex_array_object); +// } + +// #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE) { +// if (bd.HasPolygonMode) { +// glGetIntegerv(GL_POLYGON_MODE, last_polygon_mode.data); +// } +// } + +// glGetIntegerv(GL_VIEWPORT, last_viewport.data); +// glGetIntegerv(GL_SCISSOR_BOX, last_scissor_box.data); +// glGetIntegerv(GL_BLEND_SRC_RGB, cast(*GLint) *last_blend_src_rgb); +// glGetIntegerv(GL_BLEND_DST_RGB, cast(*GLint) *last_blend_dst_rgb); +// glGetIntegerv(GL_BLEND_SRC_ALPHA, cast(*GLint) *last_blend_src_alpha); +// glGetIntegerv(GL_BLEND_DST_ALPHA, cast(*GLint) *last_blend_dst_alpha); +// glGetIntegerv(GL_BLEND_EQUATION_RGB, cast(*GLint) *last_blend_equation_rgb); +// glGetIntegerv(GL_BLEND_EQUATION_ALPHA, cast(*GLint) *last_blend_equation_alpha); + +// last_enable_blend = glIsEnabled(GL_BLEND); +// last_enable_cull_face = glIsEnabled(GL_CULL_FACE); +// last_enable_depth_test = glIsEnabled(GL_DEPTH_TEST); +// last_enable_stencil_test = glIsEnabled(GL_STENCIL_TEST); +// last_enable_scissor_test = glIsEnabled(GL_SCISSOR_TEST); +// // #if #exists (IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART) { +// // last_enable_primitive_restart : GLboolean = ifx (bd.GlVersion >= 310) then glIsEnabled(GL_PRIMITIVE_RESTART) else GL_FALSE; +// // } +// } + +// restore_opengl_state :: (using state: *OpenGLState) { +// // This "glIsProgram()" check is required because if the program is "pending deletion" at the time of binding backup, +// // it will have been deleted by now and will cause an OpenGL error. See #6220. +// if last_program == 0 || glIsProgram(last_program) glUseProgram(last_program); +// glBindTexture(GL_TEXTURE_2D, last_texture); +// // #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_BIND_SAMPLER) { +// // if bd.GlVersion >= 330 || bd.GlProfileIsES3 +// // glBindSampler(0, last_sampler); +// // } +// glActiveTexture(last_active_texture); +// #if #exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) { +// glBindVertexArray(last_vertex_array_object); +// } +// glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer); +// #if !#exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) { +// glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, xx last_element_array_buffer); +// SetState(*last_vtx_attrib_state_pos, xx bd.AttribLocationVtxPos); +// SetState(*last_vtx_attrib_state_uv, xx bd.AttribLocationVtxUV); +// SetState(*last_vtx_attrib_state_colour, xx bd.AttribLocationVtxColor); +// } +// glBlendEquationSeparate(last_blend_equation_rgb, last_blend_equation_alpha); +// glBlendFuncSeparate(last_blend_src_rgb, last_blend_dst_rgb, last_blend_src_alpha, last_blend_dst_alpha); +// if last_enable_blend glEnable(GL_BLEND); else glDisable(GL_BLEND); +// if last_enable_cull_face glEnable(GL_CULL_FACE); else glDisable(GL_CULL_FACE); +// if last_enable_depth_test glEnable(GL_DEPTH_TEST); else glDisable(GL_DEPTH_TEST); +// if last_enable_stencil_test glEnable(GL_STENCIL_TEST); else glDisable(GL_STENCIL_TEST); +// if last_enable_scissor_test glEnable(GL_SCISSOR_TEST); else glDisable(GL_SCISSOR_TEST); +// // #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART) { +// // if bd.GlVersion >= 310 { +// // if last_enable_primitive_restart +// // glEnable(GL_PRIMITIVE_RESTART); +// // else +// // glDisable(GL_PRIMITIVE_RESTART); +// // } +// // } + +// #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE) { +// // Desktop OpenGL 3.0 and OpenGL 3.1 had separate polygon draw modes for front-facing and back-facing faces of polygons +// if (bd.HasPolygonMode) { +// if (bd.GlVersion <= 310 || bd.GlProfileIsCompat) { +// glPolygonMode(GL_FRONT, cast(GLenum) last_polygon_mode[0]); +// glPolygonMode(GL_BACK, cast(GLenum) last_polygon_mode[1]); +// } else { +// glPolygonMode(GL_FRONT_AND_BACK, cast(GLenum) last_polygon_mode[0]); +// } +// } +// } // IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE + +// glViewport(last_viewport[0], last_viewport[1], cast(GLsizei) last_viewport[2], cast(GLsizei) last_viewport[3]); +// glScissor(last_scissor_box[0], last_scissor_box[1], cast(GLsizei) last_scissor_box[2], cast(GLsizei) last_scissor_box[3]); +// } diff --git a/src/platform/shader.jai b/src/platform/shader.jai new file mode 100644 index 0000000..6e5b7c5 --- /dev/null +++ b/src/platform/shader.jai @@ -0,0 +1,488 @@ +_Shader :: struct { + path : string; + name : string; + vertex_text : string; + fragment_text : string; + + compiled : bool; + + id : GLuint; + vsid : GLuint; + fsid : GLuint; +}; + +panel_shader : _Shader; +sprite_shader : _Shader; +line_shader : _Shader; +text_shader : _Shader; + +init_shaders :: () { + init_shader(*panel_shader, panel_vertex_text, panel_frag_text); + init_shader(*sprite_shader, sprite_vertex_text, sprite_frag_text); + init_shader(*line_shader, line_vert_text, line_frag_text); + init_shader(*text_shader, text_vert_text, text_frag_text); +} + +init_shader_file :: (using shader: *_Shader, _path: string, file_name_without_extensions: string) { + path = _path; + name = file_name_without_extensions; + vertex_text = read_entire_file(tprint("%/%.vert", path, name)); + fragment_text = read_entire_file(tprint("%/%.frag", path, name)); + + vsid = glCreateShader(GL_VERTEX_SHADER); + fsid = glCreateShader(GL_FRAGMENT_SHADER); + id = glCreateProgram(); + + compile_shader(shader); + + compiled = true; +} + +init_shader :: (using shader: *_Shader, _vertex_text: string, _fragment_text: string) { + vertex_text = _vertex_text; + fragment_text = _fragment_text; + + vsid = glCreateShader(GL_VERTEX_SHADER); + fsid = glCreateShader(GL_FRAGMENT_SHADER); + id = glCreateProgram(); + + compile_shader(shader); + + compiled = true; +} + +compile_shader :: (using shader: *_Shader) -> bool { + success : s32; + + glShaderSource(vsid, 1, *vertex_text.data, cast(*s32) *vertex_text.count); + glCompileShader(vsid); + + glGetShaderiv(vsid, GL_COMPILE_STATUS, *success); + if !success { + auto_release_temp(); + + length : s32; + glGetShaderiv(vsid, GL_INFO_LOG_LENGTH, *length); + + info : string = alloc_string(length,, temp); + glGetShaderInfoLog(vsid, xx info.count, null, info.data); + + logd("[Error] Vertex Shader compilation failed in %/% \n\n\n\t%\n\n\n", path, name, info); + return false; + } + + + glShaderSource(fsid, 1, *fragment_text.data, cast(*s32) *fragment_text.count); + glCompileShader(fsid); + + glGetShaderiv(fsid, GL_COMPILE_STATUS, *success); + if !success { + auto_release_temp(); + + length : s32; + glGetShaderiv(fsid, GL_INFO_LOG_LENGTH, *length); + + info : string = alloc_string(length,, temp); + glGetShaderInfoLog(fsid, xx info.count, null, info.data); + + logd("[Error] Fragment Shader compilation failed in %/% \n\n\n\t%\n\n\n", path, name, info); + return false; + } + + + glAttachShader(id, vsid); + glAttachShader(id, fsid); + + glLinkProgram(id); + + glGetProgramiv(id, GL_LINK_STATUS, *success); + if !success { + auto_release_temp(); + + length : s32; + glGetProgramiv(id, GL_INFO_LOG_LENGTH, *length); + + info : string = alloc_string(length,, temp); + glGetProgramInfoLog(id, xx info.count, null, info.data); + + logd("[Error] Shader Program linking failed in shader %/% \n\t%\n\n\n\n", path, name, info); + return false; + } + + glDetachShader(id, vsid); + glDetachShader(id, fsid); + + return true; +} + +destroy_shader :: (using shader: *_Shader) { + glDeleteShader(vsid); + glDeleteShader(fsid); + + glDeleteProgram(shader.id); +} + +use :: (using shader: *_Shader) -> bool { + if compiled { + glUseProgram(id); + + return true; + } else { + return false; + } +} + +panel_vertex_text :: #string DONE +#version 320 es + +layout(location = 0) in vec2 in_pos; +layout(location = 1) in vec2 in_st; +layout(location = 2) in vec4 in_col; + +out vec2 st; +out vec4 col; + +uniform mat4 uni_proj; +uniform mat4 uni_view; +uniform mat4 uni_model; + +void main() { + gl_Position = uni_proj * uni_view * uni_model * vec4(in_pos, 0.0, 1.0); + st = vec2(in_st.x, 1.0 - in_st.y); + col = in_col; +} + +DONE + +panel_frag_text :: #string DONE +#version 320 es + +precision mediump float; + +in vec2 st; +in vec4 col; + +layout(location = 0) out vec4 out_colour; + +uniform vec4 uniform_colour; + +uniform sampler2D buttontexture; + +uniform int texturewidth; +uniform int textureheight; + +uniform uint isoverlay; + +uniform int ninepatchborder; +uniform vec2 scale; + +float float_to_srgb(float l) { + if (l < 0.0031308) { + return l * 12.92; + } else { + return 1.055 * pow(l, 0.41666) - 0.055; + } +} + +vec4 linear_to_srgb(vec4 linear) { + vec4 srgb; + + if (linear.x < 0.0031308) { + srgb.x = linear.x * 12.92; + } else { + srgb.x = 1.055 * pow(linear.x, 0.41666) - 0.055; + } + + if (linear.y < 0.0031308) { + srgb.y = linear.y * 12.92; + } else { + srgb.y = 1.055 * pow(linear.y, 0.41666) - 0.055; + } + + if (linear.z < 0.0031308) { + srgb.z = linear.z * 12.92; + } else { + srgb.z = 1.055 * pow(linear.z, 0.41666) - 0.055; + } + + srgb.w = linear.w; + + return srgb; +} + +float float_to_linear(float s) { + if (s <= 0.04045) { + return s / 12.92; + } else { + return pow((s + 0.055) / 1.055, 2.4); + } +} + +vec4 srgb_to_linear(vec4 srgb) { + return vec4(float_to_linear(srgb.r), float_to_linear(srgb.g), float_to_linear(srgb.b), srgb.a); +} + +vec4 texture2DAA(sampler2D _texture, vec2 uv) { + vec2 texsize = vec2(textureSize(_texture, 0)); + vec2 uv_texspace = uv * texsize; + vec2 seam = floor(uv_texspace + 0.5); + uv_texspace = (uv_texspace - seam) / fwidth(uv_texspace) + seam; + uv_texspace = clamp(uv_texspace, seam - 0.5, seam + 0.5); + return texture(_texture, uv_texspace / texsize); +} + +float remap(float t, float t1, float t2, float s1, float s2) { + return (t - t1) / (t2 - t1) * (s2 - s1) + s1; +} + +vec2 map_st_to_ninepatch(vec2 st) { + vec2 ret; + + float t1_model = float(ninepatchborder) / scale.x; + float t1_texture = float(ninepatchborder) / float(texturewidth); + + float t2_model = 1.0 - t1_model; + float t2_texture = 1.0 - t1_texture; + + float s1_model = float(ninepatchborder) / scale.y; + float s1_texture = float(ninepatchborder) / float(textureheight); + + float s2_model = 1.0 - s1_model; + float s2_texture = 1.0 - s1_texture; + + + + + ret.x = remap(st.x, 0.0, t1_model, 0.0, t1_texture) * (step(0.0, st.x) - step(t1_model, st.x)) + + remap(st.x, t1_model, t2_model, t1_texture, t2_texture) * (step(t1_model, st.x) - step(t2_model, st.x)) + + remap(st.x, t2_model, 1.0, t2_texture, 1.0) * step(t2_model, st.x); + + ret.y = remap(st.y, 0.0, s1_model, 0.0, s1_texture) * (step(0.0, st.y) - step(s1_model, st.y)) + + remap(st.y, s1_model, s2_model, s1_texture, s2_texture) * (step(s1_model, st.y) - step(s2_model, st.y)) + + remap(st.y, s2_model, 1.0, s2_texture, 1.0) * step(s2_model, st.y); + + return ret; +} + +void main() { + vec4 panel_sample = texture2DAA(buttontexture, map_st_to_ninepatch(st)); + + out_colour = linear_to_srgb(mix(panel_sample, col, col.a)); +} + +DONE + +sprite_vertex_text :: #string DONE +#version 320 es + +layout(location = 0) in vec2 in_pos; +layout(location = 1) in vec2 in_st; +layout(location = 2) in vec4 in_col; +layout(location = 3) in float in_alpha; + +out vec2 st; +out float alpha; + +uniform mat4 uni_proj; +uniform mat4 uni_view; +uniform mat4 uni_model; + +void main() { + gl_Position = uni_proj * uni_view * uni_model * vec4(in_pos, 0.0, 1.0); + st = vec2(in_st.x, 1.0 - in_st.y); + alpha = in_alpha; +} + +DONE + +sprite_frag_text :: #string DONE +#version 320 es + +precision mediump float; + +in vec2 st; +in float alpha; + +layout(location = 0) out vec4 out_colour; + +uniform sampler2D main_texture; +uniform vec3 overlay; + +//vec4 texture2DAA(sampler2D _texture, vec2 uv) { +// vec2 texsize = vec2(textureSize(_texture, 0)); +// vec2 uv_texspace = uv * texsize; +// vec2 seam = floor(uv_texspace + 0.5); +// uv_texspace = (uv_texspace - seam) / fwidth(uv_texspace) + seam; +// uv_texspace = clamp(uv_texspace, seam - 0.5, seam + 0.5); +// return texture(_texture, uv_texspace / texsize); +//} + +float float_to_srgb(float l) { + if (l < 0.0031308) { + return l * 12.92; + } else { + return 1.055 * pow(l, 0.41666) - 0.055; + } +} + +vec4 linear_to_srgb(vec4 linear) { + vec4 srgb; + + if (linear.x < 0.0031308) { + srgb.x = linear.x * 12.92; + } else { + srgb.x = 1.055 * pow(linear.x, 0.41666) - 0.055; + } + + if (linear.y < 0.0031308) { + srgb.y = linear.y * 12.92; + } else { + srgb.y = 1.055 * pow(linear.y, 0.41666) - 0.055; + } + + if (linear.z < 0.0031308) { + srgb.z = linear.z * 12.92; + } else { + srgb.z = 1.055 * pow(linear.z, 0.41666) - 0.055; + } + + srgb.w = linear.w; + + return srgb; +} + +float float_to_linear(float s) { + if (s <= 0.04045) { + return s / 12.92; + } else { + return pow((s + 0.055) / 1.055, 2.4); + } +} + +vec4 srgb_to_linear(vec4 srgb) { + return vec4(float_to_linear(srgb.r), float_to_linear(srgb.g), float_to_linear(srgb.b), srgb.a); +} + +void main() { + vec4 main_sample = texture(main_texture, st); + + //out_colour = vec4(mix(main_sample.rgb, overlay, 0.1), main_sample.a * max(0.2, alpha)); + out_colour = linear_to_srgb(vec4(main_sample.rgb, smoothstep(0.5, 0.51, 1.0 - distance(st, vec2(0.5))))); +} + +DONE + +line_vert_text :: #string DONE +#version 320 es + +layout (location = 0) in vec2 in_pos; + +uniform mat4 uni_model; +uniform mat4 uni_view; +uniform mat4 uni_proj; + +void main() { + gl_Position = uni_proj * uni_view * uni_model * vec4(in_pos, 0.0, 1.0); +} +DONE + +line_frag_text :: #string DONE +#version 320 es + +precision mediump float; + +out vec4 out_colour; + +uniform vec4 uni_colour; + +void main() { + out_colour = uni_colour; +} +DONE + +text_vert_text :: #string DONE +#version 320 es + +precision highp float; + +layout(location = 0) in vec2 in_pos; +layout(location = 1) in vec2 in_st; +layout(location = 2) in vec4 in_colour; + +out vec2 st; +out vec4 colour; + +uniform mat4 uni_proj; +uniform mat4 uni_view; + +void main() { + gl_Position = uni_proj * uni_view * vec4(in_pos, 0.0, 1.0); + st = vec2(in_st.x, 1.0 - in_st.y); + colour = in_colour; +} +DONE + +text_frag_text :: #string DONE +#version 320 es + +precision highp float; + +in vec2 st; +in vec4 colour; + +layout(location = 0) out vec4 out_colour; + +uniform sampler2D sampler; + +float float_to_srgb(float l) { + if (l < 0.0031308) { + return l * 12.92; + } else { + return 1.055 * pow(l, 0.41666) - 0.055; + } +} + +vec4 linear_to_srgb(vec4 linear) { + vec4 srgb; + + if (linear.x < 0.0031308) { + srgb.x = linear.x * 12.92; + } else { + srgb.x = 1.055 * pow(linear.x, 0.41666) - 0.055; + } + + if (linear.y < 0.0031308) { + srgb.y = linear.y * 12.92; + } else { + srgb.y = 1.055 * pow(linear.y, 0.41666) - 0.055; + } + + if (linear.z < 0.0031308) { + srgb.z = linear.z * 12.92; + } else { + srgb.z = 1.055 * pow(linear.z, 0.41666) - 0.055; + } + + srgb.w = linear.w; + + return srgb; +} + +float float_to_linear(float s) { + if (s <= 0.04045) { + return s / 12.92; + } else { + return pow((s + 0.055) / 1.055, 2.4); + } +} + +vec4 srgb_to_linear(vec4 srgb) { + return vec4(float_to_linear(srgb.r), float_to_linear(srgb.g), float_to_linear(srgb.b), srgb.a); +} + +void main() { + float sampled = texture(sampler, st).r; + //colour = mix(data_bg, data_colour, float_to_srgb(sampled)); + out_colour = vec4(colour.xyz, (sampled)); +} +DONE diff --git a/src/platform/texture.jai b/src/platform/texture.jai new file mode 100644 index 0000000..94a05b9 --- /dev/null +++ b/src/platform/texture.jai @@ -0,0 +1,71 @@ +Texture :: struct { + path : string; + name : string; + index : u32; + + // NOTE: (vfs) stb_image wants s32 values for the width and height. + width : s32; + height : s32; + channels : s32; + + srgb : bool; + uploaded : bool; + + id : GLuint; + internal_format : GLint; + format : GLenum; +} + +make_texture :: (path: string, srgb := true) -> *Texture { + texture := New(Texture); + + init_texture(texture, path, srgb); + + return texture; +} + +init_texture :: (texture: *Texture, path: string, srgb := true, bilinear := true) { + fullpath, basename, extension, basename_with_extension := path_decomp(path); + + file := read_entire_file(path); + + width : s32; + height : s32; + channels : s32; + data := stbi_load_from_memory(file.data, xx file.count, *width, *height, *channels, 4); + channels = 4; + + if !data { + logd("[Error] Could not load the texture %, probably invalid file name.", basename); + + return; + } + + texture.path = path; + texture.name = basename; + texture.internal_format = cast(GLint) ifx channels == 3 then GL_SRGB8 else GL_SRGB8_ALPHA8; + texture.format = cast(GLenum) ifx channels == 3 then GL_RGB else GL_RGBA; + + glGenTextures(1, *texture.id); + glBindTexture(GL_TEXTURE_2D, texture.id); + glTexImage2D(GL_TEXTURE_2D, 0, texture.internal_format, xx width, xx height, 0, texture.format, GL_UNSIGNED_BYTE, data); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); + + if bilinear { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + } else { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + } + + border_color := float.[0.0, 0.0, 0.0, 0.0]; + glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, border_color.data); + + texture.width = width; + texture.height = height; + texture.channels = channels; + texture.srgb = srgb; +} diff --git a/src/stb_textedit.jai b/src/stb_textedit.jai new file mode 100644 index 0000000..e9c0a37 --- /dev/null +++ b/src/stb_textedit.jai @@ -0,0 +1,1641 @@ +// stb_textedit.h - v1.14 - public domain - Sean Barrett +// Development of this library was sponsored by RAD Game Tools +// +// This C header file implements the guts of a multi-line text-editing +// widget; you implement display, word-wrapping, and low-level string +// insertion/deletion, and stb_textedit will map user inputs into +// insertions & deletions, plus updates to the cursor position, +// selection state, and undo state. +// +// It is intended for use in games and other systems that need to build +// their own custom widgets and which do not have heavy text-editing +// requirements (this library is not recommended for use for editing large +// texts, as its performance does not scale and it has limited undo). +// +// Non-trivial behaviors are modelled after Windows text controls. +// +// +// LICENSE +// +// See end of file for license information. +// +// +// DEPENDENCIES +// +// Uses the C runtime function 'memmove', which you can override +// by defining STB_TEXTEDIT_memmove before the implementation. +// Uses no other functions. Performs no runtime allocations. +// +// +// VERSION HISTORY +// +// 1.14 (2021-07-11) page up/down, various fixes +// 1.13 (2019-02-07) fix bug in undo size management +// 1.12 (2018-01-29) user can change STB_TEXTEDIT_KEYTYPE, fix redo to avoid crash +// 1.11 (2017-03-03) fix HOME on last line, dragging off single-line textfield +// 1.10 (2016-10-25) supress warnings about casting away const with -Wcast-qual +// 1.9 (2016-08-27) customizable move-by-word +// 1.8 (2016-04-02) better keyboard handling when mouse button is down +// 1.7 (2015-09-13) change y range handling in case baseline is non-0 +// 1.6 (2015-04-15) allow STB_TEXTEDIT_memmove +// 1.5 (2014-09-10) add support for secondary keys for OS X +// 1.4 (2014-08-17) fix signed/unsigned warnings +// 1.3 (2014-06-19) fix mouse clicking to round to nearest char boundary +// 1.2 (2014-05-27) fix some RAD types that had crept into the new code +// 1.1 (2013-12-15) move-by-word (requires STB_TEXTEDIT_IS_SPACE ) +// 1.0 (2012-07-26) improve documentation, initial public release +// 0.3 (2012-02-24) bugfixes, single-line mode; insert mode +// 0.2 (2011-11-28) fixes to undo/redo +// 0.1 (2010-07-08) initial version +// +// ADDITIONAL CONTRIBUTORS +// +// Ulf Winklemann: move-by-word in 1.1 +// Fabian Giesen: secondary key inputs in 1.5 +// Martins Mozeiko: STB_TEXTEDIT_memmove in 1.6 +// Louis Schnellbach: page up/down in 1.14 +// +// Bugfixes: +// Scott Graham +// Daniel Keller +// Omar Cornut +// Dan Thompson +// +// USAGE +// +// This file behaves differently depending on what symbols you define +// before including it. +// +// +// Header-file mode: +// +// If you do not define STB_TEXTEDIT_IMPLEMENTATION before including this, +// it will operate in "header file" mode. In this mode, it declares a +// single public symbol, STB_TexteditState, which encapsulates the current +// state of a text widget (except for the string, which you will store +// separately). +// +// To compile in this mode, you must define STB_TEXTEDIT_CHARTYPE to a +// primitive type that defines a single character (e.g. char, wchar_t, etc). +// +// To save space or increase undo-ability, you can optionally define the +// following things that are used by the undo system: +// +// STB_TEXTEDIT_POSITIONTYPE small int type encoding a valid cursor position +// STB_TEXTEDIT_UNDOSTATECOUNT the number of undo states to allow +// STB_TEXTEDIT_UNDOCHARCOUNT the number of characters to store in the undo buffer +// +// If you don't define these, they are set to permissive types and +// moderate sizes. The undo system does no memory allocations, so +// it grows STB_TexteditState by the worst-case storage which is (in bytes): +// +// [4 + 3 * sizeof(STB_TEXTEDIT_POSITIONTYPE)] * STB_TEXTEDIT_UNDOSTATECOUNT +// + sizeof(STB_TEXTEDIT_CHARTYPE) * STB_TEXTEDIT_UNDOCHARCOUNT +// +// +// Implementation mode: +// +// If you define STB_TEXTEDIT_IMPLEMENTATION before including this, it +// will compile the implementation of the text edit widget, depending +// on a large number of symbols which must be defined before the include. +// +// The implementation is defined only as static functions. You will then +// need to provide your own APIs in the same file which will access the +// static functions. +// +// The basic concept is that you provide a "string" object which +// behaves like an array of characters. stb_textedit uses indices to +// refer to positions in the string, implicitly representing positions +// in the displayed textedit. This is true for both plain text and +// rich text; even with rich text stb_truetype interacts with your +// code as if there was an array of all the displayed characters. +// +// Symbols that must be the same in header-file and implementation mode: +// +// STB_TEXTEDIT_CHARTYPE the character type +// STB_TEXTEDIT_POSITIONTYPE small type that is a valid cursor position +// STB_TEXTEDIT_UNDOSTATECOUNT the number of undo states to allow +// STB_TEXTEDIT_UNDOCHARCOUNT the number of characters to store in the undo buffer +// +// Symbols you must define for implementation mode: +// +// STB_TEXTEDIT_STRING the type of object representing a string being edited, +// typically this is a wrapper object with other data you need +// +// STB_TEXTEDIT_STRINGLEN(obj) the length of the string (ideally O(1)) +// STB_TEXTEDIT_LAYOUTROW(&r,obj,n) returns the results of laying out a line of characters +// starting from character #n (see discussion below) +// STB_TEXTEDIT_GETWIDTH(obj,n,i) returns the pixel delta from the xpos of the i'th character +// to the xpos of the i+1'th char for a line of characters +// starting at character #n (i.e. accounts for kerning +// with previous char) +// STB_TEXTEDIT_KEYTOTEXT(k) maps a keyboard input to an insertable character +// (return type is int, -1 means not valid to insert) +// STB_TEXTEDIT_GETCHAR(obj,i) returns the i'th character of obj, 0-based +// STB_TEXTEDIT_NEWLINE the character returned by _GETCHAR() we recognize +// as manually wordwrapping for end-of-line positioning +// +// STB_TEXTEDIT_DELETECHARS(obj,i,n) delete n characters starting at i +// STB_TEXTEDIT_INSERTCHARS(obj,i,c*,n) insert n characters at i (pointed to by STB_TEXTEDIT_CHARTYPE*) +// +// STB_TEXTEDIT_K_SHIFT a power of two that is or'd in to a keyboard input to represent the shift key +// +// STB_TEXTEDIT_K_LEFT keyboard input to move cursor left +// STB_TEXTEDIT_K_RIGHT keyboard input to move cursor right +// STB_TEXTEDIT_K_UP keyboard input to move cursor up +// STB_TEXTEDIT_K_DOWN keyboard input to move cursor down +// STB_TEXTEDIT_K_PGUP keyboard input to move cursor up a page +// STB_TEXTEDIT_K_PGDOWN keyboard input to move cursor down a page +// STB_TEXTEDIT_K_LINESTART keyboard input to move cursor to start of line // e.g. HOME +// STB_TEXTEDIT_K_LINEEND keyboard input to move cursor to end of line // e.g. END +// STB_TEXTEDIT_K_TEXTSTART keyboard input to move cursor to start of text // e.g. ctrl-HOME +// STB_TEXTEDIT_K_TEXTEND keyboard input to move cursor to end of text // e.g. ctrl-END +// STB_TEXTEDIT_K_DELETE keyboard input to delete selection or character under cursor +// STB_TEXTEDIT_K_BACKSPACE keyboard input to delete selection or character left of cursor +// STB_TEXTEDIT_K_UNDO keyboard input to perform undo +// STB_TEXTEDIT_K_REDO keyboard input to perform redo +// +// Optional: +// STB_TEXTEDIT_K_INSERT keyboard input to toggle insert mode +// STB_TEXTEDIT_IS_SPACE(ch) true if character is whitespace (e.g. 'isspace'), +// required for default WORDLEFT/WORDRIGHT handlers +// STB_TEXTEDIT_MOVEWORDLEFT(obj,i) custom handler for WORDLEFT, returns index to move cursor to +// STB_TEXTEDIT_MOVEWORDRIGHT(obj,i) custom handler for WORDRIGHT, returns index to move cursor to +// STB_TEXTEDIT_K_WORDLEFT keyboard input to move cursor left one word // e.g. ctrl-LEFT +// STB_TEXTEDIT_K_WORDRIGHT keyboard input to move cursor right one word // e.g. ctrl-RIGHT +// STB_TEXTEDIT_K_LINESTART2 secondary keyboard input to move cursor to start of line +// STB_TEXTEDIT_K_LINEEND2 secondary keyboard input to move cursor to end of line +// STB_TEXTEDIT_K_TEXTSTART2 secondary keyboard input to move cursor to start of text +// STB_TEXTEDIT_K_TEXTEND2 secondary keyboard input to move cursor to end of text +// +// Keyboard input must be encoded as a single integer value; e.g. a character code +// and some bitflags that represent shift states. to simplify the interface, SHIFT must +// be a bitflag, so we can test the shifted state of cursor movements to allow selection, +// i.e. (STB_TEXTEDIT_K_RIGHT|STB_TEXTEDIT_K_SHIFT) should be shifted right-arrow. +// +// You can encode other things, such as CONTROL or ALT, in additional bits, and +// then test for their presence in e.g. STB_TEXTEDIT_K_WORDLEFT. For example, +// my Windows implementations add an additional CONTROL bit, and an additional KEYDOWN +// bit. Then all of the STB_TEXTEDIT_K_ values bitwise-or in the KEYDOWN bit, +// and I pass both WM_KEYDOWN and WM_CHAR events to the "key" function in the +// API below. The control keys will only match WM_KEYDOWN events because of the +// keydown bit I add, and STB_TEXTEDIT_KEYTOTEXT only tests for the KEYDOWN +// bit so it only decodes WM_CHAR events. +// +// STB_TEXTEDIT_LAYOUTROW returns information about the shape of one displayed +// row of characters assuming they start on the i'th character--the width and +// the height and the number of characters consumed. This allows this library +// to traverse the entire layout incrementally. You need to compute word-wrapping +// here. +// +// Each textfield keeps its own insert mode state, which is not how normal +// applications work. To keep an app-wide insert mode, update/copy the +// "insert_mode" field of STB_TexteditState before/after calling API functions. +// +// API +// +// void stb_textedit_initialize_state(STB_TexteditState *state, int is_single_line) +// +// void stb_textedit_click(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, float x, float y) +// void stb_textedit_drag(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, float x, float y) +// int stb_textedit_cut(STB_TEXTEDIT_STRING *str, STB_TexteditState *state) +// int stb_textedit_paste(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, STB_TEXTEDIT_CHARTYPE *text, int len) +// void stb_textedit_key(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, STB_TEXTEDIT_KEYTYPE key) +// +// Each of these functions potentially updates the string and updates the +// state. +// +// initialize_state: +// set the textedit state to a known good default state when initially +// constructing the textedit. +// +// click: +// call this with the mouse x,y on a mouse down; it will update the cursor +// and reset the selection start/end to the cursor point. the x,y must +// be relative to the text widget, with (0,0) being the top left. +// +// drag: +// call this with the mouse x,y on a mouse drag/up; it will update the +// cursor and the selection end point +// +// cut: +// call this to delete the current selection; returns true if there was +// one. you should FIRST copy the current selection to the system paste buffer. +// (To copy, just copy the current selection out of the string yourself.) +// +// paste: +// call this to paste text at the current cursor point or over the current +// selection if there is one. +// +// key: +// call this for keyboard inputs sent to the textfield. you can use it +// for "key down" events or for "translated" key events. if you need to +// do both (as in Win32), or distinguish Unicode characters from control +// inputs, set a high bit to distinguish the two; then you can define the +// various definitions like STB_TEXTEDIT_K_LEFT have the is-key-event bit +// set, and make STB_TEXTEDIT_KEYTOCHAR check that the is-key-event bit is +// clear. STB_TEXTEDIT_KEYTYPE defaults to int, but you can #define it to +// anything other type you wante before including. +// +// +// When rendering, you can read the cursor position and selection state from +// the STB_TexteditState. +// +// +// Notes: +// +// This is designed to be usable in IMGUI, so it allows for the possibility of +// running in an IMGUI that has NOT cached the multi-line layout. For this +// reason, it provides an interface that is compatible with computing the +// layout incrementally--we try to make sure we make as few passes through +// as possible. (For example, to locate the mouse pointer in the text, we +// could define functions that return the X and Y positions of characters +// and binary search Y and then X, but if we're doing dynamic layout this +// will run the layout algorithm many times, so instead we manually search +// forward in one pass. Similar logic applies to e.g. up-arrow and +// down-arrow movement.) +// +// If it's run in a widget that *has* cached the layout, then this is less +// efficient, but it's not horrible on modern computers. But you wouldn't +// want to edit million-line files with it. + + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +//// +//// Header-file mode +//// +//// + +//////////////////////////////////////////////////////////////////////// +// +// STB_TexteditState +// +// Definition of STB_TexteditState which you should store +// per-textfield; it includes cursor position, selection state, +// and undo state. +// + +STB_TEXTEDIT_STRING :: TextInput; + +STB_TEXTEDIT_STRINGLEN :: (obj: *STB_TEXTEDIT_STRING) -> s32 { + return xx obj.text.count; +} + +STB_TEXTEDIT_KEYTOTEXT :: (k: STB_TEXTEDIT_KEYTYPE) -> s32 #expand { + return ifx k >= 32 && k < 127 then k else -1; +} + +STB_TEXTEDIT_DELETECHARS :: (obj: *STB_TEXTEDIT_STRING, i: s32, n: s32) { + if (i >= obj.text.count) return; // Nothing to remove + if (i + n > obj.text.count) n = xx obj.text.count - i; // Trim n if it goes past end + memcpy(*obj.text.data[i], *obj.text.data[i + n], obj.text.count - i - n); +} + +STB_TEXTEDIT_GETCHAR :: (obj: *STB_TEXTEDIT_STRING, i: s32) -> STB_TEXTEDIT_CHARTYPE { + if i > obj.text.count return 0; + + return obj.text.data[i]; +} + +STB_TEXTEDIT_INSERTCHARS :: (obj: *STB_TEXTEDIT_STRING, i: s32, c: *STB_TEXTEDIT_CHARTYPE, n: s32) -> bool { + // insert n characters at i (pointed to by STB_TEXTEDIT_CHARTYPE*) + // Ensure index doesn't exceed current string length + if (i > obj.text.count) i = xx obj.text.count; + + len := obj.text.count; + + if n + len > obj.text.allocated { + array_reserve(*obj.text, n + len); + } + + + // Shift the tail of the string right by n characters + memcpy(obj.text.data + i + n, obj.text.data + i, obj.text.count - i); + + memcpy(obj.text.data + i, xx c, n); + + obj.text.count += n; + + return true; +} + +STB_TEXTEDIT_LAYOUTROW :: (row: *StbTexteditRow, obj: *STB_TEXTEDIT_STRING, n: s32) { + text : *u8 = obj.text.data; + line_start : *u8 = text + n; + len := obj.text.count - (line_start - text); + + text_utf32 : [..]u32; + defer array_free(text_utf32); + + StringAt : u64; + while StringAt < xx len { + Decode : kbts_decode = kbts_DecodeUtf8(line_start, xx len - StringAt); + StringAt += Decode.SourceCharactersConsumed; + if Decode.Valid { + array_add(*text_utf32, Decode.Codepoint); + } + } + + size, max_descent, read := SegmentText(obj.font, text_utf32.data, xx text_utf32.count); + + row.x0 = 0.0; + row.x1 = size.x; + row.baseline_y_delta = size.y; + row.ymin = max_descent; + row.ymax = size.y - max_descent; + row.num_chars = xx read; + + // words := split(.{len, line_start}, " "); + + // for *word : words { + // if word.* != "" && word.data - line_start + word.count < len { + // if text[word.data - line_start + len] == " " { + // word.count += 1; + // } + // } + // } + + //total_size : Vector2; + //lines : [..]Line; + + // if !text { + // //return .{}, 0.0, 0.0, lines; + // } + + // if words.count == 0 { + // return .{}, 0.0, 0.0, lines; + // } + + //line : Line; + + // for word : words { + // started_a_line : bool; + // if line.text.count == 0 { + // line.text.data = word.data; + // line.text.count = word.count; + // started_a_line = true; + // } + + // buf : *hb_buffer_t = hb_buffer_create(); + // hb_buffer_add_utf8(buf, word.data, xx word.count, 0, -1); + + // hb_buffer_set_direction(buf, hb_direction_t.LTR); + // hb_buffer_set_script(buf, hb_script_t.HB_SCRIPT_LATIN); + // hb_buffer_set_language(buf, hb_language_from_string("en", -1)); + + // features : [1]hb_feature_t; + // features[0].tag = HB_TAG(#char "c", #char "a", #char "l", #char "t"); + // features[0].value = 1; + // features[0].start = HB_FEATURE_GLOBAL_START; + // features[0].end = HB_FEATURE_GLOBAL_END; + + // hb_shape(obj.font.hb, buf, features.data, features.count); + // glyph_count_u : u32; + // glyph_info : *hb_glyph_info_t = hb_buffer_get_glyph_infos(buf, *glyph_count_u); + // glyph_pos : *hb_glyph_position_t = hb_buffer_get_glyph_positions(buf, *glyph_count_u); + + // glyph_count : s32 = xx glyph_count_u; + + // word_size : Vector2; + + // for i : 0..glyph_count - 1 { + // glyphid : hb_codepoint_t = glyph_info[i].codepoint; + // x_offset : hb_position_t = glyph_pos[i].x_offset; + // y_offset : hb_position_t = glyph_pos[i].y_offset; + // x_advance : hb_position_t = glyph_pos[i].x_advance; + // y_advance : hb_position_t = glyph_pos[i].y_advance; + + // glyph : *Glyph = table_find_pointer(*obj.font.glyphs, glyphid); + + // if glyph { + // word_size.y = max(word_size.y, xx (glyph.height + glyph.descent)); + // word_size.x += x_advance / 64.0; + // line.max_descent = max(line.max_descent, cast(float) glyph.descent); + // line.max_ascent = max(line.max_ascent, cast(float) glyph.ascent); + // } + // } + + // if !started_a_line { + // line.text.count += word.count; + // } + + // if obj.max_size.x > 0.0 { + // if line.size.x + word_size.x > obj.max_size.x { + // line.size.x = obj.max_size.x; + // line.size.y = max(line.size.y, word_size.y); + // line.size.y = max(line.size.y, line.max_ascent + line.max_descent); + // array_add(*lines, line); + // line = .{}; + // } else { + // line.size.y = max(total_size.y, word_size.y); + // line.size.y = max(line.size.y, line.max_ascent + line.max_descent); + // line.size.x += word_size.x; + // // } else { + // // line.text.data = word.data; + // // line.text.count = word.count; + // // } + // } + // } else if obj.max_size.x == 0.0 { + // line.size.y = max(total_size.y, word_size.y); + // line.size.y = max(line.size.y, line.max_ascent + line.max_descent); + // line.size.x += word_size.x; + // // if include_descent + // // size.y = max_ascent + max_descent; + // } + + // hb_buffer_destroy(buf); + // } + + // if line.text.count > 0 { + // line.size.y = max(line.size.y, line.max_ascent + line.max_descent); + // array_add(*lines, line); + // line = .{}; + // } + + // for line : lines { + // total_size.x = max(total_size.x, line.size.x); + // total_size.y += line.size.y; + // } + + // // determine how many characters to shape (until newline or wrap) + // // for simplicity, shape a chunk of ~256 characters or to newline + // p := line_start; + // len : s32 = 0; + // while p.* && p.* != #char "\n" && len < 256 { + // p += 1; + // len += 1; + // } + + // // shape the text + // buf : *hb_buffer_t = hb_buffer_create(); + // hb_buffer_add_utf8(buf, line_start, len, 0, len); + // hb_buffer_guess_segment_properties(buf); + // hb_shape(hb_font, buf, NULL, 0); + + // glyph_count : u32; + // glyph_info : *hb_glyph_info_t = hb_buffer_get_glyph_infos(buf, *glyph_count); + // pos : *hb_glyph_position_t = hb_buffer_get_glyph_positions(buf, *glyph_count); + + // // iterate through glyphs, accumulate width + // x : float = 0.0; + // num_chars : s32 = 0; + // for i : 0..glyph_count - 1 { + // x += pos[i].x_advance / 64.0; // HarfBuzz uses 26.6 fixed-point + // num_chars += 1; + // // optional: if you have a max line width, break here + // } + + // 4. Use FreeType or your line layout logic for line height + // line_height : float = obj->font->height; // or extract from FT_Size_Metrics + // ymin : float = -obj->font->ascent; + // ymax : float = obj->font->descent; + + //hb_buffer_destroy(buf); +} + +STB_TEXTEDIT_GETWIDTH :: (obj: *STB_TEXTEDIT_STRING, n: s32, i: s32) -> float { + return 10.0; +} + +STB_TEXTEDIT_K_LEFT :: 0x200000; // keyboard input to move cursor left +STB_TEXTEDIT_K_RIGHT :: 0x200001; // keyboard input to move cursor right +STB_TEXTEDIT_K_UP :: 0x200002; // keyboard input to move cursor up +STB_TEXTEDIT_K_DOWN :: 0x200003; // keyboard input to move cursor down +STB_TEXTEDIT_K_LINESTART :: 0x200004; // keyboard input to move cursor to start of line +STB_TEXTEDIT_K_LINEEND :: 0x200005; // keyboard input to move cursor to end of line +STB_TEXTEDIT_K_TEXTSTART :: 0x200006; // keyboard input to move cursor to start of text +STB_TEXTEDIT_K_TEXTEND :: 0x200007; // keyboard input to move cursor to end of text +STB_TEXTEDIT_K_DELETE :: 0x200008; // keyboard input to delete selection or character under cursor +STB_TEXTEDIT_K_BACKSPACE :: 0x200009; // keyboard input to delete selection or character left of cursor +STB_TEXTEDIT_K_UNDO :: 0x20000A; // keyboard input to perform undo +STB_TEXTEDIT_K_REDO :: 0x20000B; // keyboard input to perform redo +STB_TEXTEDIT_K_WORDLEFT :: 0x20000C; // keyboard input to move cursor left one word +STB_TEXTEDIT_K_WORDRIGHT :: 0x20000D; // keyboard input to move cursor right one word +STB_TEXTEDIT_K_PGUP :: 0x20000E; // keyboard input to move cursor up a page +STB_TEXTEDIT_K_PGDOWN :: 0x20000F; // keyboard input to move cursor down a page +STB_TEXTEDIT_K_SHIFT :: 0x400000; + +STB_TEXTEDIT_NEWLINE :: #char "\n"; + +#if !#exists(STB_TEXTEDIT_UNDOSTATECOUNT) + STB_TEXTEDIT_UNDOSTATECOUNT :: 99; + +#if !#exists(STB_TEXTEDIT_UNDOCHARCOUNT) + STB_TEXTEDIT_UNDOCHARCOUNT :: 999; + +#if !#exists(STB_TEXTEDIT_CHARTYPE) + STB_TEXTEDIT_CHARTYPE :: u32; + +#if !#exists(STB_TEXTEDIT_POSITIONTYPE) + STB_TEXTEDIT_POSITIONTYPE :: s32; + +STB_TEXTEDIT_IS_SPACE :: (ch: u32) -> bool { + return ch == #char " "; +} + +StbUndoRecord :: struct { + // private data + where : STB_TEXTEDIT_POSITIONTYPE; + insert_length : STB_TEXTEDIT_POSITIONTYPE; + delete_length : STB_TEXTEDIT_POSITIONTYPE; + char_storage : s32; +} + +StbUndoState :: struct { + // private data + undo_rec : [STB_TEXTEDIT_UNDOSTATECOUNT]StbUndoRecord; + undo_char : [STB_TEXTEDIT_UNDOCHARCOUNT]STB_TEXTEDIT_CHARTYPE; + undo_point, redo_point : s16; + undo_char_point, redo_char_point : s32; +} + +STB_TexteditState :: struct { + ///////////////////// + // + // public data + // + + cursor : s32; + // position of the text cursor within the string + + select_start : s32; // selection start point + select_end : s32; + // selection start and end point in characters; if equal, no selection. + // note that start may be less than or greater than end (e.g. when + // dragging the mouse, start is where the initial click was, and you + // can drag in either direction) + + insert_mode : u8; + // each textfield keeps its own insert mode state. to keep an app-wide + // insert mode, copy this value in/out of the app state + + row_count_per_page : s32; + // page size in number of row. + // this value MUST be set to >0 for pageup or pagedown in multilines documents. + + ///////////////////// + // + // private data + // + cursor_at_end_of_line : u8; // not implemented yet + initialized : u8; + has_preferred_x : u8; + single_line : u8; + padding1, padding2, padding3 : u8; + preferred_x : float; // this determines where the cursor up/down tries to seek to along x + undostate : StbUndoState; +} + + +//////////////////////////////////////////////////////////////////////// +// +// StbTexteditRow +// +// Result of layout query, used by stb_textedit to determine where +// the text in each row is. + +// result of layout query +StbTexteditRow :: struct { + x0, x1 : float; // starting x location, end x location (allows for align=right, etc) + baseline_y_delta : float; // position of baseline relative to previous row's baseline + ymin, ymax : float; // height of row above and below baseline + num_chars : s32; +} + + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +//// +//// Implementation mode +//// +//// + + +// implementation isn't include-guarded, since it might have indirectly +// included just the "header" portion + +#if !#exists(STB_TEXTEDIT_memmove) { + //#include + STB_TEXTEDIT_memmove :: memcpy; +} + + +///////////////////////////////////////////////////////////////////////////// +// +// Mouse input handling +// + +// traverse the layout to locate the nearest character to a display position +stb_text_locate_coord :: (str: *STB_TEXTEDIT_STRING, x: float, y: float) -> s32 { + r : StbTexteditRow; + n : s32 = STB_TEXTEDIT_STRINGLEN(str); + base_y : float = 0; + prev_x : float; + i : s32 = 0; + k : s32; + + r.x0 = 0; + r.x1 = 0; + r.ymin = 0; + r.ymax = 0; + r.num_chars = 0; + + // search rows to find one that straddles 'y' + while i < n { + STB_TEXTEDIT_LAYOUTROW(*r, str, i); + if r.num_chars <= 0 + return n; + + if i == 0 && y < base_y + r.ymin + return 0; + + if y < base_y + r.ymax + break; + + i += r.num_chars; + base_y += r.baseline_y_delta; + } + + // below all text, return 'after' last character + if i >= n + return n; + + // check if it's before the beginning of the line + if x < r.x0 + return i; + + // check if it's before the end of the line + if x < r.x1 { + // search characters in row for one that straddles 'x' + prev_x = r.x0; + for k : 0..r.num_chars - 1 { + w : float = STB_TEXTEDIT_GETWIDTH(str, i, k); + if x < prev_x + w { + if x < prev_x + w / 2 { + return k + i; + } else { + return k + i + 1; + } + } + prev_x += w; + } + // shouldn't happen, but if it does, fall through to end-of-line case + } + + // if the last character is a newline, return that. otherwise return 'after' the last character + if STB_TEXTEDIT_GETCHAR(str, i + r.num_chars - 1) == STB_TEXTEDIT_NEWLINE + return i + r.num_chars - 1; + else + return i + r.num_chars; +} + +// API click: on mouse down, move the cursor to the clicked location, and reset the selection +stb_textedit_click :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState, x: float, y: float) { + // In single-line mode, just always make y = 0. This lets the drag keep working if the mouse + // goes off the top or bottom of the text + if state.single_line { + r : StbTexteditRow; + STB_TEXTEDIT_LAYOUTROW(*r, str, 0); + y = r.ymin; + } + + state.cursor = stb_text_locate_coord(str, x, y); + state.select_start = state.cursor; + state.select_end = state.cursor; + state.has_preferred_x = 0; +} + +// API drag: on mouse drag, move the cursor and selection endpoint to the clicked location +stb_textedit_drag :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState, x: float, y: float) { + p : s32 = 0; + + // In single-line mode, just always make y = 0. This lets the drag keep working if the mouse + // goes off the top or bottom of the text + if state.single_line { + r :StbTexteditRow ; + STB_TEXTEDIT_LAYOUTROW(*r, str, 0); + y = r.ymin; + } + + if state.select_start == state.select_end + state.select_start = state.cursor; + + p = stb_text_locate_coord(str, x, y); + state.cursor = p; + state.select_end = p; +} + +///////////////////////////////////////////////////////////////////////////// +// +// Keyboard input handling +// + +// forward declarations +//static void stb_text_undo(STB_TEXTEDIT_STRING *str, STB_TexteditState *state); +//static void stb_text_redo(STB_TEXTEDIT_STRING *str, STB_TexteditState *state); +//static void stb_text_makeundo_delete(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, int where, int length); +//static void stb_text_makeundo_insert(STB_TexteditState *state, int where, int length); +//static void stb_text_makeundo_replace(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, int where, int old_length, int new_length); + +StbFindState :: struct { + x, y : float; // position of n'th character + height : float; // height of line + first_char, length : s32; // first char of row, and length + prev_first : s32; // first char of previous row +} + +// find the x/y location of a character, and remember info about the previous row in +// case we get a move-up event (for page up, we'll have to rescan) +stb_textedit_find_charpos :: (find: *StbFindState, str: *STB_TEXTEDIT_STRING, n: s32, single_line: s32) { + r : StbTexteditRow; + prev_start : s32 = 0; + z : s32 = STB_TEXTEDIT_STRINGLEN(str); + i : s32 = 0; + first : s32; + + if n == z { + // if it's at the end, then find the last line -- simpler than trying to + // explicitly handle this case in the regular code + if single_line { + STB_TEXTEDIT_LAYOUTROW(*r, str, 0); + find.y = 0; + find.first_char = 0; + find.length = z; + find.height = r.ymax - r.ymin; + find.x = r.x1; + } else { + find.y = 0; + find.x = 0; + find.height = 1; + while (i < z) { + STB_TEXTEDIT_LAYOUTROW(*r, str, i); + prev_start = i; + i += r.num_chars; + } + find.first_char = i; + find.length = 0; + find.prev_first = prev_start; + } + return; + } + + // search rows to find the one that straddles character n + find.y = 0; + + while true { + STB_TEXTEDIT_LAYOUTROW(*r, str, i); + if n < i + r.num_chars + break; + prev_start = i; + i += r.num_chars; + find.y += r.baseline_y_delta; + } + + find.first_char = i; + first = i; + find.length = r.num_chars; + find.height = r.ymax - r.ymin; + find.prev_first = prev_start; + + // now scan to find xpos + find.x = r.x0; + i = 0; + while first + i < n { + find.x += STB_TEXTEDIT_GETWIDTH(str, first, i); + + i += 1; + } +} + +STB_TEXT_HAS_SELECTION :: (s: *STB_TexteditState) -> bool #expand { + return ((s).select_start != (s).select_end); +} + +// make the selection/cursor state valid if client altered the string +stb_textedit_clamp :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState) { + n : s32 = STB_TEXTEDIT_STRINGLEN(str); + if STB_TEXT_HAS_SELECTION(state) { + if (state.select_start > n) state.select_start = n; + if (state.select_end > n) state.select_end = n; + // if clamping forced them to be equal, move the cursor to match + if (state.select_start == state.select_end) + state.cursor = state.select_start; + } + if (state.cursor > n) state.cursor = n; +} + +// delete characters while updating undo +stb_textedit_delete :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState, where: s32, len: s32) { + stb_text_makeundo_delete(str, state, where, len); + STB_TEXTEDIT_DELETECHARS(str, where, len); + state.has_preferred_x = 0; +} + +// delete the section +stb_textedit_delete_selection :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState) { + stb_textedit_clamp(str, state); + if (STB_TEXT_HAS_SELECTION(state)) { + if (state.select_start < state.select_end) { + stb_textedit_delete(str, state, state.select_start, state.select_end - state.select_start); + state.select_end = state.select_start; + state.cursor = state.select_start; + } else { + stb_textedit_delete(str, state, state.select_end, state.select_start - state.select_end); + state.select_start = state.select_end; + state.cursor = state.select_end; + } + state.has_preferred_x = 0; + } +} + +// canoncialize the selection so start <= end +stb_textedit_sortselection :: (state: *STB_TexteditState) { + if (state.select_end < state.select_start) { + temp : s32 = state.select_end; + state.select_end = state.select_start; + state.select_start = temp; + } +} + +// move cursor to first character of selection +stb_textedit_move_to_first :: (state: *STB_TexteditState) { + if (STB_TEXT_HAS_SELECTION(state)) { + stb_textedit_sortselection(state); + state.cursor = state.select_start; + state.select_end = state.select_start; + state.has_preferred_x = 0; + } +} + +// move cursor to last character of selection +stb_textedit_move_to_last :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState) { + if (STB_TEXT_HAS_SELECTION(state)) { + stb_textedit_sortselection(state); + stb_textedit_clamp(str, state); + state.cursor = state.select_end; + state.select_start = state.select_end; + state.has_preferred_x = 0; + } +} + +#if #exists(STB_TEXTEDIT_IS_SPACE) { +is_word_boundary :: (str: *STB_TEXTEDIT_STRING, idx: s32) -> bool{ + return ifx idx > 0 then (STB_TEXTEDIT_IS_SPACE(STB_TEXTEDIT_GETCHAR(str, idx - 1)) && !STB_TEXTEDIT_IS_SPACE(STB_TEXTEDIT_GETCHAR(str, idx))) else true; +} +} + +#if !#exists(STB_TEXTEDIT_MOVEWORDLEFT) { +stb_textedit_move_to_word_previous :: (str: *STB_TEXTEDIT_STRING, c: s32) -> s32 { + c -= 1; // always move at least one character + while(c >= 0 && !is_word_boundary(str, c)) + c -= 1; + + if( c < 0 ) + c = 0; + + return c; +} + +STB_TEXTEDIT_MOVEWORDLEFT :: stb_textedit_move_to_word_previous; +} + +#if !#exists(STB_TEXTEDIT_MOVEWORDRIGHT) { +stb_textedit_move_to_word_next :: (str: *STB_TEXTEDIT_STRING, c: s32) -> s32 { + len : s32 = STB_TEXTEDIT_STRINGLEN(str); + c += 1; // always move at least one character + while c < len && !is_word_boundary( str, c ) + c += 1; + + if c > len + c = len; + + return c; +} +STB_TEXTEDIT_MOVEWORDRIGHT :: stb_textedit_move_to_word_next; +} + +// update selection and cursor to match each other +stb_textedit_prep_selection_at_cursor :: (state: *STB_TexteditState) { + if (!STB_TEXT_HAS_SELECTION(state)) { + state.select_start = state.cursor; + state.select_end = state.cursor; + } else { + state.cursor = state.select_end; + } +} + +// API cut: delete selection +stb_textedit_cut :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState) -> s32 { + if (STB_TEXT_HAS_SELECTION(state)) { + stb_textedit_delete_selection(str,state); // implicitly clamps + state.has_preferred_x = 0; + return 1; + } + + return 0; +} + +// API paste: replace existing selection with passed-in text +stb_textedit_paste_internal :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState, text: *STB_TEXTEDIT_CHARTYPE, len: s32) -> s32 { + // if there's a selection, the paste should delete it + stb_textedit_clamp(str, state); + stb_textedit_delete_selection(str,state); + // try to insert the characters + if (STB_TEXTEDIT_INSERTCHARS(str, state.cursor, text, len)) { + stb_text_makeundo_insert(state, state.cursor, len); + state.cursor += len; + state.has_preferred_x = 0; + return 1; + } + // note: paste failure will leave deleted selection, may be restored with an undo (see https://github.com/nothings/stb/issues/734 for details) +return 0; +} + +#if !#exists(STB_TEXTEDIT_KEYTYPE) + STB_TEXTEDIT_KEYTYPE :: s32; + +// API key: process a keyboard input +stb_textedit_key :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState, key: STB_TEXTEDIT_KEYTYPE) { +while retry := true { + if key == { + case; + c : s32 = STB_TEXTEDIT_KEYTOTEXT(key); + if c > 0 { + ch : STB_TEXTEDIT_CHARTYPE = cast(STB_TEXTEDIT_CHARTYPE, c); + + // can't add newline in single-line mode + if c == #char "\n" && state.single_line + break; + + if state.insert_mode && !STB_TEXT_HAS_SELECTION(state) && state.cursor < STB_TEXTEDIT_STRINGLEN(str) { + stb_text_makeundo_replace(str, state, state.cursor, 1, 1); + STB_TEXTEDIT_DELETECHARS(str, state.cursor, 1); + if STB_TEXTEDIT_INSERTCHARS(str, state.cursor, *ch, 1) { + state.cursor += 1; + state.has_preferred_x = 0; + } + } else { + stb_textedit_delete_selection(str,state); // implicitly clamps + if STB_TEXTEDIT_INSERTCHARS(str, state.cursor, *ch, 1) { + stb_text_makeundo_insert(state, state.cursor, 1); + state.cursor += 1; + state.has_preferred_x = 0; + } + } + } + break retry; + +// #if #exists(STB_TEXTEDIT_K_INSERT) { +// case STB_TEXTEDIT_K_INSERT; +// state.insert_mode = !state.insert_mode; +// } + + case STB_TEXTEDIT_K_UNDO; + stb_text_undo(str, state); + state.has_preferred_x = 0; + + case STB_TEXTEDIT_K_REDO; + stb_text_redo(str, state); + state.has_preferred_x = 0; + + case STB_TEXTEDIT_K_LEFT; + // if currently there's a selection, move cursor to start of selection + if (STB_TEXT_HAS_SELECTION(state)) + stb_textedit_move_to_first(state); + else if state.cursor > 0 + state.cursor -= 1; + state.has_preferred_x = 0; + + case STB_TEXTEDIT_K_RIGHT; + // if currently there's a selection, move cursor to end of selection + if STB_TEXT_HAS_SELECTION(state) + stb_textedit_move_to_last(str, state); + else + state.cursor += 1; + stb_textedit_clamp(str, state); + state.has_preferred_x = 0; + + case STB_TEXTEDIT_K_LEFT | STB_TEXTEDIT_K_SHIFT; + stb_textedit_clamp(str, state); + stb_textedit_prep_selection_at_cursor(state); + // move selection left + if (state.select_end > 0) + state.select_end -= 1; + state.cursor = state.select_end; + state.has_preferred_x = 0; + +// #if #exists(STB_TEXTEDIT_MOVEWORDLEFT) { +// case STB_TEXTEDIT_K_WORDLEFT; +// if (STB_TEXT_HAS_SELECTION(state)) +// stb_textedit_move_to_first(state); +// else { +// state.cursor = STB_TEXTEDIT_MOVEWORDLEFT(str, state.cursor); +// stb_textedit_clamp( str, state ); +// } + +// case STB_TEXTEDIT_K_WORDLEFT | STB_TEXTEDIT_K_SHIFT; +// if !STB_TEXT_HAS_SELECTION( state ) +// stb_textedit_prep_selection_at_cursor(state); + +// state.cursor = STB_TEXTEDIT_MOVEWORDLEFT(str, state.cursor); +// state.select_end = state.cursor; + +// stb_textedit_clamp( str, state ); +// } + +// #if #exists(STB_TEXTEDIT_MOVEWORDRIGHT) { +// case STB_TEXTEDIT_K_WORDRIGHT; +// if (STB_TEXT_HAS_SELECTION(state)) { +// stb_textedit_move_to_last(str, state); +// } else { +// state.cursor = STB_TEXTEDIT_MOVEWORDRIGHT(str, state.cursor); +// stb_textedit_clamp(str, state); +// } + +// case STB_TEXTEDIT_K_WORDRIGHT | STB_TEXTEDIT_K_SHIFT; +// if !STB_TEXT_HAS_SELECTION(state) +// stb_textedit_prep_selection_at_cursor(state); + +// state.cursor = STB_TEXTEDIT_MOVEWORDRIGHT(str, state.cursor); +// state.select_end = state.cursor; + +// stb_textedit_clamp( str, state ); +// } + + case STB_TEXTEDIT_K_RIGHT | STB_TEXTEDIT_K_SHIFT; + stb_textedit_prep_selection_at_cursor(state); + // move selection right + state.select_end += 1; + stb_textedit_clamp(str, state); + state.cursor = state.select_end; + state.has_preferred_x = 0; + + case STB_TEXTEDIT_K_DOWN; + #through; + case STB_TEXTEDIT_K_DOWN | STB_TEXTEDIT_K_SHIFT; + #through; + case STB_TEXTEDIT_K_PGDOWN; + #through; + case STB_TEXTEDIT_K_PGDOWN | STB_TEXTEDIT_K_SHIFT; + find : StbFindState; + row : StbTexteditRow; + i : s32; + j : s32; + sel : s32 = xx ((key & STB_TEXTEDIT_K_SHIFT) != 0); + is_page : s32 = xx ((key & ~STB_TEXTEDIT_K_SHIFT) == STB_TEXTEDIT_K_PGDOWN); + row_count : s32 = ifx is_page then state.row_count_per_page else 1; + + if !is_page && state.single_line { + // on windows, up&down in single-line behave like left&right + key = STB_TEXTEDIT_K_RIGHT | (key & STB_TEXTEDIT_K_SHIFT); + continue retry; + } + + if sel + stb_textedit_prep_selection_at_cursor(state); + else if STB_TEXT_HAS_SELECTION(state) + stb_textedit_move_to_last(str, state); + + // compute current position of cursor point + stb_textedit_clamp(str, state); + stb_textedit_find_charpos(*find, str, state.cursor, state.single_line); + + for j : 0..row_count - 1 { + x, goal_x : float = ifx state.has_preferred_x then state.preferred_x else find.x; + start : s32 = find.first_char + find.length; + + if find.length == 0 + break; + + // now find character position down a row + state.cursor = start; + STB_TEXTEDIT_LAYOUTROW(*row, str, state.cursor); + x = row.x0; + for i : 0..row.num_chars - 1 { + dx : float = STB_TEXTEDIT_GETWIDTH(str, start, i); + #if #exists(STB_TEXTEDIT_GETWIDTH_NEWLINE) { + if dx == STB_TEXTEDIT_GETWIDTH_NEWLINE + break; + } + x += dx; + if x > goal_x + break; + state.cursor += 1; + } + stb_textedit_clamp(str, state); + + state.has_preferred_x = 1; + state.preferred_x = goal_x; + + if sel + state.select_end = state.cursor; + + // go to next line + find.first_char = find.first_char + find.length; + find.length = row.num_chars; + } + + case STB_TEXTEDIT_K_UP; + #through; + case STB_TEXTEDIT_K_UP | STB_TEXTEDIT_K_SHIFT; + #through; + case STB_TEXTEDIT_K_PGUP; + #through; + case STB_TEXTEDIT_K_PGUP | STB_TEXTEDIT_K_SHIFT; + find : StbFindState; + row : StbTexteditRow; + i : s32; + j : s32; + prev_scan : s32; + sel : s32 = xx ((key & STB_TEXTEDIT_K_SHIFT) != 0); + is_page : bool = (key & ~STB_TEXTEDIT_K_SHIFT) == STB_TEXTEDIT_K_PGUP; + row_count : s32 = ifx is_page then state.row_count_per_page else 1; + + if !is_page && state.single_line { + // on windows, up&down become left&right + key = STB_TEXTEDIT_K_LEFT | (key & STB_TEXTEDIT_K_SHIFT); + continue retry; + } + + if sel + stb_textedit_prep_selection_at_cursor(state); + else if STB_TEXT_HAS_SELECTION(state) + stb_textedit_move_to_first(state); + + // compute current position of cursor point + stb_textedit_clamp(str, state); + stb_textedit_find_charpos(*find, str, state.cursor, state.single_line); + + for j : 0..row_count - 1 { + x, goal_x : float = ifx state.has_preferred_x then state.preferred_x else find.x; + + // can only go up if there's a previous row + if find.prev_first == find.first_char + break; + + // now find character position up a row + state.cursor = find.prev_first; + STB_TEXTEDIT_LAYOUTROW(*row, str, state.cursor); + x = row.x0; + for i : 0..row.num_chars - 1 { + dx : float = STB_TEXTEDIT_GETWIDTH(str, find.prev_first, i); + #if #exists(STB_TEXTEDIT_GETWIDTH_NEWLINE) { + if dx == STB_TEXTEDIT_GETWIDTH_NEWLINE + break; + } + x += dx; + if x > goal_x + break; + state.cursor += 1; + } + stb_textedit_clamp(str, state); + + state.has_preferred_x = 1; + state.preferred_x = goal_x; + + if sel + state.select_end = state.cursor; + + // go to previous line + // (we need to scan previous line the hard way. maybe we could expose this as a new API function?) + prev_scan = ifx find.prev_first > 0 then find.prev_first - 1 else 0; + while prev_scan > 0 && STB_TEXTEDIT_GETCHAR(str, prev_scan - 1) != STB_TEXTEDIT_NEWLINE + prev_scan -= 1; + find.first_char = find.prev_first; + find.prev_first = prev_scan; + } + + case STB_TEXTEDIT_K_DELETE; + #through; + case STB_TEXTEDIT_K_DELETE | STB_TEXTEDIT_K_SHIFT; + if STB_TEXT_HAS_SELECTION(state) + stb_textedit_delete_selection(str, state); + else { + n : s32 = STB_TEXTEDIT_STRINGLEN(str); + if (state.cursor < n) + stb_textedit_delete(str, state, state.cursor, 1); + } + state.has_preferred_x = 0; + + case STB_TEXTEDIT_K_BACKSPACE; + #through; + case STB_TEXTEDIT_K_BACKSPACE | STB_TEXTEDIT_K_SHIFT; + if STB_TEXT_HAS_SELECTION(state) { + stb_textedit_delete_selection(str, state); + } else { + stb_textedit_clamp(str, state); + if (state.cursor > 0) { + stb_textedit_delete(str, state, state.cursor-1, 1); + state.cursor -= 1; + } + } + state.has_preferred_x = 0; + +// #if #exists(STB_TEXTEDIT_K_TEXTSTART2) { +// case STB_TEXTEDIT_K_TEXTSTART2; +// #through +// } + case STB_TEXTEDIT_K_TEXTSTART; + state.cursor = 0; + state.select_start = 0; + state.select_end = 0; + state.has_preferred_x = 0; + +// #if #exists(STB_TEXTEDIT_K_TEXTEND2) { +// case STB_TEXTEDIT_K_TEXTEND2; +// #through +// } + case STB_TEXTEDIT_K_TEXTEND; + state.cursor = STB_TEXTEDIT_STRINGLEN(str); + state.select_start = 0; + state.select_end = 0; + state.has_preferred_x = 0; + +// #if #exists(STB_TEXTEDIT_K_TEXTSTART2) { +// case STB_TEXTEDIT_K_TEXTSTART2 | STB_TEXTEDIT_K_SHIFT; +// #through +// } + case STB_TEXTEDIT_K_TEXTSTART | STB_TEXTEDIT_K_SHIFT; + stb_textedit_prep_selection_at_cursor(state); + state.cursor = 0; + state.select_end = 0; + state.has_preferred_x = 0; + +// #if #exists(STB_TEXTEDIT_K_TEXTEND2) { +// case STB_TEXTEDIT_K_TEXTEND2 | STB_TEXTEDIT_K_SHIFT; +// #through +// } + case STB_TEXTEDIT_K_TEXTEND | STB_TEXTEDIT_K_SHIFT; + stb_textedit_prep_selection_at_cursor(state); + state.cursor = STB_TEXTEDIT_STRINGLEN(str); + state.select_end = STB_TEXTEDIT_STRINGLEN(str); + state.has_preferred_x = 0; + + +// #if #exists(STB_TEXTEDIT_K_LINESTART2) { +// case STB_TEXTEDIT_K_LINESTART2; +// #through +// } + case STB_TEXTEDIT_K_LINESTART; + stb_textedit_clamp(str, state); + stb_textedit_move_to_first(state); + if (state.single_line) + state.cursor = 0; + else while state.cursor > 0 && STB_TEXTEDIT_GETCHAR(str, state.cursor-1) != STB_TEXTEDIT_NEWLINE + state.cursor -= 1; + state.has_preferred_x = 0; + +// #if #exists(STB_TEXTEDIT_K_LINEEND2) { +// case STB_TEXTEDIT_K_LINEEND2; +// #through +// } + case STB_TEXTEDIT_K_LINEEND; + n : s32 = STB_TEXTEDIT_STRINGLEN(str); + stb_textedit_clamp(str, state); + stb_textedit_move_to_first(state); + if (state.single_line) + state.cursor = n; + else while state.cursor < n && STB_TEXTEDIT_GETCHAR(str, state.cursor) != STB_TEXTEDIT_NEWLINE + state.cursor += 1; + state.has_preferred_x = 0; + +// #if #exists(STB_TEXTEDIT_K_LINESTART2) { +// case STB_TEXTEDIT_K_LINESTART2 | STB_TEXTEDIT_K_SHIFT; +// #through +// } + case STB_TEXTEDIT_K_LINESTART | STB_TEXTEDIT_K_SHIFT; + stb_textedit_clamp(str, state); + stb_textedit_prep_selection_at_cursor(state); + if state.single_line + state.cursor = 0; + else while state.cursor > 0 && STB_TEXTEDIT_GETCHAR(str, state.cursor-1) != STB_TEXTEDIT_NEWLINE + state.cursor -= 1; + state.select_end = state.cursor; + state.has_preferred_x = 0; + +// #if #exists(STB_TEXTEDIT_K_LINEEND2) { +// case STB_TEXTEDIT_K_LINEEND2 | STB_TEXTEDIT_K_SHIFT; +// #through +// } + case STB_TEXTEDIT_K_LINEEND | STB_TEXTEDIT_K_SHIFT; + n : s32 = STB_TEXTEDIT_STRINGLEN(str); + stb_textedit_clamp(str, state); + stb_textedit_prep_selection_at_cursor(state); + if state.single_line + state.cursor = n; + else while state.cursor < n && STB_TEXTEDIT_GETCHAR(str, state.cursor) != STB_TEXTEDIT_NEWLINE + state.cursor += 1; + state.select_end = state.cursor; + state.has_preferred_x = 0; + } +} +} + +///////////////////////////////////////////////////////////////////////////// +// +// Undo processing +// +// @OPTIMIZE: the undo/redo buffer should be circular + +stb_textedit_flush_redo :: (state: *StbUndoState) { + state.redo_point = STB_TEXTEDIT_UNDOSTATECOUNT; + state.redo_char_point = STB_TEXTEDIT_UNDOCHARCOUNT; +} + +// discard the oldest entry in the undo list +stb_textedit_discard_undo :: (state: *StbUndoState) { + if (state.undo_point > 0) { + // if the 0th undo state has characters, clean those up + if (state.undo_rec[0].char_storage >= 0) { + n : s32 = state.undo_rec[0].insert_length; + // delete n characters from all other records + state.undo_char_point -= n; + STB_TEXTEDIT_memmove(state.undo_char.data, xx (cast(u64, state.undo_char.data) + xx n), cast(s64, (state.undo_char_point * size_of(STB_TEXTEDIT_CHARTYPE)))); + for i : 0..state.undo_point - 1 { + if (state.undo_rec[i].char_storage >= 0) + state.undo_rec[i].char_storage -= n; // @OPTIMIZE: get rid of char_storage and infer it + } + } + state.undo_point -= 1; + STB_TEXTEDIT_memmove(state.undo_rec.data, state.undo_rec.data + 1, cast(s64, (state.undo_point * size_of(type_of(state.undo_rec[0]))))); + } +} + +// discard the oldest entry in the redo list--it's bad if this +// ever happens, but because undo & redo have to store the actual +// characters in different cases, the redo character buffer can +// fill up even though the undo buffer didn't +stb_textedit_discard_redo :: (state: *StbUndoState) { + k : s32 = STB_TEXTEDIT_UNDOSTATECOUNT - 1; + + if state.redo_point <= k { + // if the k'th undo state has characters, clean those up + if (state.undo_rec[k].char_storage >= 0) { + n : s32 = state.undo_rec[k].insert_length; + // move the remaining redo character data to the end of the buffer + state.redo_char_point += n; + STB_TEXTEDIT_memmove(xx (cast(u64, state.undo_char.data) + xx state.redo_char_point), xx (cast(u64, state.undo_char.data) + xx (state.redo_char_point - n)), cast(s64, ((STB_TEXTEDIT_UNDOCHARCOUNT - state.redo_char_point) * size_of(STB_TEXTEDIT_CHARTYPE)))); + // adjust the position of all the other records to account for above memmove + for i : state.redo_point..k - 1 + if (state.undo_rec[i].char_storage >= 0) + state.undo_rec[i].char_storage += n; + } + // now move all the redo records towards the end of the buffer; the first one is at 'redo_point' + STB_TEXTEDIT_memmove(state.undo_rec.data + cast(u64, state.redo_point + 1), state.undo_rec.data + cast(u64, state.redo_point), cast(s64, ((STB_TEXTEDIT_UNDOSTATECOUNT - state.redo_point) * size_of(type_of(state.undo_rec[0]))))); + // now move redo_point to point to the new one + state.redo_point += 1; + } +} + + stb_text_create_undo_record :: (state: *StbUndoState, numchars: s32) -> *StbUndoRecord { + // any time we create a new undo record, we discard redo + stb_textedit_flush_redo(state); + + // if we have no free records, we have to make room, by sliding the + // existing records down + if state.undo_point == STB_TEXTEDIT_UNDOSTATECOUNT + stb_textedit_discard_undo(state); + + // if the characters to store won't possibly fit in the buffer, we can't undo + if numchars > STB_TEXTEDIT_UNDOCHARCOUNT { + state.undo_point = 0; + state.undo_char_point = 0; + return null; + } + + // if we don't have enough free characters in the buffer, we have to make room + while state.undo_char_point + numchars > STB_TEXTEDIT_UNDOCHARCOUNT + stb_textedit_discard_undo(state); + + state.undo_point += 1; + + return *state.undo_rec[state.undo_point - 1]; +} + +stb_text_createundo :: (state: *StbUndoState, pos: s32, insert_len: s32, delete_len: s32) -> *STB_TEXTEDIT_CHARTYPE { + r : *StbUndoRecord = stb_text_create_undo_record(state, insert_len); + if r == null + return null; + + r.where = pos; + r.insert_length = cast(STB_TEXTEDIT_POSITIONTYPE, insert_len); + r.delete_length = cast(STB_TEXTEDIT_POSITIONTYPE, delete_len); + + if insert_len == 0 { + r.char_storage = -1; + return null; + } else { + r.char_storage = state.undo_char_point; + state.undo_char_point += insert_len; + return *state.undo_char[r.char_storage]; + } +} + +stb_text_undo :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState) { + s : *StbUndoState = *state.undostate; + u : StbUndoRecord; + r : *StbUndoRecord; + if s.undo_point == 0 + return; + + // we need to do two things: apply the undo record, and create a redo record + u = s.undo_rec[s.undo_point-1]; + r = *s.undo_rec[s.redo_point-1]; + r.char_storage = -1; + + r.insert_length = u.delete_length; + r.delete_length = u.insert_length; + r.where = u.where; + + if u.delete_length { + // if the undo record says to delete characters, then the redo record will + // need to re-insert the characters that get deleted, so we need to store + // them. + + // there are three cases: + // there's enough room to store the characters + // characters stored for *redoing* don't leave room for redo + // characters stored for *undoing* don't leave room for redo + // if the last is true, we have to bail + + if s.undo_char_point + u.delete_length >= STB_TEXTEDIT_UNDOCHARCOUNT { + // the undo records take up too much character space; there's no space to store the redo characters + r.insert_length = 0; + } else { + i : s32; + + // there's definitely room to store the characters eventually + while (s.undo_char_point + u.delete_length > s.redo_char_point) { + // should never happen: + if s.redo_point == STB_TEXTEDIT_UNDOSTATECOUNT + return; + // there's currently not enough room, so discard a redo record + stb_textedit_discard_redo(s); + } + r = *s.undo_rec[s.redo_point - 1]; + + r.char_storage = s.redo_char_point - u.delete_length; + s.redo_char_point = s.redo_char_point - u.delete_length; + + // now save the characters + for i : 0..u.delete_length - 1 + s.undo_char[r.char_storage + i] = STB_TEXTEDIT_GETCHAR(str, u.where + i); + } + + // now we can carry out the deletion + STB_TEXTEDIT_DELETECHARS(str, u.where, u.delete_length); + } + + // check type of recorded action: + if u.insert_length { + // easy case: was a deletion, so we need to insert n characters + STB_TEXTEDIT_INSERTCHARS(str, u.where, *s.undo_char[u.char_storage], u.insert_length); + s.undo_char_point -= u.insert_length; + } + + state.cursor = u.where + u.insert_length; + + s.undo_point -= 1; + s.redo_point -= 1; +} + +stb_text_redo :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState) { + s : *StbUndoState = *state.undostate; + u : *StbUndoRecord; + r : StbUndoRecord; + if s.redo_point == STB_TEXTEDIT_UNDOSTATECOUNT + return; + + // we need to do two things: apply the redo record, and create an undo record + u = *s.undo_rec[s.undo_point]; + r = s.undo_rec[s.redo_point]; + + // we KNOW there must be room for the undo record, because the redo record + // was derived from an undo record + + u.delete_length = r.insert_length; + u.insert_length = r.delete_length; + u.where = r.where; + u.char_storage = -1; + + if r.delete_length { + // the redo record requires us to delete characters, so the undo record + // needs to store the characters + + if (s.undo_char_point + u.insert_length > s.redo_char_point) { + u.insert_length = 0; + u.delete_length = 0; + } else { + u.char_storage = s.undo_char_point; + s.undo_char_point = s.undo_char_point + u.insert_length; + + // now save the characters + for i : 0..u.insert_length - 1 + s.undo_char[u.char_storage + i] = STB_TEXTEDIT_GETCHAR(str, u.where + i); + } + + STB_TEXTEDIT_DELETECHARS(str, r.where, r.delete_length); + } + + if r.insert_length { + // easy case: need to insert n characters + STB_TEXTEDIT_INSERTCHARS(str, r.where, *s.undo_char[r.char_storage], r.insert_length); + s.redo_char_point += r.insert_length; + } + + state.cursor = r.where + r.insert_length; + + s.undo_point += 1; + s.redo_point += 1; +} + +stb_text_makeundo_insert :: (state: *STB_TexteditState, where: s32, length: s32) { + stb_text_createundo(*state.undostate, where, 0, length); +} + +stb_text_makeundo_delete :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState, where: s32, length: s32) { + p: *STB_TEXTEDIT_CHARTYPE = stb_text_createundo(*state.undostate, where, length, 0); + if p { + for i : 0..length - 1 + p[i] = STB_TEXTEDIT_GETCHAR(str, where + i); + } +} + +stb_text_makeundo_replace :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState, where: s32, old_length: s32, new_length: s32) { + p : *STB_TEXTEDIT_CHARTYPE = stb_text_createundo(*state.undostate, where, old_length, new_length); + if p { + for i : 0..old_length - 1 { + p[i] = STB_TEXTEDIT_GETCHAR(str, where + i); + } + } +} + +// reset the state to default +stb_textedit_clear_state :: (state: *STB_TexteditState, is_single_line: s32) { + state.undostate.undo_point = 0; + state.undostate.undo_char_point = 0; + state.undostate.redo_point = STB_TEXTEDIT_UNDOSTATECOUNT; + state.undostate.redo_char_point = STB_TEXTEDIT_UNDOCHARCOUNT; + state.select_end = 0; + state.select_start = 0; + state.cursor = 0; + state.has_preferred_x = 0; + state.preferred_x = 0; + state.cursor_at_end_of_line = 0; + state.initialized = 1; + state.single_line = cast(u8, is_single_line); + state.insert_mode = 0; + state.row_count_per_page = 0; +} + +// API initialize +stb_textedit_initialize_state :: (state: *STB_TexteditState, is_single_line: s32) { + stb_textedit_clear_state(state, is_single_line); +} + +stb_textedit_paste :: (str: *STB_TEXTEDIT_STRING, state: *STB_TexteditState, ctext: *STB_TEXTEDIT_CHARTYPE, len: s32) -> s32 { + return stb_textedit_paste_internal(str, state, cast(*STB_TEXTEDIT_CHARTYPE, ctext), len); +} + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/src/text.jai b/src/text.jai index 3f111b5..5619b82 100644 --- a/src/text.jai +++ b/src/text.jai @@ -220,8 +220,8 @@ render_text :: (font: *Font, text: string, pos: Vector2, window_space: bool = tr return; // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); glEnable(GL_BLEND); glDisable(GL_MULTISAMPLE); @@ -322,7 +322,7 @@ render_text :: (font: *Font, text: string, pos: Vector2, window_space: bool = tr render_batch(.TRIANGLES, vertices, *text_shader, *font.texture, view, proj); // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); } // string_size :: (font: *Font, Cursor: *kbts_cursor, text: string, MainDirection: kbts_direction, Direction: kbts_direction, Script: kbts_script) -> Vector2 { diff --git a/src/ui.jai b/src/ui.jai index 8cfa838..94adb24 100644 --- a/src/ui.jai +++ b/src/ui.jai @@ -78,7 +78,7 @@ UIContext :: struct { sizing_y : UISizing; offaxis_layout : UIOffAxisLayout; - font : *Simp.Dynamic_Font; + // font : *Simp.Dynamic_Font; cfont : *Font; margin : s32 = 2; @@ -147,7 +147,7 @@ Rect :: struct { interacted : bool; - last_frame : s64; + last_frame : u64; } Label :: struct { @@ -172,7 +172,7 @@ FontIcon :: struct { #as using rect : Rect; rect.type = .FONTICON; - font : *Simp.Dynamic_Font; + font : *Font; name : string; colour : Vector4; } @@ -186,7 +186,7 @@ Button :: struct { active_frame : *Texture; icon : *Texture; - font : *Simp.Dynamic_Font; + font : *Font; font_colour : Vector4; text : string; } @@ -270,7 +270,7 @@ ui_end_frame :: () { } for ui_context.rects { - if program.frame_number > it.last_frame { + if frame > it.last_frame { remove it; } @@ -324,7 +324,7 @@ ui_begin :: (s: string) { root.colours = ui_context.colours; } - root.last_frame = program.frame_number; + root.last_frame = frame; root.cursor = .{}; if root.anchor == .BOTTOM_LEFT { @@ -335,7 +335,7 @@ ui_begin :: (s: string) { root.pos = .{0.0, 0.0}; } } else if root.anchor == .TOP_LEFT { - root.pos = .{0.0, xx program.window_height}; + root.pos = .{0.0, xx window_height}; } root.first = null; @@ -358,8 +358,8 @@ ui_end :: () { ui_draw_root :: (using rect: *Rect) { // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); if anchor == .TOP_LEFT && layout == .TTB { p := Vector2.{rect.pos.x + margin + padding, rect.pos.y + margin + padding - rect.size.y}; @@ -369,7 +369,7 @@ ui_draw_root :: (using rect: *Rect) { } // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); } global_max_width : float = 100.0; @@ -427,8 +427,8 @@ ui_draw_label :: (using label: *Label) { // } // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); if ui_context.show_debug { render_rectangle(pos, size); @@ -439,7 +439,7 @@ ui_draw_label :: (using label: *Label) { render_panel(null, pos + v2(margin), size - 2 * v2(margin), colours.background, colours.background, border_size); // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); //midline : Vector2 = pos + Vector2.{cast(float, margin + padding), xx (size.y / 2.0)}; @@ -490,8 +490,8 @@ ui_icon :: (s: string, texture: *Texture, size: Vector2) { ui_draw_icon :: (using icon: *Icon) { // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); if ui_context.show_debug { render_rectangle(pos, size); @@ -502,10 +502,10 @@ ui_draw_icon :: (using icon: *Icon) { render_texture(texture, pos + v2(margin) + v2(padding), min_size); // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); } -ui_font_icon :: (font: *Simp.Dynamic_Font, s: string, size: Vector2, colour: Vector4 = .{1, 1, 1, 1}) { +ui_font_icon :: (font: *Font, s: string, size: Vector2, colour: Vector4 = .{1, 1, 1, 1}) { text, key := ui_decompose_and_generate_id(peek(ui_context.stack), s); success, ptr := table_find_new(*ui_context.rects, key); icon : *FontIcon = xx ptr; @@ -540,13 +540,13 @@ ui_font_icon :: (font: *Simp.Dynamic_Font, s: string, size: Vector2, colour: Vec ui_draw_font_icon :: (using font_icon: *FontIcon) { midline : Vector2 = pos + Vector2.{cast(float, margin + border_size + padding), xx (size.y / 2.0)}; - label_size := Vector2.{xx Simp.prepare_icon(font, name), xx font.character_height}; + // label_size := Vector2.{xx Simp.prepare_icon(font, name), xx font.character_height}; - Simp.draw_prepared_text(font, xx midline.x, xx (midline.y - label_size.y / 2.0), colour); + // Simp.draw_prepared_text(font, xx midline.x, xx (midline.y - label_size.y / 2.0), colour); // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); if ui_context.show_debug { render_rectangle(pos, size); @@ -555,7 +555,7 @@ ui_draw_font_icon :: (using font_icon: *FontIcon) { } // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); } ui_button :: (s: string = "", icon_texture: *Texture = null, font_colour := Vector4.{1, 1, 1, 1}, draw_frame := true) -> bool { @@ -648,8 +648,8 @@ ui_button :: (s: string = "", icon_texture: *Texture = null, font_colour := Vect ui_draw_button :: (using button: *Button) { // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); if active { render_panel(active_frame, pos + v2(margin), size - 2 * v2(margin), colours.active, colours.active, border_size); @@ -675,11 +675,11 @@ ui_draw_button :: (using button: *Button) { } // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); - label_size := Vector2.{xx Simp.prepare_text(button.font, button.text), xx button.font.character_height}; + // label_size := Vector2.{xx Simp.prepare_text(button.font, button.text), xx button.font.character_height}; - Simp.draw_prepared_text(button.font, xx midline.x, xx (midline.y - label_size.y / 2.0), font_colour); + // Simp.draw_prepared_text(button.font, xx midline.x, xx (midline.y - label_size.y / 2.0), font_colour); } ui_scrollbar :: (s: string = "", icon_texture: *Texture = null, font_colour := Vector4.{1, 1, 1, 1}, draw_frame := true) -> bool { @@ -771,8 +771,8 @@ ui_scrollbar :: (s: string = "", icon_texture: *Texture = null, font_colour := V ui_draw_scroll_bar :: (using scroll_bar: *ScrollBar) { // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); scrollbar := cast(*ScrollBar, next); @@ -789,7 +789,7 @@ ui_draw_scroll_bar :: (using scroll_bar: *ScrollBar) { .{0.94, 0.94, 0.94, 0.6}, .{0.94, 0.94, 0.94, 0.6}, 0); // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); } ui_text_input :: (s: string, font_colour := Vector4.{1, 1, 1, 1}) { @@ -873,8 +873,8 @@ ui_text_input :: (s: string, font_colour := Vector4.{1, 1, 1, 1}) { ui_draw_text_input :: (using text_input: *TextInput) { // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); // if virtual_input.show_ui_debug_frames { // render_rectangle(pos, size); @@ -891,7 +891,7 @@ ui_draw_text_input :: (using text_input: *TextInput) { } // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); if text_input.text.count > 0 { //midline : Vector2 = pos + Vector2.{cast(float, margin + border_size + padding), xx (size.y / 2.0)}; @@ -1001,8 +1001,8 @@ ui_end_container :: () { ui_draw_container :: (using container: *Container) { // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); if gradient { render_panel(null, pos + v2(margin), size - 2 * v2(margin), colour_left, colour_right, border_size); @@ -1017,7 +1017,7 @@ ui_draw_container :: (using container: *Container) { } // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); } ui_spacing :: (s: string) { @@ -1090,8 +1090,8 @@ ui_progress_bar :: (s: string = "", progress: float, size: Vector2, background : ui_draw_progress_bar :: (using bar: *ProgressBar) { // Backup GL state - opengl_state : OpenGLState; - save_opengl_state(*opengl_state); + // opengl_state : OpenGLState; + // save_opengl_state(*opengl_state); render_panel(null, pos + v2(margin), min_size, background, background, border_size, 10.0); render_panel(null, pos + v2(margin), .{min_size.x * progress, min_size.y}, foreground, foreground, border_size, 10.0); @@ -1103,7 +1103,7 @@ ui_draw_progress_bar :: (using bar: *ProgressBar) { } // Restore modified GL state - restore_opengl_state(*opengl_state); + // restore_opengl_state(*opengl_state); } ui_decompose_and_generate_id :: (parent: *Rect, s: string) -> string, UIKey {