From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16085 invoked from network); 17 Sep 1997 14:17:41 -0000 Received: from math.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 17 Sep 1997 14:17:41 -0000 Received: (from list@localhost) by math.gatech.edu (8.8.5/8.8.5) id KAA20174; Wed, 17 Sep 1997 10:00:33 -0400 (EDT) Resent-Date: Wed, 17 Sep 1997 10:00:33 -0400 (EDT) Message-Id: Date: Wed, 17 Sep 97 16:00 MET DST From: Sven Wischnowsky To: zsh-workers@math.gatech.edu Subject: Compctl Resent-Message-ID: <"i3yGr3.0.9x4.1A-7q"@math> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/3503 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu Hi Since Peter dared to post some patches for the completion code... I suggested the functionality implemented by the patch below at least two times, but it didn't make into the baseline, so this may sound familiar ;-) The patch adds: - The option `autoglobcomplete' which tries to do to `globcomplete' what `automenu' does to `menucomplete'. If it is set and a completion attempt produces no result, the whole process is retried with `globcomplete' temporarily set and `*'s inserted at the beginning and end of the word and at the cursor position. This is very helpful if you have lots of files like `foo001.dat', `foo002.dat' and so on. With the option set you only have to type `002' to get `foo002.dat'. - The option `completefoldcase' which makes the matching in the completion code case-insensitive (in one direction: `a' matches `a' and `A', but `A' matches only itself). - Two new options for compctl (in previous versions of this patch these were implemented using special parameters): - `compctl -. ' defines characters that separate word-parts which should be completed separately (and simultaneously). Using this with `compctl -T' gives characters that should be treated as separators everywhere. Thus, with `compctl -T -. ".,-_/"' you can complete `z_tr.c' to `zle_tricky.c' with one TAB. - `compctl -: ' defines characters that may be used as placeholders for other characters. The classes string contains a colon-separated list of class definitions. The first character in each definition is the character that may appear on the command line, the rest is a character class describing the characters it matches (a `^' or `!' at the beginning negates the class and ranges are supported with the `a-z' form). E.g.: with `compctl -T -: "-_-:.-.,_"' a typed hyphen matches hyphens and underscores in the possible completions and a dot matches hyphens, dots, commas, and underscores. One comment: The last time I suggested this, Peter described a more generalised form for describing character classes and all that. Unfortunately I lost his mail, but I still think that the way it is done in this patch is not too bad (i.e. it doesn't slow things down too much). But of course this is only a suggestion, so if any one has some good ideas about things like this... Another comment: Using `.' and `:' as option characters looks very weird, doesn't it? I had the idea seeing Peter's `/' option... (we are really really running out of alphabetic characters for compctl-options) And yet another comment: This patch is for plain 3.1.2, but it can be applied on top of Peter's latest patches, producing only one rejected hunk in compctl.c which is *very* easy to apply by hand. And a last comment: The stuff in glob.c and comp1.c is used to make this work with the completion stuff being loaded dynamically, I haven't tried it, though (this machine here is currently way to busy). Bye Sven begin 600 comp-patch.gz M'XL("-S:'S0"`V-O;7`M<&%T8V@`[#QK=]O&E9_I7S%R3R.2`F$^1%&/.CVN MX[3N.K$WDC>6``@GXD=;>[9W4GH^'1THA;UZS^T M[6AXZ(V&)XP>(%1Z,!HR^#RXQU@>\/4 MP-_40%*N6<:+0N0XUJLO_L]J^@LU/O0-WNJ^AB8SGO$AS62T_54-!S*44%3Q9/#F>$G`'OT\N+YY7=/OGG^7T\NSY\].@?VI1E1X3-V ML1+Z&XLD6Z>R8*44BS)FBS0G+`%(117K@N#7W&-!&J>)QT01^#T?IB`[HD*L MN^W,Z'5A_.F"%2O891'S)>ZVC*Y%@J#662P,"F&:`$8)6Y=Q$<%S=I/FX0`` M%9+Q`@`(@"3Y6K`B6@N?"&AR7A9YE"R9S$00+2(AVI[XRU,`IN`670-S<,$&/KOO/QAW0#K3JUFP$F(5\)-BY`-#I M@@`9;9!*K`FH((^;.!F,`_)D'DO$DCNJ7'3W4""D/D7WIQY:1M%"`TZHON4\ M6:*=:1"W@TT/E1P!Q7%Z`]AJUMUR)$2>NKK]>G#*[@](L=?\+8`!UEN5!,4! MK2$45IML)4B@X(@#,FM!>VS2DH2N9TA"KDQ"L/0@S:WVK7D1K-#6%6VU[;V? M^.#=H\&/P\')?:1?(8*[DL,#;@HN-X,B'12;3"@$5FD,6Y"C!"J!W10`E,KC*'MBE3TY7A]LB2E;TDX%]#))"T09-I^#=85:%9,-2P&G'&3_ MM"#1PSZ%PI-$`(!`T0EE(#*&I:1(CML!\Y(1H"U"S16>+TLR"02ZN!GAR>EPU))-U)9LY1+CR>Y<8C;S MCBMZX"\(2U1\!'-/09'(JT<2H&#T\=`?H^]/0>_( MTR((8S6&N5K9%1A-``)`;QCA[O+U%[X6*THV`<>D(^L-:G%=LN*V@%`OPGM[ M+OY=E.OKQ5]>#VY?+UX0.>@$E35(06D1^_F)7LL>VY7[0"F870]0`)R"N44]:%):OY? MUBVR!G!H\R8A4;!\A(6/Z=LI?E,^1O[?4(W6$F-\XHTFATZ),1G"`YL2^QEK9?V_A`&#(00%C]C5W#M[#WL]3 M0"`M%V0M#6%^IAH"]_OL501NXM81P%0'*OQG*@DD=+N6P.E82^!HLYK0H&K5 M!,[[4#W1+NAM0_E]5443U&\N*Y"#_\+"0G-GGG]2=6'M\+/4%Q;Z/[G"`,'O M*>GHN/03Q:A/K3)@(509M-2M,VJYD_WCF MG8RK<`=?1T/;-51D[MLP;0+87Y\]_\OEX^??O'CVY.*)C2'<57=L(*ZSHHJ6 MFTC$(#14>W`5X!CS#>-+=!VH=]@2H7"J'>7/_7V`:R(+B'T9)0F.H=0A53/N MP;1I4K.W,$4V[)[F/(_`OTA1&+A-S"OON>_ZT2I6/WMZ?H'"[9*<3^`C]@P? ME44*>@BFB/X+HS*H2!H%Y%`8YF.0F2[+M)0-7TWL;)/#>'SLC2>32A+CR9$W M/CPQHGB18T:-;C*.N%3[6*TV->DB3]?`*_*&"39P"3U9SF41%27X3`"D\_>Z M9]+2.8I`/-40(S#`)H/0[0K,S!^(5T`U0M2ADA M7'[]_-E7EX\?G5>*!/+R&+H=@`BT,@!)F0'J"E7=[_.ORC]@^I#JC!VJ&I$3 M(%(,>$*P'=!L#HEU-'8/+'[SLK./)& MHY%[5H`/)D;5\`<='NN#YH!'.^MT'O1)OH-8YYO`QX12/7+K/>;\]!_40*PR M7@``"^%OK`MY""1;F^J0H?%C(408"\`)-];#DSG(##R`-@DL+2$`!ZN>67_@ M$B$RZ4+PW82O_:C[4.PY@I7JZ>GX\/3R=%NK9Y,O<.A4[?!UV.CT?#O M#^"LXC(4[+Z"GN7I?1PYH+Y!GI"R!5A+9(O;KI*[I^7?.VN9)MNGP3]@[P7F M=N:$3=>!X+$@$5K&Z7P.#MI72E8'W.WC,"#0^P`&:J+<,1'H>M`GVQW]#I1`O6[=+2WJO1FQ[[ MA9XJ12M\M"8`J2>`:Q^=V?'F?OC\#DIA@(Y`]W"X`?+=#<\3B/!=C/(>N^]$ M3+`K2`RQ_E*AZH_!?8]]^_+9,X]6JQT5&A4*6K#US5LIZ!\DY]=?`0((@!Y@-+&C M.H38[_JJBV9*4^A0*X@EC_6IA.K,0&JEZW(C;#8DO]FI)*MHNB-_<71RY,V& MAZ[#_G=FG/Z,EEOCHM)),[Z+I\Z"S\O9UO0&:IZ96P3-)A-O=MA(`-"NB(=G M__M3GMEXZ,W&4X?BPQ-O!M&J1O'@2YVND%SP\YDSIE7B(7M7Y&&9N7K2<^>1 MKM1GU9ABN-&84V.0Y4QC4IU;FDU-0$4='U+!^I0:$QWN-7=[+T^/#P^]X\,3 MMW\V]8ZK@(\_60X9>[2PFN&Q_>6^W=D=!:P]],3M@V2=,![O6Q;5QH%W'J8+ MK:/$-`_CHP6N['[P)5;HVO!HQ:)['\OL/X8,+(LF0,&M3$LUWM]E92'M4@^* MC#`M"YC1FJV]B\4E7J=XNVDF;.Y((V=SASKGI6Z!0MIVC"G8=+@C;:LMJ]]Y M&,].A]/W]42FU`(QMQY4W82EUEHD92#.5-6#I1WVCR)5NJM6--[P6.B/YCQ$ MM9S-PQO3@8^6"3;?^NAZ^VPN`HY=<8"T4",^^]0?\NT`3F/\+$K>/D/L]-:> MQ>R]%#!TF<`O(#BE]F6>\XUS]$X%++99TKQ0?0:*ZWT%A\['L:>/O!K4>W*T MLAM&.20_\0;/3Z\CSCCV3V%RS](EQJ M]AQJ5.&8_2/%2QL-M/796BYBF'H-2):Y1-12J1I<^@#)1;>&8F,KU)HL^#=7 M^E9'='+LC8?N.<`0#P8.G=:+0V(NUI`77H)"/F0#RGAT_PFQ7?,@3UU""NQ* M@=L'4Y"KM(Q#>VAB>0H.?25]VP.%?W_0=U9PZB4-=WL,RJ"]`"/.JVZ92+`; MQ<8>VW^P3U>X%1J/U)4"R3>HA<`MNNES(_2-.<4R/-2I[4^LY7B-+\(6!>GD M`?(=S^G4$3_VZ),EWAU2O4MWN:^/E2)))WGO!#)AX1X5:'":!W@=D$.&&9IU MZ[4((PZ"`S[<FG4 MO:GEK`+GW!WA14<5B.JWD8RC!Q%@"<$:MDP\18:G4/=H.Z$7R$4=G,GROX[PN+`L7'2+U-[>806?LRY\*P17QXKYIG&DV/.U7]9]U=;6 MS^C$&X\/W=;/T!M/[>TH8T9X['7YY(<7C[[]RIY#LL/F!#QUU+/8M#GX]%R- M='_H0:T.O[Y\Z(+M.4:KYYN-7^G&3Q_II?&;J4IB6PCQP;?`;&]PQ]@KQ MW@/\35*1Y[`@M4Y>%\M/%\;!A*GR+0T'[?M&G"BFZ63L32?VF/4SH@F)\APO MQ;@+P99H[A*K$ZAGY2L\H#:*9CD?>=.RT*J?3J3<] M.FRT^->BX(O-):8*W9Z.+RP,(+"=*A/&'^4D=8=;+P2"L8B4;K6Q%TE*P>($ MFPS`*%31O8=4ONL*I$:8$R'H;@W=,1K0JGFY6("_Z.IKDUS=,6#]'97OL3=S M;R[.CHZ\XTKHFJ/?"2D*'5QNT9.!OQ&09Z69NK.97O128@S=X(&'L5O5: MFN&L;L]AA*[/K[";KDHSS35+J@H.F!V@E&U(5H?5>&X%"WS;$OKS@ M.I91V&!EMI7>^9V."AWV1!/E`%H'_-]+=!ZD.YF5Q.`+3I-S]"Q#/4SZCS/D MW/9<\29!*.+NJ&]&]A-+8.%-W*U(F:90JPR(A:"/F&;R`CJ5(TO"=#[10'UR2]^7.+ M7*U$2;Q*RI$$I:9WU5S/TL.A9G!`9^:EO?#6S MG'1'IF0N.Z(YFTRH`])0[^5TC"XKHDFUR//T:FIE\IV.G.ND&#^+ZC,@]FUZ M@]?6YY!>;DPB\'-__\/7C=1%WPJQ2B5:T0MD3>FU89#+I,-@F,"^9#=SE`:I M>"#?H$.$++I7GZ^@;4]^J"936S^0!P>U!360_7URNA*_I!8QQ27-L8[,>""B MA+R]ML5.M17"4,]2NU7G1CB;WM7L?HNBNOT;VZZSXT^H^NWL^"W4B4^GKDY( M#=4H@>0T"B$LJ+='/V#-K::SM-,J\RF73L`HDZV@N_/$=S0^.?)&DZ%[F>=P M./)&TZ-:7U?WQ,W1+2L*"Y:R\,:6Y+JYC?% M9322N2U<[!WJVOU?YTJO8_&V6'!?Z7**('5/EG"G4PY3-]6K/W,CE"ZZ4<,# M[\>,D)ZHL+#P)B+&49IMS-744I3-XAW$`F][UJ^!<'.Y8HYV]DOM:E`*TIN? M.:F04N0^1W6$!4H/&T])58-@G741-LQR3(,[6C[7G^^TVU+I0BXX44NWHRO7 MI$6F&.!5N6$B?-:LW,V8.G9Q^R!#03DLV*RN4VG=S9.48]&*B7# M5WDD@**W5312^!QUQ!%_E+C^W@+UW`WJ`K1-IDYU94M32,=4[?V)/G_3)+\* M"U0IXH9T+8JV04JL:OKO:W0Y8B8![]4EW)!I(^A7.:^.0#N9CC<5D7\UJ7MN M[A(5K:I>SQ04CEH7:HS`'_VGJ1]WMFIO^@OUMK_Q%]_C17*G#_!>.Y,?96=8 M'W%&;QZ`[7=Y#T@.T?:J9W-\EL%_5_!?#O])QRX!Y^^KHH(3*^T!*C#;K_/( MQ"-,7,EH0_QDS!EKG<`HS3G=/*S4IJ;3U(,EWE@F&"W)+.P=FII5FIKI3`!% MI]8Y'J,B3;V4I!PDA^P5V0L59ZII%O7<1J*X^@8*F1W($M?4,;=V7E-$3'85 M/;CX"C@2GCD8::[PRHJV^-(`YT#3'+HBGKNV1-)5MM2Y4X..P=(&.8[H4E6R#`UI:2_FM)M7]7)3?HEF]F7Y7^AR\$UUBY92O?!I0&/N$]JMNI#0*L>JUDVV5\AB^\H%L M=5GJZJ+`5Q[K=_P-JSLMJK+#4&LL#=!E[&9IH/6I$SJ*Y;+TJ6D?HE(U`J17 M.R$R&M?0MP"$S6OZ9CT7\+0;PB_Z5/&[CN+=KKCQ23AUZC5CA=2'<=I"R0D( M6H[<2$N_BJ5#M^KH&^&K8S/W&`</+1:6JD;1;`8_I102% MP5H?'!J7:F95C7^E_@9OX]7C-%F2K7+]XN,JC47EB2OD3:+/P0R&:`^JAX.? M,'S.L>.K)5ST>G49DN7.RR@.925'K-4AVZ^ID7GCNOW`LY:ZX[L^R`YJE(76 M"VB+)J^D_H<)&\9A\2-R26Y7QARN%.K=:*PW+#JZ!C&O(!+D-1[EH--!$0?5 M&:YBLH&FH-3\BZQ>R],XXQADA.+63&R^1><6/#><@DT=/WHCF%XQ4R^YH;'B M06S5%.GY'?8>K<>CTH_-CCQ5C>#?M6W&6NT,#$4Z%%0(!7B[3-\CBT+W3=PB M];=SHD9I0VDSLF6I34[;EFK,PI[BJN0D-S(#P^M&,O0QE5$_.#C`^UCOJY"^ M$VM!+X=4C*_)#D_Q%$)54F]0H5BQMCG7VDWRVJNB^INJFK1ZZ=6I55Y4EUC6 M*:)L5]`QW[6MR`QA52XB/Y1O*DJU;_#]-D9_N#8R3,8S/]=7U>HA:\Z"WD^Q M[NB3JR%B<8*O)^B.HGNZ>FG2,ZBIK`:$8ZHKK'?1GG:#J(B/5PS>MVPA3^N[\DAK$ESYH9G"_#? MG^/[SX,!RY6`U>DO>UV`\:#GQ\-\XO3C3>"8L@XJ)(BX>X<;&COB+IK!87O3 M6?86V4K3>.2UV;.]D>/"R&<6'=EQ$,9I][W_\CK26%K2X,D;MN&A&;SQ7I`"''>"M$A;IC5+'H$M*94D&N>I6E=*J4K>JU16EWHIH\U-D?WIEBLG= MOW_V7R^?OGCX_:/C'SQV)U/#KL0,]M'==]]Y2'V9'8PWW<)X90^Q!E6.0Z*Y)-)Q;W72&9[[C6?ESO)18#4 M`_0V81*>#N*SL#)X$[(CNNZCQ^>Z>[B[RVT+P]M65Q/16UC3H+UWBJOPG\PS MEU?QS.5:GOGU\I1X$Z82KW`5-=0F)"$C:Y*H1?%@<^2NP54C[6Z"KF;V%43R MD8AW4"&/P[.-\(>:5U$H=2A$SZM8Y"#,[[>XX[-Q<^'/Z0>19#^6L=],,1@'X4:M!7!MJRRR,5W'3>O:8$!H`3`YDE&%DQ4]?^>*21]2-V-O[HK8T_:F\_>?&U:#Y$#C,=?ECC M!<6!,N+\I#.D[%`N6SY[FC6&)7)FK;CT^!Y^I%5E96K3:5>-UU71/J!BI.UY^;5B=;8%*`AE,L>=$;\W70]4'WMAW$P-%EO@;T<\)J#7\, M6ZZ'^PK(C7W[FN:$\#%Y6?[C#L6PT^>M.^1`6Z@T$!2%8V;80%UL=7QH+E^9%I1 M3,Z4!W>L_Z29$9N*<>U___L="_BK0$B@YFGR@5U0]]T[5<@9&;-V&&CG,EJ0 M#!"Z[];X?^\H2!BT#8$K$V&\L_,J^(>%+T\&S^OJ-DASU=B#,<^_Y6'//+AW M[RBHM\P;,\[AU>3+I%%+OSZ9&)90(6[>^57R]C#!DK#K1:'@UW["I:>I4'S1S[Y"C@@J]<^@IT:EES%HS&(/*, MO0C*<#1HA^$XK)Z59FMANQ`W;YN5M?YBCFOR[:7?SI1_KV*^T+7E_\S+Y]^] M8P?^N=J7=SR$4PS.+2.L&<7[@Y/GP?;$C`;RS45<$CYA%(RO6,_@7BH-/Q9(=%+KTU$$K9`)V88#H_S=A!=HIF9 M+P:')HXJ[/7'[;`WL/KSSSU[-`[D49U=X+.OIWYW]D'@&NN4:&$/98R>NS`8 M:^GK)$O0\9E%3`X#QH2'>!4M!)T;\'-A%9VHJCBB6)7"VH-K!&")F5!!7F1M M1M.[B5\6'4G#^-)68E2LL=HZ)2HCJ@[Q5< M8L6<.8DP_-1=:6&W7&:E#Q6R0Y-V#JTM<%1D%1VZ$]JN)(,&S6:^%&W%-GUJ M!=\&_--!<&OO5JNU]OXS'J,4V.DY+;'2'JZX^9D,Q2ON0=;]Q81TFTVTAU?F M_%"SEC95K%6^9C76BL:5IA;6FI/#14IJ#6,7IUO@MV9*5I?2$BP==]MAWR7U M_0I@$&\$A'I[S<;JHLRWV7ACAQ\+T=K0WT[8`RP+QP[+&CCU_%TS!Y`LT+(N MF\@/X84/%CH6&8%N$D-^Z^DGW14.@W*SPH5T>>%<)G.2W=!?4`E6+"@U.?G> M_;9]!\&6)=*38X%1DPT&TA%DXN8(A"G@F;^',J2`H4SS,#\ MKID*M6L)]P(X/%^66^8IZYV\%SLBIMC%&'WTVSKJG8M[!&JZ',/&.O7TZNPS M*S/>XN'0/?+[LZ<_J7W/?UVX2$V[Q679\J?[E@XOJEXB]@P#'S,I?Z:KGB?U M"4<:UO;!C,!I5+.6Z'Z59)$W0S,S"[XI)^5.[ M>EI!C::?:8_3@8\4[?U1^+;C\$WTH7%N+F^5"(3U8DHAZ4>LH[?=5CE>FIP@ MT>3W6%)E!2,>8*4&<@'RN^+Z=EFJ:I@4BG=="X.'=R5LT?R(4HD.)=9P(:J) M(1AVE'+=3:<6BO. MS>PX:RTY55N.L>9X]IP;6W36V'2T*T6]54=)0G8FSDAHC90.]-?PP,:'"BLT M./.',,-ZC%EKN0[## M+7$,/\A1[L>(WUU]1E@?91WZXIS^\\@Z^?LQQ3I1U(SR%.WYN99\UWQW1E3B M4/#.J[1X1O>QHW4?.%]`L.U)4GE`2A&TE[@X%.]"G<-V+'VO_A,&"]_\T=D> MCW3RLUW*NCAC`89]\?'$L7&60"M1H;D7"F3-$.)RP@*%.;`QJ1P==U'V;F\U MQ#2/?NV\@O_3@.::L$,)JK;I6*T$,6GG>HI>Y$59U858WB),Z0''DO.S]P)G M*$0=6ZI%UL6_PNQ`!,!4MUMFHN2<7SEC6^O`X30S$LRL@BZUPL78"WD[(G9: MP4W2D]90-?;%^&)):$+#$<:;90.V7RR+V>])^HXWU8=`Z4I+.=PPWM]!=8L8 M"!8$E#>D`@*6]'`'HQ)_O77W%@N%`I:JQ+33;=5$.#^Y2--=N,W-,8&O%T(I M!6DX*&Q&'DQNFOFO@#%:5E/3]W1$>:OE(E)^YGA-%2K!3N:*?9!ZP[W+&)6: M$]1D8,)Z''32:OF!MB><._*WO3NT4;_M[=W9:]2$EDZ2W6\F9_@FA"K:/?;0 M[D&R9G-+/>TBVK$UHNG_;#L%NGWX2G"R8<(X/5N5A\RQ>$,`N;4#-T;+O+&Y M3G/BVA*MPI;?LH!HU$6K*WJ5"FM>X+[/;>3"3\BGHC&M9;1127+N2=J.K%FY MROR:2,OI67%KMFU_$]ELLS[6$H@-C!!3D\>P%/"<]8GLE273Q.VB1`-XAU05 M:#LMS^;HD'X[.#T[^?[QBQ;:U?`CG`ABJ%I:1:^6"7:,4J5":]Q^#:DUG+5* M;%P`LV7U7+N4^&@=E$V+(F&J6)N@OB9_BM^KQDK6 M66L>HD@?5S+4AI8ZA1(E+'8&(HDN^.]UKDAA![-K=CWCT+"SWPZ'7>?WGU\4 M;TP6+[YA45:FM\BB.6*.W^YG,K$Y04WI""LZ-#A]E$N/!J!M8D4MZHUY9+"X M84;)G6]/DG0&Q'.;7$TG$[27EXNW239[#P*J\KJ"*3U<+JGDEI0`.@BFB?X? MS-]<^\DX1;^L`4NW.P2PA$J9)?AO$L90SK6=X/*\'51_2N2&?,FI=C`#T[GR M?U8.?C8[U3=!MV4TKR_H;$1>,F<_GHB#ZB3)A]R")XLS6U&M67$%]H8&KMDU MUUYD',@C_.&V>#@\;=*D&4E'%%0DH&$EQT^--F:(U=J&_;[3QGQQ@+E%?1S( M=JS'O63,DNMQ348CSU/P8V'LWF6=D84.NH>532`#ZQS'-?>?;^VG@^#F6U2/ MXV@$[HZ]ZCAX'=GOC"LY#Q\\>_GBM`EWWBTK>MO$2;B)((;?^N[E#P=8,0L3 M(09>4VIQR^9*1!BO9D?$$/6%N2VK7"]4/=0EJTW.9MD9_\;9=(JDK!C*+C+4 MB!MM^,F3GY\^?]!RN;``VQ`FC&9PG"^FTT(';JUC"&@W"W5YA'"_B\6%]CTC M^K1XLUB*244;7LDV=T2NZ^)52MDQZ5O.WW+YQDUQCE-^,.4'!B>"J?U$`7_< MZ)_J,[^800)9>H>7"H12M=^USD MU.N>VXN]GB[?_=.T+K,GW&3NE*)'M'X1KC1Z\"XI):52I8WQ\\0TAKHN>J#5 ML6@R!L&IR;6I.9*8ZK:#9)3O<89J']&V8BGB@3416)5/D3HPTEDL[V[&,9>- MIJ.+SC2/$"HV9I&(;64$DIYL"0JXFYEZ6\&_T/L8D/PQ>@>TK#!*>E&8`,CK M:5.(0BSAT$N7EC6KR?WDNC9HD(V=-@^=S#82*F3R1&8KU$8WZCO4:RDSK5:FJ*2;2TCD>"VM2Q=2MD$%8LO>:!MDZF#5*XR9&?W(3,."8C)I?J0%A$ANM']DT8*A< MYI)BDDY-W%]A:)BGQKQ(^*W(I"8Y;7=">2Z#I.+L&V?2MX2':SRRLUK#K'N8:;HW&&HG[WDR1W&$XR4*#L8P MO`Q__!5^<-=JR5[KZ52YZXKR]%!5#1+[?,YQ&73J;,F=$W[CC+0QS0[&'AK7?M@DWB M7EJPH771"&AS-%*>Z;U^O]ON]0=6 MZFR0$$51Y?S)FQS*>%<4)B(GJ_WD9`OHB3"SHT5`7?)?&'$.)P-&SWAKY;\+_?1@7_MW>JGL3"`9!8WZ7!8-.S*>F1O:N! MNW)E)*L5@*28G6LG#%:<<*TI/+]IVN240@H&]9UO\Q00U8S.;2`B%A$1/L>< MLHUNLE195]HF;&'!"]GZ7DYTYN_H2QDEY+$?)6XLOBYY0]KHJUGVN_4M=F9" MJO)Q_/B[DQ]>/GUY*EL8-.=)1)+JX,L"GLGXAPMF"F@Q9FI92W:_57FL0[A]40 M;F9:XW&[M]_K6NGA3T)]7+"52HS3L.3.`Y:Q*HRTV7%$)LK7I2V:_DHF`>NZ M8>!J?32,>(IRG"$Q(U*HD%L4O8]0&63C;(WP%E&`.\H+AS7T9X493'#D"RRN M?V^J2H)*%(HMDZ8J?D7\0HD-#I6N/UQ"9)\$W`LE3+U3>&7W&9 MTF#7-*#X8WNKCA(OPQP-Z;&A==-:Y4&4`UL47I$'M3I00GQ@@3D'ZLO-*+A^2K5`"T,`6MBS*>@H&QF^ M'VBRDGM@-8]22MI^4C^8F1AGK]3LFZW#@8/"B7!H]2S9!:!\;-HQQ$9=@-@H MM$4E/L=TF%_+ZXW"Q#!M[&.9M>GUX2;SK@?KL`=@W;>A&C:^PQ@4=,5SRHRH M+Z^FCIR_(U>-9GP?]`'?AR-E&OQ(/-D<51A$5R*!AP"FR/7GV[/Z3=IT M5^IWA/;BYKM03[TCV)5PW/>HETOLD>%M-8?@EM@C5@`@,87?VD5R8.$!IFZI MXK!R[*WLU=5HW!.`U9$R@HO'O3JZ$6,L'5)SCRIF>_9ZB0B9+,3'+BJU&PA9 M\MX;KZ5S'*=#AUL3/M>X+1TYMR5)D],;[0,+'8UZ'FE\@4VX%NK7@WES$#O@ M_@E@K<7U7K?3[H$$X'0(Z;;1M9'2-,0$+19):QG\]C+<" MG?JKLJ1@AZ.F#]684[SOP$5\GK=,%TP.0T[RIW69+2^./*TDMVT$<%4`9490KN-S*(V2JY^+;+-/3[GL)34L%^GB,EDV ML<*`=&E2QO_Z;#K1*^;F)EV,__3\%;#V>;6).9@NX%2^)+_@ MBXRG@4G5"@[S*I@"V*GHM_B.U?I5$4&Y%]MAHO/%[TF@JFRO8)]7=-Y?LRC\ M5I.3NV7;=%QTR)>JCD3I*BD5.SOMH'3Y_P566\TM[K>U7?K@J4PBJYM%FT,, M:R;#:=L6*_N^F6_Z<_YUM0(E&K46F2J;*42U0>%X.,/@4M,;=;2]6%X_\X^DZU[O MJO#5OWY+E7S`+YS`[\J<_U-'4\HQ8F:5?](YK+I\8K_U.KP_'Z[!; MD_EOYAVJ7K&==;#P47M6*:RS*9')?']K19((8W3VGQS M:XEG@/J\P?[0+X@0Y1@%%5^4Z!!61+\?.E7#.96&R4478:X)N_*88F?SB[)H MRIW[S>*B;+GN[CF,X1YOK7:G*WKU.<$MFY+21X7IPEAXC\TH88XWTQNJ+7I* M>;-&#R?OTHJ+.K7.N:=U5%E9-E16$'A6.3T_MDP/W*"/$*!I%^VKS2*^:5KIM7 M:N=%?]E/NT,&^[1X#S).AZOZYO@1&6F$KMONXH_C"$WM#X"F1A6:^K)[^\D$ M^/E(^5/@-YE-I\%N'.PN@[V[I\OX+H8N[,7!WM[=]^H[T9!NT'@,I_A_7F1! M$`:=X4%W=-#9QPQU^[0CE=Z-G^%R>9KD01?:#*#E05<:UY'J_K@]LD>@*NNU MC++7@*31/,9`PEE)2@7U_/7T++M(4WQE&[_,H^5;S$M(7[(%_CY9E/P5C998 MNZN08QY$EF=2?%I$$P0G)P!Z#^=_N9S%;Y/E.Y92F&/B@&=\/M#'`C-`&ND6 M@T(H-ML%S\\REZ!&#(J%2#T(,URVM=#\6X5/B\NJ9M7V)\6M[6^-4SC#'D?O M@EXWZ(P/>MV#L(YAN_::9W>09W>Z5_#L3GM?A07@5ZL1_A]VH[\5I9?1NZ)< M)-GD5ENG!W#<^KY M[!ET^O$$.C__Q>][42[BE1>]?/'T/KYCQVN'VV+U?'O@\SS\-')DY].O1G%F/8R6=8NX3Z`ZKN'S_WV`MPHG<&+ M"H:Q>86`]?C1";SKU-LHSN>.?C^C#J]]X2Q#-VUY7Z4CAQ=7NF$, M=%D%PM/GSQ_>?U'7$FY,]8T!&M!^A6K?%V_VWCAJHZ^*6NE[XQ3$*J34H!^@ MJ#0ZZ`UK*)7;*BH%JNZ.#SJ=]52*.;G'0T6G_(-GN_$HJFU^)+K1WQ"MVZ(" MJA*(;H?(K+\;9-6_/3M^?OSXIX>_G-8C,.:J]E)5C_U<