From cec6ffd6de4cbb204f963100914f4e8b306015d7 Mon Sep 17 00:00:00 2001
From: anon <anon@anon.anon>
Date: Tue, 14 Mar 2023 21:12:15 +0100
Subject: [PATCH] working demo

---
 FIGlib-test    |  Bin 87952 -> 79064 bytes
 FIGlib.h       | 3547 +++++++++++++++++++++++-------------------------
 figlet.c       |  205 ++-
 tests/FIGlib.c |   10 +-
 4 files changed, 1881 insertions(+), 1881 deletions(-)

diff --git a/FIGlib-test b/FIGlib-test
index 2aa363b04f771f9e345316a10122d8e5af2130f3..65bfdd27bf12273cfc2bc11c461b492f8e99036b 100755
GIT binary patch
literal 79064
zcmeFa33yaR_BVWQci&ETwhknL009~dkjR#>CO{y8038e%Sp-1@3<NR;5<^EoS%RG)
zJxvfCN6|q=$5F-^m2qVp!LUeh8yVbi1p&32h~kD3l)S%R-MZ<U2=9NMZ+V~Zc|Pw$
z-KulyoKvSxojO&w?oG31Y{58-sw&21RYod=(i3z{j;xr`J4}<KWGXRAj?z=<q1aJx
zLo(=E=SM84#AW0T9aOBy$(O{!Me<}Ftr)q{I&<<}>Z*&;Ym8ip(_!*yEK0a_{>Ct!
z&d81W=JpEpdZkrfC*>KrnUA(PQmXSES=lnLlKnnnbVkadxyTokd_l=)<chSXksJ1;
z7^X}qw{@O_I$k;At|+bfmP@|Yxm(g3xuNcq&%E>hue4Vv`3k4&f?MaMa-faeXzwcU
z(Jue(CC#Z!mhD|?98zV!ja)Xb^e-*Be#oHyrStoimMp1U-gkNCkiJ6(^;=rjZ-7vN
zdZi=Lr^Zj3#^I<VPKv`EQU&Y;j+aHkhJ4aeN5bUiMP6fgS#~3_Ui4diP^nUrEW~w3
zN<m8Pydn8N3;w;hc-p+UtZxI!1NZ;f7U+v!0bnmyx$6@6w=aS328AvrhkCk^T3>YI
zi_w2{3H$?>z|X!!yRTn@{+3J7FT4c(H<!SVy9B;7@NT5mS3M9H>#z3``mDYLeaB1C
z&%Xrz#!JZAaS8mCOW?Ij$lrSj`shp0_W`{dsr5Axh>O{WGvH$QVV979;u7>1fN!I8
zQ07*lfXj$;lOTulru8)s2-25V=`{xZK+qFk)e1jT(l3{I&SP=S$)7rL&in-x3l^3v
z^)9HGI&n;C*^&iQ=UrdAK$$aV;o`C-bC!DNRe0yjQ3UBl31=3SmMvYN%q%Nkutb?N
zbKwGSky2LfEm<;OS?Zl%vP3Db1O~UIkh#=bQB=NSPSK(p1W+CZio7ez7tHaNRhE}8
zsF+h)RwM}K72QDMImPozN`WY^C|Tky7VO0p3l=B~mX~<Z$~@jGDvB0Wh{hJps~}uT
zedg$Lua^=RFIa3e3FXQv1!EET=gcWK312*~RM!9zwMg1v@jUbeObaS1n#Fp{O3Rit
zt6Q{u-kjo+CG$#4ZeBnIsLz}^B}>bSva;qZU0O76NwK0UAZizvD-d5?vJiI!X#zzI
z)<cx>1^J`L%o)&cXmcrJP;+tMz;Ll&7#%JR3>OFV8yqIakXsP1typtak!#{kj2#$N
ziGb(X0XcCeCR}3$r_M_p<2)}F^tZ$3jCHGhNeOl`PURknyL0nhSOy%*pC$aXfFqPA
zB<$@_f~Cf;{8PdSf?rc!mhdxz-ln`M;mVGrw<;e<I9||Ol+OY4GWILRe27cb@yFzT
z#K0et`$R{TUT@$H_{bU^&o!)huAqF(gctiVolFUu@GgmCcE*J7WWqO^@ZC&!WByaN
z+k`jfIq~LrV9aOYQ%v+#RXRZYWhT5L+l>HDnoQI>On8flKF)+U#+=njCcIeZC6C*L
zXB)<qYQh_~W?i}oZ|pgU&otp9iI7*02_I!3k$X(|XcNBBgqK@vQ9Hwgk2TTHHQ^1P
zX7wTyzKw~#+=Mr;1ItbLcoTh<2`^nx)UG$-rOOKZCKJA$NzN7%zP$;*&4f=f;kTRc
z9ZdKgCVWQ|ey0haY{J)>@Z3un*Fh7$i-AOb$b|1|!v9wM%>w^-EbyJH%Q=tlONS?*
zy<djuUsLC`G#&Ez_B-|ou}y<tU7{#WJzmG%)ip;U{UX+cjyE+m6>kzS17PTI7-rxL
z?G3{Wc%i4lFc*T*Lt&V~HFQT9W*`jR8ipAFLlt3|fiHA@7-ql=O%B5hbfM8<m;o*{
zAPh6Gg}R4f2DDJyFw8&}vV>tSM4@jlH20SQEp$8#GmwQ2hhYY=(B3f2z!iEb3^QPb
z9ty(@RG~Y<FauQR)-cS#6sicr3`n8t!!QF;XmS{401Az6hMRiCV)Tk#UGo$%eoZ~>
zi(A4MN?XEbTftwof<JEsf6@wmw-x;FR`7vV@a|UdbFJVfTEUOBg70qy-_;7<*a}|P
z3SQj`zNr<wq!nD;3cjute03{$QY&~|D|lopct|ts3D|nj-Ca@P@#B2Ws0%(g5c9QG
z+cyH4Upo&LKriahXMjL*KRg3j1XdVi+pt0M)Mh^b5<qth5m`V-Zq|{jbmZr~SSO-D
zaX(krYAC?zFa0OubiV&T*LnQMJ-(A?3a5_EsLOZ-a_3>fG$s0OP?Yb(Ou&Bw3^Y5%
zEUVF*h)`3^GD3~B>6oi)6@~AUIq3HY`oS+SOS|ClpYiNzw0ib@HOiwN@cie3Hvs|$
zO976iW4c`oe#WD!?8i~9RQ8_c@nyGV(c}Nj8|?{Xw*wFi{oK?PoDW?OXf=S<+2Cz%
zpZuX^sFeETPS2>zy*hVV?$l{hX!pE8kH3H^_w4>EZ<_15#N`0|=lwqbF{<)%|CyZ3
z_q=WVjX9a`dLw<=LcVM40a|j_?A&W}XXjp*JBRIo&UI%U$Xs{s1+Uv1U0vsmt3K?i
z`8}d#b)Bo`DMV4ik0H;=Y^aO`nd+*!0o5p3yzy1%=eVj%0p?Wwg3?~lp~B{>-i~-&
zb$+F*`Zl2QT)R&reFq|7J_e?sHoF~8JM;W!3;a#ND_{){Mdv*KS1|r}S+LMh;{1F4
zK~D`77zJyflEhuY#AiW#fW(oK_=q586h#9&Q6n2Tb-qOdcarB_;+h-y1d&QMuq#Z=
z1{RX|uaa1A;2$7H12e-7_`^Kx!C>-KwrF5gxPfcK#B9JpVo!?(3iSql&TQ^MYM6%&
zyo;J(LW>5H!wsB2r+2p}x)0*NlK2ba&|SR;U;l!I#F$hVF^Bi&s`IldT{~C8Q!z}l
zUDdCH1f^M(u>x6j9=M&rRh_>jOt;Ea{jg4VOEVpCn*?2Im@ds#y;7%3t&EfMfLjDy
z@g{h;?_`{-dZys&ALhE&RXtAU>JRDHK((s#zzq;|BP-kQoS|zw!d2Y`IHNy$)M(-B
zRUi~@2y@&qlve#J_|8ve2lyB+6q*7l#hd7=peqq{XM>MRI^A;5f-ZO09EcN+UPEPQ
zKv&J17=Tc^a8z2oH`s$Ww%}a>UieM2E|{}|4n2`HHJELkC~6l+07T~y1w+3R`uLB8
zMuD?=yvT?KUI7LB5!0d{iJ;_U^tPvd-p-tJ-T}G0sd1==%8U7#4?P<~y5b|DxEO(&
zM^MVB3+*C8=a>k(-07z1lNyLwz7Wx@Nc*K2VW%J^4yteb4AZ?JFnBU*eA!cQR|B21
zk>$GXulN0=B4RaxI=|L-z;*v#k3TQPk?VZVe{BllXy?A5%Ui!PrBkl|O%dPo1N}Vy
zuY-w=uvVaVu7A(inv<^T&uQ|k`U3ygd9EuPgFpTVs}&tWZLVwg%0$SXn%GoRw<bB1
z4PAsBkMES~+I_Q{>kFx_>YhOR8+#mu81HAU-IZ|j3vO3Ucc63sg&Q{~`XW={{~+JD
zPaW;r?d=R(UT}L)2hdOTRmjUrd$qc*a<Ff&nw#|=6gijgJK*s6_Bjf&yeV*k9M}ty
zHZ{-RXmUV(eaNXk>wTpP9aSp#X4LtorX&ZuVO9oE7@_(;XlnSoPKR!ZE_q~^5*sG|
zsz2UgMqfhczuuY3A-ONGBL)7$`A~2S^iK@ypP;@P8V>D>HwgxRqwm;J(YaTlKtjlk
zD!JZJUURjpnxPRSaiL#O$P27QsUzhyFUnl6xGn|bIVOnXnpm~5);%;Io)U<84cTr)
zeJsI=y$4}h%mm>}R5h4`68Wd>?$3Jv`QXU25aQpvlhp|4Ugs=hUG?~n?!J~xoj@{+
zQ|6C#uIK9Zkw158zW@7a9{(>>f*=0?zwv+J@$U;BMls`X){!;2Y5P1yA9~b}J+9re
zmFf?@!-IAz8;HxOYe+QKeP5l5`fD{3bj)|{j<y8`{XT2Zz246<4$tx*!r}>4aui|Y
zS+o6zBrNoY>J44x_yxu|Jhg?Y$3Mm4dQR~*Mta-(8e?$lt*$tZUIZ^k2Yii9l_%LZ
z1?c6yJS~|-8|3`B`mpzXkM9PD>a(h|_L2Kb^a|XrKkjY#*mxfDpUu6xpmxwu?h^9-
zKMPBE{BJe%f&5mY^RvG44lSr%tmdvC3ptVAUQ}*af&Vo1JIoe-ueVV7_JOh7gf+N?
z|4sCNm3zPr_c~^{HnhinjQS5SH&T@u=}mM!uT96wW~g55AFDL%&pj}<DH1nDY1qkz
zx`~D&y&A3YM!1&X-DvnOqkjbft>$_<P|QsOm?eIVETc|%RVWHlid*`luSs*=c7iTc
zo0u~gGas`OPnbov7d+~rk=*j-D1pSQg~-7#W+=)_^iO@|2;K5M=Yoy`|AVOZ)DC_C
z8TPE#q4Fg@-O<TIh2O!8YGW1&lElR(LA8T7K*eBxkVE-{^Mv$3b{Ps_*r79|fkdAf
z6gEb0_l47w5UaU6H2f+1L2{Ag%(wK~Y`*~?1H8}Fcf($}(+X;r*o;~6!xXqD4ZxvF
zHxCv3bNyI|epxNZI$e1z_ds5XO|+yBvG8{e)N=H*;T>HcW4`@7ZAzf4uR+cAC#NhQ
zogY9{r`zWvvcd0DeZQ=^DFJab-&dOA5JZ%@uXt1NPc&LUIh(ggb$dUS5?1WSqz%TQ
zDmRdv;wcI??3VLVv?tb}eE%<U6P#J>D$}f3NIibU-T8b(N#&SeX-UnfLoeKlD=jZ2
zE_fx(m>U?Y<kc>38tY%BjIC*Mt-nLXViXt)bv;mbqCQLex~e0I_brCDyHQe_>75s&
zPj^+@o9TV^YVM2lii{6EwWTR>4P(Oo*s`T`C~ONho`DI9P{K+FQv?R>2#);*C`8Y^
zT-TEydD4RFzFgneDs@<~3#(r62h{ryaN<{=LPNFds;FXMm6E*%YTUG)Yo@BpsC*GJ
zKFNhrqBoSm@FzydpTs<MzNfctGFQ!WkOSw+G-kDUI>5YU^SQfWzh=Yvf5Z|%T}sdn
zoAx!PyK2q>X{fsVx|Y3Fu*&4V$ioU>;|zT*(G4sNCJs?v1-pnN6dWf7he`#OUBo8h
z$xonuXaqDN&6ltp8*lh?P(@Lk|40XqYvBowK!h)-`XgNH*FuaZFkXh`=^Sv6-<ING
z_{+f^@elWFD@SsIENnGFY6~BzI+wU?E~ae^rmgF_!=9pq%^vmDkxj=r-$aPZs6%}A
zV4Z|B_D&Ga=&JdM&HDDoG0f*E!GRp~Ee$osdV_i82CCtHeO`^|>x~<++#6k6cnHf-
zUDY|~vL~c$kN<PbLbMS48e2GcdrHF}z*J51C_DKwqQMu2qXCD?VJ%(mPH`4BHw=rj
zrou2R&aSv~k@QjIPY=Uln7BcZ^%1O(0~}oYm0^E`PAuLxV$_6Dql8g4vA%`vquYV=
zc^c@8zV`Tk#K3(gHV=>BX$IDJt^Wnm%_C5inT3U(kE3s)MvzQ^!<$LODm%ngeJk+3
z#zC%{zk)Jgtu1Ww$K&yF{mf>14_4(X^!dIV&$SeIO7+LP)<?7=L93O;vM$hEr!VSN
znS+Ezl{j`_aBRRXPA}bv4Lkeqsvb%nIF_rrFH3ul#bG6>!1e`xcM3-lx1m^X<6|;C
z!~roGb+cxNc5qh$kq#Kv*T{~GLqL6<-K#dc!%=^H(A(VXIXVS>dA>0Fb+S2YxVa>~
zIkYC4n>Bl1I6kqxEvNDDvQx}CXm~WZ9x&UlnS)^t#EX+h!{5T=*>JD$f6&hWJ;?X~
zf#*3&C^mG;5jqVMI{AWCFvAVAn$1v!BFsR&Lf?z#bD$u0J7PYC4pN?gcUFM}6QJRx
zO_Uz|lKOENLSE3ARzUqc7#pC^a;N9}f8?W!ST?43)_!>qGE5O->_HskjKk}6kH6mI
zuc3zrA7~IkCf|P`c&8|0IQ9koDCVi(dHkQ|)y}tCK%4~PiA5*#Yx7dtW4r3<p`5`O
zr0wzej-T;ly^bTMwO{g0s>in>rIClXKvp)aJ>G<}C+%%<P%(y{QG0EQOKg4-+C07!
zXM)*ii|as=r?!TZ5RIiGYe+ThFE+spgz==Tt<{NYNkqQo1^(j&I7oq&DoEh}pum5@
zlZMBx`U3TMa3gVnX9YD#`U9+~s~nCE&Yo1L1Jvt+V%kAdAbXe{s9kVmmT`V$_8;ui
z4hcU9JWCVi*Ium__&<fDiA86FPo6?_e_oq}?L9EXqy4sl!QsG3C2L1mgRcYh1pY{i
zdi?JTW%meWKlR`-Cb(EsH!HjvAfJ}ofjl%0H~2?ELZg1T9Xu1#pC@vsqeI{I!s1~Z
zoQVyP$29tRDVf;Ly~!C1dDRDO*aX4?2rQki$H79re}8Z^n`Y%LsPy=)*e|#}wVmhm
zhSP!)xcVHo$l(U5+<ah`=cS~3{4rf2f`}wMZ~6M9sLQXB8zk;H3b;W+q^exg+t=7<
zbvs|MudmUwtPA$1K971t?oT<P_i=67t;gMrI_{7*a)(5TE1r<+2(d@dZ*H3Z#>G9;
zw78$b;T!^t2SnlZJ(LD=2-VjQeS_u+cvJ8+1iD<GEkzBk!!wHBVl+yuP13=|0z`ic
zfJ+B`vB$Nfj(ttfPdkuNSL`aSbEVl*f+w*z6&5WBWXDa%UiiBpTP?%7OPlthW-w^J
zKLYmp`fA#g;jqA8o@Ch7)h5RgdQrxOdhIC?ai1RgE9bnSKUBa#-V|<a@I#;r)}S@f
z5I5L*Lv}Q@PBbJ2O%7gYmS{k!*CwNmDunXQ^7U@p@sOdHHXufe5n!KF5h+~jJD`bQ
zjqeETDC1ZmHoy~cKug0483q2*l=R@!d^QluXF()N1!-sU{q^X~U$G66&e->zY3R((
zFJx!FfqupLt|bR}dqX%Ro~&SVOqrO+Kx!Cqc}pWMgP%)(sn>o7I(W1ang{HrdTl0P
zjD`}rN{1%^=B4*H8fuFEy4Lg4yI=Lw*EpGe+~2j4CwRVKy05Xj>$XWKBi2t(gYk=O
zw;GRKd0e4Oy;t}eD_k{~gGO&-yW!QY^<SgmU$+rV_iJ6DmToUUf^FzwtT2o_x`g7e
zgk6`E@aa@T!gxx!9uf-tpTESu!|FvCh0r94qn`nHC2_+fj=llhaN>IExD0e4csUU~
zd6WCtFM^)WfjOc36;uvp0){`-oI#KEE{uae<@;X_eW_!D?LYzBg%T0c$YGc8c!tG5
z_Vg*RV<4sqnQ@eItUDaT1v338<%iF(e4RNdsMB=n$;k5kN3bB*CO*<bat1#Fq0X`w
zC4Ie|f~Z$brWzc582i(}aP;j7>@qxoSq{`xo)-H#{k$X4d8(vOGU)wBNf_)y9YFmx
zwmIpbndPb1Qjqh)TcSi1&5x{N{~pkun5-x@b*q!1Y#`A|(Sd}$9vsOWuqavDCe*I^
zyk0wroELmnO57*-^)pH=^e-i$R)6m0il2mG^aT3;2W+O$U!CFr9-W&fR7EgiSn(8P
zr-81(@5Yi3MYjUT$HBp#FRZ~#5HilaA%dNlZj50+!6Ob-r--1zS5hYnYM&91tIZe(
zA2m0&0fn>={q)rCCg{iU9fuvB2v5^M@d72l6AS!526vr+1Eig)oxx?Un&iRXiBZMz
z#l8ktG1j}FDjow*pbp1W3HGyjSE=sGFES1T?M?S=aXoh@KMGSC+K6@8pnsaC$xN_&
zPvbG&wErtQjCK!HCx~tY?>i2~V1R)3r>pRoc?+Iua?mtRu15re=}?Z_9jf*^n@8}j
z9Rqb7OBZdoxoS28hdoGauIstj^^w~xu9`c6;rT*V-`5Lairdd(Qg{OT2$<F>ZpA%o
z_jA0$>y&=JlyNw84JJWzy!Rv2y_X;G#x~;NKeDmbgZXmSe{fIG>fiI7=PwPLrM(Z>
zQuJ5cxq(=Joj)=+P+<SrUtsw;R0?tax?I=u1@;TYz+4E;)Mwc@SJGW#Izm%SnKfPM
zBx1S+AB9!)NmGkbaQ&z3MfM(@{uDA}R!#s@a78oq9F$DEQ;vszo`L<z43IYOPu70v
z!H7ZT;}F)uS2KZ!ul7K|5Oz;S=q{+8pVAwnRDi>V{ssQe#A8uBSJam0i1KhJABQ_1
z@n9mIoAVEZ6XLu8=Oq1=;EUYvaX<%>AN$Hb9TNy|93029rD~-uJ<?V4IcEsZ&}w6>
z>@{|)*y^OfOpQ3MDnxfS;$tC!1Av9G5dL0Ukdj#dpieLY2FnYSru4yP#GUIukh}I5
zy0+`~1#Gl-@CYz-TFgP)(52=BG?(kUU~_FegcA2Axi7*FO3m5T-NNyPua5Ss!JDy9
z%gdUd61S>>ZA61nb5)-NJxX?0^>LH}F$K`G=9M*(_1Z|3C~R!aX>rb+=b97@Xsplm
zy*xh;i*qz}c#CX#Dan3qFscHH!ztkKib&uR{90e)wEo1^t%wb1ol#Qj{2~`oC}>4r
zussmA9f4jH6!kqg5xtdrN53`<EED}-=kNK<%KiLXM@he5&_{zl-#^ZgufCjLKaK||
zJi1!lljo9DJ@^QS1?6o3^ZmAzd^|=TfV`~FDnItr;{?nNvfaEj#~<$Q|1IJ<sy(&k
zDo@Yc9^Zx4tB(s75X039YJ03NAe-DD1_td1CtUE3W?mkZWA_8zM*Hed!0>o7!cA|n
z{&BgPn&L({qcg=qPhX>2naV9BA}i%gfE*Yx8m<Tu=mFdiY)R3dN=)vfLH{QJ5G3gO
zrXW!W5J7?y#S|paSANaHp-O^)Lcqy6fJ07w{iVR25E$aw3D4Ub5tjO)4h+do?HY77
z)K!q`{nd5siS1)33XAh5|6bqmu2rvA)zs}|Gp_u-=y`JJZ>SUf#Vkr!Li->bv-im>
zpkg5A2r?rgWa4}#xDX2H12+*RoCqJ#2?c#^;&RTNK=zFW8w@hInWGa*sGO>EtYTK1
zcpP8Y7{MvBne@!ZLU@TzI$0-ut24&tL9{90K+JF*eUj+k2X}qcB0}l=f$-M`o}#|-
zr1v*?;HDhWK4?RD-XIQ#U%M97*vZs<=-T)S>=V$=PvBf`C{R!5)y`G%l#I}geIKXy
z88jw%-vlL}sPO8{ll5`siGcPBxN2=R^HEW|T=i=!*lLl!{QlEm+auUC_74Y*3jE!d
zy%db<>V7XcP$#Cd5g!6Edr(DJ4MexWv!vsIstni00=M!+y><_BUiF#_(s=P8M)xam
zUKh}YfW)lQ=YS2Bdg>~92fzX!0N?O9hUg#pAPB^KfXo>EVI45~B_P&E|4On2ve)Z`
zg1$Df9cYZP9NA2of|9XbU{4go#_>XIp2vTvAzHlG$%%t4y?LIj%*t=YDvkIYNIW8B
zXF{*TDESlj;~uR4085^>i&f~Qey$&w4F1Ee>Q2<jH%zHK?Fo!_H2gCZ2}F2*!1XGp
zs>$sgBHkBf`m%3?7<F}5Uv{Y|w99erK8u8{aOg@nM{~T<*KhwBnK$Y=<(<_&^(ac6
zHwr9Uu{7xW_;7uzZ(h)ul_{ygZ!cid_T3K7wV%~tz`Rb(li6VRzZ?((1Bq);Y1Q`N
zo)*kH<hp$!;;5&nb2=2ws2kon1^LQ$FhR@H?kWgVaM<7};xUPcY{9Xx7)wdQU(>k?
z#W*2%Y{uz=qR(nxac%q%Oky0g65s=gop7I2JK{8jVT|(tP6!MN@&gtwH)Au-)|_55
zvSE$1k1sn76zb}QzU&lHxDLH>!SwzEc&n`DtRILym<u(K)i|D!{d@122?1MXu82c;
zKRqZtpuLNlv|yfkCfDVu^AsJKU`-z7+C5wh*iH^u<=y@Z4LB=MGR`(UN;^ZR%n5-J
zqYBi|gFD{Gl7rn@URK|}5ahbOKQ}@}ofXmS%9Nzwbw}v1+A`F70-3=z0xU>L#k>a!
zdq2PSmZ;O-X6BDRLhFioXo}Hnm*)j|`GBP%U&WT~$DkFBPYjHzIlX#SK<f@}|K7Ay
zzU+9ERD3y5hh@W4bQpz<4-3?9bDeb!{VB(_`%Fe%-g<HHhV%B|M;s`gyyv-|19H8s
zBch6$pY@Tqr)&3!j@XLYx(aiAHp1<lJQg20?aHVNQ&oQ830w=suu44io-WCKMeU$o
z9-d95v%CIJ@STPy?Fip)1!I8;y#hxJ??)RO0@REB<{_?eMushP_BOogL_m0jS#4s!
z#PB@78glfIFajmh7Eynm(ZBZ6-`WKup;sVrJB0XO_MKB#&&k^By8T&rSwMRd$lBjw
z%d~n@?O03J-j!o=cfr?`+!wL0f_EbBdIE!gLiUoIXpD6*N{FijXP*C9+9AAO0kSsF
z(llJl19J7hF(QLKMW=ILBn#e}>+zdjH7q+46p;8RB<8yEex|8|FT4vYA&P&Dij8a$
zAx69-)r}Fl7xm$I641_p1{<u~C&1Yn?qEE?^B-_iGCo8{@|)wgri#W!@Claf9OwMk
zszHf&`o}=p1;<UB5F6iTqvq$uxj^uF@fqa2X4PwHki|>?UcmfKOHy8-uM4%gwX@-H
zAA0tjz&dv{n8#jmUu<Cv@gL=hU^;RBmj$|ka~ki&eP7|N1@|O4=Q@P;^89BqUcvV$
zUC%Uh*ZpFc+jZxjJXhWs*K@CMPwhM95D##p!Bq2#_Y(wPxA*hf8S2=yA8`JOh0;^>
zTCVT3>Zwh5gF1V7WElLzJ9zO`gCNcG!;NFXoaaBa(;@1=_Ut)sWu<G<p<F}{oV~({
ze+<q6PayHCG2FSX?wV02;#J~b0k^PMIuNv1HF92Pzh3)M0yQ75?o!}CF|l^g>!LqA
z7r=Npf|Ie2%g_3x@-+8v7#p;|I%Q(fX>1lI)s~*-CpBVV4EpYZ{^Lq~_w+?jdmE<o
z?Z?FXIy`4WU%v%?V;&sMzBM4!BF^4E4sKGfg@EH#ug#HqHLMr%VYGl&hT4n|X)`F{
zx}8Ta^sp$fW}L;>HiMr4fq!r+Sc3uV+(Ii*qw5#Y2B41AAA_r2t7>lOtSp5tpaQe`
za4yXjbDmjk;@mdj*}NW|(P#4#luWZ3_NITsM-w5;<8N$84h*O{>uu}F8tqsUjeFdx
zc7~lMyRjZu9^EHl>*%BgNAadWBz)v^Pe8BzM)+?)djv{g@xLBlVl5QvFJBx;Oan47
z_&eOQzFjpN8Xu#oMX!1SBi_WjZhy=OkRl#NV4vIzA7+VHga333t9F*1b&cJFmC&E~
zaSo)syE=wp>=l$l`!O{2+F3}1>6&)(h6P(b&rY4@sqK3f@omZ`I0K*8u@(s@{~M%x
zeCIp4s>S<`wdYe*=ukZcchB1Ms|noxSJJFK-wVKMx2M*3g!c9|UhTSVJjsgkY7mBk
z@?0FkT(0VMR?yA_(?;;Rsu$|wZYNOlGV1Wn*>^dxM&A(b_1X#Cfko*ZS%R9Qp=O@H
z$7{g&`|iPA9Q+)iJMKd(v96kfg5?oZLB0~|28K;&^KuK@98MK70QM$WvlSE&I$Jo=
zlaj@=MZEa(Ya4+GeTq8rrwabJa0ifvtnzwrUM4sfx8}?v=cA}=-d6>Gf(O@bp-zlf
z(xf$yg9c(g(km$(Z_T#=sr%E}dW)-?pYqmgn$gCd6LFrkCorPFc>JB;8ij`VHK0yk
zuRR8Y=y#fqtX6ozviG1O(D!!S>oq^_5Q@?*vJ`rd<jvoQL8W}CRImLB^}O(b8}_iY
zOLUdTcP{sZDk5EZ*n4RUK@)lb<SqD}f`9sd!QYkqH@D`0<!81Z|6lOGHxm5ATJ!q_
z|A(mKg)zku*q-BYaM96XFXnNLrSgxF`4`ZNxP*RRCHNlrpZI=9zL!mW9Ry#||HOAW
z`D#skpW-EYz1Hi0;yaZMzG((uy|x!HhcJ{29Nq^!1(=g1l%d0q7;rZozRRF*qr>X}
z^9rei(eG=79uELb_i3I36+nbOMx9}w3_-W1HQh|oJ&QV=EgprDXD{o4FqZ->!tO+5
zf#_RnUg1m2#I8g}CGQR8p=m^pxr{u%#yPIr1`<)Eof;vy+LJ5cR)p6+RVUUoybL9u
z!D{3wig`mPc$e9p6AmaFmHev5xi9oB6aZPRPWBM$8{RYGoyVVjdN>&TjrH0Q6xdA!
z!zyGV-UkLB0M<C%t2yhc;kQBvk^S59k@ZVd+FZ94!sr3*7ywg<qy0Ld&Dz2$-?^@?
zb$pzt-Q-5UeCJ%Qb)NwAY%x|$w8@wg`Uy`B`#f8G=hv)0S?kLoabvdYwy)7Bs$WI5
z@7O5+%WKac1-t9^_i^_h*>lX^qb>q};v2+QDUV~)>+^e7MxETlhWLFd_3={xzdTwG
zfq}#ipfN1D#MijmRa1t>KvFD7ZgEvV4%w`zUPRiM-T2NQi+FVe$c(u12yndcT=6K1
zp?<7uju(55IsE$|F#!_QBOw<mg})g1pBstKUcHJz_Zx(odTlHe;?;1wZjbjtf)3~U
z_pd$wHSlYCqqm>g_Z*9MJzuBdY3Z0}i~QUn2Z75Db||Za__;Itdyl~ni~UG`_nyz9
z{YP^5oP><FJrw*VjF6J2!gQfB=m4hq2GfDH=g*U=*PhSX3a02i$C7f<J{T3N!H7pT
z@D2p;p3m@V6|&m~yFmm9qjUFsZujru2z9AVNcA7gQ;(xNdFrV=^;`82*nUQY^3>Ns
z-KG%VDeYWM^*?8+iY2ZA#&~l7!Ov{`*&pzO%)m&GfAB$+#8(HwPhN#2zt)RY-0b2=
z1<N&$_q2H6X5l5yJJ@0ZOeRUK_J$7Gb?8cFel16bGMLqCLy+-8v6E5sYtbmyYsWM7
zx_a&V=F;aVu`Bi3+s&naH`nfLE<J=2j^-)1H-uH8h_wtQ4qm;s2Gv)hWbB^;*3b}0
zW&iP)Gx7__>_MP!@=oyhn(&!U95{I-el)o5Yq4Xjz8?YtS{#V518}=){tXy*d4Qi9
z^LY0x8sYN|KA|z5Q+zlZ`4VwJ>PgAokKhmkb&)jzA+j&3Y2aOe@O4Y}-vO(xjU%B!
zummqJiQ57kpFQw*Ieu*e07yBF7e(N!S%|KPc@P+U93MVn4|x-};neXkMEbI4fgUS-
z3<Yk-+wgjA95A$NOMTf;e?fa+U2UF%2l(!QLcI+6XtPAHM*z($6pgCz{0zic&^{j3
zURl$=;a>jzMlhe>9pVWstMeB_uqUd)#J(CdfkX%Ho<N@?*yQ8r>K$M9an!4;Uk?sF
z2#%t}LjVzR(++uRS8D8S6W+@<JR|z)%l3m?U43P60@R__D*#)CZOTy!jltZ(d=LH$
zt+RS&bM;lMP7&2PN-zrSp|1ex@h2FN^p{Keh9^xMcH@1h|GaDWsGRC1Z)f@NIT)|O
zaX17W#mO%ohO3(@Pt4k<@9+6$ga>Q7#eTd0W`W-<@S6pGv%r600Ts_4EBjwNYxXUx
zQqx9^RQg|ww|mMhtCZ9<rN`1??kg+3?y_Pxerl(zVnw7fFvC4@-U|1C^o#+@fPVZ*
zoF4NdmEzLk0iaeYu2=dMmlp9>tn|3Ns7H~z$9#8>%aL0AQ+kw^D8*$<@H0mE!J#Gd
z=T*$t!T!op{#=maS%BXRax2rzDoW>f6TNV^xMsQg7P~2+xTJJ}d$t?!V)xR;l}i^b
zE}JhA%iQ=$BK%a+vXc4UMef;=Ed-EbjJpUDD#}X3Lh{`uONz^i3>k|TEL}QpA>>6W
z(^weh?y;1dMK_c#DJ!p7>b+@s-q?aklc!9dp(`<8C^f&NVnLA?_9COa#^sMMUEp<(
zDJx%5QL=E6*PS{h&7F~zmC={Bbfa>~68D%z^YDvJrKNq``SS!+(#JiaY!QlO%jPZV
z6FFv41%6zrWF9K7SO94-oqJ5_yvq3{Wf&Ik(#o<M=0)Z&!Ou@ES>PS!9>LD!@JEpr
zc>9%AEF9^+dO^j~lCmZ2M<4h6d0x?@$VgqeKJIz=$*P6!WhJnechLg(P4g;B$|{$-
zrS4+DM4R)=iYgZ`Sc2b*g0MdB#qfyh7ew+`q)J!7sO2RK=IeCOwxZ<vO7DXC{URgt
zi`^^AD&3V!7f6YH+~uVU<^f!~03AW67WBmrLzTkWbhCTQe%%GgnF`fPq5D#=`zF0V
z^iZi}$x`>cn;?Y0yX7vfC|fLgvTVWi?xiK(1$`o&i@e_QVg36rTehrU*fRYije(-i
zGfi6}BtQlJ7MI~EZn}yfy#yU?6ehyh8+1kZA+32u7#TM-^p=&u%JV77sGn4Z;WRoi
zK)6w}oaEP<no5yYB5go=8&3`2Grif=bP}mRrfTGOnqUKO&L3`7|BQt9%lvKRr8u@u
zkcs90CK>eqU(LOEcVO1758#z}6;p~t{IxPS(_E~)fpU;;1^p7FnMmW1&ft9Z|IOsM
zL>mX7OEtd#FF;B_`Uv0VKitsNv=#ZaNXZf=?*DZ95^dgb>i>MZMnAu#J&+9ezs+9<
z&x=TJL;rF-0G>hFjl4>hBbEL}SXU6d2M!uMWN2nq?&vXjW5=nTti$=+rF}qgXlGN?
zHk3EL(A0Dg`8MRokQct#)U@BOD07idbt=j+<UHFsw5zG9k@b5qb~v3X-`~`<9r+IA
z`;nhPev<f?F|IfwJcB$3`Jn^Q4Y^W}`Oh4Wcl(jgMb1x+4<YY^{0w5oa^&T&!#|L3
zL;fOi1#|v;=KpDGO40CJV(_VQ<a3d4K)wU{cI0P}zleO>`%O*J&_CxB&>=r`w5jRu
z$P14(H61~|4f&VI>yRrr;;O@Ui&e;X;7iIEk-PEb>k;IezCe38&^U%X6M1<MevEuB
z?7b3s74l8U<M3E|j5!`1@soH;4j$Muk@FHCA0bz7o~)?L<J3;k5spo;A@Rvbh5u@5
z>WN&*ixA&&rJy(nDfRiLraI6mv2o*KlP0*LmN}}FQ5~}`ADGe|SiyfS@;Z#6U?dV3
z<$95J0>6X&@|uf$1JWV1S4CTnj*YwBk{6q_(K<TTU27X1o4P^EjZI%?&yCIWMdZci
z+#DI32}EveDhNi$CV^petRpYV`ibSDHJ&IB#GXO=@};JxcJKqe4X|FSjk(sIDrDvT
zs+I9kNnjrV{p<F?hfr2Lv2l|kV;#9sy4_}=?xaySHa5;@nT1+U)TCI4u-|gj+u)}w
z$vZAKZUg(e&YBnN_Sq~mB4d-ri0+Jyf^~Ca<MP0!xIs#r6&QR%?lQ>Di@HI!Jpwdu
zgJwHuK0=v#ZL~m0E$z6$mKU44PD6)$b}E#bYckz9s4jj#F#)#m>}zW3L4I7Ei+t%b
zAGmLbm>C;aEP7Lf``9RpM*!^L*r+RF9XxrN0s29hZ!<}c{?$^44eZ}K>fqDH$EN>I
zS0L9IyRlFp736n<cLsP%B(Jm$boJTFU>ev1BRxipXB}v_g0?GiwsX5BJf34)`%JlY
z3di%;UNbJr4fbfv`Eta9HL#x|Y&$;IZMiElHZGSv6Z0V*G_NC0&?Y*~baXq9-4^3o
zi29FEKZW{0#yU%WY?9APK}}E{8VXq!SdRSwa77eltp}eC@db|)l5b3mee~_t@f&Tm
z+QbcZUxanM8i~nyMHD}8QFem<?bn)``XQd^{YE<%_v7)gRjTEui~8{-;m0=2x1EQY
zn)*VN-lv6hH-$d#M&0YE%WJMH6?L4`BREeH^W>W;r2t?daD9M#@FL?ef#U(+lXG}{
z>>-<V$E5}YvgRUfgS-vc8~lN7iShm4_0wv3D0aPddh90a#Mmv?ak1O1Gh?f))-e~4
z2%M|*RU2%05c`7-9CzWX@SzP>_}e-g!i$eOTfY9avoe<DfHxWO{3eu@C9!b}U>(|K
z2JqF-HZ>XhV&Y1HD+lcrq{T&C6>xtCu9Lvv`!3{n0=E;m@0)G-zlnq8mdO`&X-|~3
zfVLg?tKfwRdlD66epO-EBLQnq=0{k!snf;mfw^mW7WNny>u#RBS4IhcDFpAA;4LTb
z6^wh9nRFQXY$@t;K5lBdzPVrFx%#X4UT9r)@z^^yigw!xS@W@O7P1{&#JvvOHsCf0
zj2^d+0hi46RQk^b3p8G5^@upTuQ`~o>q15x*42-&&UTP8=+h~{1%X>ny$cvmp|^~u
z@Q-y|mk>{<=pKSPV=1y+1=N@pAvPHzypWfQHCt(pGb<27EH6+8uB~^X-hs9JGPWmT
z2z1tCNPctJ@I+Z2F#(*buY*s)eo^eMMEoidbCrG?M4j#FrluQF=9*wxB&rDgcKv37
z-z@N(1%9)@Zx;B?0>4?{Hw*k`f!{3f|8ol%|6hgi|5NZ$h1adJV8Hx8H+V(snf?%k
za*TxQCg=s@dCK^IF^uP3o-^?3sAr1t|6}kuiI-9T!-b|Y!dr0e!3&Sb;_~pB2Nxdm
z#C1s48_(Tmq<(z1;>G7AUijF%#U<I4AiqV!#YZn*;+YRQpP_ik=9Kn2sANjP20lqP
zZ0PNl?aSlV=JvZteuEC5Yl{AXT%hp5kAT-p#-?z+;KY%xs5j1Wf0D4#4=Mitv8?(3
zPirMHoe$o)a%5g8^SLrFmwA=UH_3dP%y-DVPUeSXeoW?PWRCw#NL+C;cgs9o<~cGi
zlsW&tfmgZAt7N`O=G$bxL*{idKO}RV`@g?CsxD5uU!vcYxj2(W`J{x;%KT@U^AlHI
z<Hw8{=1v`tm&AD2>A?&B1xxT!ID_8|WXvfakUn5Q#(<1;cli*!1s6zsQ=sGiXV!t~
z1Jeh&%QFU=c?D7&;pwigJEmLClLrRtYHf?xb7Ok#knoK<`d9ZEV>ne+A#Bv|;me(k
ziSt=2PmSZ0i+Hy^zNu3>IU?@FgzjXExCdE|qm$|whT2Y+h#(~Onn)7W&c90UWYNCD
z)Qjs2(T=o)<*4bk5Vu^LhX0)jg0wqu@Ds<s*Klm^K-qCM5aGC^13sx%;`qI!;}3dy
z2?!l`>NG`A&T&^qL31TV-`z>@)<GS|mJVykI}PnR?&&1Ti7apHD9Y#A){~t@c?xAd
zlPt>rfx3>DyRjV2sF2zYH*{kR@V$uWAA!;lX9j<`-2MatoO56VJEYi4p^kHilMD`f
zE%bK|6+oQ53mR}{3Lwe88???W0l4ikP}@070I7B>r41KAx;>x32mxf;w?cDgwg7VM
z{LI^#BLI)R7i)3_P-wrIqDKp0hW&o3lh^Jw=sDM(K%Q|4{Go$I_GhV^M`&Gc*Qi^*
z0KE3`1SUlBgVg1A{t=CHVq1=5l|79-lU&yTxYa(Cjb7<^2hx1@FWKl-uFn9hw_ia4
z*Tj4P+$KBS%{i<6*QnWIkH_74ZHJ$bZL{;MbmwfL&UX80443mdXCA0`*l%UG=R{r(
zV5fZz8=Wh3tF!anp7VOg1+eZ{;`$+rjOfq@I*#tjp7xGS-wq%ezvZGt6WxxZMXiLh
z0?9v@PG17S(Wh97BOwoO1z{{?2*P+JtqSF++haQ-i{>z=vXpin%0z7v*t9QTfT+!)
z4Ck$dX8nuNi@4~h-+|Qb!>C5bMSqUA6ni6RqZ1SP!=Db$ncG1aJ(X(kZ;?`O0>hXH
z8=ctNUp)$_^V5*0sGSdiQL%Jh2YSWU`6!xK9GwTVF0S)ABHf+w*XEdco%3*4sxE&X
zNcHk#ps-y2C<NIqKMagR>92xpQ%uJvQDYwkR7}^Hb!4%7plD1=%ws4!>|en2F@0Qn
z0mRu?p}Cm8vCjcWvUh<IV*1D20U+7_2_(m)$8b`*?YEF;fRhs-#eN;h1_{xr_I7A2
zCM$-nly2t_>BMBW`4(BG{W=1p;w~V|u^*=f6B5TjsK?IMVy+Ot40{HF0s$<tGm^zz
z)1Ez8uC${qUqVp~m_>=^luKi%iX9M5Rr2Co1x~)}&EWs&=9<`6Owf#SZ-wHT)Rq+v
zC3+kP<N88n*Ok^oK*dEs6}2LkQ@@vnens+|XRo6-J<_^uEdX56q9z5Un>0#wTDQoW
z$n%hOlW59my;CCFk^FZ^LRGsG$^V&bS;R~s(_IAtxFU<ed8-t+$>5~)hYe1v5_vz$
zK8<f3oYpFXh~i%f6Af6nM5&JWr=XcDX$CATRcfU0!e(5BvQFX(BrcM>v-J|`F_3?T
zW&92r+iA^_$hd*fSKSiJ2{y2}NJ)BNF<3Lo@O_)Q%}JFM`%k#34@R@XVP8zkJ`}qQ
zK%5d?fh@W|Z^McBhQj`=u^gEW-oHfOhoaM(DO-zP$(ko{dnA(LoYr(hxlJH{RBGJE
zK=uXAc8N?ikRPjx@>j|3Hjr7+@iDtTib)bVu&8*668Cfl=AQj}FsaXoaH{Bic-F-V
zI8PL^xK+5R&uJ`2UWQh8#!N@iX^oSzqKB}Cd*7WMZWJ{RqlSb7ixw-XFYHChUV+)B
z{!6YSXW_`|i^7f$`@O8$C4e}40fs@{Er29lp_gLG?^dF3LKgQ3lu+w5mLu<lS@%Zr
zg@V(n7|qtRhW@`d$pXPnYhx8`fGe7WkxtxRm8Sc?N>nJ3`$7I{8{JB04CMQy?5ZQb
zG?0F9yxLbs1`T8<jQy*bI`X7}Y=<tsCL20tAm>7(cO~*81Nl0TA4%j91Njh;pGf4}
z26CyYC`TpokbxY5){jLnJ~*uh4P+N6e=I>q))~kzp;E|Bmv&lTG?1SvcvT~1?lh1k
zVE<0a+#!)eHiF%6kD&8At=kQ390ug~b}3++#P;|TEE?BFjim<MZN+d6h@pv;9{isV
zqbwE?#vWuH*B+(EN4Q1x)X}?$CbeGIWd$hWwhE3T&C)1R8G98B74^It?LkhCpIX%S
zRK|UPiug=ROf&*)OdcqdE~C)}*YzT#cPExNCHg1m+~pjrW;=-)%_^a{XsHXAm^N<+
zCHOgL%q{HF^@5daS}Ku)9)V9z=~#hc^fKO-Lh_))kbLE3w-LS(lwHO_Qrm$-(sm&A
zp0bgiN|y&w=eo|puIy%=&~4B)=+#w1Y>z>pi@RHOT@H$4q|mk70KT}h!r<o(tZwiw
ze_(SNqPb)|CB|?wp|{B{^i;+Vh4lDUmYDvm)dwjT9uS{qiKW5#Jw^<hQ#?;Yl-(vq
zyY-G+-P$QyQHEOJ51Jt00~0XH(7&Mj_6P>p-T-?c*<O;{^%wDYZaXf4PkR6eNnlAb
zfHM-v$5XlGf&|#ir%*{%r#Y>66+#>@o0gy#1Z}(oNE?GBXzy#L?I^4Bn74fdx0w-}
zCg}YA^-NK>-U7x1et$J9Ld*pZYDObD_rs-TM>y!*rGV!n+5RTki}BoMdsYIJptM~9
zpNNl`OLko1Wh!!YD?6W5q$EVdw1L-c1#SaUREg3qLd3}+pkqi*{tR+^9oGp({*Ze7
z2?$M!h~;QuHm*g6%kq2K$ZL39x`4*fZ_85PKQ`gpp;?KyMda&@PeN<UWfCCsa1+rC
ziKn$}cbkEF2|SD%%TE$`B~nptmh3lyqm48MiEKS3zy@vn5g}ee@B(v9rKv_~`wqt7
zd;8q+I<<oC^HR6Ai^TxZ;eOBqPz7pAkrL=}XYFE5e*o~^NZPHEeTkFZpK5Vnpp$I?
zw(BvCKRUt7IA~F~7Pv4PMT@Y2is9e_yAKJd0l-Dk^b;@&eEb7$AaHTS)dF6t;|2kj
zNZek)J9XS(;5rg_8ZbBS;2i>-SZes=b5TgP_G3YT>ov?G+juijYy#X5NMI#YwLNO8
zvAt>rlE;~(4Kf4M&A{De;B_<LlE$MtO0or3+n`%*hqRh;tfp?ID)~i<TB{SN)0E_4
znxg!oiIt;nl&*>R3<5=UD@D@EO`2Hs`HKWOv;wWH*adDohVx-0XQTrh`e<-J`#N!L
zfwSniQ-D85vb`r;5!PFsqc<sR^p*rfO-!y{BY>f1V5%AT!VL5pZQ@yI1|Bs7N6kR{
zF(#fX&A@wRpverZ%ro))*#s!bzf%?EupVR6Wk(q}c&S?%e<tujL48{ju{@r^<sH53
zwElgqP8c<>Vj;F7k&I#d?1<->QANson!YLmN<zvE4a2jnY(q5)3~IbS&?4P`mz7-P
z;TbQ0>1lnWkBuY-A7belRO6gSyn9BkzY3({1i%`hD9>qPd$ts~G9;z#lR)~k@)0_-
z_)rH$bt^*!B4mvwrsQ8hdmEDTYTRmc-ACFLWeAcJn^@q)(+WTMxt_R#f-afUk0&~R
zAnsX#>qgwa0P_*k$zNVtr$zF?=sm#yA#NfF)@f~s`vvfKND*hS!M;-}soVjpuh-%q
zZj0w!3k;WrKJf4&mKBazU@`%5$E<CYJX~>QESA##CTpw@feC*-JP)g$kTxECV=0Xl
zLfX}UrXsl>hUiD7xmBak4eIi0uUZCC#!Dbt0O}&7Hctc44oVj87Z4HE0jheH)0%7y
zm}1#s(y{<Dq^8<o$;jOVaB2pc8N9p)YzNiu)2cxl%c8>vTn*a01qrjXFOL9l{fx=+
zcPVcro3^aM{VMzBoonm^QxwZQ6Wu9EcN6I%Rx1Nj)+pUU+<ui3jkD;cjssINS1As6
zN_y{9RcRNm*mg^9E@QS=B_NiVuS_+T^Ag~OF%4eD&aK3QMjP2V;%$`@AiL7`HS}qT
zrbw%li@tzy>%+QJmg`RW96I|HlCa3FV5!vZ0zoW`!Xj^?@-<-*TR$m_5|p-kK#{G*
z;qT~qozXMM{}*~9HX<W6Cm$`p1oKHGOoSZ0%`WhD2Er(w2IS}yVFutrqz*+&uI8YO
zh&M3obESB-0If~ZtU0K#euRpfLAxADtCSSnoYN`}w`AQVE0k-&I!CjVg0&4<ZTy`E
zUS!dmdCh3147As4)<=wH0%*dIblK-79(oa7vZusx55cCFLYz3f;$Vsc2B(tDj%jj_
znaNhMJFw`vy48!72tmfK2budodJmFwF$f&Gt#$)`1}UndY#DIzocLz|^GG-924LC~
zlZu|SLvp4e6gadF#4QJ0fs`V4VOkW&!o>#rNi|fXU>q(-Yi*uvhnGCnAWGcC+g9GT
z^Y#pHb-cZfn{AAg@h$yQ1eUubM%f4D+iLBXK&l7@r=Y`0q*zvnP~d{SoJb-RybnwA
zQjLNs6pW$_hJtiZ_e0V{!8yrt$x!eosS5+vHIRY9v2EV5#;#~KIb`Nw5b-{GG%ZV4
zLpcI1Q#9>KHvI!C3efC0Bx?vj2@3rCDO(#!ewM0448^@%Vk|)j=&9MxP{3qVtO5Nh
z3K$3AFDU$(0;(jrHiiP`py~&SQF(5asM&Ioz;iPy>Ojw@E9(*fCs6nlN&7{T$3g&|
zZ#C{$>Ah4$kLH6~T->51Y1&%KV~@^({S4)?M>J6yk}Xe?hkLYEV${nZprdAcn*!LQ
z0?<!D5<MzLVLp<!O_Fo}fas^K!B@GAeTGi#qd{ZIg2+yqEg2e!J}!fVN~AXIqxO^(
z#n8*XG2l+MZQhO%R4j(qS~_BR0>2ns#A3zrP?p|d2E#(5hD^49$QsU6ZKIU#7K*|%
zgxuZ{5Pn#HTBJjyJchm5+cvRscbK=>i?Y}-ci=>PN5`k|0QDW4*j%TSBgVaB6DxR!
zBK+@Q@7f}HsD|<Ylw(;|dh<V-y4mI+K>fRwVlR1%4tJ{%WpNUxT+tQtTb*LFKLKY@
zxAHL&abl`XY)d!7Q0tJKzXQ?LwpgCe)d7AE$;SV~k{7$Gv^{~U5w=Z(1xn##H!pQ7
zA6P|58L9W=ELcw=iK+Z|Nv_O7<2kmD2hqBi%K6w#jYo=Qg_z1S09}owJtKLHJp!Jk
zq_m){QEvd#Xj|u+PEy)J@GYP;RtRYUK(`@@z;JK~MZiu*p{ovak1&HW7#RKx>IaeZ
zz`$Rk;C0EsaK@x%Ib_heu#9ToNX8anf!ihV0t*t=RnT#)t$iNsCQPvhjs6oUmK8$z
z^MHOt63QC_Ek?l<)e<R#%E#lmvkjBj;Ix$kcPZs<y`+*fvF!yDpz*&K<z-gC54Si&
zC6&4rT8^_>W0{L(eK6WhL&DYeTe!t5)-&k>QpDd3pr~&B07_%ke$6T-K`E%`BMG;8
z%__Fuw*#(4a>ih?yk-?!_`d<Z4=Mf?Oo-R5;+e?0dE2V^IoON7q06#v-mog(hi2cf
zibDbG=1r^OZ$qPRSjBo~-F)Y&_{Smh-v<4bRq?yv?f=%>ux{SEDxQD5^`_N9Ev=h(
ztctII{5P$gP6_yLtDG^2F^8;?Jd^qw`kX)-+zk%U7B)C)y|*(AKNMh_KDfma=@^4j
zPdui(k+emFbbIj7i+;k@U2)MV-ompUFV!ft(_y8vt<!0U6%H~BGOj@qzHtKzB^3Ix
zWR=rI^~g!04U{5!L65Gs?vHhmVr~Z4a->*R2w8qWw;>5X>j8~<sYU^v7Z)bUD$1ar
zZ2|RNNV=bmlPs6=GfRxrg*yHbGT8Z5(7jMHn!QZKi*(7LW<kg9wjRZpslo<Nq0uLh
zVp$=S|2Lplk%aQEN(-w-!8F5%Q3jR&9MmU~bmc>m<&w$|Gbw)+WI%cB__gmOpILXI
zgHd5I3W?Hy-&-yB8#-J-`#&2xC=q;uStyNRxdL5luv$JgXxrgLApuF(w^M6l%dQ)?
zv={~K7R2?T)spCzUGE1meGE~Gr8l2ka6R4|r?hT%ZK~5c&3FK^RLkmb5DaFB>S-47
z9Aa@aVHp-DYk!n9TpY@qX%tIH;(1=Zs~ImEm?;~8i10zYs!n!VcUCFlQq>up&#HQj
zb@P^0ilvS8ah{7Gm%_w@lhZo3S=(`v=mBii&Pk%B2=*0n{LaCV+ak%CXL-VezubgB
zF7ed-N{QEd%_gs6;884RP0R~T%#qS7XtEj;vu>>RvX*D@_nElvm3XTDtO;*SLHgM1
zIv%cP^GO#-!*)Y|JYa+pj|WXU%)ScPrnIerJN?m`(@$7d5q}ScqPlevqIp6$M7X=G
z4n{N{_vIlaFv{L-75jpl0aqZ22z`$pIkyAeM%)d`Jyx+%`2f(rk>We4igIsr{Jh1<
zKg#`+Rcu-uaX8IFisu8wpRDn0oiWyV6dG)`iXBHM)F&c|5OA|p*uED+AFy^h*BuNz
zR>%a!5TsaEh!Efb#Q)tuTO)Z)u}~NGfUHp70ndZh?*F_@3Y!JCX%xl^A#4kvJCVd(
z-kGjjO*IOblj1@!{5@qbp77JDCy?~{`JQCCWIWk!Qu1NQfIr&S;JIGWK9#I3LdqPp
zVC^r}FbZf*T#s8V9aB)xP5nV24<Lz6{d*|9gQUevR(%hxZ|bLFheA(|<WaIP_TMCx
zatfFitUW%aP#QZ387GlqSt0CWZ-c!8lCaPEbX^aNQRpTWgMA*O4B96V)bU8Vef}z0
zE@__~QWp;5LCAo897|Q4a5&sO742!sZnlwl*m=pY(a+HIUsg*SIvDMefu?&S3A;=~
zVIq=ZIVXpKGj%X%85Z=z7(KXQeX{kGGFM`HSpFaZM!K1jVKs;h*U)Dp_u<?p$=TSq
zr-tt~tQ&#pP@>$b&mg637f_X0cl6b*l_!m+Zv7N=&g*Q7a)Z^y7sxB2>P<+_Vu4E{
z?ry+;M6$gt+4*pyv>gYL)2&q!Co@cQ7!98fVPkWRF7gquK1}w9Bn=6aw#Cr%ElXjl
zu8R0;Rut8(TpAMIMGJ3R#7m%mf%R#mcn`wLyB4_@+rB3L2{iGpr43(?VqULto<ZR~
zoSk4aPJsR>l9O+@kLWy2fPW&c5`6Dl#D1`6TWmOyoE^dYfko`IrURacB;52Ksh+wD
zQcqgCxq6{7x~UHoYms7EA>8y%KzAT%_e&lb6D$tGLRv6Q@2pY_rYLK-*@m<~gYQ8~
zV}+3R44|hd?X=|iwX~}*m(uP7Q=+w7N3<h!+Xucql*S4n?QKAZk;D}0E{8!i3Z@Wq
zni_EmodETxNct4Yl`NN>LbIeU)KY^U^lkK8yFxOym^|EnUWQQ?*Hh53(b8>^q5OF?
z`V&$tD}?gV@%W4YNlTSHEleT0RA_X`D5OZ~M=h2El*}%5f{YGGdY8Nx?NZznoe}#1
zv01jP1vf8xWrOV4Qgjd7mcl~4O0f)(W5m_ein2bl6^lpWx&7`G#=DnEJXdAQy%IPv
z0Iz$SiNs;SCY}g9EbDh+$)4L>uUMWo@l`eB1>Y9(eI)Ct)RyLY#WFz-74bVv_{Suk
z?Hn}WpON@s(C?TD|BH#f(S(nXqeS{R&=|&OFY#<Q)r5ao;@NJF3Ge8mo0s?*Cj3x|
zr<`&Veu9a9y$Qd<M8D01ua)=_h_btMygCr(<HNM&K~v=ivJ$8DdgZgG${%HAhEaLI
zRGEOTq5EpOQF%mG(jofjm7=+z37==epObjn@>&x<QaUf?cun|@Cj5pl-eyb-t{B>C
zNo1On$vvF-mdPS^Wrd8+ybx}Asat8Ggaw$6kLeLP3zH}V3ICgvqWn$AEd)FV$$2v*
zJ#G;nIQ;=|EpdE`eL|0}&jbDkQo&NMqCRPH@k0)5a92Bfpt&7-RQ?e4?;%YryFpQ3
zwx~4-O1vW8M&O8*fQ6r|K4)>f0~1+KqM{KT-y#XBbV-HJY~gLH_JTpxJ^?EUl9nwg
z_(ca@bQSJ+M|~}-;xAqWD~NT!(9obSWWQvwroo<K-5&tC=}2PT&qZMr8@f)C8~Y&<
zJw$U?aqRVz*WVd3vmvw2V!e?vc}_VQA|_ELPhJ<HP)wN>l3YJH<=Y&o+d)}jod`M4
zTP*d4Zp*+{NjW^6T#v#!%K2214}f3L2tqg8=1r^ZcsdGecSe$_vmx~bizN{|8KK?X
z5b{S#rFM^?z}G68O~y=lirTub?PaxPF{J&=Vp(WNdmhYB8`9oD;WbLTOp@z5Hov)A
zzuJBo_$`~IyK<AX7Lw2n(E-J>)l_qjUc)m0%cCazKO`Oow5*lA91ThTk$7p4Evpew
z@09huP=D53@3c;AUJ8DYL_C;{g~#Yt#S$TVLE-(H@o+iYW(v0%`yjEWYdZ?tmZg?6
zm(lC-c~kRDY>POMv_$b*#P>eOV4e?<61aP*)Msx@B7Qp;IKJRtrcbA7KwW_pLGG93
z%Ba2y!FO5`+}Pb(yQAV(P^?CZWrd?JFk1m_L2{8V&WH*|A&#2inr(@QG-Nyj>Zgzd
z`#u!*ASv3LvQ0)YX%DH*h#o?Qq8>&5CriQ;hNO4E_#dQLRtRxl0Xl^wwAmr~6r*6$
zW{V-ih9fNtl3<TVp$*Ttv~iO6*V-I1wD}HnRhEPi8PYaAz}O8bmK8!=HlQpdp^ezj
zqDD0eCT)5eGNyp~DkQ;vJqmM?6zzkHX=90$7USAC6%q_DGDeU1(lCBfoRq>fu|~&R
z|Ex|`EJ?D03&nk528&^M3VPOrUvHv+!-U^r!hdGMA2i{A3FEa)=`L*781mlhBZRwf
z!%pLOD=t^A)4euj7N+uCeV?u*^9$uZ7I7Sq(;Y^_C4QI(xw@6xq$F_m)j5~LiseZ0
zKcTk2F2S;Su9Ke!r|S;`PoesLB-?2zj7nJ)Ik^ZtA9hSjhQza-cbf5B8#d3yXLPbw
zpQd}zp>I^T8%^U9KSYEak1((*b^KNpE2<p_V;7)6LPrO_Vo=4`-|4{hL5iAJRHXc%
zil>n&fX5S8uAEiH3R(-uPfU^WqfYZYpa+qhy$~WAbzFQBV5T?F`cFFU3c#a~;-3WW
zoa&%TSZCK{Jp=g1fgpYlCQr23mIL;Ia1GM11E}aQXHJn(q4ep5!2Y!xG`KYKg2j3{
zkPm?VZX{cyn{_x%gdt(qd2VLdQlUW?5=Wm=H>#VC=X%>q;%@@Jx5RTCMw#e&5XOu2
z(@pfxo9N3-^l_%az0HIlWWqlX#@j|oy#5f)hem2F9-`xvw&{RBRd;mNbtus@j4aRI
zIkLy~k*$XTUP8k7oYd|9C7>Y9@`L2%le`w^)+HFzf$M(XIq;r;tCJv+GvQ5L;&6T~
za!3_VzIc8=tV>ne-U*KT)j}L)^ZG{5pwRn6;aB{G>j71)3HA=CLW;NzW5oZSkryHX
zR$A3|0Bu?CLPal7^gz0dXXCs!Kue4izevH8O>Uu%#RyW&7DJ3t=qRgqtG1p)q{vYa
zmyM)7by1NMq)2fD+kAwot7&jp=0omY)i&3VIUVw*QO!CjGk1)xCX^DI8F-6Pkj|m}
zS+%`kNVx$LN~qbV7u9UhReEoPX2YA+#NlxNW-~<4%m%x~3x+3ETP|>IPU6;whv`PG
zts1o(RjYX9^r6|cNaB(6vKZ+SEuW%Oo7+c|+nbxzI~XTfEJh(tS5|pSwRzFB7|lPS
zg?o^6Yq|{<y3DhxZM#ACG)Vq|<W83qlVMGz4@cO*SRMvur)m>o>p}Z6>2u8VO5YG7
zPeA1<RyX`kFkZ+;i0{dhKeXe|QgqMF=?pozKGHMzDOaY15r}^`=oFtqFkew8@Qqrj
z?z<ZN%8JAZwpgDI9RapQ!UQYRr$Qm15yX@$<$92O3edwymb+xDoMpd9dvf8?noM|O
zF~YtWn`?D1$T<6^=*^`p!|a<T=Uj3SK_F9CEhky;2`4Tubt|7ml9pyDS$cm?L4jjP
zNlOPP!*o<CUe0zw65qg$(1l(H_*&xl4crJ-ylh+y_y(k`K@eO9u_82&QN>@8tVYGn
zNW<o#LWE{nq1bMgI`O*-<;uGx1i9jRG%Tpya$t5q$YV%_QiwppXj3E~_s=hZhXz7i
z)~++*iCYO7y$@oD@iawwJjCgS{-^1kRj#_j0_G?kQn_pl?*K=MQrle)>JI!nsW$p}
zDI@qZSJrnZg<qXybHTB`qY_s7y?|I|tKwIZJcsVS9i+A@m5*`VZ-YFPZvlnU?*i#2
zl8z3n(@iwdO_X#mK!9Z`WpkExUxb2Xs+%%;D*gV+%89Jxhg#iX9)O+rxxP*~afD7d
zf^W#R$t2_lnnGi3vUu&QOuhj+X#Iuy){gXPH@2y~s-Q0~bt^wH5}&HHg;g)08SxQI
z6@XGCi`Gsj<XV?M91O6x_+A8G#3+^yrrITXt<xIO9H^#><#m9GXhRDTs~}>WsrDZi
z6Tx<hO+;_D5W(7;O|{<}BAl(X_=Ab4?Fe&6sKukE+M#-_(`pvMcIr(;(^`mN?T4n?
zn+*|Bt+e>wM6{)a2x{SIA2#-`i-}-6sV1TiTZmxo2ve<sp~ZMPtud{%m}VmCq7%tM
zr4}Wo+A$Xs!FFy*3ah%vAktd3^Jf!LtwCfn5mC}n6A}NLETOSk5{azvU0!s<Lpo8|
z4Ye_*TET8^V-?ssdO@*GQi)$#1ybGm?npfJ@N>N5$#`5va`3afsLq%)NDh9UcR30@
z3Gg$$LKH?5cm}|IC<F-bv%OO&@PB`H@bkS6U9jFUamJnQNWIZoG;U{Xj=!Q!F~#PA
zVh)m+eB~%CL9#VTa`By*rIUmh0r!j)wh<99%Y^5QTm{)38TRTru`QfdiaYzbX%w2^
zYk{>8&u<pQ!S%f;aLXi)sNa)Js!@=ODnA7(B0G<${|f3yk@O?#vy!Fde!=v)@EekV
z2jVLs16ty-Z<?ZsA1sA-rX#+NT(As$Sn~uF#qrrIX!a!}aeS7FVG>sg?g;olQ9&NE
zodw0WNZMdYL0_S9^iwTye8w2Zt5p>aJvwq1P$#Qb>Qu1a-*X`SF;sPcO}I&NJPY7T
z6viV(kV(O?iz^TJ$*TSC9Lcg26pN9>-%Sa=&46x4(gsN$W7EBq0<^QTc{8>nw|8!I
zi&qalgI=Co_8L_WK^#A%$m9}|BI#74&`mO6(>H~K7-==ObPrhhRn#tU{uAl4v653C
zPcc;3Zp*L04Ic4Xf@vGrk&hgOVCOYc&!F1_)Qw;Le1xjEk*xd<D8h|T<pGGVfQAC-
zkECsv+%3AyL!G+Ibb0cW8Di5$LlTdJZUo~(Byn7EKMMCEiPMf_l1VWN@Bne)Bq+gP
ze-_kFBMJ8XDC|YTNs#0<pS^VC%S#34X}m`188n#;QQ|AFcinh*g`|kJbsL6**A;pO
z!X0drpMiek#w!{mG4bOuDltfx{YNrzt}|?5emF8y9GN}&q=PdO9gxxMj3k!x3ex%c
z=6~@qvD-!`#U(x_?#j=#CnI&`Ze|AyE3k7aL+Uyf&~Re-XN8v|O}z=*1g5V1rScb$
zM%wPTL@Hgm=Xe9#xsmq!Z9SF(@fhS!hYUr{$H~s>B!p}aUQDiuSL4xZ{6AFjmiEt&
zZjS)xQHX}Y^?G~=5u;dRheZvK%8JU5=P%bpbXGIsC#yS0M@?%#qnmn-Ha&_`9D~AA
zoP)^IO&zY0Ns7kjCOT3`8r8u9Euw&Pv?h#pDN)@V`H&f-Da>M{R4$3G=7!s-Z6i!g
z$F(!5h!DvBVDsNk9o4~5qnn*PIY~Enpsw+TD!P79Btg4~#)<3_zFJY$d|{~e-JlL5
zCjQ>$*J^iY(HFQyKiJ9KYNr$>Dr#huH5S3ttQ$;ZChMFERgy7!T_lmPeXkDr@gs!t
zUHd7cI*jPBB$j<k7|s~t=BVAOcHqF_D;bk+*p7;x$?=0%b6h29N((a}el<4;yM!C;
z3HvC$dWxY)9V)Uk!6}7O8#ts;8^-C~s&DRYDsA4UdGwmy1}7P2+HQ79+OJuUsH|=(
z6>)d74icU3AFo<tqoRaAc5_f}dOXZU1v22M4zr^UFb2fra09{b06%;avg0UV5ba4@
zTIu6@xAB<;)ipHjW+mZ}7Ut3&c&P3-c71wCPtR=bs>xCDltwqEpkYzMBExlFIZN<R
zcd>4hK3fcF^AL_4f;o(U*GBCT8y{uu+NtZb_HEQS%#a++9E?D&bTm9Oj}A`_{IG{j
z9T^n`chjvz(RuNzw5FKEW1Cfg2P}yV`@lGJMK26Ena8(8-lj^trx`CSZ+7l{*_Gyr
zH$i%mK<J)yMKe2))7l%8wm=MLl#D4bz{E&>z(LhU#k;O%&!%oyMyYI<#lk4mUS$?4
zTuO9!vK;*8Ip&7_rig%u7N&-$8m7Q)|Esqzfv>8%_CDwAAtxgl2@r<Mq!!_ZS(Gp;
z2mu5IH6VBi$-PM=6Uj}ORKlQE?Xy9xbtnlqRQrn7p|zIUBJHbU`>NJH5r?+c4=wds
ziqKYlZT0=v9?l(rzJ9;={l1f5?mm0%wbovH?X}k)&e><9vlEW*>>)qux_`~fr2xDg
z{NrW_ri3&%gstO$I{p{ne?9)cjDOD^;`J$^frYypKh8Js?>&hhwvX;;0oGHgui=jW
znxgOHNBn_)D3$$*?&#U2S4=;{DCbf5VY&E`69_hoqLuh@gzsc}b~?#E^<BYOmMeV8
zI$be&qVU<Kuqb3%`-F@O%%x(2Nw#sX!1sKFC!2(jVT8*~cojldxNK4np)K`8h!=^H
zn2=Fm)rk_MGWi41SA~BPUXdbT_=<~WSf}Ei+-cx@47@i9z74E;6<i>LvMSNfuK;ML
z2JJls0;B;|qBIpL9rC|MV$vU;Qi$PILR2YHNhiajLM&HOs@N4mtVpEQ2ys;+ZJ7`&
z6KT~#tb)$IB_>NY+ZB>cCxvT$3}@?+3Cm1mGa{xl)%w#SOlJGHpm;8O-l3|j@vHV$
zh(0}{@R$ynyaR%(ip}j&MJQw)M?{|_g_QwbDa1A*cLG|-Hk{C;iHd44Wv@3C_nC^r
z2y$ULs<v6CW<HtCM&4{>9GGm(Uf5fvOSkJ?k;5_%iGn(j(~c4^5Ctf%WDjmRBJ$Y>
zP8>LQZHbApO5FU)sSsuCfh~Jg(q2%mI{~%q5CyQe{BMbZ^M#lyIE*4+&OjJP=!)Xy
zqR&*Yo<<_Y#938hraUB=E6ze93V2p!WlR);i0rhmvPVplM?|5EXk6fJviv%5Y7}Ki
zRJxh2%E}>W20)&?P=r{09Abl&%LW|*n05Mbk%d%_HsZ5ew!r>Nii(K`szkDn97+OK
zp<qR#9}qJts>G-&agl^(Trr9um10z7C92K}Ru#i{XCP>@U?n)L_bQ-VP6aDrn@)gv
zW+ebH5$X0IlLaD&BEpsII~)88FoupxDY^-amI#R?Yyd>GihGd%>Fa?}Ov3wzI2Dh*
z=u+D*?9rs4ED#w(g?pvQm{uk54J`L6YVT~*HsSY0W<dU_$Q~@*+hGMEO;il3J|b(+
za$OCi83xUeO5sST((|Mn7P3Os5*(3~JF5;M^P(b=)kmUwJjdf6@bI{tdpIF4<p;}L
zsQ?wl<3OUR5@lP2J6U9XQ@G0|%h{VGQb=UZ5co_ScgefFrz%#vH5VGVf~<#lREaDK
zP}J3^J;~ZD1s^~~?S_I+Dl<4+cB70phD1)8$lFfpE!szQ!sLrZ#YKqc3Nb>sQ$oU@
zC2}Z7$b~>0LB`9$MpZaUs9mEKf?p0LO{J`~97F;+(7>{xdtDMS03l}`-2~36NCCUk
zLKS3b8+zc|iHBQ7KaigSxm{$a&=o^eSS7MmSfu0a7L9;Kf>BUnQ1WzCE*AU?BAX;Y
zF<6Po9aaxy7|+JA;^CRB@Nx|hdrwDzQp8Dbc`;oqWsUo<3#{=3tkIR|w(PSi_6yI|
zsDS%J1Y1BQ9dJky-V+eU_7NdF=7o`v#csc@5^*3N^|mR@y8=wVTc>>Jxhm!MAjNQ?
z7NR&*X~dr!#3uqopQHryH$2!dTM6My6strz6stdb-f+qzi`{x%<u*<7e+;wx17?QT
zZ%jgOkf3-R^WtgZylW7@_74%E;=g()wBm|IE-AGSY|y_(RZ1?^u`z>vxaSq3fC3mH
zC2_JL4oAn}cBrkhx~ht>O7bpOwP!e!$>)olPBf#iF<-Qn5K)uUlgs6c;jkEnxVS)p
z(aU7P-x^DYEhEX>u9}KBpE&nHdlJ6C1a%2lgMN2G5nW{0h^;`FFW3qgA-pnZT^~YH
zc4*e*G^mAn@=kKj@P^cYVixltp=)ecKB}<EuwcE}-9<q9vdF4N1ItE12=g=Lj9l<l
zjYwsd^uw7@G4>o)0}&L{4;Y?ZDW)sSVf(!*pk2fcTvrj(wf{q9%W!zG9?F`ARuryM
zwNix6uL8p-w!tdX>(NfH#|X3YpB6^ZK^ziFWllHj0Bi>msr&ucRZ<u~y=2>!WYpU8
zN!t1HMb*i2bg!8p^JHIBcYeh-RB;B2Zkq#ruQl5CNZZ~Hje`$IDu<4uGIVpM=6Wc1
zTYHZx|4d3DAI#B*Q-EQWyc2x`>V`a+$J#IspqrbhY6qSWeIz*Or21{TC-@@997Qo@
zO5|d)e+Ycn@6mjZ7-P{r3}wgU4~;XcBf*qIL(5PObDzPUCOrQ)A``ms#-RML(m}4j
zO?gO<t*+8e@Dp+fMJE)KF_fo9aA#>JOUhX;mv5ERmZLn%d#pP`wO$3f$Nu>n##;BH
z;Xa1`oRwCg?=^l@_q{p8g?p~ZnL(N9V(kw>BGyqUy#7UKcuY>0unJj(AtRhHMh^fj
z(8Np;vl+rYU$7g%fO;IIh;BSuMTs!jqpt2o+sWwWo80u6yvu0wPC^P3)j^}h_ksp$
zj6e*i(CoJn8f;%{jmecti9u>g=9l!s*5*U%l49+d%xs~Mjl-}FR<X1aQfIO;RIo=4
z%Ik6f+fcbW#5O=1$i-u|Rf?<bWQUxP+rv|3Ih+cO!cS#A1(qP$Ld|(%D(50o|7`U>
z!#fwlGs<L}z{hCWCFuGSs*h=7VZ*d$sfD0+fXP+`8PiZ{yHaBz8?;Z1AvetGbmsk2
zG6&gJ-Kp$pR0@xR9BGz@%GNse7?$Cw5@~n?`}O0{Qm+4!kMZR9MXnyO(ZD!^eR8e0
z7Gp;CMMnO2Ax0|f#I+=xsuc{hg!I2_2Z7msk8-njFqd<f<ZYXQsm7IT!XdV(y8_+?
z(tpHt@^eA*Hl45^0S$04Kw=nVV0?)1J&0K3$15vE)^}h=?1O8!0S-rfi^=7#fDL@w
z@6pw8&c3?2g1j!Ueov#AVvJus`MwhBd5d1<4J*_*-!lUJ#3s2kegH8A<dgXks9^me
z6scq{S{XHzf+oZ^#!1qX)F%~VK0@NIP$ei~&s>XvB72EdQ8R<u*~6r^ex+){0lj(h
zE5I*dFJkCV)0AR3R__uqv;{GmJ!9y_24jS}TNJYhX|<!6BpM8JmTV2C9@?A70rZPx
z)i$3D1(T%{F!%en^q6$-kao~&`1o6=3UeU0PB3(?(_lzZlyJ)-S+`3rhd1kek36XG
zk=Y87xmEaAl3+#eK^S%`gy-zf48BmZu4_@I<dVDvvSOs7JmlG^Fnz_)R@~MVi9skz
z$wD#sdPEmOQ7orh<SJG5vW`Q&#C@yc{<-G<m(6M1Nl(S>Z^V6`;a(($(!3Ge$x6{c
zb_6V!fF%u03wlKs6<|4H1)^Y@C?tmxQzIMqkajN>sN5T02U4-f##{(DS8IRFdPOF+
zf;t%n14!7TBz#v(ct?8qNy5SGH;}M+k5<6~F&M=zUUX(HjNE5MUSn_8+8b2@5*HIg
z1ROQ211bae52?-t<s687ss9DuKngI*B8P_Y8;w%9tfSvvwxRo<M%`5P-ZJ|8zV6TD
zy-IB!n-h330dIr>Ta~se_Of$O<qc1wMgrH_7;N>|o42Wf@M)))<dN8ux|w}ti=Kxb
z!}Qe5L&IpsstMjMXe9r!1E*_xro7=|2s$t7`q}rzXbN_zZk1s!F0Tq<z6aYj$l1eD
zjU6<B_P&p<mR64zEEk1+1Y4!XGH!>+9Sjr<IiO6p1H|Z}K#W1M$$<ud42d)rX5SQ4
z6_|FA`($Q>OilO(<F0x&qh1VN!yqbQpKUrw-7`F`$bK6)o5&&f<>WFj&}1J{nG=m^
z7`s(;i^6tl>wn!u-FYtC0a6sANDM<1?eBw4=-WUt4DAw0CG5|e&|ks<XrBT%a1+3J
zu<C*xVGJR!1N9<AP@<FCzhXhclXoe1xO=13IZZu~>pRGVoG`4&LsQN}Q^JIw!w=^b
zU=lzx1B~kPC?GGk9&HHoJv0+o1>I~H`QTV5@`0^!v#-(PG<i_;0fgp*(<q##qf<@l
zb`3=;4W4083n_@}ScMo#u}T|L9k*n^K*`mtp&zBfxl*7!BPQ^w-=$Je`y7BaP34=W
zN_~4!>Pofb0i$^xNM=2!be}h(um^~k_-#DlokONb6FgwRN)-Izjop5wAJQs2=<3O1
zlA#-As&y2}9ugR{OZMjfu-@{dz(6ujHp5Cb#6{kRIyBZoU5xG#SF8FV1KCUiPe_&9
zEwcBao}w^YGf{(`+zjb**vFgwkm{8wN`qQ-KC}*~Znuf^p)pkCSrnKN81*FIqP)Br
zeF-~nE&wxCrcAz~2uB}*ukuHtFRB!|dZmWiP=9b?@=D!u76eh%axl;+B-3YYb`|4(
z!}38>o?hes_8?c8CrX~96($;E+F|5&gP;j%X;gP4djbYUR7KR;U4y1|j4IhSt%Jr6
zhOr&MK?BRB9wgDIKHQkp?d&zkeHAjTRTZgqs_m)~Q6aZ0Ps`ZvDGvgW0WxiX<SfYc
z7*)Eqy_*1{rK|!>SO+Z>A$b9DVk=dR_QyJs@ik=R@McPnSgveP>7_Q^N54l1uZdC$
zXtC@X+@L$7d6J9u5D(*ztak<TZ-gt{j-CQmvam<>>rCE2i|{mo7g#MM0#qL5MDx^K
z_S)tXCun^2EX;&#ipJ%nUU0Y!1H%k9=mh$56<_TiQGy}q=}kTV$j3_tm!}Zk*Z`J#
zjgb~(K)Nf#53_HcN}p&tvPZHX8~PIodYZw4{%aYU^Sh}jF8gf;Y%Lc)&UOL=_K@5B
z*+yv8ngiMy`&ZJdWN&TM%be`%C>?6$BDgS=Rn-VE$kQ<P;y<cqT1cdNE@ThmH-uh6
zITBhg83DkI7e$F0O+bmy8=IUV*|(5XS^@X{i;ZyKc0`y9u}JwHF#dg5m(A^KYYhtm
z1E|A+FT*g-liyc$IiOwSOcS~DMG^WWot)kmvHe&TX7acHcfzcK7^e!Oo&m8tHlO0~
z5(~$uwSsh;NYp8O+7IL*RYdf%G~gV7&b$xGp9#GWz{?15;N+q3(1Zr=)ceE9m$2MQ
zQB;R<+6J1~Z8ihHIy6jRJPM1wRrJ@yRH^ku8KV_&EFRj|JlH_8bZX7izhQJ|!g>{|
zW!7%WUaeMCipezI$AgqZFebPZEIkz~M3)W4nmWs)X$Y7B>cU&G@xmR2LCQ+>go4dQ
zQn4XG<AK+kME$5M&cz5cCWhcKSy&Wr7nvP`k3lv=wkf3O34uwPwu&7nXes+!2Ar~F
zpVIo3wq1D7s&4RNf6qWO@aaJXW@T8meY-`7`Dm9c3(~T8ug8!Lyvn*ygkkGFSkNz9
zj1l8`)T86`xtL#+i19=^SB$?#lq?mQSTmU>23|r=;L!E37`w2m^t4S(UJ;H_H~4k*
zb~L+t6H`l8jJ62agPFQpe7jSvv?5-qy2-aY)jW*W0MXKR;_(lSAM|2Ac^}pfqb=E{
z2Tg<C6Zte`uM_<t_#iAOpi9BzPh?@fvOFAC9PjVkOIfm?W%kJPlpN0}IcOban-=B;
zWP?IZ!vHAn0x^6cTGCOJrworWyAPpq?#71fBYVXc3ZRauz@#1%Qqf$2#t#fR&Ze+Z
zP0vwx?_Lk>69gJj2+7v7P(9L^Too2yU|)rn1D;&2RPw!V<vXYZzdN%^7364VrCEEv
zM=8%`Pg+Da!DWjo*n|rF`mr$iJD2?$rOIS$=y}s%tg%6zAFS_AZ)dR{;37#szj@gA
z&6-Y8KPZyHQD(j(3bC>gg>K80eb{A38n_ifV}32@_2aIIXeqQl+lOrPQ7(}44lAOI
zd}gyxGxq_U#ct}Xr0Mo-7%HU1nh3S)!FxrhQcR@L#C|<4@mOvJ9<$L%+pAE7f9{|a
zM~~f_6(|0Zoy6jlGOAq3K7(F}`!;1%MFglK_s3X%6=AdE9b|!2^I+n#FDoWl?4u4c
zLW&a_#bZY(7s)<>bmTCES`r)%8`mR!SJsH!8OG&5sz>_r1v`w<L;Wi?*k!k0i+){A
zf<!K+1E+JlD9ABP3i5$VPh*cUbYywd9~oyc`At!Dh}!k`^(bzlPbwkbwH5-x=#Jq5
zeFocxXQhdTZwIqT{v%#>DG~!*)KA%3k=Y`0E;zVXO@mN<Fj5+2t0f+q^Sr25F=+7Z
zqIq8f_7z3y$$a*7;opYn0@7<X3?HMqVYqo+gs={fjlmsOP&V(wWX)%{YaRY^bCv3N
z&Q$h%S<ypecd7A(?nSLigOMSP@M)l^M}~r3g=rXSh@k#*qyIA_Z&zMHtzw`hFpPR7
zi&wD^uzUmGwUfutA+lqesiR1lmRY%ALF?mM0SYfh!U}(sQA7zi!TH<(L#0)idw3W%
z`Mb?wnz1WPRstDa_U>lP&)-lZA%?Li%sR-xW1n`O@@zGw6Wo=lR^6a_v^mt3yAD;q
zO4Sqj7_3zEC)a)e-6Az7MuvhLSOd$UevKX)uueQFM>0L}%|hP>6gW@fmW5Szwwln;
zd110g&rOOIb5HJ34N%0zV9H0&sIZ#r$x9ToJn$qtTYx9ZU`-ae&`@Iek7F?<`)7jR
z2k;DfP=dx(0Tag)f3&aqkZPB&#UZ9@m$ZNeW8H^0Yn0LWY+VnqOR!drQXnM@&;O_x
za7Ri+5*{XP9^50;?|P7ab*KFzW|1g)p0^m28z2_~TRjX#$w`_VdH{~)8{B4eh!VWX
z5(NOuKPU@oQ?mCQm)*RDX0*E%fqgW|YKZUKj=xtCbBw@pq2-LPi9Y3cc1lwPH7sU(
z@MZ!qUv<zzD4R23s+qE6-`KLxK7LW7cRcY_4~O7XN&gT{)i)SXb9GTX{ahAr1W-JV
z7uylU=tn))eb?Em<R;bRK*0XHsM=qr2O}g4dm3*_kRoik0BSmPT2&E74(bya(=m~x
zvgEE88TSD&O_X9KnqFK$B9>D$Z=(W$I**)!P6KW(m;5uRMGEzQ<XR59$1@aq^mt1C
zJt_JB|Hn+#aDBSQJJo|mh;AQyuSv&fO~+s_II(|dPh39q57S}Wc~z>>LSgg@7MUxW
zc?rut1gG!^R4IHsEf{N|kdz_cq|uAAtIn|1GVC7hYP0AU7yf)vSS|*W{clZ4Mh{nf
z5NOnOP>)Iz7JB+yFdes8X(7i`N~2~oX08!%#q1^-XHzgMrB+T9L<wh;k48=-k~>uv
z7)iszD)*Vf?o`b?L$5KBOUj_;ce_IM<G58%f7P;_EBA@BRU=YQI>W*|dIP&QTBv6;
zpa3=t9Wk2`raQGBF$j-gj6B-KXqV&5uWJpWox%LV@PT;40f?E9lROXjRd(y*VGSN%
z{sxS6OYI0l&gpOuSVO`3TUhvUB4>3yNe}?a6+ezqE>%^+SXd+8KA|kZ0;{;nbm%D%
zRp7`lO%Ddg#JP%Pf8DeN@+Fy2(z@7bX-6UzgcCqsDez!nbXc5E^^Rro)8v$bods_&
zUkt7ynhQ`{(-hfR@I6^m#l&(Np8G3AU$oMBNGYdxo5Es9h480}F(~3xF%>I)m|5VZ
zf&S~`7?9;x(TeCibOJBo+wTyJtO)NIg#@yqF023p(X0z_+ewqAD$xg%9x~jWrly_%
zHp4PwAJ&S>#Arp=$Lp%cE<7x9*8%!yks5~5B!bL_>`gzS={4})Ag<Td5^>Egfk#zJ
ze6)S^D!X-iArNa;Phv=%zIHx{=QzdaYiL?XBkqj5saCSFkN_r`@&VPl&`VK;4##s6
zxdxVSzc>e}cx!9q36S9_B8+Qpx603#4ag6j&n^J35xhiXmTDg8+wkVsHdT07S1FAs
z@ovNz1Q_tG5?=tzT(+Vc6O*$lL=iphzzcUJu>Sp9Xz-}TWZ4iah2ufR5hE!`nSq+f
z9u3M~rTPr{@0dVss8Sk$xc$(ZBTwXh<sp?H{58PmpmSrF^=O47J_burZ1oYWBWKE+
z^b>*>z4%KF)q}svfHum=qS{4SofraJnyP!vN|5Ztg1;-qSBW8UF+MCZsU)lz3*OWm
zGmvZwD`-vRbmfCHI+rm2gWkm?wG{0;vobQ+z;1@ewg&Z#OkFnd2w182w_uC#et6Mq
zy2z(t=W<y-Ut&6&uS5jMT^Yix7t=$J79{WrGF|L97~^B10vj|ir<Qn!B-678GocZI
zk7^e1qOe_>QYD#sM@Pr&9j|wi`n?R0x36tzjkiQw8l6a_uCZZFO{6W_9&PK4)&kHT
zZ;MtpIStJ<^=*v}%~3jMpgkU`i8nMk*mi9}k@-vO+NxXYo!08M_;|ut)3~<1VN+D!
zw$!X`2eTNy{T-RVI8xJ68?EWo_wCi4(MYtp)``X18tUrf;~S%~xYOE((^DIoV=W|8
zLv1AP#2V@%tsU`pr?#Q40RggTA|Z(1`nHC6G_t0;9oaSDoWMX@2NX3<O?`D+eUz9x
zkw%E(kko5xop^nelEA7uNfyN>f`kTq;U?PDO2|&6rlSpFH+D3k_|Vt-cEvT)+!Bve
z*VZakDVbxSTnnLVqn!{MitK2NQ%23zO;Kl7T{Nz8OlYpLp{XJ6)HEqgQmOFi@-|Xc
zGPe~(r%KvX-L^K`<}{ITr0Q`_ds9byeU$XDRFOEfQD_OD-HA{&QXN4DstoNNu~@@~
znx<BWRb3lv!SS>aTTPIa6ghYP!Z})_4YkooZFRhw^xV-<>yZ3Z_bU_%xRRJ1&7^J|
z3#<wiYiMf+*onm2qEX}>X>7pPwLp)vgFBu2O--nEEpByFO9yf{RjP=sNGj5_vAPiz
z<<zt^HB~p)Dn8hq9pBg*jl^3zT3e%SRFNcpM?)j*Boc`<MVo3`HyZ7?Z)~pti%5H8
zOLHB{wjKvKu0a-Sl?*Y;q?x1%3<X8gH9=~LH8e(1CAAIBP@Pf-Sq-Tu$Pe{I+DHJX
zrL-mluySdsfJYe{B~wu&v=N;u8@16MM@|q0S$8x!sA?q@vWmq})e&9gXg;Xmj^>&)
zDQaN4)GXp?Fm+0!u|^n#x@%~LX+i&JKu$|5*w#8Ic<q|T>gKghTXl0?w6R4A(Yg_p
z)>vJKj|M=5b`p^2RQn~fP!j8Q(b3$|9<3cu(ri#IQMH5iD8y=Mtc|q9V(Omks-`)P
z64%6<QPy!L1YxA1xkc#`%??^cbBV;N8_4;zx79dQVIlQH$0ws$sy!^)h+~U7VfGu8
zxl``S3LH2NWii)uw8tA_4bVnI3ssA@l{MN*<}ZaPZH?NgbhKC3p>`9NMZPEDL?}kh
zbP<_H4UD0!rBT~MW3*a%Ku4L6vdM<_7CQ9WSy9v20^dViP;1%|)wRUiTdQlLBs7@{
z>Co^4sIH-gDmxNst*#xbgGr8VpblIO3SHf{zM(c=@6<J;!W8u~RZ?A14p@#yZK82R
zo2pw|sqz6D2Ugbf$n}wTi`6uekEIHQjicsktJ~{q;QH1&D_UA1nNn_zZJF_e1(HcP
zHB{~zQh_RRYg@Flp``;3#tI0&)V`C-N66&vlO$<(;H#tUt<ls*OD(`Q+WAYX8(ZtE
zlPn-`FJua+G1X+PcE|>_B}d5WU{Uqe?X_@0(N;>TZY2FSZH%EV+m*xDE+ueIs3^kI
zb%bV!_Gmn(Dt0770)s0#1m(O{?ZRR^T6G0S+Ur}|;>4!Ocq^+UWl<#5<cVNFicu8~
zX%r(;9eSVIj;5xK)GXjxb;$rn<54)q%LOK-S=L6$p`u694&C$-DhDbpx*0mC7Nu%z
zSr6BN4x(E1%Bn<gGto9U9g;dk8jW{Gn%hw!jn(bOR8?P$Gj(;?M$Vv>%%L$FkCQ9v
zj90H|jM_%7i;K=tH*r)r+C$Cx=SSM%e4Aqq`bA}cs>v$HOHooZb-cO(l2xjt2=y}L
z7OcCW5-T57-(Wg1-5y9<)ycrfn&G~v`=bFzn|7%bZRtco(SbSC5s^ByqtYc$F)HW;
zT^af@>vdKBdN@IXHlg=!ShF!6b>_~$STz=MU-1d!A!&32yenA;j84@ViUQXLHK=Ar
zWeK`0RUgV3HAgqZ?Z8P<w^pN(qbjH-F23aQ(1qj93ym8e9v>bTf^V5HcEZ?+p)pPI
zj^^mJx@dE>t)T`{w8;8t8>UPiGZ~3>p)rfchsMNeVq;p{TH;ZR&ENx#ud$NBF*Z5n
z^({@&^6KW6=JKWMt6R&_0i$X$%7Fotql6gzg==)wDeq`+D@RY%*ijoTUqd6VWQdLc
zzr3!drW}$)CQlsGS~CU?renjHy5^4ZapNs@3ZY_EPCa=l!*X=lq+}AI9@Saf&@vu3
z%8x4m^>2|FY!_}mT5EB1SR0MuMlsd69W`+^mPy2{`$<4()Q1>q9(^Omc5P9_HZ`<1
zv}hdUr*24+F&M8l>X;U=Lix5a4b9UX`f?cU<g=Hw<8bce;UkcF>p1p$_o~#Cq-8p3
znNGr{J9`i*cd)mUXXoS0n*4H2Oq=j9Qg`H?l{y>lWB@0l5IBWHS^Jh=K6I43RHr5V
zN_+SycS67qT?zavmn)up`6n)7pSU-BI)1Zv*aP6O_Y~8Br`Q8r^Hlp1<>T{h-g(~G
zUY=J9?9wvU?)LKGH9!=un~{<H@5tJDmgE_iXr6Hqj-&7;M)8;Mnj^(uVkcGnB!!5d
zWV<+}@4_F&cky0|o00`5f^vMz=W<>!G?UHSYBCzyrHf-wp;mi*D0c?oGna#=L+a@#
zToiFxFF)aSq09m9sW-B8j$sVyC4Bru{7h^Gi*ENZ7xz!Ozog)g?%yc5$-C1-(Ca--
z!PDM*q|o=gPbl_@w+Gtfd-x+9u}Arn2-5PCYlF=4fRi`Sy@J2%{*E~R&c(qKSMUeD
zA9x7f^iEK47rTeKSEMkJtL9pHvp|+L#9hh9Pr}`#OL13!ql@1M-A555k;z>FQ7%w(
z&v94rb4KBA)FRx~cDkzqWcg|;YPowgFIP&L<6fP>>VL77!jr9zKVtx@FJHFlyZnA&
z-EWAA5+Xi7@V~v}o93Gh-1#=y^|xIFOZc<yrxg3ty}`?bAnIHCz5E96W~!2}cu!FU
zJ>~6BPTcSPm=a(1u*GI6f8Xn32)46_D0qh5OO<#p$CKns`Lp~@ioMA{q}bp1y@Jxj
zUO{Q%4T`-XelNi6Q?XMbwo~qrh&>@+q}YoRuZ1n)zn5Dx5ZjuuGXt?b8F)Cql>a^B
zW<N>boBe<Bk$8{)kdMTN{3ntVpYXp!i3j|5DDk+Dhr&zweVN~;;76ISB2dbe_GD4`
zjwIG+k4;2WO~_R<b!Bj89IWL{?^BPg1$88Af|PTW6`q6@YTk8$_RmL)oU<5Te<6Q`
z%kvx=4^qkY`C#UUdimhdxSukGerB`G&wB~k#kVFL`3`M&#>Jg{Fv};r(c|zlez9pX
z@_2wT6uKTZ!@U$P7#C%!v$dg;0gm(83Q8xQ8SFZ^%Zv~#H#DBOPGYS9Op4$>@{mhz
z=RNnh3Xi*gcl~x8zBX{e$X@<;cbk``VpCN7Hm}Dc>>lq?4_KWV>rwAX!a_`Az2<$c
zus-+xg&~JK7*4o>C$lD>B-nUjHfgSV8BfqW!`#atv%QkAO);neg63+zcpZK|_kPIG
z4yn+tC$pz%I_?Z*t?<%AhruEq_x_FKQ7N)4z$ipZ|F(zCW2+Q3YQY{z${kf{Z@~)C
z8t^jpN`pZxk_0M6=}HfhUpnahhlh%zQULb3_n*p3xxPIx6&(lU^X*xveNd~+^=*Cy
zI`t`2VVOvE9X~kTG%Gl$RF^?jup{l!q1?$KHRcRP&X2o?RW*L>epyw)J>CITbY)~b
zFo;|t$Q@~$$&?^LQi4Rev>K_n_KZ&Ml%Rwqx07?Z-91Fz$>qKL5bVaVA-gBh<h-ex
znma|*lNBlFI!4*xm`W(U@)F8r#m0<w2RsJqLJ^4!Cn!;vz5}4y+Isvv<KnGRrIf1-
z#sF$iq$PX!W|?<^sp0%7Hv2&kc+j5&!(po$q<-a`0AT`nSKNiVLdSA9su}Np<0auM
z_?==u0>Va_AlEknieeJI_;nY>c-?)=W!J&TzVF?~gAN1uL6ek61G-G2%OumCv%|&j
zSF}y?fAc;dpZkG#%u~aPlU_G@-EMX#Q}LJC+lWI3m%PeH0ly)`Sih|#AigEd(ekc$
zh84oskL_EGUwu4mFR!R5JOvBT&Hn_gX6;COFsEq}MReW=|1m$t>Bb`M4#a}#^6&9i
zsQJ9Yj{xZrd`-{sgVQ<FO&PjPDia1PwQcx`Z&cq+O-sC-*KUTB^&Gzu-@~G-s9&e)
z;MiEB42dIi<*?oqtXvjKN+o&hX_*-%>O5VXHZx&Fg2k|86hEnxhd`t8F(bM-j;3G2
z@hD)6(~eWirp!m|R`)JgDZk6T+tpx=noLv*i<~eYKeqx2g@G*gpv)mTwlFAyGVLHm
zsS)M22Vj;efZ^`Q(0TfnJLiG(dCPRmT-J&2E!oBMEb5(tOP(80WT7*`kZB2@zZ!S3
zweF<>je{-*KHGLKj(h>%xuT0ZWn|4|lh6fRr@Mej=c5Bq_ruX3&VS6!QBmp-2=H@v
zt8zzMy?>>CLlcohw1-8OQEPL3dk$ogZtU-x40DUwD_tsU82fNMXs7dm(Awc`<ncf#
zs*uC(U&v8FSHZcD$tDK^B66fXnGt<scB^4HVFda}nupxs-s`47?{)D;AQXsa67uZH
zS`cjjcThE|{DPwzlk@Ym^6-nsdtN}9LF&sGK+bW%xsdwY$*Mn|JRSF6c6Yi+)|r4%
z4#zja=)&BJ2=WHQO${E-u0;nvyj=B6{y7sgiU<gG9KZ6<<Mcf$4cyEAlbp}b_)(7F
z6Mlz4@UP-|3O*BeNCYS3%@~vg^mHT74S4hikN&sPQ0^=8S2Sw-uM9IjdzJ=d&-#Zk
zAcLZmk}nF#$}&6gA(w&vxdUM~Lri28BKOE|$V3|G{9l^l_Vwmb4g2qyIBJ)o_Nc>R
za=5OaZ%R(7XiN4GwV}zCK*Go|29Y~`)$EErPqQwtK$<=EPgiL-dkmu%;`USeEG(`e
z$=qOC!C`+{tP6#uOF0~Ss$XdqTb&GFVoVh9DFIy5A$NOP8;);-?G+wk=vof3x6F+6
zEw)EcQO%WvJspm6`j=>S^CkBat|xb&aA2>5v6+7Bu=%(fN=7D^c?*qIZt-sOu+y=Z
z|JZxnOr}Uhy3YFJV}W#0Z@-k6l%P^e%9M4ExES{rFHrZ(Rw)zlR~YPpb~NfpdzKq_
z79+34b?zGeL;gFC_Kgo_*u*kZx%LpZzKWfy410VVI-Kkd<K3xc@=*4cr06~TM?4vz
zYx3ztc_HjJzME#8s7ZTnS4vF+9-OhJ+fgE_CU&m0XQff^cRA+;nf7opWtvZ!(v$JQ
zEP`{<lFfx00xH>_SjL^<Xk+ylL|x7Ack$w>9=WFBsL|(e_+vu6R3qwdRnxFueL$IN
zs0cMwL_JDBJ(BZZHc44(#NdC)L_;d71aYK2?t(jGK{<9Vc+Bm}(p^SZ)?<p48pYvJ
zng9(3s_e#kgsvkh&CkDJ)2>80e(e2(2E9M=zQ){$PEfz{lXEN@&9Mj4^m<7Reh$(^
zaS1;uZp36TnP6)`Fpvn~t5)*=bpH(B%m3oOoQc@WneVEm?)vt8usr6UqiVw*{zd8V
z4EDsYBAafH^TIj<rQ0*S0(yIpmg4XD!4X}_wFx?Vd{#hb&&D!z_Q0PJcyr^_#%_=J
z;m#x!YSKHHeDHU?_sx0~X5NW`B=nrXo{7dj^N8n0_z{hbl^lg_6)x@RJRBdZN1Z<6
zK0)KkA9z1PKn;uPG=Xy?^)dWL7po&n6t3+#<X6wKmG(U{(nq~-)AWi)!RY)F3{-oV
z4e6hDpT=NVCHwa5pOCxC|F^R>9|wtO9QNp*0qN1Dinp}K@X#tB4yyKHNuaV&>QtB$
z@En8_f3Hsgs51KYw4Ae%30ij|YBI6s-_Ua7GM=5IGqKQ|pqWT}{tI_<QBAq`k=wk_
z`z3i<v#x0hhad^LKe+b4m-K$G*Gu!kUT-&5Eh=lbw}Zy@JJ^ln*a5ha{n9Ko8dh@7
z2z|$$VpPi5dHDIY`v<C^gWjvu!fs(SpH_}q+Ve=bGYo8B@ZO|qrc2s0U${eyPCxK4
zKUD^wV=6Weh@R^QQL1^>McR`|xHAAO8@uehPR<=^1<MD=HS09LM+_7TvcxZl2K-(Q
z$cBL5lGRo~d+-Xabu8g?mS}cElElN*IEY%qRAsY=l5l4-v^)6$vh)Ys2hCjcK^L=c
z)8@3q!LQss%$9*%%bIKP^HujDQtrd<cPQBB{)B>`y0202ru!ZRACU7|!v70vX$Wrd
zzM^z#xXMt-@|+22W*(!)e9Sv(8uLl7*EZ%9Of=+POpNZPiBaN`mj%prxF|E<;r@t9
z_kw#P+0y~<1zJPlFR)k1jNW8NDN5w7%pR)QU>yKLUZlHb1yYk&ok+j(hLDbMXCyF{
zg<V7Qt+uT$&dlDzx4Jjr+pO>h-=$K2m-?q={5B7sgqC*kF&_-DJ*<i>;dk0Wl5#A>
z`-cJVKA4H~elL;pega*CH>H=qh3PG#fAhA|T8dh?(vmny<-V8(W*6f-FIS_uuXq%D
z#d`wYhd;qkdPHAfe;{W>my|)NIfR@w4>LyMOaJnZA^hUvj*m1S(<Kz{;zf{qQI(ll
zQnGw}2nB@K7Zuod8bq8n9R`JUjp+>#lrH&tfK&`GP&!Vp3s8#v&JxGD1DEp)jvF&P
z?tWyZcJ>qynZ;(Aj!sSN?AafKvY0)cLk%G9aU6Ma_tXn1bGX3Ze2pwtug3rwY@%Sl
z9ZU%LR$|gej|tx%b&;E#C*T82G5X5gm6o?Xd?Me%G)olC9wR|d5U_^Q3C(nF)|%P;
zwq8p2Ee@VBSh`fgOZlL77;8HbUfRovP<2HCw!M){2kBexWRaB*oQ$fvkR0H=CA3b;
zmsH`tz7s#!Z+HDx=T6uE91HAsyStKN54ztZv)${yfFM|H1Y@+b<Q!0-tdXe7k(1G0
zCojPr*stPMD`9E%FnKfD)+;|V2U^M0=zJEiXU&qGPAlf<eAYr=-O&_xVbnl1KBLu6
znM}Qm7tVqjL49pNt?mr9hJwmpZt~1k&dj&xL16xdRPM;FflLLt?T-G8^7s+!unbW$
zA{C%y@slaC3spW)p!yWECd)1<R?u++Q{g2ePJ^v@rvFI$sZ8$7g?{H=u5IP=12lF!
z;2w}Ven9?G0`N<D%m9wbzY^fD^0N$$@ma=wJ^=UmU6~4yo{@^D<hD%bhAx$ITV``Z
z`~Yp8T*eRS+yFQxKO?|rIyV45%jh8w(W7$<o=c+U_T!7Vba7`PR;L&4q@mXX9^6la
z|ABo>OVs+3-x{EAu;PrN`h>;!S$q}S`K)&D$$ZGNiPk!9n5CL?A-DE`iC$kUW}7j+
zFCO7ug%#b$aW*=F1NedpfCpSGJ}&29_rB*PF(Mf(vl$6yXb#22z%CxCXh&Xy`z~)M
zQSzM#*(Pw@>D}$QE3k_BQw9I2_Xp2it_$VJIRUeEsFqzW28F0U_jefG7!(^|am119
z1N408HUBL2*yF4jxL<n{RnE`dHz;_+eIMTu#uJhE-H$20-MigGaKHB*1T=KB#|jjr
zM|G~!9t1#r-sL=JrnME{ewhCpG#2m)KKY+Aink&=(n&NW@F~DdiHC-2OB^~Gk;wsP
z)Y8xZS<Q`y*h~X<j(jda!HOHtssM|MX`0`(wTP^3)RD$(lLjjCH%U}@qA(EEHkf8h
zi<YS-PyFTI1Dr7Ug!NN$UOq$ni2lZb(!!ZSx8Ky~&IkxHVx*Q8Cg(`|^?dVyTo+eS
zDas{5e^&;|GBrV5sHI-GB1vj+N=9AA%jUzq&0oN-ySA4vAPO`vP^jeyy|}O}U|mWU
zSQ>`Q#FM689v%-ziaT<J^R6(^KqTa3zn5=bFc=6G3>>6|8gwoq=Z@9|Bxf(}x9;@_
zxNMMWC$9gi;hH14RSZ~zC?(VUM)F|wKtE8?4ws0e-4$(S&Es^|;}!(1AO&L?A4?c0
zKQLg=c$#Hjmk=)njwOTV7V{yaFiCjA!x76t{pR9514ncO@ghESDCmPOaugq3;Rrjn
zz-)o{3ndQ!;*Q{%c}{TT7FHbi+2yCk?O|1zaN)%ZN7%7|iWfK{F^0<H1*I50@k^^5
zk(hQ2=EH{ZpJ6oUh{VL9FCQ>~$9K4nuqQfVXvGH)#^~P>o|zG1@WOL0;m^Cz1J6zw
zVT|a`?*_!q6j9Z@bO4S+3dk~fPO&5GL92KZf*1F9gq`J)B1W8z(g%wO`MhX|BW?-e
zg7+EZ2zxp+DJlo)_EcsSAHWZbt<n+p$Yc$4#G=47umyc8pEu7DiG?Z$i&LByq#Ti0
zFe>1`a=!@WB(41Lb@#YxF~<>!rO^?5@>Kpcxfhw*wM{C?ZY<J5I}^0YVy%bY%YMx8
zS!%PENRUXUBkTe?X``&n5l4gc0{#wOba6ytsoUWhC0N|P!{ztVoaqo2<sFe&mA*`^
zJ>w(`^KhUuBY1k?h}(ikJdFEg5biG!?~?#n##e1{MC<uhT&ToXW_2_GWpSL4iaq8Q
zWf&hhi(gU4pLF-3*6p(ntb+2sL--J+;t+HDzyl2kJ79Sx?0j|bh%kregW;1w9Cn<|
z`@ll%BSCH2yzfXyB%W}N=3~xtgncecYAZ!+d#J*SCGq$ZD~FGwc!>wBS-j6obiq%%
zc)Q}Ti#Jq`y8L6P4;|N+Jv8709@JK%S@f<==q<y(7`0BPo&J}+GIu`uJUulF0MF@j
z%Bfc5K?t6H;t#FLDR`0QMD%n~ExAsAXYW=OMPB-%X#l|=NrO}B>Ev0e@cTMPuO*Dc
zwNl*{I!mrh!04_8|E^Q&9KAjjegmR~sUQ`50KWy0=bSWozN7H_INip!zeEbdwIBb5
z(1V?byse;)^MZn#NK$b44Db&Xyw52|q5K7KlIKVlZg5$>p-?K{$1l=wst>y8JNc(8
z*ExU_pTk`WE#Na5@Q?<j{9b18S9fW!Z&IUxQ+bb%)qp#UKyRS;3OW58$KV@ur`h70
zj?bQE+-dkfYw!_OSC_&!k)&X!;S&mJpgnH&V@$TGT=`oy+{$?m@Cn}9l?wl+fq!V=
zMttXcfagR0Dg)P4j`N(s-@P@J&rc0}W*Yn#fRlc@%(}M;aAc^4+d<<@lfegu&xS4y
zu=4!fz#lhoTP_Yg7kc^5bCrgH39<;D3R1B_3f||GGlb4Q1O9Bl3!sNkmu5!omaa;}
z$G+C*Kt8&tK2Mi#%;4J>A^wCoUCn2}-)8Xbm~o^=cm4%%s>i#xYJk<xy$0XD8FJj<
zKWO0gWhOlo#lh5u&+e{NKF=BW=rsN>89w&yQ1h6@c^z=F6UXo|**ZrIpZ`eXe_Zjg
zSc#D4=BLwJ@fqM_&H$%#gh)T#Y4Xz{L!m@=!CmDU_^cp4IFiKg3Q*Ne-5KyV5<c<`
znS8B%?ojXooY<lH*!sFd@qvG<(C}81%`OACtE%>>=Z6*CASDIQDgOPPKXqxK<^S&n
zZr{PM^1OBiK1U7yGiiKIo&i4>8BuwiwDQs^m(<?vI^0J_*5L*}cth5}M;Z9hw0yDG
zQ1N-?B8`Y)o4O_${&p4TS`BvSjQD)W^SF`6fSq3{d+XzjE!GgTqU~H{@_nvL!>xW6
z8TfGnM^s%`;fBgJc7~3B$-rw3zMrOtbqe1gB?Y$tPI6XtB>{1Jm*Jm2IJwWj?IXf4
zEvDjn_ze7?I|KX$z^T6M3rdKp>s5u1af=yX((x{Iy=m|dcByFaV)^?9zQmN*@}XmJ
ziGP=Y=W8<Oj|RTlz(WRp0&vo2tFiwzrhfls@b66HpJ)2Dg=ugcjHU8@yGt_$xw^^#
zC;oQwZ|!8Hfj@4hy$uF`wBhqkmj+lqlMH?^05|wEEdSveFxtQuD7c9v1y>vXk929E
zwYO%&$G&l}$LL}68TfpO_`olv+t1yG|0{;SmH&}5@cEI!pJMcB<@tBOLt4a?-}e=t
zK8}5pf4GtJgn>V9I`)eU6~0>r{hxYeC^-CsZHR_XAHd0eKIzglR-VCt4?C5Ovj}vB
z9u79LhGuZiSNu;Us8n!_(~O;$8I+|4ZWo<q8u+R+@Y#F@_#KANbH+b>Xe!`7z*W2G
z(u{4n>?V^MyK^>7`)I>sgZ*zd9_)JxW8ZILQ($;p>TXg{MlM=@$*e{5FT{o)?BI#a
znHQOR*{nr#BJ(b~%!ypQaPjO}3nPo?&RsfZS!CI)*$d}Hl6D3Kn^|XGym0>P3nSyh
z6R=M)eUBaO-_@JU?2b0t+7ytC4^L7%ow2<t1*Z1yslC66jZDdVov=d}yS=dyrVYEW
zu%$R4o-k3XBiKn5nZIliw)wS1>#(Oc+O}-bh1jDRT}Io%XtNGBQ3bRl4DETNtx>_|
zP)KI>oziC2Q*deb8twT>NT7<8vVScSRr`^HExUT(;%PP>HksYSddq7{US<bgB!;cA
zv}X)k$Wqc1d-Z5PZ}Rrk0Bxe(CYZd%mNuyd7$kbI_f2nLO-WPRwDmUBpfC_5X&Z0q
zzD~P0P3`<l+Z`J0ipP#~?AF$GnX+Gwwpcc`rV4<ap(%jm-P1wBgz!YWvDNI|##a2M
zmS$rw5$LZvQR@>Xz^H56TOwL^M{j%%n2np5yc3-^`KjuT&}QPKUCX3@v&|I<c0YB%
zg+xl;q#5i5)jKc)JgR{jn4I18pSm$IKszsa8*tJm2h4`pq|Xr~w$AHM71%wYsoRc&
z?ft=aS-ovDvCB2cno5EVvhD4r#?*#>D!ttzjGe*s2?X^yfmAB}F#xnUYS?5q_6q>X
zdl9jTQ*Ru`*ANmLMw87=Z+EZ5hEUovsrFzdJ_KPuabWkr2folYXtS-b4I8cl=}7B=
zt(x8I))7!`s2!6j*pUbvNo39?7eyj=Pb3PYB}@4PLO?}&OYFZ^Ug@+xDf!a^X*-zp
zrf0jKGkqg?q-H}kxrgdTe7qva))XzZ)hNYP<C7Li8;?)j@fq--29mTbJqd2Nk)ugq
z<7$vVnL6S2jZN5fi!k1%!+LuM^N6;!I$?Z+A{xe)%P@9-;>!r}jRrJp_WUt%?BG^u
zkg?tg*KTYEKOJIwt4hIU*>>76njDEBtu5MEO$6qywK495)fWZAxD8`_yQ6Ms-)cBc
zyIRA_tA^WJl%Ebq>#^4wdz&NmwcuuBnn$F%t*shz5{11-R@F@nV5Z5@HXQW4P1qa_
z*0s?!9d*E@j}`!~qw4!0HfasM@6c&eRG(*3psr*v8eAgYQbU{C1BPwQ`2GpS{~ug5
z&T;W?hFMNO%;)H`;XoY?ehD}EqTy`@{w@6!LvO>G$;h}5#y18|?^h?&Z!q*W3>iEd
z*m0|k(|GbPpMTzB^S|5B+t9AZU>K^d^!zUY6r;pI{#OjW4Xqp)rYSvHdaP)u>k9l5
ziOqi=6$Y0LkEbatE$YylF`p;NKP6L<J2te-R#twSj}6xX{j((cFB*Cqc58M{y8H(0
zY{Cuc)bi_R7NBhyG6LKD)62iZ(9bpu>9l0JY-s1@L|=;kbo$!>qbx{1b=mQ{3GF!C
zCa2f`%}7Y54;eZeK9{EOH1^J&Y4q=4DTXc^T6_&nOeZXS7ZQ^5KW^x4`1t>j|JT##
z?c*C84l(nQ^!#mnZyLQ_=d@w2MKoc${+=}Sw*Kuplns{{d$w$Bxov!38ohm<V8h0=
z@~7v2Fpd7XD$Uu3fx(yzt^Js&^D1ug@Nb%}bJ$Ge4>xLzbbK4P;je*)Rkncs9Yg=l
zKS}=qXvubM{`NV`QA2MVmbGu2uhrw-pd}Rr^yazC(PjW~^-I&ArMKZp;3U&KT||Ye
zRR>0$I)dL&aHnrRML@i4{;Rt*yvoooNy|T^lY`&Sa7QR(1Bkw{^y|~$mYoeVaAWV2
zQD3(CCj)Vxj@$PP^h4HZ!j%`MGDxQ%b_V**-_~>$*6|rO>GWgIK>ywEX@Xlv|Kt2C
z41K!(X1}lLJ}~~=a<Tc_@ZvMjk3Oy`F1Lt=fsNYmN<(k?+i<H{m@OY_Av&~l7Fu@(
z`o{}3CJyRJxzgz=9{8Rl%x9=#ac#)az!3<jYq553`(ILzwOx&=f5#5j^pDwwXA;x%
UCwF~1`d@!RW3EplNQ*lE4PH=W2LJ#7

literal 87952
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
Jfshe({y!Xa)mZ=l

diff --git a/FIGlib.h b/FIGlib.h
index 098d132..61e7449 100644
--- a/FIGlib.h
+++ b/FIGlib.h
@@ -170,1922 +170,1721 @@ outchr **outputline;   /* Alloc'd char outputline[charheight][outlinelenlimit+1]
 	int outlinelen;
 
 
-	/****************************************************************************
+/****************************************************************************
 
-	  Globals dealing with command file storage
+  Globals dealing with command file storage
 
-	****************************************************************************/
+****************************************************************************/
 
-	typedef struct cfn {
-	  char *thename;
-	  struct cfn *next;
-	  } cfnamenode;
+typedef struct cfn {
+  char *thename;
+  struct cfn *next;
+  } cfnamenode;
 
-	cfnamenode *cfilelist,**cfilelistend;
+cfnamenode *cfilelist,**cfilelistend;
 
-	typedef struct cm {
-	  int thecommand;
-	  inchr rangelo;
-	  inchr rangehi;
-	  inchr offset;
-	  struct cm *next;
-	  } comnode;
+typedef struct cm {
+  int thecommand;
+  inchr rangelo;
+  inchr rangehi;
+  inchr offset;
+  struct cm *next;
+  } comnode;
 
-	comnode *commandlist,**commandlistend;
+comnode *commandlist,**commandlistend;
 
-	/****************************************************************************
+/****************************************************************************
 
-	  Globals affected by command line options
+  Globals affected by command line options
 
-	****************************************************************************/
+****************************************************************************/
 
-	int deutschflag,justification,paragraphflag,right2left,multibyte;
-	int cmdinput;
+int deutschflag,justification,paragraphflag,right2left,multibyte;
+int cmdinput;
 
-	#define SM_SMUSH 128
-	#define SM_KERN 64
-	#define SM_EQUAL 1
-	#define SM_LOWLINE 2
-	#define SM_HIERARCHY 4
-	#define SM_PAIR 8
-	#define SM_BIGX 16
-	#define SM_HARDBLANK 32
+#define SM_SMUSH 128
+#define SM_KERN 64
+#define SM_EQUAL 1
+#define SM_LOWLINE 2
+#define SM_HIERARCHY 4
+#define SM_PAIR 8
+#define SM_BIGX 16
+#define SM_HARDBLANK 32
 
-	int smushmode;
+int smushmode;
 
-	#define SMO_NO 0     /* no command-line smushmode */
-	#define SMO_YES 1    /* use command-line smushmode, ignore font smushmode */
-	#define SMO_FORCE 2  /* logically OR command-line and font smushmodes */
+#define SMO_NO 0     /* no command-line smushmode */
+#define SMO_YES 1    /* use command-line smushmode, ignore font smushmode */
+#define SMO_FORCE 2  /* logically OR command-line and font smushmodes */
 
-	int smushoverride;
+int smushoverride;
 
-	int outputwidth;
-	int outlinelenlimit;
-	char *fontdirname,*fontname;
+int outputwidth;
+int outlinelenlimit;
+char *fontdirname,*fontname;
 
 
-	/****************************************************************************
+/****************************************************************************
 
-	  Globals read from font file
+  Globals read from font file
 
-	****************************************************************************/
+****************************************************************************/
 
-	char hardblank;
-	int charheight;
+char hardblank;
+int charheight;
 
 
-	/****************************************************************************
+/****************************************************************************
 
-	  Name of program, used in error messages
+  Name of program, used in error messages
 
-	****************************************************************************/
+****************************************************************************/
 
-	char *myname;
+char *myname;
 
 
-	/*---------------------------------------------------------------------------
-	  Wordbreakmode:
-		-1: /^$/ and blanks are to be absorbed (when line break was forced
-		  by a blank or character larger than outlinelenlimit)
-		0: /^ *$/ and blanks are not to be absorbed
-		1: /[^ ]$/ no word break yet
-		2: /[^ ]  *$/
-		3: /[^ ]$/ had a word break
-	---------------------------------------------------------------------------*/
+/*---------------------------------------------------------------------------
+  Wordbreakmode:
+	-1: /^$/ and blanks are to be absorbed (when line break was forced
+	  by a blank or character larger than outlinelenlimit)
+	0: /^ *$/ and blanks are not to be absorbed
+	1: /[^ ]$/ no word break yet
+	2: /[^ ]  *$/
+	3: /[^ ]$/ had a word break
+---------------------------------------------------------------------------*/
 
 
-	#ifdef TIOCGWINSZ
-	/****************************************************************************
+/****************************************************************************
 
-	  get_columns
+  myalloc
 
-	  Determines the number of columns of /dev/tty.  Returns the number of
-	  columns, or -1 if error.  May return 0 if columns unknown.
-	  Requires include files <fcntl.h> and <sys/ioctl.h>.
-	  by Glenn Chappell & Ian Chai 14 Apr 1993
+  Calls malloc.  If malloc returns error, prints error message and
+  quits.
 
-	****************************************************************************/
+****************************************************************************/
 
-	int get_columns()
-	{
-	  struct winsize ws;
-	  int fd,result;
+#ifdef __STDC__
+char *myalloc(size_t size)
+#else
+char *myalloc(size)
+int size;
+#endif
+{
+  char *ptr;
+#ifndef __STDC__
+  extern void *malloc();
+#endif
 
-	  if ((fd = open("/dev/tty",O_WRONLY))<0) return -1;
-	  result = ioctl(fd,TIOCGWINSZ,&ws);
-	  close(fd);
-	  return result?-1:ws.ws_col;
+  if ((ptr = (char*)malloc(size))==NULL) {
+	fprintf(stderr,"%s: Out of memory\n",myname);
+	exit(1);
 	}
-	#endif /* ifdef TIOCGWINSZ */
-
-
-	/****************************************************************************
-
-	  myalloc
-
-	  Calls malloc.  If malloc returns error, prints error message and
-	  quits.
-
-	****************************************************************************/
-
-	#ifdef __STDC__
-	char *myalloc(size_t size)
-	#else
-	char *myalloc(size)
-	int size;
-	#endif
-	{
-	  char *ptr;
-	#ifndef __STDC__
-	  extern void *malloc();
-	#endif
-
-	  if ((ptr = (char*)malloc(size))==NULL) {
-		fprintf(stderr,"%s: Out of memory\n",myname);
-		exit(1);
-		}
-	  else {
-		return ptr;
-		}
+  else {
+	return ptr;
 	}
-
-
-	/****************************************************************************
-
-	  hasdirsep
-
-	  Returns true if s1 contains a DIRSEP or DIRSEP2 character.
-
-	****************************************************************************/
-
-	int hasdirsep(s1)
-	char *s1;
-	{
-	  if (strchr(s1, DIRSEP)) return 1;
-	  else if (strchr(s1, DIRSEP2)) return 1;
-	  else return 0;
-	}
-
-	/****************************************************************************
-
-	  suffixcmp
-
-	  Returns true if s2 is a suffix of s1; uses case-blind comparison.
-
-	****************************************************************************/
-
-	int suffixcmp(s1, s2)
-	char *s1;
-	char *s2;
-	{
-	  int len1, len2;
-
-	  len1 = MYSTRLEN(s1);
-	  len2 = MYSTRLEN(s2);
-	  if (len2 > len1) return 0;
-	  s1 += len1 - len2;
-	  while (*s1) {
-		if (tolower(*s1) != tolower(*s2)) return 0;
-		s1++;
-		s2++;
-		}
-	  return 1;
-	}
-	   
-	/****************************************************************************
-
-	  skiptoeol
-
-	  Skips to the end of a line, given a stream.  Handles \r, \n, or \r\n.
-
-	****************************************************************************/
-
-	void skiptoeol(fp)
-	ZFILE *fp;
-	{
-	  int dummy;
-
-	  while (dummy=Zgetc(fp),dummy!=EOF) {
-		if (dummy == '\n') return;
-		if (dummy == '\r') {
-		  dummy = Zgetc(fp);
-		  if (dummy != EOF && dummy != '\n') Zungetc(dummy,fp);
-		  return;
-		  }
-	  }
-	}
-
-
-	/****************************************************************************
-
-	  myfgets
-
-	  Local version of fgets.  Handles \r, \n, and \r\n terminators.
-
-	****************************************************************************/
-
-	char *myfgets(line,maxlen,fp)
-	char *line;
-	int maxlen;
-	ZFILE *fp;
-	{
-	  int c = 0;
-	  char *p;
-
-	  p = line;
-	  while((c=Zgetc(fp))!=EOF&&maxlen) {
-		*p++ = c;
-		maxlen--;
-		if (c=='\n') break;
-		if (c=='\r') {
-		  c = Zgetc(fp);
-		  if (c != EOF && c != '\n') Zungetc(c,fp);
-		  *(p-1) = '\n';
-		  break;
-		  }
-		}
-	  *p = 0;
-	  return (c==EOF) ? NULL : line;
-	}
-
-
-	/****************************************************************************
-
-	  usageerr
-
-	  Prints "Usage: ...." line to the given stream.
-
-	****************************************************************************/
-
-	void printusage(out)
-	FILE *out;
-	{
-	  fprintf(out,
-		"Usage: %s [ -cklnoprstvxDELNRSWX ] [ -d fontdirectory ]\n",
-		"              [ -f fontfile ] [ -m smushmode ] [ -w outputwidth ]\n"
-		"              [ -C controlfile ] [ -I infocode ] [ message ]\n",
-		myname);
-	}
-
-
-	/****************************************************************************
-
-	  printinfo
-
-	  Prints version and copyright message, or utility information.
-
-	****************************************************************************/
-
-	void printinfo(infonum)
-	int infonum;
-	{
-	  switch (infonum) {
-		case 0: /* Copyright message */
-		  printf("FIGlet Copyright (C) 1991-2012 Glenn Chappell, Ian Chai, "
-				 "John Cowan,\nChristiaan Keet and Claudio Matsuoka\n"
-				 "Internet: <info@figlet.org> "
-				 "Version: %s, date: %s\n\n"
-				 "FIGlet, along with the various FIGlet fonts"
-				 " and documentation, may be\n"
-				 "freely copied and distributed.\n\n"
-				 "If you use FIGlet, please send an"
-				 " e-mail message to <info@figlet.org>.\n\n"
-				 "The latest version of FIGlet is available from the"
-				 " web site,\n\thttp://www.figlet.org/\n\n",
-		   VERSION,DATE);
-		  printusage(stdout);
-		  break;
-		case 1: /* Version (integer) */
-		  printf("%d\n",VERSION_INT);
-		  break;
-		case 2: /* Font directory */
-		  printf("%s\n",fontdirname);
-		  break;
-		case 3: /* Font */
-		  printf("%s\n",fontname);
-		  break;
-		case 4: /* Outputwidth */
-		  printf("%d\n",outputwidth);
-		  break;
-		case 5: /* Font formats */
-		  printf("%s", FONTFILEMAGICNUMBER);
-	#ifdef TLF_FONTS
-		  printf(" %s", TOILETFILEMAGICNUMBER);
-	#endif
-		  printf("\n");
-		}
-	}
-
-
-	/****************************************************************************
-
-	  readmagic
-
-	  Reads a four-character magic string from a stream.
-
-	****************************************************************************/
-	void readmagic(fp,magic)
-	ZFILE *fp;
-	char *magic;
-	{
-	  int i;
-
-	  for (i=0;i<4;i++) {
-		magic[i] = Zgetc(fp);
-		}
-	  magic[4] = 0;
-	  }
-	  
-	/****************************************************************************
-
-	  skipws
-
-	  Skips whitespace characters from a stream.
-
-	****************************************************************************/
-	void skipws(fp)
-	ZFILE *fp;
-	{
-	  int c;
-	  while (c=Zgetc(fp),isascii(c)&&isspace(c)) ;
-	  Zungetc(c,fp);
-	  }
-
-	/****************************************************************************
-
-	  readnum
-
-	  Reads a number from a stream.  Accepts "0" prefix for octal and
-	  "0x" or "0X" for hexadecimal.  Ignores leading whitespace.
-
-	****************************************************************************/
-	void readnum(fp,nump)
-	ZFILE *fp;
-	inchr *nump;
-	{
-	  int acc = 0;
-	  char *p;
-	  int c;
-	  int base;
-	  int sign = 1;
-	  char digits[] = "0123456789ABCDEF";
-
-	  skipws(fp);
-	  c = Zgetc(fp);
-	  if (c=='-') {
-		sign = -1;
-		}
-	  else {
-		Zungetc(c,fp);
-		}
-	  c = Zgetc(fp);
-	  if (c=='0') {
-		 c = Zgetc(fp);
-		 if (c=='x'||c=='X') {
-		   base = 16;
-		   }
-		 else {
-		   base = 8;
-		   Zungetc(c,fp);
-		   }
-		}
-	  else {
-		base = 10;
-		Zungetc(c,fp);
-		}
-
-	  while((c=Zgetc(fp))!=EOF) {
-		c=toupper(c);
-		p=strchr(digits,c);
-		if (!p) {
-		  Zungetc(c,fp);
-		  *nump = acc * sign;
-		  return;
-		  }
-		acc = acc*base+(p-digits);
-		}
-	  *nump = acc * sign;
-	  }  
-
-	/****************************************************************************
-
-	  readTchar
-
-	  Reads a control file "T" command character specification.
-
-	  Character is a single byte, an escape sequence, or
-	  an escaped numeric.
-
-	****************************************************************************/
-
-	inchr readTchar(fp)
-	ZFILE *fp;
-	{
-	  inchr thechar;
-	  char next;
-
-	  thechar=Zgetc(fp);
-	  if (thechar=='\n' || thechar=='\r') { /* Handle badly-formatted file */
-		Zungetc(thechar,fp);
-		return '\0';
-		}
-	  if (thechar!='\\') return thechar;
-	  next=Zgetc(fp);
-	  switch(next) {
-		case 'a':
-		  return 7;
-		case 'b':
-		  return 8;
-		case 'e':
-		  return 27;
-		case 'f':
-		  return 12;
-		case 'n':
-		  return 10;
-		case 'r':
-		  return 13;
-		case 't':
-		  return 9;
-		case 'v':
-		  return 11;
-		default:
-		  if (next=='-' || next=='x' || (next>='0' && next<='9')) {
-			Zungetc(next,fp);
-			readnum(fp,&thechar);
-			return thechar;
-			}
-		  return next;
-		}
-	}
-
-	/****************************************************************************
-
-	  charsetname
-
-	  Get a Tchar representing a charset name, or 0 if none available.
-	  Called in getcharset().
-
-	****************************************************************************/
-
-	inchr charsetname(fp)
-	ZFILE *fp;
-	{
-	  inchr result;
-
-	  result = readTchar(fp);
-	  if (result == '\n' || result == '\r') {
-		result = 0;
-		Zungetc(result,fp);
-		}
-	  return result;
-	  }
-
-	/****************************************************************************
-
-	  charset
-
-	  Processes "g[0123]" character set specifier
-	  Called in readcontrol().
-
-	****************************************************************************/
-
-	void charset(n, controlfile)
-	int n;
-	ZFILE *controlfile;
-	{
-	  int ch;
-
-	  skipws(controlfile);
-	  if (Zgetc(controlfile) != '9') {
-		skiptoeol(controlfile);
-		return;
-		}
-	  ch = Zgetc(controlfile);
-	  if (ch == '6') {
-		 gn[n] = 65536L * charsetname(controlfile) + 0x80;
-		 gndbl[n] = 0;
-		 skiptoeol(controlfile);
-		 return;
-		 }
-	  if (ch != '4') {
-		skiptoeol(controlfile);
-		return;
-		}
-	  ch = Zgetc(controlfile);
-	  if (ch == 'x') {
-		 if (Zgetc(controlfile) != '9') {
-		   skiptoeol(controlfile);
-		   return;
-		   }
-		 if (Zgetc(controlfile) != '4') {
-		   skiptoeol(controlfile);
-		   return;
-		   }
-		 skipws(controlfile);
-		 gn[n] = 65536L * charsetname(controlfile);
-		 gndbl[n] = 1;
-		 skiptoeol(controlfile);
-		 return;
-		 }
-	  Zungetc(ch, controlfile);
-	  skipws(controlfile);
-	  gn[n] = 65536L * charsetname(controlfile);
-	  gndbl[n] = 0;
-	  return;
-	  }
-
-	/****************************************************************************
-
-	  FIGopen
-
-	  Given a FIGlet font or control file name and suffix, return the file
-	  or NULL if not found
-
-	****************************************************************************/
-
-	ZFILE *FIGopen(name,suffix)
-	char *name;
-	char *suffix;
-	{
-	  char *fontpath;
-	  ZFILE *fontfile;
-	  struct stat st;
-	  int namelen;
-
-	  namelen = MYSTRLEN(fontdirname);
-	  fontpath = (char*)alloca(sizeof(char)*
-		(namelen+MYSTRLEN(name)+MYSTRLEN(suffix)+2));
-	  fontfile = NULL;
-	  if (!hasdirsep(name)) {  /* not a full path name */
-		strcpy(fontpath,fontdirname);
-		fontpath[namelen] = DIRSEP;
-		fontpath[namelen+1] = '\0';
-		strcat(fontpath,name);
-		strcat(fontpath,suffix);
-		if(stat(fontpath,&st)==0) goto ok;
-		}
-	  /* just append suffix */
-	  strcpy(fontpath,name);
-	  strcat(fontpath,suffix);
-	  if(stat(fontpath,&st)==0) goto ok;
-
-	  return NULL;
-
-	ok:
-	  fontfile = Zopen(fontpath,"rb");
-	  return fontfile;
-	}
-
-	/****************************************************************************
-
-	  readcontrol
-
-	  Allocates memory and reads in the given control file.
-	  Called in readcontrolfiles().
-
-	****************************************************************************/
-
-	void readcontrol(controlname)
-	char *controlname;
-	{
-	  inchr firstch,lastch;
-	  char dashcheck;
-	  inchr offset;
-	  int command;
-	  ZFILE *controlfile;
-
-	  controlfile = FIGopen(controlname,CONTROLFILESUFFIX);
-
-	  if (controlfile==NULL) {
-		fprintf(stderr,"%s: %s: Unable to open control file\n",myname,
-		  controlname);
-		exit(1);
-		}
-
-	  (*commandlistend) = (comnode*)myalloc(sizeof(comnode));
-	  (*commandlistend)->thecommand = 0; /* Begin with a freeze command */
-	  commandlistend = &(*commandlistend)->next;
-	  (*commandlistend) = NULL;
-
-	  while(command=Zgetc(controlfile),command!=EOF) {
-		switch (command) {
-		  case 't': /* Translate */
-			skipws(controlfile);
-			firstch=readTchar(controlfile);
-			if ((dashcheck=Zgetc(controlfile))=='-') {
-			  lastch=readTchar(controlfile);
-			  }
-			else {
-			  Zungetc(dashcheck,controlfile);
-			  lastch=firstch;
-			  }
-			skipws(controlfile);
-			offset=readTchar(controlfile)-firstch;
-			skiptoeol(controlfile);
-			(*commandlistend) = (comnode*)myalloc(sizeof(comnode));
-			(*commandlistend)->thecommand = 1;
-			(*commandlistend)->rangelo = firstch;
-			(*commandlistend)->rangehi = lastch;
-			(*commandlistend)->offset = offset;
-			commandlistend = &(*commandlistend)->next;
-			(*commandlistend) = NULL;
-			break;
-		  case '0': case '1': case '2': case '3': case '4':
-		  case '5': case '6': case '7': case '8': case '9':
-		  case '-':
-					/* Mapping table entry */
-			Zungetc(command,controlfile);
-			readnum(controlfile,&firstch);
-			skipws(controlfile);
-		readnum(controlfile,&lastch);
-		offset=lastch-firstch;
-			lastch=firstch;
-			skiptoeol(controlfile);
-			(*commandlistend) = (comnode*)myalloc(sizeof(comnode));
-			(*commandlistend)->thecommand = 1;
-			(*commandlistend)->rangelo = firstch;
-			(*commandlistend)->rangehi = lastch;
-			(*commandlistend)->offset = offset;
-			commandlistend = &(*commandlistend)->next;
-			(*commandlistend) = NULL;
-			break;
-		  case 'f': /* freeze */
-			skiptoeol(controlfile);
-			(*commandlistend) = (comnode*)myalloc(sizeof(comnode));
-			(*commandlistend)->thecommand = 0;
-			commandlistend = &(*commandlistend)->next;
-			(*commandlistend) = NULL;
-			break;
-		  case 'b': /* DBCS input mode */
-			multibyte = 1;
-			break;
-		  case 'u': /* UTF-8 input mode */
-			multibyte = 2;
-			break;
-		  case 'h': /* HZ input mode */
-			multibyte = 3;
-			break;
-		  case 'j': /* Shift-JIS input mode */
-			multibyte = 4;
-			break;
-		  case 'g': /* ISO 2022 character set choices */
-			multibyte = 0;
-			skipws(controlfile);
-			command=Zgetc(controlfile);
-			switch (command) {
-			  case '0': /* define G0 charset */
-				charset(0, controlfile);
-				break;
-			  case '1': /* set G1 charset */
-				charset(1, controlfile);
-				break;
-			  case '2': /* set G2 charset */
-				charset(2, controlfile);
-				break;
-			  case '3': /* set G3 charset */
-				charset(3, controlfile);
-				break;
-			  case 'l': case 'L': /* define left half */
-				skipws(controlfile);
-				gl = Zgetc(controlfile) - '0';
-				skiptoeol(controlfile);
-				break;
-			  case 'r': case 'R': /* define right half */
-				skipws(controlfile);
-				gr = Zgetc(controlfile) - '0';
-				skiptoeol(controlfile);
-				break;
-			  default: /* meaningless "g" command */
-				skiptoeol(controlfile);
-			  }
-		  case '\r': case '\n': /* blank line */
-			break;
-		  default: /* Includes '#' */
-			skiptoeol(controlfile);
-		  }
-		}
-	  Zclose(controlfile);
-	}
-
-
-	/****************************************************************************
-
-	  readcontrolfiles
-
-	  Reads in the controlfiles names in cfilelist.  Uses readcontrol.
-	  Called in main().
-
-	****************************************************************************/
-
-	void readcontrolfiles()
-	{
-	  cfnamenode *cfnptr;
-
-	  for (cfnptr=cfilelist;cfnptr!=NULL;cfnptr=cfnptr->next) {
-		readcontrol(cfnptr->thename);
-		}
-	}
-
-
-	/****************************************************************************
-
-	  clearcfilelist
-
-	  Clears the control file list.  Assumes thename does not need freeing.
-
-	****************************************************************************/
-
-	void clearcfilelist()
-	{
-	  cfnamenode *cfnptr1,*cfnptr2;
-
-	  cfnptr1 = cfilelist;
-	  while (cfnptr1 != NULL) {
-		cfnptr2 = cfnptr1->next;
-		free(cfnptr1);
-		cfnptr1 = cfnptr2;
-		}
-	  cfilelist = NULL;
-	  cfilelistend = &cfilelist;
-	}
-
-
-	/****************************************************************************
-
-	  getparams
-
-	  Handles all command-line parameters.  Puts all parameters within
-	  bounds.
-
-	****************************************************************************/
-
-	void getparams()
-	{
-	  extern char *optarg;
-	  extern int optind;
-	  int c; /* "Should" be a char -- need int for "!= -1" test*/
-	  int columns,infoprint;
-	  char *controlname,*env;
-
-	  env = getenv("FIGLET_FONTDIR");
-	  if (env!=NULL) {
-		fontdirname = env;
-		}
-	  infoprint = -1;
-	  while ((c = getopt(Myargc,Myargv,"ADEXLRI:xlcrpntvm:w:d:f:C:NFskSWo"))!= -1) {
-		  /* Note: -F is not a legal option -- prints a special err message.  */
-		switch (c) {
-		  case 'A':
-			cmdinput = 1;
-			break;
-		  case 'D':
-			deutschflag = 1;
-			break;
-		  case 'E':
-			deutschflag = 0;
-			break;
-		  case 'X':
-			right2left = -1;
-			break;
-		  case 'L':
-			right2left = 0;
-			break;
-		  case 'R':
-			right2left = 1;
-			break;
-		  case 'x':
-			justification = -1;
-			break;
-		  case 'l':
-			justification = 0;
-			break;
-		  case 'c':
-			justification = 1;
-			break;
-		  case 'r':
-			justification = 2;
-			break;
-		  case 'p':
-			paragraphflag = 1;
-			break;
-		  case 'n':
-			paragraphflag = 0;
-			break;
-		  case 's':
-			smushoverride = SMO_NO;
-			break;
-		  case 'k':
-			smushmode = SM_KERN;
-			smushoverride = SMO_YES;
-			break;
-		  case 'S':
-			smushmode = SM_SMUSH;
-		smushoverride = SMO_FORCE;
-			break;
-		  case 'o':
-			smushmode = SM_SMUSH;
-		smushoverride = SMO_YES;
-			break;
-		  case 'W':
-			smushmode = 0;
-		smushoverride = SMO_YES;
-			break;
-		  case 't':
-	#ifdef TIOCGWINSZ
-			columns = get_columns();
-			if (columns>0) {
-			  outputwidth = columns;
-			  }
-	#else /* ifdef TIOCGWINSZ */
-			fprintf(stderr,
-			  "%s: \"-t\" is disabled, since ioctl is not fully implemented.\n",
-			  myname);
-	#endif /* ifdef TIOCGWINSZ */
-			break;
-		  case 'v':
-			infoprint = 0;
-			break;
-		  case 'I':
-			infoprint = atoi(optarg);
-			break;
-		  case 'm':
-			smushmode = atoi(optarg);
-			if (smushmode < -1) {
-			  smushoverride = SMO_NO;
-			  break;
-			  }
-		if (smushmode == 0) smushmode = SM_KERN;
-		else if (smushmode == -1) smushmode = 0;
-		else smushmode = (smushmode & 63) | SM_SMUSH;
-		smushoverride = SMO_YES;
-			break;
-		  case 'w':
-			columns = atoi(optarg);
-			if (columns>0) {
-			  outputwidth = columns;
-			  }
-			break;
-		  case 'd':
-			fontdirname = optarg;
-			break;
-		  case 'f':
-			fontname = optarg;
-			if (suffixcmp(fontname,FONTFILESUFFIX)) {
-			  fontname[MYSTRLEN(fontname)-FSUFFIXLEN] = '\0';
-			  }
-	#ifdef TLF_FONTS
-			else if (suffixcmp(fontname,TOILETFILESUFFIX)) {
-			  fontname[MYSTRLEN(fontname)-TSUFFIXLEN] = '\0';
-			  }
-	#endif
-			break;
-		  case 'C':
-			controlname = optarg;
-			if (suffixcmp(controlname, CONTROLFILESUFFIX)) {
-			  controlname[MYSTRLEN(controlname)-CSUFFIXLEN] = '\0';
-			  }
-			(*cfilelistend) = (cfnamenode*)myalloc(sizeof(cfnamenode));
-			(*cfilelistend)->thename = controlname;
-			cfilelistend = &(*cfilelistend)->next;
-			(*cfilelistend) = NULL;
-			break;
-		  case 'N':
-			clearcfilelist();
-			multibyte = 0;
-			gn[0] = 0;
-			gn[1] = 0x80;
-			gn[2] = gn[3] = 0;
-			gndbl[0] = gndbl[1] = gndbl[2] = gndbl[3] = 0;
-			gl = 0;
-			gr = 1;
-			break;
-		  case 'F': /* Not a legal option */
-			fprintf(stderr,"%s: illegal option -- F\n",myname);
-			printusage(stderr);
-			fprintf(stderr,
-			  "\nBecause of numerous incompatibilities, the"
-			  " \"-F\" option has been\n"
-			  "removed.  It has been replaced by the \"figlist\""
-			  " program, which is now\n"
-			  "included in the basic FIGlet package.  \"figlist\""
-			  " is also available\n"
-			  "from  http://www.figlet.org/"
-			  "under UNIX utilities.\n");
-			exit(1);
-			break;
-		  default:
-			printusage(stderr);
-			exit(1);
-		  }
-		}
-	  if (optind!=Myargc) cmdinput = 1; /* force cmdinput if more arguments */
-	  if (infoprint>=0) {
-		printinfo(infoprint);
-		exit(0);
-		}
-	}
-
-
-	/****************************************************************************
-
-	  clearline
-
-	  Clears both the input (inchrline) and output (outputline) storage.
-
-	****************************************************************************/
-
-	void clearline()
-	{
-	  int i;
-
-	  for (i=0;i<charheight;i++) {
-		outputline[i][0] = '\0';
-		}
-	  outlinelen = 0;
-	  inchrlinelen = 0;
-	}
-
-
-	/****************************************************************************
-
-	  readfontchar
-
-	  Reads a font character from the font file, and places it in a
-	  newly-allocated entry in the list.
-
-	****************************************************************************/
-
-	void readfontchar(file,theord)
-	ZFILE *file;
-	inchr theord;
-	{
-	  int row,k;
-	  char templine[MAXLEN+1];
-	  outchr endchar, outline[MAXLEN+1];
-	  fcharnode *fclsave;
-
-	  fclsave = fcharlist;
-	  fcharlist = (fcharnode*)myalloc(sizeof(fcharnode));
-	  fcharlist->ord = theord;
-	  fcharlist->thechar = (outchr**)myalloc(sizeof(outchr*)*charheight);
-	  fcharlist->next = fclsave;
-
-	  outline[0] = 0;
-
-	  for (row=0;row<charheight;row++) {
-		if (myfgets(templine,MAXLEN,file)==NULL) {
-		  templine[0] = '\0';
-		  }
-	#ifdef TLF_FONTS
-		utf8_to_wchar(templine,MAXLEN,outline,MAXLEN,0);
-	#else
-		strcpy(outline,templine);
-	#endif
-		k = STRLEN(outline)-1;
-		while (k>=0 && ISSPACE(outline[k])) {  /* remove trailing spaces */
-		  k--;
-		  }
-		if (k>=0) {
-		  endchar = outline[k];  /* remove endmarks */
-		  while (k>=0 && outline[k]==endchar) {
-			k--;
-			}
-		  }
-		outline[k+1] = '\0';
-		fcharlist->thechar[row] = (outchr*)myalloc(sizeof(outchr)*(STRLEN(outline)+1));
-		STRCPY(fcharlist->thechar[row],outline);
-		}
-	}
-
-
-	/****************************************************************************
-
-	  readfont
-
-	  Allocates memory, initializes variables, and reads in the font.
-	  Called near beginning of main().
-
-	****************************************************************************/
-
-	void readfont()
-	{
-	  int i,row,numsread;
-	  inchr theord;
-	  int maxlen,cmtlines,ffright2left;
-	  int smush,smush2;
-	  char fileline[MAXLEN+1],magicnum[5];
-	  ZFILE *fontfile;
-
-	  fontfile = FIGopen(fontname,FONTFILESUFFIX);
-	#ifdef TLF_FONTS
-	  if (fontfile==NULL) {
-		fontfile = FIGopen(fontname,TOILETFILESUFFIX);
-		if(fontfile) toiletfont = 1;
-		}
-	#endif
-
-	  if (fontfile==NULL) {
-		fprintf(stderr,"%s: %s: Unable to open font file\n",myname,fontname);
-		exit(1);
-		}
-
-	  readmagic(fontfile,magicnum);
-	  if (myfgets(fileline,MAXLEN,fontfile)==NULL) {
-		fileline[0] = '\0';
-		}
-	  if (MYSTRLEN(fileline)>0 ? fileline[MYSTRLEN(fileline)-1]!='\n' : 0) {
-		skiptoeol(fontfile);
-		}
-	  numsread = sscanf(fileline,"%*c%c %d %*d %d %d %d %d %d",
-		&hardblank,&charheight,&maxlen,&smush,&cmtlines,
-		&ffright2left,&smush2);
-
-	  if (maxlen > MAXLEN) {
-		fprintf(stderr,"%s: %s: character is too wide\n",myname,fontname);
-		exit(1);
-		}
-	#ifdef TLF_FONTS
-	  if ((!toiletfont && strcmp(magicnum,FONTFILEMAGICNUMBER)) ||
-		  (toiletfont && strcmp(magicnum,TOILETFILEMAGICNUMBER)) || numsread<5) {
-	#else
-	  if (strcmp(magicnum,FONTFILEMAGICNUMBER) || numsread<5) {
-	#endif
-		fprintf(stderr,"%s: %s: Not a FIGlet 2 font file\n",myname,fontname);
-		exit(1);
-		}
-	  for (i=1;i<=cmtlines;i++) {
-		skiptoeol(fontfile);
-		}
-
-	  if (numsread<6) {
-		ffright2left = 0;
-		}
-
-	  if (numsread<7) { /* if no smush2, decode smush into smush2 */
-		if (smush == 0) smush2 = SM_KERN;
-		else if (smush < 0) smush2 = 0;
-		else smush2 = (smush & 31) | SM_SMUSH;
-		}
-
-	  if (charheight<1) {
-		charheight = 1;
-		}
-
-	  if (maxlen<1) {
-		maxlen = 1;
-		}
-
-	  maxlen += 100; /* Give ourselves some extra room */
-
-	  if (smushoverride == SMO_NO)
-		 smushmode = smush2;
-	  else if (smushoverride == SMO_FORCE)
-		 smushmode |= smush2;
-
-	  if (right2left<0) {
-		right2left = ffright2left;
-		}
-
-	  if (justification<0) {
-		justification = 2*right2left;
-		}
-
-	  /* Allocate "missing" character */
-	  fcharlist = (fcharnode*)myalloc(sizeof(fcharnode));
-	  fcharlist->ord = 0;
-	  fcharlist->thechar = (outchr**)myalloc(sizeof(outchr*)*charheight);
-	  fcharlist->next = NULL;
-	  for (row=0;row<charheight;row++) {
-		fcharlist->thechar[row] = (outchr*)myalloc(sizeof(outchr));
-		fcharlist->thechar[row][0] = '\0';
-		}
-	  for (theord=' ';theord<='~';theord++) {
-		readfontchar(fontfile,theord);
-		}
-	  for (theord=0;theord<=6;theord++) {
-		readfontchar(fontfile,deutsch[theord]);
-		}
-	  while (myfgets(fileline,maxlen+1,fontfile)==NULL?0:
-		sscanf(fileline,"%li",&theord)==1) {
-		readfontchar(fontfile,theord);
-		}
-	  Zclose(fontfile);
-	}
-
-
-	/****************************************************************************
-
-	  linealloc
-
-	  Allocates & clears outputline, inchrline. Sets inchrlinelenlimit.
-	  Called near beginning of main().
-
-	****************************************************************************/
-
-	void linealloc()
-	{
-	  int row; 
-
-	  outputline = (outchr**)myalloc(sizeof(outchr*)*charheight);
-	  for (row=0;row<charheight;row++) {
-		outputline[row] = (outchr*)myalloc(sizeof(outchr)*(outlinelenlimit+1));
-		}
-	  inchrlinelenlimit = outputwidth*4+100;
-	  inchrline = (inchr*)myalloc(sizeof(inchr)*(inchrlinelenlimit+1));
-	  clearline();
-	}
-
-
-	/****************************************************************************
-
-	  getletter
-
-	  Sets currchar to point to the font entry for the given character.
-	  Sets currcharwidth to the width of this character.
-
-	****************************************************************************/
-
-	void getletter(c)
-	inchr c;
-	{
-	  fcharnode *charptr;
-
-	  for (charptr=fcharlist;charptr==NULL?0:charptr->ord!=c;
-		charptr=charptr->next) ;
-	  if (charptr!=NULL) {
-		currchar = charptr->thechar;
-		}
-	  else {
-		for (charptr=fcharlist;charptr==NULL?0:charptr->ord!=0;
-		  charptr=charptr->next) ;
-		currchar = charptr->thechar;
-		}
-	  previouscharwidth = currcharwidth;
-	  currcharwidth = STRLEN(currchar[0]);
-	}
-
-
-	/****************************************************************************
-
-	  smushem
-
-	  Given 2 characters, attempts to smush them into 1, according to
-	  smushmode.  Returns smushed character or '\0' if no smushing can be
-	  done.
-
-	  smushmode values are sum of following (all values smush blanks):
-		1: Smush equal chars (not hardblanks)
-		2: Smush '_' with any char in hierarchy below
-		4: hierarchy: "|", "/\", "[]", "{}", "()", "<>"
-		   Each class in hier. can be replaced by later class.
-		8: [ + ] -> |, { + } -> |, ( + ) -> |
-	   16: / + \ -> X, > + < -> X (only in that order)
-	   32: hardblank + hardblank -> hardblank
-
-	****************************************************************************/
-
-	outchr smushem(lch,rch)
-	outchr lch,rch;
-	{
-	  if (lch==' ') return rch;
-	  if (rch==' ') return lch;
-
-	  if (previouscharwidth<2 || currcharwidth<2) return '\0';
-		/* Disallows overlapping if the previous character */
-		/* or the current character has a width of 1 or zero. */
-
-	  if ((smushmode & SM_SMUSH) == 0) return '\0';  /* kerning */
-
-	  if ((smushmode & 63) == 0) {
-		/* This is smushing by universal overlapping. */
-		/* Unreachable code: lch==' ' or rch==' ' already handled!
-		if (lch==' ') return rch;
-		if (rch==' ') return lch;
-		*/
-
-		if (lch==hardblank) return rch;
-		if (rch==hardblank) return lch;
-		  /* Above four lines ensure overlapping preference to */
-		  /* visible characters. */
-		if (right2left==1) return lch;
-		  /* Above line ensures that the dominant (foreground) */
-		  /* fig-character for overlapping is the latter in the */
-		  /* user's text, not necessarily the rightmost character. */
-		return rch;
-		  /* Occurs in the absence of above exceptions. */
-		}
-	  
-	  if (smushmode & SM_HARDBLANK) {
-		if (lch==hardblank && rch==hardblank) return lch;
-		}
-
-	  if (lch==hardblank || rch==hardblank) return '\0';
-
-	  if (smushmode & SM_EQUAL) {
-		if (lch==rch) return lch;
-		}
-
-	  if (smushmode & SM_LOWLINE) {
-		if (lch=='_' && strchr("|/\\[]{}()<>",rch)) return rch;
-		if (rch=='_' && strchr("|/\\[]{}()<>",lch)) return lch;
-		}
-
-	  if (smushmode & SM_HIERARCHY) {
-		if (lch=='|' && strchr("/\\[]{}()<>",rch)) return rch;
-		if (rch=='|' && strchr("/\\[]{}()<>",lch)) return lch;
-		if (strchr("/\\",lch) && strchr("[]{}()<>",rch)) return rch;
-		if (strchr("/\\",rch) && strchr("[]{}()<>",lch)) return lch;
-		if (strchr("[]",lch) && strchr("{}()<>",rch)) return rch;
-		if (strchr("[]",rch) && strchr("{}()<>",lch)) return lch;
-		if (strchr("{}",lch) && strchr("()<>",rch)) return rch;
-		if (strchr("{}",rch) && strchr("()<>",lch)) return lch;
-		if (strchr("()",lch) && strchr("<>",rch)) return rch;
-		if (strchr("()",rch) && strchr("<>",lch)) return lch;
-		}
-
-	  if (smushmode & SM_PAIR) {
-		if (lch=='[' && rch==']') return '|';
-		if (rch=='[' && lch==']') return '|';
-		if (lch=='{' && rch=='}') return '|';
-		if (rch=='{' && lch=='}') return '|';
-		if (lch=='(' && rch==')') return '|';
-		if (rch=='(' && lch==')') return '|';
-		}
-
-	  if (smushmode & SM_BIGX) {
-		if (lch=='/' && rch=='\\') return '|';
-		if (rch=='/' && lch=='\\') return 'Y';
-		if (lch=='>' && rch=='<') return 'X';
-		  /* Don't want the reverse of above to give 'X'. */
-		}
-
-	  return '\0';
-	}
-
-
-	/****************************************************************************
-
-	  smushamt
-
-	  Returns the maximum amount that the current character can be smushed
-	  into the current line.
-
-	****************************************************************************/
-
-	int smushamt()
-	{
-	  int maxsmush,amt;
-	  int row,linebd,charbd;
-	  outchr ch1,ch2;
-
-	  if ((smushmode & (SM_SMUSH | SM_KERN)) == 0) {
-		return 0;
-		}
-	  maxsmush = currcharwidth;
-	  for (row=0;row<charheight;row++) {
-		if (right2left) {
-		  if (maxsmush>STRLEN(outputline[row])) {
-			maxsmush=STRLEN(outputline[row]);
-			}
-		  for (charbd=STRLEN(currchar[row]);
-			ch1=currchar[row][charbd],(charbd>0&&(!ch1||ch1==' '));charbd--) ;
-		  for (linebd=0;ch2=outputline[row][linebd],ch2==' ';linebd++) ;
-		  amt = linebd+currcharwidth-1-charbd;
-		  }
-		else {
-		  for (linebd=STRLEN(outputline[row]);
-			ch1 = outputline[row][linebd],(linebd>0&&(!ch1||ch1==' '));linebd--) ;
-		  for (charbd=0;ch2=currchar[row][charbd],ch2==' ';charbd++) ;
-		  amt = charbd+outlinelen-1-linebd;
-		  }
-		if (!ch1||ch1==' ') {
-		  amt++;
-		  }
-		else if (ch2) {
-		  if (smushem(ch1,ch2)!='\0') {
-			amt++;
-			}
-		  }
-		if (amt<maxsmush) {
-		  maxsmush = amt;
-		  }
-		}
-	  return maxsmush;
-	}
-
-
-	/****************************************************************************
-
-	  addchar
-
-	  Attempts to add the given character onto the end of the current line.
-	  Returns 1 if this can be done, 0 otherwise.
-
-	****************************************************************************/
-
-	int addchar(c)
-	inchr c;
-	{
-	  int smushamount,row,k,column;
-	  outchr *templine;
-
-	  getletter(c);
-	  smushamount = smushamt();
-	  if (outlinelen+currcharwidth-smushamount>outlinelenlimit
-		  ||inchrlinelen+1>inchrlinelenlimit) {
-		return 0;
-		}
-
-	  templine = (outchr*)myalloc(sizeof(outchr)*(outlinelenlimit+1));
-	  for (row=0;row<charheight;row++) {
-		if (right2left) {
-		  STRCPY(templine,currchar[row]);
-		  for (k=0;k<smushamount;k++) {
-			templine[currcharwidth-smushamount+k] =
-			  smushem(templine[currcharwidth-smushamount+k],outputline[row][k]);
-			}
-		  STRCAT(templine,outputline[row]+smushamount);
-		  STRCPY(outputline[row],templine);
-		  }
-		else {
-		  for (k=0;k<smushamount;k++) {
-		column = outlinelen-smushamount+k;
-		if (column < 0) {
-		  column = 0;
-		  }
-			outputline[row][column] =
-			  smushem(outputline[row][column],currchar[row][k]);
-			}
-		  STRCAT(outputline[row],currchar[row]+smushamount);
-		  }
-		}
-	  free(templine);
-	  outlinelen = STRLEN(outputline[0]);
-	  inchrline[inchrlinelen++] = c;
-	  return 1;
-	}
-
-
-	/****************************************************************************
-
-	  putstring
-
-	  Prints out the given null-terminated string, substituting blanks
-	  for hardblanks.  If outputwidth is 1, prints the entire string;
-	  otherwise prints at most outputwidth-1 characters.  Prints a newline
-	  at the end of the string.  The string is left-justified, centered or
-	  right-justified (taking outputwidth as the screen width) if
-	  justification is 0, 1 or 2, respectively.
-
-	****************************************************************************/
-
-	void putstring(string)
-	outchr *string;
-	{
-	  int i,len;
-	  char c[10];
-	#ifdef TLF_FONTS
-	  size_t size;
-	  wchar_t wc[2];
-	#endif
-
-	  len = STRLEN(string);
-	  if (outputwidth>1) {
-		if (len>outputwidth-1) {
-		  len = outputwidth-1;
-		  }
-		if (justification>0) {
-		  for (i=1;(3-justification)*i+len+justification-2<outputwidth;i++) {
-			putchar(' ');
-			}
-		  }
-		}
-	  for (i=0;i<len;i++) {
-	#ifdef TLF_FONTS
-		wc[0] = string[i];
-		wc[1] = 0;
-		size = wchar_to_utf8(wc,1,c,10,0);
-		if(size==1) {
-		  if(c[0]==hardblank) {
-			c[0] = ' ';
-			}
-		  }
-		c[size] = 0;
-		printf("%s",c);
-	#else
-		putchar(string[i]==hardblank?' ':string[i]);
-	#endif
-		}
-	  putchar('\n');
-	}
-
-
-	/****************************************************************************
-
-	  printline
-
-	  Prints outputline using putstring, then clears the current line.
-
-	****************************************************************************/
-
-	void printline()
-	{
-	  int i;
-
-	  for (i=0;i<charheight;i++) {
-		putstring(outputline[i]);
-		}
-	  clearline();
-	}
-
-
-	/****************************************************************************
-
-	  splitline
-
-	  Splits inchrline at the last word break (bunch of consecutive blanks).
-	  Makes a new line out of the first part and prints it using
-	  printline.  Makes a new line out of the second part and returns.
-
-	****************************************************************************/
-
-	void splitline()
-	{
-	  int i,gotspace,lastspace,len1,len2;
-	  inchr *part1,*part2;
-
-	  part1 = (inchr*)myalloc(sizeof(inchr)*(inchrlinelen+1));
-	  part2 = (inchr*)myalloc(sizeof(inchr)*(inchrlinelen+1));
-	  gotspace = 0;
-	  lastspace = inchrlinelen-1;
-	  for (i=inchrlinelen-1;i>=0;i--) {
-		if (!gotspace && inchrline[i]==' ') {
-		  gotspace = 1;
-		  lastspace = i;
-		  }
-		if (gotspace && inchrline[i]!=' ') {
-		  break;
-		  }
-		}
-	  len1 = i+1;
-	  len2 = inchrlinelen-lastspace-1;
-	  for (i=0;i<len1;i++) {
-		part1[i] = inchrline[i];
-		}
-	  for (i=0;i<len2;i++) {
-		part2[i] = inchrline[lastspace+1+i];
-		}
-	  clearline();
-	  for (i=0;i<len1;i++) {
-		addchar(part1[i]);
-		}
-	  printline();
-	  for (i=0;i<len2;i++) {
-		addchar(part2[i]);
-		}
-	  free(part1);
-	  free(part2);
-	}
-
-
-	/****************************************************************************
-
-	  handlemapping
-
-	  Given an input character (type inchr), executes re-mapping commands
-	  read from control files.  Returns re-mapped character (inchr).
-
-	****************************************************************************/
-
-	inchr handlemapping(c)
-	inchr c;
-	{
-	  comnode *cmptr;
-
-	  cmptr=commandlist;
-	  while (cmptr!=NULL) {
-		if (cmptr->thecommand ?
-		  (c >= cmptr->rangelo && c <= cmptr->rangehi) : 0) {
-		  c += cmptr->offset;
-		  while(cmptr!=NULL ? cmptr->thecommand : 0) {
-			cmptr=cmptr->next;
-			}
-		  }
-		else {
-		  cmptr=cmptr->next;
-		  }
-		}
-	  return c;
-	}
-
-	/****************************************************************************
-
-	  Agetchar
-
-	  Replacement to getchar().
-	  Acts exactly like getchar if -A is NOT specified,
-	  else obtains input from All remaining command line words.
-
-	****************************************************************************/
-
-	int Agetchar()
-	{
-		extern int optind;		/* current argv[] element under study */
-		static int AgetMode = 0;	/* >= 0 for displacement into argv[n], <0 EOF */
-		char   *arg;		/* pointer to active character */
-		int    c;			/* current character */
-
-		if ( ! cmdinput )		/* is -A active? */
-		return( getchar() );	/* no: return stdin character */
-
-		if ( AgetMode < 0 || optind >= Myargc )		/* EOF is sticky: */
-		return( EOF );		/* **ensure it now and forever more */
-
-		/* find next character */
-		arg = Myargv[optind];		/* pointer to active arg */
-		c = arg[AgetMode++]&0xFF;	/* get appropriate char of arg */
-
-		if ( ! c )			/* at '\0' that terminates word? */
-		{   /* at end of word: return ' ' if normal word, '\n' if empty */
-		c = ' ';		/* suppose normal word and return blank */
-		if ( AgetMode == 1 )	/* if ran out in very 1st char, force \n */
-			c = '\n';		/* (allows "hello '' world" to do \n at '') */
-		AgetMode = 0;		/* return to char 0 in NEXT word */
-		if ( ++optind >= Myargc )	/* run up word count and check if at "EOF" */
-		{   /* just ran out of arguments */
-			c = EOF;		/* return EOF */
-			AgetMode = -1;	/* ensure all future returns return EOF */
-		}
-		}
-
-		return( c );		/* return appropriate character */
-
-	}	/* end: Agetchar() */
-
-
-	/****************************************************************************
-
-	  iso2022
-
-	  Called by getinchr.  Interprets ISO 2022 sequences
-
-	******************************************************************************/
-
-	inchr iso2022()
-	{
-	  inchr ch;
-	  inchr ch2;
-	  int save_gl;
-	  int save_gr;
-
-	  ch = Agetchar();
-	  if (ch == EOF) return ch;
-	  if (ch == 27) ch = Agetchar() + 0x100; /* ESC x */
-	  if (ch == 0x100 + '$') ch = Agetchar() + 0x200; /* ESC $ x */
-	  switch (ch) {
-		case 14: /* invoke G1 into GL */
-		  gl = 1;
-		  return iso2022();
-		case 15: /* invoke G0 into GL */
-		  gl = 0;
-		  return iso2022();
-		case 142: case 'N' + 0x100: /* invoke G2 into GL for next char */
-		  save_gl = gl; save_gr = gr;
-		  gl = gr = 2;
-		  ch = iso2022();
-		  gl = save_gl; gr = save_gr;
-		  return ch;
-		case 143: case 'O' + 0x100: /* invoke G3 into GL for next char */
-		  save_gl = gl; save_gr = gr;
-		  gl = gr = 3;
-		  ch = iso2022();
-		  gl = save_gl; gr = save_gr;
-		  return ch;
-		case 'n' + 0x100: /* invoke G2 into GL */
-		  gl = 2;
-		  return iso2022();
-		case 'o' + 0x100: /* invoke G3 into GL */
-		  gl = 3;
-		  return iso2022();
-		case '~' + 0x100: /* invoke G1 into GR */
-		  gr = 1;
-		  return iso2022();
-		case '}' + 0x100: /* invoke G2 into GR */
-		  gr = 2;
-		  return iso2022();
-		case '|' + 0x100: /* invoke G3 into GR */
-		  gr = 3;
-		  return iso2022();
-		case '(' + 0x100: /* set G0 to 94-char set */
-		  ch = Agetchar();
-		  if (ch == 'B') ch = 0; /* ASCII */
-		  gn[0] = ch << 16;
-		  gndbl[0] = 0;
-		  return iso2022();
-		case ')' + 0x100: /* set G1 to 94-char set */
-		  ch = Agetchar();
-		  if (ch == 'B') ch = 0;
-		  gn[1] = ch << 16;
-		  gndbl[1] = 0;
-		  return iso2022();
-		case '*' + 0x100: /* set G2 to 94-char set */
-		  ch = Agetchar();
-		  if (ch == 'B') ch = 0;
-		  gn[2] = ch << 16;
-		  gndbl[2] = 0;
-		  return iso2022();
-		case '+' + 0x100: /* set G3 to 94-char set */
-		  ch = Agetchar();
-		  if (ch == 'B') ch = 0;
-		  gn[3] = ch << 16;
-		  gndbl[3] = 0;
-		  return iso2022();
-		case '-' + 0x100: /* set G1 to 96-char set */
-		  ch = Agetchar();
-		  if (ch == 'A') ch = 0; /* Latin-1 top half */
-		  gn[1] = (ch << 16) | 0x80;
-		  gndbl[1] = 0;
-		  return iso2022();
-		case '.' + 0x100: /* set G2 to 96-char set */
-		  ch = Agetchar();
-		  if (ch == 'A') ch = 0;
-		  gn[2] = (ch << 16) | 0x80;
-		  gndbl[2] = 0;
-		  return iso2022();
-		case '/' + 0x100: /* set G3 to 96-char set */
-		  ch = Agetchar();
-		  if (ch == 'A') ch = 0;
-		  gn[3] = (ch << 16) | 0x80;
-		  gndbl[3] = 0;
-		  return iso2022();
-		case '(' + 0x200: /* set G0 to 94 x 94 char set */
-		  ch = Agetchar();
-		  gn[0] = ch << 16;
-		  gndbl[0] = 1;
-		  return iso2022();
-		case ')' + 0x200: /* set G1 to 94 x 94 char set */
-		  ch = Agetchar();
-		  gn[1] = ch << 16;
-		  gndbl[1] = 1;
-		  return iso2022();
-		case '*' + 0x200: /* set G2 to 94 x 94 char set */
-		  ch = Agetchar();
-		  gn[2] = ch << 16;
-		  gndbl[2] = 1;
-		  return iso2022();
-		case '+' + 0x200: /* set G3 to 94 x 94 char set */
-		  ch = Agetchar();
-		  gn[3] = ch << 16;
-		  gndbl[3] = 1;
-		  return iso2022();
-		default:
-		  if (ch & 0x200) { /* set G0 to 94 x 94 char set (deprecated) */
-			gn[0] = (ch & ~0x200) << 16;
-			gndbl[0] = 1;
-			return iso2022();
-			}
-		  }
-
-	  if (ch >= 0x21 && ch <= 0x7E) { /* process GL */
-		if (gndbl[gl]) {
-		  ch2 = Agetchar();
-		  return gn[gl] | (ch << 8) | ch2;
-		  }
-		else return gn[gl] | ch;
-		}
-	  else if (ch >= 0xA0 && ch <= 0xFF) { /* process GR */
-		if (gndbl[gr]) {
-		  ch2 = Agetchar();
-		  return gn[gr] | (ch << 8) | ch2;
-		  }
-		else return gn[gr] | (ch & ~0x80);
-		}
-	  else return ch;
-	  }
-
-	/****************************************************************************
-
-	  ungetinchr
-
-	  Called by main.  Pushes back an "inchr" to be read by getinchr
-	  on the next call.
-
-	******************************************************************************/
-	inchr getinchr_buffer;
-	int getinchr_flag;
-
-	inchr ungetinchr(c)
-	inchr c;
-	{
-	  getinchr_buffer = c;
-	  getinchr_flag = 1;
-	  return c;
-	}
-
-	/*****************************************************************************
-
-	  getinchr
-
-	  Called by main.  Processes multibyte characters.  Invokes Agetchar.
-	  If multibyte = 0, ISO 2022 mode (see iso2022 routine).
-	  If multibyte = 1,  double-byte mode (0x00-0x7f bytes are characters,
-		0x80-0xFF bytes are first byte of a double-byte character).
-	  If multibyte = 2, Unicode UTF-8 mode (0x00-0x7F bytes are characters,
-		0x80-0xBF bytes are nonfirst byte of a multibyte character,
-		0xC0-0xFD bytes are first byte of a multibyte character,
-		0xFE-0xFF bytes are errors (all errors return code 0x0080)).
-	  If multibyte = 3, HZ mode ("~{" starts double-byte mode, "}~" ends it,
-		"~~" is a tilde, "~x" for all other x is ignored).
-	  If multibyte = 4, Shift-JIS mode (0x80-0x9F and 0xE0-0xEF are first byte
-		of a double-byte character, all other bytes are characters).
-	 
-
-	*****************************************************************************/
-
-	inchr getinchr()
-	{
-	  int ch, ch2, ch3, ch4, ch5, ch6;
-
-	  if (getinchr_flag) {
-		getinchr_flag = 0;
-		return getinchr_buffer;
-		}
-
-	  switch(multibyte) {
-	   case 0: /* single-byte */
-		  return iso2022();
-	   case 1: /* DBCS */
-		 ch = Agetchar();
-		 if ((ch >= 0x80 && ch <= 0x9F) ||
-			 (ch >= 0xE0 && ch <= 0xEF)) {
-		   ch = (ch << 8) + Agetchar();
-		   }
-		 return ch;
-	   case 2: /* UTF-8 */
-		  ch = Agetchar();
-		  if (ch < 0x80) return ch;  /* handles EOF, too */
-		  if (ch < 0xC0 || ch > 0xFD)
-			return 0x0080;  /* illegal first character */
-		  ch2 = Agetchar() & 0x3F;
-		  if (ch < 0xE0) return ((ch & 0x1F) << 6) + ch2;
-		  ch3 = Agetchar() & 0x3F;
-		  if (ch < 0xF0)
-			return ((ch & 0x0F) << 12) + (ch2 << 6) + ch3;
-		  ch4 = Agetchar() & 0x3F;
-		  if (ch < 0xF8)
-			return ((ch & 0x07) << 18) + (ch2 << 12) + (ch3 << 6) + ch4;
-		  ch5 = Agetchar() & 0x3F;
-		  if (ch < 0xFC)
-			return ((ch & 0x03) << 24) + (ch2 << 18) + (ch3 << 12) +
-			  (ch4 << 6) + ch5;
-		  ch6 = Agetchar() & 0x3F;
-		  return ((ch & 0x01) << 30) + (ch2 << 24) + (ch3 << 18) +
-			(ch4 << 12) + (ch5 << 6) + ch6;
-	   case 3: /* HZ */
-		 ch = Agetchar();
-		 if (ch == EOF) return ch;
-		 if (hzmode) {
-		   ch = (ch << 8) + Agetchar();
-		   if (ch == ('}' << 8) + '~') {
-			 hzmode = 0;
-			 return getinchr();
-			 }
-		   return ch;
-		   }
-		 else if (ch == '~') {
-		   ch = Agetchar();
-		   if (ch == '{') {
-			  hzmode = 1;
-			  return getinchr();
-			  }
-		  else if (ch == '~') {
-			return ch;
-			}
-		  else {
-			return getinchr();
-			}
-		  }
-		 else return ch;
-	   case 4: /* Shift-JIS */
-		 ch = Agetchar();
-		 if ((ch >= 0x80 && ch <= 0x9F) ||
-			 (ch >= 0xE0 && ch <= 0xEF)) {
-		   ch = (ch << 8) + Agetchar();
-		   }
-		 return ch;
-	   default:
-		 return 0x80;
-		}
-	  }
-
-	void fig_init(argc, argv)
-	int argc;
-	char** argv;
-	{
-	  Myargc = argc;
-	  Myargv = argv;
-
-	  if ((myname = strrchr(Myargv[0],DIRSEP))!=NULL) {
-		myname++;
-		}
-	  else {
-		myname = Myargv[0];
-		}
-	  fontdirname = DEFAULTFONTDIR;
-	  fontname = DEFAULTFONTFILE;
-	  cfilelist = NULL;
-	  cfilelistend = &cfilelist;
-	  commandlist = NULL;
-	  commandlistend = &commandlist;
-	  smushoverride = SMO_NO;
-	  deutschflag = 0;
-	  justification = -1;
-	  right2left = -1;
-	  paragraphflag = 0;
-	  cmdinput = 0;
-	  outputwidth = DEFAULTCOLUMNS;
-	  gn[1] = 0x80;
-	  gr = 1;
-	  outlinelenlimit = outputwidth-1;
-	}
-
-	void f(c)
-	const inchr c;
-	{
-	  int i;
-	  int char_not_added;
-	  static int wordbreakmode = 0;
-
-		do {
-		  char_not_added = 0;
-
-		  if (wordbreakmode== -1) {
-			if (c==' ') {
-			  break;
-			  }
-			else if (c=='\n') {
-			  wordbreakmode = 0;
-			  break;
-			  }
-			wordbreakmode = 0;
-			}
-
-		  if (c=='\n') {
-			printline();
-			wordbreakmode = 0;
-			}
-
-		  else if (addchar(c)) {
-			if (c!=' ') {
-			  wordbreakmode = (wordbreakmode>=2)?3:1;
-			  }
-			else {
-			  wordbreakmode = (wordbreakmode>0)?2:0;
-			  }
-			}
-
-		  else if (outlinelen==0) {
-        for (i=0;i<charheight;i++) {
-          if (right2left && outputwidth>1) {
-            putstring(currchar[i]+STRLEN(currchar[i])-outlinelenlimit);
-            }
-          else {
-            putstring(currchar[i]);
-            }
-          }
-        wordbreakmode = -1;
-        }
-
-      else if (c==' ') {
-        if (wordbreakmode==2) {
-          splitline();
-          }
-        else {
-          printline();
-          }
-        wordbreakmode = -1;
-        }
-
-      else {
-        if (wordbreakmode>=2) {
-          splitline();
-          }
-        else {
-          printline();
-          }
-        wordbreakmode = (wordbreakmode==3)?1:0;
-        char_not_added = 1;
-        }
-
-      } while (char_not_added);
 }
 
-void fs(string)
+
+/****************************************************************************
+
+  hasdirsep
+
+  Returns true if s1 contains a DIRSEP or DIRSEP2 character.
+
+****************************************************************************/
+
+int hasdirsep(s1)
+char *s1;
+{
+  if (strchr(s1, DIRSEP)) return 1;
+  else if (strchr(s1, DIRSEP2)) return 1;
+  else return 0;
+}
+
+/****************************************************************************
+
+  suffixcmp
+
+  Returns true if s2 is a suffix of s1; uses case-blind comparison.
+
+****************************************************************************/
+
+int suffixcmp(s1, s2)
+char *s1;
+char *s2;
+{
+  int len1, len2;
+
+  len1 = MYSTRLEN(s1);
+  len2 = MYSTRLEN(s2);
+  if (len2 > len1) return 0;
+  s1 += len1 - len2;
+  while (*s1) {
+	if (tolower(*s1) != tolower(*s2)) return 0;
+	s1++;
+	s2++;
+	}
+  return 1;
+}
+   
+/****************************************************************************
+
+  skiptoeol
+
+  Skips to the end of a line, given a stream.  Handles \r, \n, or \r\n.
+
+****************************************************************************/
+
+void skiptoeol(fp)
+ZFILE *fp;
+{
+  int dummy;
+
+  while (dummy=Zgetc(fp),dummy!=EOF) {
+	if (dummy == '\n') return;
+	if (dummy == '\r') {
+	  dummy = Zgetc(fp);
+	  if (dummy != EOF && dummy != '\n') Zungetc(dummy,fp);
+	  return;
+	  }
+  }
+}
+
+
+/****************************************************************************
+
+  myfgets
+
+  Local version of fgets.  Handles \r, \n, and \r\n terminators.
+
+****************************************************************************/
+
+char *myfgets(line,maxlen,fp)
+char *line;
+int maxlen;
+ZFILE *fp;
+{
+  int c = 0;
+  char *p;
+
+  p = line;
+  while((c=Zgetc(fp))!=EOF&&maxlen) {
+	*p++ = c;
+	maxlen--;
+	if (c=='\n') break;
+	if (c=='\r') {
+	  c = Zgetc(fp);
+	  if (c != EOF && c != '\n') Zungetc(c,fp);
+	  *(p-1) = '\n';
+	  break;
+	  }
+	}
+  *p = 0;
+  return (c==EOF) ? NULL : line;
+}
+
+
+/****************************************************************************
+
+  usageerr
+
+  Prints "Usage: ...." line to the given stream.
+
+****************************************************************************/
+
+void printusage(out)
+FILE *out;
+{
+  fprintf(out,
+	"Usage: %s [ -cklnoprstvxDELNRSWX ] [ -d fontdirectory ]\n",
+	"              [ -f fontfile ] [ -m smushmode ] [ -w outputwidth ]\n"
+	"              [ -C controlfile ] [ -I infocode ] [ message ]\n",
+	myname);
+}
+
+
+/****************************************************************************
+
+  printinfo
+
+  Prints version and copyright message, or utility information.
+
+****************************************************************************/
+
+void printinfo(infonum)
+int infonum;
+{
+  switch (infonum) {
+	case 0: /* Copyright message */
+	  printf("FIGlet Copyright (C) 1991-2012 Glenn Chappell, Ian Chai, "
+			 "John Cowan,\nChristiaan Keet and Claudio Matsuoka\n"
+			 "Internet: <info@figlet.org> "
+			 "Version: %s, date: %s\n\n"
+			 "FIGlet, along with the various FIGlet fonts"
+			 " and documentation, may be\n"
+			 "freely copied and distributed.\n\n"
+			 "If you use FIGlet, please send an"
+			 " e-mail message to <info@figlet.org>.\n\n"
+			 "The latest version of FIGlet is available from the"
+			 " web site,\n\thttp://www.figlet.org/\n\n",
+	   VERSION,DATE);
+	  printusage(stdout);
+	  break;
+	case 1: /* Version (integer) */
+	  printf("%d\n",VERSION_INT);
+	  break;
+	case 2: /* Font directory */
+	  printf("%s\n",fontdirname);
+	  break;
+	case 3: /* Font */
+	  printf("%s\n",fontname);
+	  break;
+	case 4: /* Outputwidth */
+	  printf("%d\n",outputwidth);
+	  break;
+	case 5: /* Font formats */
+	  printf("%s", FONTFILEMAGICNUMBER);
+#ifdef TLF_FONTS
+	  printf(" %s", TOILETFILEMAGICNUMBER);
+#endif
+	  printf("\n");
+	}
+}
+
+
+/****************************************************************************
+
+  readmagic
+
+  Reads a four-character magic string from a stream.
+
+****************************************************************************/
+void readmagic(fp,magic)
+ZFILE *fp;
+char *magic;
+{
+  int i;
+
+  for (i=0;i<4;i++) {
+	magic[i] = Zgetc(fp);
+	}
+  magic[4] = 0;
+  }
+  
+/****************************************************************************
+
+  skipws
+
+  Skips whitespace characters from a stream.
+
+****************************************************************************/
+void skipws(fp)
+ZFILE *fp;
+{
+  int c;
+  while (c=Zgetc(fp),isascii(c)&&isspace(c)) ;
+  Zungetc(c,fp);
+  }
+
+/****************************************************************************
+
+  readnum
+
+  Reads a number from a stream.  Accepts "0" prefix for octal and
+  "0x" or "0X" for hexadecimal.  Ignores leading whitespace.
+
+****************************************************************************/
+void readnum(fp,nump)
+ZFILE *fp;
+inchr *nump;
+{
+  int acc = 0;
+  char *p;
+  int c;
+  int base;
+  int sign = 1;
+  char digits[] = "0123456789ABCDEF";
+
+  skipws(fp);
+  c = Zgetc(fp);
+  if (c=='-') {
+	sign = -1;
+	}
+  else {
+	Zungetc(c,fp);
+	}
+  c = Zgetc(fp);
+  if (c=='0') {
+	 c = Zgetc(fp);
+	 if (c=='x'||c=='X') {
+	   base = 16;
+	   }
+	 else {
+	   base = 8;
+	   Zungetc(c,fp);
+	   }
+	}
+  else {
+	base = 10;
+	Zungetc(c,fp);
+	}
+
+  while((c=Zgetc(fp))!=EOF) {
+	c=toupper(c);
+	p=strchr(digits,c);
+	if (!p) {
+	  Zungetc(c,fp);
+	  *nump = acc * sign;
+	  return;
+	  }
+	acc = acc*base+(p-digits);
+	}
+  *nump = acc * sign;
+  }  
+
+/****************************************************************************
+
+  readTchar
+
+  Reads a control file "T" command character specification.
+
+  Character is a single byte, an escape sequence, or
+  an escaped numeric.
+
+****************************************************************************/
+
+inchr readTchar(fp)
+ZFILE *fp;
+{
+  inchr thechar;
+  char next;
+
+  thechar=Zgetc(fp);
+  if (thechar=='\n' || thechar=='\r') { /* Handle badly-formatted file */
+	Zungetc(thechar,fp);
+	return '\0';
+	}
+  if (thechar!='\\') return thechar;
+  next=Zgetc(fp);
+  switch(next) {
+	case 'a':
+	  return 7;
+	case 'b':
+	  return 8;
+	case 'e':
+	  return 27;
+	case 'f':
+	  return 12;
+	case 'n':
+	  return 10;
+	case 'r':
+	  return 13;
+	case 't':
+	  return 9;
+	case 'v':
+	  return 11;
+	default:
+	  if (next=='-' || next=='x' || (next>='0' && next<='9')) {
+		Zungetc(next,fp);
+		readnum(fp,&thechar);
+		return thechar;
+		}
+	  return next;
+	}
+}
+
+/****************************************************************************
+
+  charsetname
+
+  Get a Tchar representing a charset name, or 0 if none available.
+  Called in getcharset().
+
+****************************************************************************/
+
+inchr charsetname(fp)
+ZFILE *fp;
+{
+  inchr result;
+
+  result = readTchar(fp);
+  if (result == '\n' || result == '\r') {
+	result = 0;
+	Zungetc(result,fp);
+	}
+  return result;
+  }
+
+/****************************************************************************
+
+  charset
+
+  Processes "g[0123]" character set specifier
+  Called in readcontrol().
+
+****************************************************************************/
+
+void charset(n, controlfile)
+int n;
+ZFILE *controlfile;
+{
+  int ch;
+
+  skipws(controlfile);
+  if (Zgetc(controlfile) != '9') {
+	skiptoeol(controlfile);
+	return;
+	}
+  ch = Zgetc(controlfile);
+  if (ch == '6') {
+	 gn[n] = 65536L * charsetname(controlfile) + 0x80;
+	 gndbl[n] = 0;
+	 skiptoeol(controlfile);
+	 return;
+	 }
+  if (ch != '4') {
+	skiptoeol(controlfile);
+	return;
+	}
+  ch = Zgetc(controlfile);
+  if (ch == 'x') {
+	 if (Zgetc(controlfile) != '9') {
+	   skiptoeol(controlfile);
+	   return;
+	   }
+	 if (Zgetc(controlfile) != '4') {
+	   skiptoeol(controlfile);
+	   return;
+	   }
+	 skipws(controlfile);
+	 gn[n] = 65536L * charsetname(controlfile);
+	 gndbl[n] = 1;
+	 skiptoeol(controlfile);
+	 return;
+	 }
+  Zungetc(ch, controlfile);
+  skipws(controlfile);
+  gn[n] = 65536L * charsetname(controlfile);
+  gndbl[n] = 0;
+  return;
+  }
+
+/****************************************************************************
+
+  FIGopen
+
+  Given a FIGlet font or control file name and suffix, return the file
+  or NULL if not found
+
+****************************************************************************/
+
+ZFILE *FIGopen(name,suffix)
+char *name;
+char *suffix;
+{
+  char *fontpath;
+  ZFILE *fontfile;
+  struct stat st;
+  int namelen;
+
+  namelen = MYSTRLEN(fontdirname);
+  fontpath = (char*)alloca(sizeof(char)*
+	(namelen+MYSTRLEN(name)+MYSTRLEN(suffix)+2));
+  fontfile = NULL;
+  if (!hasdirsep(name)) {  /* not a full path name */
+	strcpy(fontpath,fontdirname);
+	fontpath[namelen] = DIRSEP;
+	fontpath[namelen+1] = '\0';
+	strcat(fontpath,name);
+	strcat(fontpath,suffix);
+	if(stat(fontpath,&st)==0) goto ok;
+	}
+  /* just append suffix */
+  strcpy(fontpath,name);
+  strcat(fontpath,suffix);
+  if(stat(fontpath,&st)==0) goto ok;
+
+  return NULL;
+
+ok:
+  fontfile = Zopen(fontpath,"rb");
+  return fontfile;
+}
+
+/****************************************************************************
+
+  readcontrol
+
+  Allocates memory and reads in the given control file.
+  Called in readcontrolfiles().
+
+****************************************************************************/
+
+void readcontrol(controlname)
+char *controlname;
+{
+  inchr firstch,lastch;
+  char dashcheck;
+  inchr offset;
+  int command;
+  ZFILE *controlfile;
+
+  controlfile = FIGopen(controlname,CONTROLFILESUFFIX);
+
+  if (controlfile==NULL) {
+	fprintf(stderr,"%s: %s: Unable to open control file\n",myname,
+	  controlname);
+	exit(1);
+	}
+
+  (*commandlistend) = (comnode*)myalloc(sizeof(comnode));
+  (*commandlistend)->thecommand = 0; /* Begin with a freeze command */
+  commandlistend = &(*commandlistend)->next;
+  (*commandlistend) = NULL;
+
+  while(command=Zgetc(controlfile),command!=EOF) {
+	switch (command) {
+	  case 't': /* Translate */
+		skipws(controlfile);
+		firstch=readTchar(controlfile);
+		if ((dashcheck=Zgetc(controlfile))=='-') {
+		  lastch=readTchar(controlfile);
+		  }
+		else {
+		  Zungetc(dashcheck,controlfile);
+		  lastch=firstch;
+		  }
+		skipws(controlfile);
+		offset=readTchar(controlfile)-firstch;
+		skiptoeol(controlfile);
+		(*commandlistend) = (comnode*)myalloc(sizeof(comnode));
+		(*commandlistend)->thecommand = 1;
+		(*commandlistend)->rangelo = firstch;
+		(*commandlistend)->rangehi = lastch;
+		(*commandlistend)->offset = offset;
+		commandlistend = &(*commandlistend)->next;
+		(*commandlistend) = NULL;
+		break;
+	  case '0': case '1': case '2': case '3': case '4':
+	  case '5': case '6': case '7': case '8': case '9':
+	  case '-':
+				/* Mapping table entry */
+		Zungetc(command,controlfile);
+		readnum(controlfile,&firstch);
+		skipws(controlfile);
+	readnum(controlfile,&lastch);
+	offset=lastch-firstch;
+		lastch=firstch;
+		skiptoeol(controlfile);
+		(*commandlistend) = (comnode*)myalloc(sizeof(comnode));
+		(*commandlistend)->thecommand = 1;
+		(*commandlistend)->rangelo = firstch;
+		(*commandlistend)->rangehi = lastch;
+		(*commandlistend)->offset = offset;
+		commandlistend = &(*commandlistend)->next;
+		(*commandlistend) = NULL;
+		break;
+	  case 'f': /* freeze */
+		skiptoeol(controlfile);
+		(*commandlistend) = (comnode*)myalloc(sizeof(comnode));
+		(*commandlistend)->thecommand = 0;
+		commandlistend = &(*commandlistend)->next;
+		(*commandlistend) = NULL;
+		break;
+	  case 'b': /* DBCS input mode */
+		multibyte = 1;
+		break;
+	  case 'u': /* UTF-8 input mode */
+		multibyte = 2;
+		break;
+	  case 'h': /* HZ input mode */
+		multibyte = 3;
+		break;
+	  case 'j': /* Shift-JIS input mode */
+		multibyte = 4;
+		break;
+	  case 'g': /* ISO 2022 character set choices */
+		multibyte = 0;
+		skipws(controlfile);
+		command=Zgetc(controlfile);
+		switch (command) {
+		  case '0': /* define G0 charset */
+			charset(0, controlfile);
+			break;
+		  case '1': /* set G1 charset */
+			charset(1, controlfile);
+			break;
+		  case '2': /* set G2 charset */
+			charset(2, controlfile);
+			break;
+		  case '3': /* set G3 charset */
+			charset(3, controlfile);
+			break;
+		  case 'l': case 'L': /* define left half */
+			skipws(controlfile);
+			gl = Zgetc(controlfile) - '0';
+			skiptoeol(controlfile);
+			break;
+		  case 'r': case 'R': /* define right half */
+			skipws(controlfile);
+			gr = Zgetc(controlfile) - '0';
+			skiptoeol(controlfile);
+			break;
+		  default: /* meaningless "g" command */
+			skiptoeol(controlfile);
+		  }
+	  case '\r': case '\n': /* blank line */
+		break;
+	  default: /* Includes '#' */
+		skiptoeol(controlfile);
+	  }
+	}
+  Zclose(controlfile);
+}
+
+
+/****************************************************************************
+
+  readcontrolfiles
+
+  Reads in the controlfiles names in cfilelist.  Uses readcontrol.
+  Called in main().
+
+****************************************************************************/
+
+void readcontrolfiles()
+{
+  cfnamenode *cfnptr;
+
+  for (cfnptr=cfilelist;cfnptr!=NULL;cfnptr=cfnptr->next) {
+	readcontrol(cfnptr->thename);
+	}
+}
+
+
+/****************************************************************************
+
+  clearcfilelist
+
+  Clears the control file list.  Assumes thename does not need freeing.
+
+****************************************************************************/
+
+void clearcfilelist()
+{
+  cfnamenode *cfnptr1,*cfnptr2;
+
+  cfnptr1 = cfilelist;
+  while (cfnptr1 != NULL) {
+	cfnptr2 = cfnptr1->next;
+	free(cfnptr1);
+	cfnptr1 = cfnptr2;
+	}
+  cfilelist = NULL;
+  cfilelistend = &cfilelist;
+}
+
+
+/****************************************************************************
+
+  clearline
+
+  Clears both the input (inchrline) and output (outputline) storage.
+
+****************************************************************************/
+
+void clearline()
+{
+  int i;
+
+  for (i=0;i<charheight;i++) {
+	outputline[i][0] = '\0';
+	}
+  outlinelen = 0;
+  inchrlinelen = 0;
+}
+
+
+/****************************************************************************
+
+  readfontchar
+
+  Reads a font character from the font file, and places it in a
+  newly-allocated entry in the list.
+
+****************************************************************************/
+
+void readfontchar(file,theord)
+ZFILE *file;
+inchr theord;
+{
+  int row,k;
+  char templine[MAXLEN+1];
+  outchr endchar, outline[MAXLEN+1];
+  fcharnode *fclsave;
+
+  fclsave = fcharlist;
+  fcharlist = (fcharnode*)myalloc(sizeof(fcharnode));
+  fcharlist->ord = theord;
+  fcharlist->thechar = (outchr**)myalloc(sizeof(outchr*)*charheight);
+  fcharlist->next = fclsave;
+
+  outline[0] = 0;
+
+  for (row=0;row<charheight;row++) {
+	if (myfgets(templine,MAXLEN,file)==NULL) {
+	  templine[0] = '\0';
+	  }
+#ifdef TLF_FONTS
+	utf8_to_wchar(templine,MAXLEN,outline,MAXLEN,0);
+#else
+	strcpy(outline,templine);
+#endif
+	k = STRLEN(outline)-1;
+	while (k>=0 && ISSPACE(outline[k])) {  /* remove trailing spaces */
+	  k--;
+	  }
+	if (k>=0) {
+	  endchar = outline[k];  /* remove endmarks */
+	  while (k>=0 && outline[k]==endchar) {
+		k--;
+		}
+	  }
+	outline[k+1] = '\0';
+	fcharlist->thechar[row] = (outchr*)myalloc(sizeof(outchr)*(STRLEN(outline)+1));
+	STRCPY(fcharlist->thechar[row],outline);
+	}
+}
+
+
+/****************************************************************************
+
+  readfont
+
+  Allocates memory, initializes variables, and reads in the font.
+  Called near beginning of main().
+
+****************************************************************************/
+
+void readfont()
+{
+  int i,row,numsread;
+  inchr theord;
+  int maxlen,cmtlines,ffright2left;
+  int smush,smush2;
+  char fileline[MAXLEN+1],magicnum[5];
+  ZFILE *fontfile;
+
+  fontfile = FIGopen(fontname,FONTFILESUFFIX);
+#ifdef TLF_FONTS
+  if (fontfile==NULL) {
+	fontfile = FIGopen(fontname,TOILETFILESUFFIX);
+	if(fontfile) toiletfont = 1;
+	}
+#endif
+
+  if (fontfile==NULL) {
+	fprintf(stderr,"%s: %s: Unable to open font file\n",myname,fontname);
+	exit(1);
+	}
+
+  readmagic(fontfile,magicnum);
+  if (myfgets(fileline,MAXLEN,fontfile)==NULL) {
+	fileline[0] = '\0';
+	}
+  if (MYSTRLEN(fileline)>0 ? fileline[MYSTRLEN(fileline)-1]!='\n' : 0) {
+	skiptoeol(fontfile);
+	}
+  numsread = sscanf(fileline,"%*c%c %d %*d %d %d %d %d %d",
+	&hardblank,&charheight,&maxlen,&smush,&cmtlines,
+	&ffright2left,&smush2);
+
+  if (maxlen > MAXLEN) {
+	fprintf(stderr,"%s: %s: character is too wide\n",myname,fontname);
+	exit(1);
+	}
+#ifdef TLF_FONTS
+  if ((!toiletfont && strcmp(magicnum,FONTFILEMAGICNUMBER)) ||
+	  (toiletfont && strcmp(magicnum,TOILETFILEMAGICNUMBER)) || numsread<5) {
+#else
+  if (strcmp(magicnum,FONTFILEMAGICNUMBER) || numsread<5) {
+#endif
+	fprintf(stderr,"%s: %s: Not a FIGlet 2 font file\n",myname,fontname);
+	exit(1);
+	}
+  for (i=1;i<=cmtlines;i++) {
+	skiptoeol(fontfile);
+	}
+
+  if (numsread<6) {
+	ffright2left = 0;
+	}
+
+  if (numsread<7) { /* if no smush2, decode smush into smush2 */
+	if (smush == 0) smush2 = SM_KERN;
+	else if (smush < 0) smush2 = 0;
+	else smush2 = (smush & 31) | SM_SMUSH;
+	}
+
+  if (charheight<1) {
+	charheight = 1;
+	}
+
+  if (maxlen<1) {
+	maxlen = 1;
+	}
+
+  maxlen += 100; /* Give ourselves some extra room */
+
+  if (smushoverride == SMO_NO)
+	 smushmode = smush2;
+  else if (smushoverride == SMO_FORCE)
+	 smushmode |= smush2;
+
+  if (right2left<0) {
+	right2left = ffright2left;
+	}
+
+  if (justification<0) {
+	justification = 2*right2left;
+	}
+
+  /* Allocate "missing" character */
+  fcharlist = (fcharnode*)myalloc(sizeof(fcharnode));
+  fcharlist->ord = 0;
+  fcharlist->thechar = (outchr**)myalloc(sizeof(outchr*)*charheight);
+  fcharlist->next = NULL;
+  for (row=0;row<charheight;row++) {
+	fcharlist->thechar[row] = (outchr*)myalloc(sizeof(outchr));
+	fcharlist->thechar[row][0] = '\0';
+	}
+  for (theord=' ';theord<='~';theord++) {
+	readfontchar(fontfile,theord);
+	}
+  for (theord=0;theord<=6;theord++) {
+	readfontchar(fontfile,deutsch[theord]);
+	}
+  while (myfgets(fileline,maxlen+1,fontfile)==NULL?0:
+	sscanf(fileline,"%li",&theord)==1) {
+	readfontchar(fontfile,theord);
+	}
+  Zclose(fontfile);
+}
+
+
+/****************************************************************************
+
+  linealloc
+
+  Allocates & clears outputline, inchrline. Sets inchrlinelenlimit.
+  Called near beginning of main().
+
+****************************************************************************/
+
+void linealloc()
+{
+  int row; 
+
+  outputline = (outchr**)myalloc(sizeof(outchr*)*charheight);
+  for (row=0;row<charheight;row++) {
+	outputline[row] = (outchr*)myalloc(sizeof(outchr)*(outlinelenlimit+1));
+	}
+  inchrlinelenlimit = outputwidth*4+100;
+  inchrline = (inchr*)myalloc(sizeof(inchr)*(inchrlinelenlimit+1));
+  clearline();
+}
+
+
+/****************************************************************************
+
+  getletter
+
+  Sets currchar to point to the font entry for the given character.
+  Sets currcharwidth to the width of this character.
+
+****************************************************************************/
+
+void getletter(c)
+inchr c;
+{
+  fcharnode *charptr;
+
+  for (charptr=fcharlist;charptr==NULL?0:charptr->ord!=c;
+	charptr=charptr->next) ;
+  if (charptr!=NULL) {
+	currchar = charptr->thechar;
+	}
+  else {
+	for (charptr=fcharlist;charptr==NULL?0:charptr->ord!=0;
+	  charptr=charptr->next) ;
+	currchar = charptr->thechar;
+	}
+  previouscharwidth = currcharwidth;
+  currcharwidth = STRLEN(currchar[0]);
+}
+
+
+/****************************************************************************
+
+  smushem
+
+  Given 2 characters, attempts to smush them into 1, according to
+  smushmode.  Returns smushed character or '\0' if no smushing can be
+  done.
+
+  smushmode values are sum of following (all values smush blanks):
+	1: Smush equal chars (not hardblanks)
+	2: Smush '_' with any char in hierarchy below
+	4: hierarchy: "|", "/\", "[]", "{}", "()", "<>"
+	   Each class in hier. can be replaced by later class.
+	8: [ + ] -> |, { + } -> |, ( + ) -> |
+   16: / + \ -> X, > + < -> X (only in that order)
+   32: hardblank + hardblank -> hardblank
+
+****************************************************************************/
+
+outchr smushem(lch,rch)
+outchr lch,rch;
+{
+  if (lch==' ') return rch;
+  if (rch==' ') return lch;
+
+  if (previouscharwidth<2 || currcharwidth<2) return '\0';
+	/* Disallows overlapping if the previous character */
+	/* or the current character has a width of 1 or zero. */
+
+  if ((smushmode & SM_SMUSH) == 0) return '\0';  /* kerning */
+
+  if ((smushmode & 63) == 0) {
+	/* This is smushing by universal overlapping. */
+	/* Unreachable code: lch==' ' or rch==' ' already handled!
+	if (lch==' ') return rch;
+	if (rch==' ') return lch;
+	*/
+
+	if (lch==hardblank) return rch;
+	if (rch==hardblank) return lch;
+	  /* Above four lines ensure overlapping preference to */
+	  /* visible characters. */
+	if (right2left==1) return lch;
+	  /* Above line ensures that the dominant (foreground) */
+	  /* fig-character for overlapping is the latter in the */
+	  /* user's text, not necessarily the rightmost character. */
+	return rch;
+	  /* Occurs in the absence of above exceptions. */
+	}
+  
+  if (smushmode & SM_HARDBLANK) {
+	if (lch==hardblank && rch==hardblank) return lch;
+	}
+
+  if (lch==hardblank || rch==hardblank) return '\0';
+
+  if (smushmode & SM_EQUAL) {
+	if (lch==rch) return lch;
+	}
+
+  if (smushmode & SM_LOWLINE) {
+	if (lch=='_' && strchr("|/\\[]{}()<>",rch)) return rch;
+	if (rch=='_' && strchr("|/\\[]{}()<>",lch)) return lch;
+	}
+
+  if (smushmode & SM_HIERARCHY) {
+	if (lch=='|' && strchr("/\\[]{}()<>",rch)) return rch;
+	if (rch=='|' && strchr("/\\[]{}()<>",lch)) return lch;
+	if (strchr("/\\",lch) && strchr("[]{}()<>",rch)) return rch;
+	if (strchr("/\\",rch) && strchr("[]{}()<>",lch)) return lch;
+	if (strchr("[]",lch) && strchr("{}()<>",rch)) return rch;
+	if (strchr("[]",rch) && strchr("{}()<>",lch)) return lch;
+	if (strchr("{}",lch) && strchr("()<>",rch)) return rch;
+	if (strchr("{}",rch) && strchr("()<>",lch)) return lch;
+	if (strchr("()",lch) && strchr("<>",rch)) return rch;
+	if (strchr("()",rch) && strchr("<>",lch)) return lch;
+	}
+
+  if (smushmode & SM_PAIR) {
+	if (lch=='[' && rch==']') return '|';
+	if (rch=='[' && lch==']') return '|';
+	if (lch=='{' && rch=='}') return '|';
+	if (rch=='{' && lch=='}') return '|';
+	if (lch=='(' && rch==')') return '|';
+	if (rch=='(' && lch==')') return '|';
+	}
+
+  if (smushmode & SM_BIGX) {
+	if (lch=='/' && rch=='\\') return '|';
+	if (rch=='/' && lch=='\\') return 'Y';
+	if (lch=='>' && rch=='<') return 'X';
+	  /* Don't want the reverse of above to give 'X'. */
+	}
+
+  return '\0';
+}
+
+
+/****************************************************************************
+
+  smushamt
+
+  Returns the maximum amount that the current character can be smushed
+  into the current line.
+
+****************************************************************************/
+
+int smushamt()
+{
+  int maxsmush,amt;
+  int row,linebd,charbd;
+  outchr ch1,ch2;
+
+  if ((smushmode & (SM_SMUSH | SM_KERN)) == 0) {
+	return 0;
+	}
+  maxsmush = currcharwidth;
+  for (row=0;row<charheight;row++) {
+	if (right2left) {
+	  if (maxsmush>STRLEN(outputline[row])) {
+		maxsmush=STRLEN(outputline[row]);
+		}
+	  for (charbd=STRLEN(currchar[row]);
+		ch1=currchar[row][charbd],(charbd>0&&(!ch1||ch1==' '));charbd--) ;
+	  for (linebd=0;ch2=outputline[row][linebd],ch2==' ';linebd++) ;
+	  amt = linebd+currcharwidth-1-charbd;
+	  }
+	else {
+	  for (linebd=STRLEN(outputline[row]);
+		ch1 = outputline[row][linebd],(linebd>0&&(!ch1||ch1==' '));linebd--) ;
+	  for (charbd=0;ch2=currchar[row][charbd],ch2==' ';charbd++) ;
+	  amt = charbd+outlinelen-1-linebd;
+	  }
+	if (!ch1||ch1==' ') {
+	  amt++;
+	  }
+	else if (ch2) {
+	  if (smushem(ch1,ch2)!='\0') {
+		amt++;
+		}
+	  }
+	if (amt<maxsmush) {
+	  maxsmush = amt;
+	  }
+	}
+  return maxsmush;
+}
+
+
+/****************************************************************************
+
+  addchar
+
+  Attempts to add the given character onto the end of the current line.
+  Returns 1 if this can be done, 0 otherwise.
+
+****************************************************************************/
+
+int addchar(c)
+inchr c;
+{
+  int smushamount,row,k,column;
+  outchr *templine;
+
+  getletter(c);
+  smushamount = smushamt();
+  if (outlinelen+currcharwidth-smushamount>outlinelenlimit
+	  ||inchrlinelen+1>inchrlinelenlimit) {
+	return 0;
+	}
+
+  templine = (outchr*)myalloc(sizeof(outchr)*(outlinelenlimit+1));
+  for (row=0;row<charheight;row++) {
+	if (right2left) {
+	  STRCPY(templine,currchar[row]);
+	  for (k=0;k<smushamount;k++) {
+		templine[currcharwidth-smushamount+k] =
+		  smushem(templine[currcharwidth-smushamount+k],outputline[row][k]);
+		}
+	  STRCAT(templine,outputline[row]+smushamount);
+	  STRCPY(outputline[row],templine);
+	  }
+	else {
+	  for (k=0;k<smushamount;k++) {
+	column = outlinelen-smushamount+k;
+	if (column < 0) {
+	  column = 0;
+	  }
+		outputline[row][column] =
+		  smushem(outputline[row][column],currchar[row][k]);
+		}
+	  STRCAT(outputline[row],currchar[row]+smushamount);
+	  }
+	}
+  free(templine);
+  outlinelen = STRLEN(outputline[0]);
+  inchrline[inchrlinelen++] = c;
+  return 1;
+}
+
+
+/****************************************************************************
+
+  putstring
+
+  Prints out the given null-terminated string, substituting blanks
+  for hardblanks.  If outputwidth is 1, prints the entire string;
+  otherwise prints at most outputwidth-1 characters.  Prints a newline
+  at the end of the string.  The string is left-justified, centered or
+  right-justified (taking outputwidth as the screen width) if
+  justification is 0, 1 or 2, respectively.
+
+****************************************************************************/
+
+void putstring(string)
+outchr *string;
+{
+  int i,len;
+  char c[10];
+#ifdef TLF_FONTS
+  size_t size;
+  wchar_t wc[2];
+#endif
+
+  len = STRLEN(string);
+  if (outputwidth>1) {
+	if (len>outputwidth-1) {
+	  len = outputwidth-1;
+	  }
+	if (justification>0) {
+	  for (i=1;(3-justification)*i+len+justification-2<outputwidth;i++) {
+		putchar(' ');
+		}
+	  }
+	}
+  for (i=0;i<len;i++) {
+#ifdef TLF_FONTS
+	wc[0] = string[i];
+	wc[1] = 0;
+	size = wchar_to_utf8(wc,1,c,10,0);
+	if(size==1) {
+	  if(c[0]==hardblank) {
+		c[0] = ' ';
+		}
+	  }
+	c[size] = 0;
+	printf("%s",c);
+#else
+	putchar(string[i]==hardblank?' ':string[i]);
+#endif
+	}
+  putchar('\n');
+}
+
+
+/****************************************************************************
+
+  fig_flush
+
+  Prints outputline using putstring, then clears the current line.
+
+****************************************************************************/
+
+void fig_flush()
+{
+  int i;
+
+  for (i=0;i<charheight;i++) {
+	putstring(outputline[i]);
+	}
+  clearline();
+}
+
+
+/****************************************************************************
+
+  splitline
+
+  Splits inchrline at the last word break (bunch of consecutive blanks).
+  Makes a new line out of the first part and prints it using
+  fig_flush.  Makes a new line out of the second part and returns.
+
+****************************************************************************/
+
+void splitline()
+{
+  int i,gotspace,lastspace,len1,len2;
+  inchr *part1,*part2;
+
+  part1 = (inchr*)myalloc(sizeof(inchr)*(inchrlinelen+1));
+  part2 = (inchr*)myalloc(sizeof(inchr)*(inchrlinelen+1));
+  gotspace = 0;
+  lastspace = inchrlinelen-1;
+  for (i=inchrlinelen-1;i>=0;i--) {
+	if (!gotspace && inchrline[i]==' ') {
+	  gotspace = 1;
+	  lastspace = i;
+	  }
+	if (gotspace && inchrline[i]!=' ') {
+	  break;
+	  }
+	}
+  len1 = i+1;
+  len2 = inchrlinelen-lastspace-1;
+  for (i=0;i<len1;i++) {
+	part1[i] = inchrline[i];
+	}
+  for (i=0;i<len2;i++) {
+	part2[i] = inchrline[lastspace+1+i];
+	}
+  clearline();
+  for (i=0;i<len1;i++) {
+	addchar(part1[i]);
+	}
+  fig_flush();
+  for (i=0;i<len2;i++) {
+	addchar(part2[i]);
+	}
+  free(part1);
+  free(part2);
+}
+
+
+/****************************************************************************
+
+  handlemapping
+
+  Given an input character (type inchr), executes re-mapping commands
+  read from control files.  Returns re-mapped character (inchr).
+
+****************************************************************************/
+
+inchr handlemapping(c)
+inchr c;
+{
+  comnode *cmptr;
+
+  cmptr=commandlist;
+  while (cmptr!=NULL) {
+	if (cmptr->thecommand ?
+	  (c >= cmptr->rangelo && c <= cmptr->rangehi) : 0) {
+	  c += cmptr->offset;
+	  while(cmptr!=NULL ? cmptr->thecommand : 0) {
+		cmptr=cmptr->next;
+		}
+	  }
+	else {
+	  cmptr=cmptr->next;
+	  }
+	}
+  return c;
+}
+
+/****************************************************************************
+
+  Agetchar
+
+  Replacement to getchar().
+  Acts exactly like getchar if -A is NOT specified,
+  else obtains input from All remaining command line words.
+
+****************************************************************************/
+
+int Agetchar()
+{
+	extern int optind;		/* current argv[] element under study */
+	static int AgetMode = 0;	/* >= 0 for displacement into argv[n], <0 EOF */
+	char   *arg;		/* pointer to active character */
+	int    c;			/* current character */
+
+	if ( ! cmdinput )		/* is -A active? */
+	return( getchar() );	/* no: return stdin character */
+
+	if ( AgetMode < 0 || optind >= Myargc )		/* EOF is sticky: */
+	return( EOF );		/* **ensure it now and forever more */
+
+	/* find next character */
+	arg = Myargv[optind];		/* pointer to active arg */
+	c = arg[AgetMode++]&0xFF;	/* get appropriate char of arg */
+
+	if ( ! c )			/* at '\0' that terminates word? */
+	{   /* at end of word: return ' ' if normal word, '\n' if empty */
+	c = ' ';		/* suppose normal word and return blank */
+	if ( AgetMode == 1 )	/* if ran out in very 1st char, force \n */
+		c = '\n';		/* (allows "hello '' world" to do \n at '') */
+	AgetMode = 0;		/* return to char 0 in NEXT word */
+	if ( ++optind >= Myargc )	/* run up word count and check if at "EOF" */
+	{   /* just ran out of arguments */
+		c = EOF;		/* return EOF */
+		AgetMode = -1;	/* ensure all future returns return EOF */
+	}
+	}
+
+	return( c );		/* return appropriate character */
+
+}	/* end: Agetchar() */
+
+
+/****************************************************************************
+
+  iso2022
+
+  Called by getinchr.  Interprets ISO 2022 sequences
+
+******************************************************************************/
+
+inchr iso2022()
+{
+  inchr ch;
+  inchr ch2;
+  int save_gl;
+  int save_gr;
+
+  ch = Agetchar();
+  if (ch == EOF) return ch;
+  if (ch == 27) ch = Agetchar() + 0x100; /* ESC x */
+  if (ch == 0x100 + '$') ch = Agetchar() + 0x200; /* ESC $ x */
+  switch (ch) {
+	case 14: /* invoke G1 into GL */
+	  gl = 1;
+	  return iso2022();
+	case 15: /* invoke G0 into GL */
+	  gl = 0;
+	  return iso2022();
+	case 142: case 'N' + 0x100: /* invoke G2 into GL for next char */
+	  save_gl = gl; save_gr = gr;
+	  gl = gr = 2;
+	  ch = iso2022();
+	  gl = save_gl; gr = save_gr;
+	  return ch;
+	case 143: case 'O' + 0x100: /* invoke G3 into GL for next char */
+	  save_gl = gl; save_gr = gr;
+	  gl = gr = 3;
+	  ch = iso2022();
+	  gl = save_gl; gr = save_gr;
+	  return ch;
+	case 'n' + 0x100: /* invoke G2 into GL */
+	  gl = 2;
+	  return iso2022();
+	case 'o' + 0x100: /* invoke G3 into GL */
+	  gl = 3;
+	  return iso2022();
+	case '~' + 0x100: /* invoke G1 into GR */
+	  gr = 1;
+	  return iso2022();
+	case '}' + 0x100: /* invoke G2 into GR */
+	  gr = 2;
+	  return iso2022();
+	case '|' + 0x100: /* invoke G3 into GR */
+	  gr = 3;
+	  return iso2022();
+	case '(' + 0x100: /* set G0 to 94-char set */
+	  ch = Agetchar();
+	  if (ch == 'B') ch = 0; /* ASCII */
+	  gn[0] = ch << 16;
+	  gndbl[0] = 0;
+	  return iso2022();
+	case ')' + 0x100: /* set G1 to 94-char set */
+	  ch = Agetchar();
+	  if (ch == 'B') ch = 0;
+	  gn[1] = ch << 16;
+	  gndbl[1] = 0;
+	  return iso2022();
+	case '*' + 0x100: /* set G2 to 94-char set */
+	  ch = Agetchar();
+	  if (ch == 'B') ch = 0;
+	  gn[2] = ch << 16;
+	  gndbl[2] = 0;
+	  return iso2022();
+	case '+' + 0x100: /* set G3 to 94-char set */
+	  ch = Agetchar();
+	  if (ch == 'B') ch = 0;
+	  gn[3] = ch << 16;
+	  gndbl[3] = 0;
+	  return iso2022();
+	case '-' + 0x100: /* set G1 to 96-char set */
+	  ch = Agetchar();
+	  if (ch == 'A') ch = 0; /* Latin-1 top half */
+	  gn[1] = (ch << 16) | 0x80;
+	  gndbl[1] = 0;
+	  return iso2022();
+	case '.' + 0x100: /* set G2 to 96-char set */
+	  ch = Agetchar();
+	  if (ch == 'A') ch = 0;
+	  gn[2] = (ch << 16) | 0x80;
+	  gndbl[2] = 0;
+	  return iso2022();
+	case '/' + 0x100: /* set G3 to 96-char set */
+	  ch = Agetchar();
+	  if (ch == 'A') ch = 0;
+	  gn[3] = (ch << 16) | 0x80;
+	  gndbl[3] = 0;
+	  return iso2022();
+	case '(' + 0x200: /* set G0 to 94 x 94 char set */
+	  ch = Agetchar();
+	  gn[0] = ch << 16;
+	  gndbl[0] = 1;
+	  return iso2022();
+	case ')' + 0x200: /* set G1 to 94 x 94 char set */
+	  ch = Agetchar();
+	  gn[1] = ch << 16;
+	  gndbl[1] = 1;
+	  return iso2022();
+	case '*' + 0x200: /* set G2 to 94 x 94 char set */
+	  ch = Agetchar();
+	  gn[2] = ch << 16;
+	  gndbl[2] = 1;
+	  return iso2022();
+	case '+' + 0x200: /* set G3 to 94 x 94 char set */
+	  ch = Agetchar();
+	  gn[3] = ch << 16;
+	  gndbl[3] = 1;
+	  return iso2022();
+	default:
+	  if (ch & 0x200) { /* set G0 to 94 x 94 char set (deprecated) */
+		gn[0] = (ch & ~0x200) << 16;
+		gndbl[0] = 1;
+		return iso2022();
+		}
+	  }
+
+  if (ch >= 0x21 && ch <= 0x7E) { /* process GL */
+	if (gndbl[gl]) {
+	  ch2 = Agetchar();
+	  return gn[gl] | (ch << 8) | ch2;
+	  }
+	else return gn[gl] | ch;
+	}
+  else if (ch >= 0xA0 && ch <= 0xFF) { /* process GR */
+	if (gndbl[gr]) {
+	  ch2 = Agetchar();
+	  return gn[gr] | (ch << 8) | ch2;
+	  }
+	else return gn[gr] | (ch & ~0x80);
+	}
+  else return ch;
+  }
+
+/****************************************************************************
+
+  ungetinchr
+
+  Called by main.  Pushes back an "inchr" to be read by getinchr
+  on the next call.
+
+******************************************************************************/
+inchr getinchr_buffer;
+int getinchr_flag;
+
+inchr ungetinchr(c)
+inchr c;
+{
+  getinchr_buffer = c;
+  getinchr_flag = 1;
+  return c;
+}
+
+/*****************************************************************************
+
+  getinchr
+
+  Called by main.  Processes multibyte characters.  Invokes Agetchar.
+  If multibyte = 0, ISO 2022 mode (see iso2022 routine).
+  If multibyte = 1,  double-byte mode (0x00-0x7f bytes are characters,
+	0x80-0xFF bytes are first byte of a double-byte character).
+  If multibyte = 2, Unicode UTF-8 mode (0x00-0x7F bytes are characters,
+	0x80-0xBF bytes are nonfirst byte of a multibyte character,
+	0xC0-0xFD bytes are first byte of a multibyte character,
+	0xFE-0xFF bytes are errors (all errors return code 0x0080)).
+  If multibyte = 3, HZ mode ("~{" starts double-byte mode, "}~" ends it,
+	"~~" is a tilde, "~x" for all other x is ignored).
+  If multibyte = 4, Shift-JIS mode (0x80-0x9F and 0xE0-0xEF are first byte
+	of a double-byte character, all other bytes are characters).
+ 
+
+*****************************************************************************/
+
+inchr getinchr()
+{
+  int ch, ch2, ch3, ch4, ch5, ch6;
+
+  if (getinchr_flag) {
+	getinchr_flag = 0;
+	return getinchr_buffer;
+	}
+
+  switch(multibyte) {
+   case 0: /* single-byte */
+	  return iso2022();
+   case 1: /* DBCS */
+	 ch = Agetchar();
+	 if ((ch >= 0x80 && ch <= 0x9F) ||
+		 (ch >= 0xE0 && ch <= 0xEF)) {
+	   ch = (ch << 8) + Agetchar();
+	   }
+	 return ch;
+   case 2: /* UTF-8 */
+	  ch = Agetchar();
+	  if (ch < 0x80) return ch;  /* handles EOF, too */
+	  if (ch < 0xC0 || ch > 0xFD)
+		return 0x0080;  /* illegal first character */
+	  ch2 = Agetchar() & 0x3F;
+	  if (ch < 0xE0) return ((ch & 0x1F) << 6) + ch2;
+	  ch3 = Agetchar() & 0x3F;
+	  if (ch < 0xF0)
+		return ((ch & 0x0F) << 12) + (ch2 << 6) + ch3;
+	  ch4 = Agetchar() & 0x3F;
+	  if (ch < 0xF8)
+		return ((ch & 0x07) << 18) + (ch2 << 12) + (ch3 << 6) + ch4;
+	  ch5 = Agetchar() & 0x3F;
+	  if (ch < 0xFC)
+		return ((ch & 0x03) << 24) + (ch2 << 18) + (ch3 << 12) +
+		  (ch4 << 6) + ch5;
+	  ch6 = Agetchar() & 0x3F;
+	  return ((ch & 0x01) << 30) + (ch2 << 24) + (ch3 << 18) +
+		(ch4 << 12) + (ch5 << 6) + ch6;
+   case 3: /* HZ */
+	 ch = Agetchar();
+	 if (ch == EOF) return ch;
+	 if (hzmode) {
+	   ch = (ch << 8) + Agetchar();
+	   if (ch == ('}' << 8) + '~') {
+		 hzmode = 0;
+		 return getinchr();
+		 }
+	   return ch;
+	   }
+	 else if (ch == '~') {
+	   ch = Agetchar();
+	   if (ch == '{') {
+		  hzmode = 1;
+		  return getinchr();
+		  }
+	  else if (ch == '~') {
+		return ch;
+		}
+	  else {
+		return getinchr();
+		}
+	  }
+	 else return ch;
+   case 4: /* Shift-JIS */
+	 ch = Agetchar();
+	 if ((ch >= 0x80 && ch <= 0x9F) ||
+		 (ch >= 0xE0 && ch <= 0xEF)) {
+	   ch = (ch << 8) + Agetchar();
+	   }
+	 return ch;
+   default:
+	 return 0x80;
+	}
+  }
+
+void fig_init(argc, argv)
+int argc;
+char** argv;
+{
+  Myargc = argc;
+  Myargv = argv;
+
+  if ((myname = strrchr(Myargv[0],DIRSEP))!=NULL) {
+	myname++;
+	}
+  else {
+	myname = Myargv[0];
+	}
+  fontdirname = DEFAULTFONTDIR;
+  fontname = DEFAULTFONTFILE;
+  cfilelist = NULL;
+  cfilelistend = &cfilelist;
+  commandlist = NULL;
+  commandlistend = &commandlist;
+  smushoverride = SMO_NO;
+  deutschflag = 0;
+  justification = -1;
+  right2left = -1;
+  paragraphflag = 0;
+  cmdinput = 0;
+  outputwidth = DEFAULTCOLUMNS;
+  gn[1] = 0x80;
+  gr = 1;
+  outlinelenlimit = outputwidth-1;
+}
+
+void fig_putchar(c)
+const inchr c;
+{
+  int i;
+  int char_not_added;
+  static int wordbreakmode = 0;
+
+	do {
+	  char_not_added = 0;
+
+	  if (wordbreakmode== -1) {
+		if (c==' ') {
+		  break;
+		  }
+		else if (c=='\n') {
+		  wordbreakmode = 0;
+		  break;
+		  }
+		wordbreakmode = 0;
+		}
+
+	  if (c=='\n') {
+		fig_flush();
+		wordbreakmode = 0;
+		}
+
+	  else if (addchar(c)) {
+		if (c!=' ') {
+		  wordbreakmode = (wordbreakmode>=2)?3:1;
+		  }
+		else {
+		  wordbreakmode = (wordbreakmode>0)?2:0;
+		  }
+		}
+
+	  else if (outlinelen==0) {
+    for (i=0;i<charheight;i++) {
+      if (right2left && outputwidth>1) {
+        putstring(currchar[i]+STRLEN(currchar[i])-outlinelenlimit);
+        }
+      else {
+        putstring(currchar[i]);
+        }
+      }
+    wordbreakmode = -1;
+    }
+
+  else if (c==' ') {
+    if (wordbreakmode==2) {
+      splitline();
+      }
+    else {
+      fig_flush();
+      }
+    wordbreakmode = -1;
+    }
+
+  else {
+    if (wordbreakmode>=2) {
+      splitline();
+      }
+    else {
+      fig_flush();
+      }
+    wordbreakmode = (wordbreakmode==3)?1:0;
+    char_not_added = 1;
+    }
+
+  } while (char_not_added);
+}
+
+void fig_puts(string)
 char* string;
 {
 	char* str_ptr = string;
 	while(*str_ptr!=0){
-		f(*str_ptr);
+		fig_putchar(handlemapping(*str_ptr));
 		++str_ptr;
 	}
 }
diff --git a/figlet.c b/figlet.c
index e26c207..c44c461 100644
--- a/figlet.c
+++ b/figlet.c
@@ -1,5 +1,206 @@
 #include "FIGlib.h"
 
+#ifdef TIOCGWINSZ
+/****************************************************************************
+
+  get_columns
+
+  Determines the number of columns of /dev/tty.  Returns the number of
+  columns, or -1 if error.  May return 0 if columns unknown.
+  Requires include files <fcntl.h> and <sys/ioctl.h>.
+  by Glenn Chappell & Ian Chai 14 Apr 1993
+
+****************************************************************************/
+
+int get_columns()
+{
+  struct winsize ws;
+  int fd,result;
+
+  if ((fd = open("/dev/tty",O_WRONLY))<0) return -1;
+  result = ioctl(fd,TIOCGWINSZ,&ws);
+  close(fd);
+  return result?-1:ws.ws_col;
+}
+#endif /* ifdef TIOCGWINSZ */
+
+
+/****************************************************************************
+
+  getparams
+
+  Handles all command-line parameters.  Puts all parameters within
+  bounds.
+
+****************************************************************************/
+
+void getparams()
+{
+  extern char *optarg;
+  extern int optind;
+  int c; /* "Should" be a char -- need int for "!= -1" test*/
+  int columns,infoprint;
+  char *controlname,*env;
+
+  env = getenv("FIGLET_FONTDIR");
+  if (env!=NULL) {
+	fontdirname = env;
+	}
+  infoprint = -1;
+  while ((c = getopt(Myargc,Myargv,"ADEXLRI:xlcrpntvm:w:d:f:C:NFskSWo"))!= -1) {
+	  /* Note: -F is not a legal option -- prints a special err message.  */
+	switch (c) {
+	  case 'A':
+		cmdinput = 1;
+		break;
+	  case 'D':
+		deutschflag = 1;
+		break;
+	  case 'E':
+		deutschflag = 0;
+		break;
+	  case 'X':
+		right2left = -1;
+		break;
+	  case 'L':
+		right2left = 0;
+		break;
+	  case 'R':
+		right2left = 1;
+		break;
+	  case 'x':
+		justification = -1;
+		break;
+	  case 'l':
+		justification = 0;
+		break;
+	  case 'c':
+		justification = 1;
+		break;
+	  case 'r':
+		justification = 2;
+		break;
+	  case 'p':
+		paragraphflag = 1;
+		break;
+	  case 'n':
+		paragraphflag = 0;
+		break;
+	  case 's':
+		smushoverride = SMO_NO;
+		break;
+	  case 'k':
+		smushmode = SM_KERN;
+		smushoverride = SMO_YES;
+		break;
+	  case 'S':
+		smushmode = SM_SMUSH;
+	smushoverride = SMO_FORCE;
+		break;
+	  case 'o':
+		smushmode = SM_SMUSH;
+	smushoverride = SMO_YES;
+		break;
+	  case 'W':
+		smushmode = 0;
+	smushoverride = SMO_YES;
+		break;
+	  case 't':
+#ifdef TIOCGWINSZ
+		columns = get_columns();
+		if (columns>0) {
+		  outputwidth = columns;
+		  }
+#else /* ifdef TIOCGWINSZ */
+		fprintf(stderr,
+		  "%s: \"-t\" is disabled, since ioctl is not fully implemented.\n",
+		  myname);
+#endif /* ifdef TIOCGWINSZ */
+		break;
+	  case 'v':
+		infoprint = 0;
+		break;
+	  case 'I':
+		infoprint = atoi(optarg);
+		break;
+	  case 'm':
+		smushmode = atoi(optarg);
+		if (smushmode < -1) {
+		  smushoverride = SMO_NO;
+		  break;
+		  }
+	if (smushmode == 0) smushmode = SM_KERN;
+	else if (smushmode == -1) smushmode = 0;
+	else smushmode = (smushmode & 63) | SM_SMUSH;
+	smushoverride = SMO_YES;
+		break;
+	  case 'w':
+		columns = atoi(optarg);
+		if (columns>0) {
+		  outputwidth = columns;
+		  }
+		break;
+	  case 'd':
+		fontdirname = optarg;
+		break;
+	  case 'f':
+		fontname = optarg;
+		if (suffixcmp(fontname,FONTFILESUFFIX)) {
+		  fontname[MYSTRLEN(fontname)-FSUFFIXLEN] = '\0';
+		  }
+#ifdef TLF_FONTS
+		else if (suffixcmp(fontname,TOILETFILESUFFIX)) {
+		  fontname[MYSTRLEN(fontname)-TSUFFIXLEN] = '\0';
+		  }
+#endif
+		break;
+	  case 'C':
+		controlname = optarg;
+		if (suffixcmp(controlname, CONTROLFILESUFFIX)) {
+		  controlname[MYSTRLEN(controlname)-CSUFFIXLEN] = '\0';
+		  }
+		(*cfilelistend) = (cfnamenode*)myalloc(sizeof(cfnamenode));
+		(*cfilelistend)->thename = controlname;
+		cfilelistend = &(*cfilelistend)->next;
+		(*cfilelistend) = NULL;
+		break;
+	  case 'N':
+		clearcfilelist();
+		multibyte = 0;
+		gn[0] = 0;
+		gn[1] = 0x80;
+		gn[2] = gn[3] = 0;
+		gndbl[0] = gndbl[1] = gndbl[2] = gndbl[3] = 0;
+		gl = 0;
+		gr = 1;
+		break;
+	  case 'F': /* Not a legal option */
+		fprintf(stderr,"%s: illegal option -- F\n",myname);
+		printusage(stderr);
+		fprintf(stderr,
+		  "\nBecause of numerous incompatibilities, the"
+		  " \"-F\" option has been\n"
+		  "removed.  It has been replaced by the \"figlist\""
+		  " program, which is now\n"
+		  "included in the basic FIGlet package.  \"figlist\""
+		  " is also available\n"
+		  "from  http://www.figlet.org/"
+		  "under UNIX utilities.\n");
+		exit(1);
+		break;
+	  default:
+		printusage(stderr);
+		exit(1);
+	  }
+	}
+  if (optind!=Myargc) cmdinput = 1; /* force cmdinput if more arguments */
+  if (infoprint>=0) {
+	printinfo(infoprint);
+	exit(0);
+	}
+}
+
+
 /****************************************************************************
 
   main
@@ -55,11 +256,11 @@ char *argv[];
 
     if ((c>'\0' && c<' ' && c!='\n') || c==127) continue;
 
-	f(c);
+	fig_puts(c);
   }
 
   if (outlinelen!=0) {
-    printline();
+    fig_flush();
     }
 
   return 0;
diff --git a/tests/FIGlib.c b/tests/FIGlib.c
index 7fc6471..612b507 100644
--- a/tests/FIGlib.c
+++ b/tests/FIGlib.c
@@ -5,16 +5,16 @@ int main(argc,argv)
 int argc;
 char *argv[];
 {
-  //fontinfo fi;
-  //readfont(&fi);
   fig_init();
   fontdirname = "fonts/";
+  fontname = "small";
   readcontrolfiles();
   readfont();
   linealloc();
-	fs("Hello ");
-	fs("World!");
-    printline();
+  fig_puts("Hello ");
+  linealloc();
+  fig_puts("World!");
+  fig_flush();
 
   return 0;
 }