[comp.os.minix] Make, 3 bug fixes for ST & PC

V61%DHDURZ1.BITNET@cunyvm.cuny.edu (Ronald Lamprecht) (07/04/89)

When I ported Flex to Minix the main changes I had to do were adding some
explicit rules to the makefile due to some bugs in make. But I thought that
it would be better to fix these bugs in make than posting cdiffs for the
flex makefile.

Due to the facts that Andy asked us to post cdiffs to PC version 1.3 and
that the 1.4a updates have been incomplete and reversed I have included the
following complete cdiffs covering all posted make-cdiffs and the 1.4a update
(see references):

     -  Readme2
     -  makefile.st
     -  makefile.pc_cd
     -  main.c_cdiff
     -  make.c_cdiff
     -  rules.c             (rules.c_cdiff > rules.c !)

The files are shared, compressed and uuencoded.(Sorry, but I'm on EBCDIC-Bitnet)


The resulting make has been tested on the ST but should work without problems
on a PC.


Diffs for PC Minix 1.3 [4,5] make to current version (PC & ST)   (1.7.89  RAL)
==============================================================

Problems fixed:
  - various calls of functions with incorrect arguments (0 instead of NULL
    pointers) in rules.c  [2] (In [1] = [3] there are still some casts
    missing)

  - passing of a NULL pointer to strcmp in main.c, which the ST didn't like
    at all  [1] ([2] complex bug fix; [3] is missing this bug fix !!)

  - implicit rules didn't work if an explicit rule was given for the
    dependency file but no old version of the dependency file existed.
    Example:

      makefile:
        #  make bug1 ---  scan.c,scan2.c  must not exist !!
        flex : scan.o scan2.o
            cc scan.o scan2.o -o flex

        scan.o : scan.c

        scan.c : scan.l
            flex -ist scan.l > scan.c

        scan2.c : scan.l
            flex -ist scan.l > scan2.c

      output:
        flex -ist scan.l > scan.c
        make: Don't know how to make scan2.o

      Even though the implicit rule .c.o exists make ignores the explicit
      rule for scan2.c and even with an empty explicit rule for scan.o
      make forgets to compile the generated scan.c !

    Both errors are caused by the same bug which I have fixed in rules.c
    with inserting the "op->n_line" stuff.

  - "$*" macros within recursive implicit rules have been expanded to
    wrong values

      makefile:
        #  make bug2 (recursive implicit rules with $* )
        .c.o :
            cc -c $*.c

        flex : nfa.o sym.o
            cc  nfa.o sym.o -o flex

        nfa.c : sym.o
            mv nfa.c2 nfa.c

      output:
        cc -c sym.c
        mv nfa.c2 nfa.c
        cc -c sym.c
        cc  nfa.o sym.o -o flex

      Within the second compile command $* gets expanded again to "sym"
      instead of "nfa" ! (This example looks artificial -- there is a
      more realistic one below)

    The $* macro had been set before the dependency files had been made,
    which could redefine the macro again. I fixed the bug in rules.c and
    make.c (baseline stuff)

  - "$<" macros within recursive implicit rules have been expanded to
    wrong values

      makefile
        #  make bug3 (recursive implicit rules with $< )
        .c.o :
            cc -c $<

        flex : nfa.o sym.o
            cc  nfa.o sym.o -o flex

        nfa.c : sym.o
            mv nfa.c2 nfa.c

      output:
        cc -c sym.c
        mv nfa.c2 nfa.c
        cc -c sym.c
        cc  nfa.o sym.o -o flex

      Within the second compile command $< gets expanded again to "sym"
      instead of "nfa" ! (This example looks artificial -- there is a
      more realistic one below)

    The $< macro had been set before the dependency files had been made,
    which could redefine the macro again. I fixed the bug in rules.c and
    make.c (inputline stuff)


    More realistic makefile to demonstrate the $* and $< bugs:
      makefile:
        #  parse.y, scan.c should exist, scan.o depends on parse.h (y.tab.h)
        #  which will be generated together with parse.c
        flex : scan.o
            cc scan.o -o flex

        scan.o : parse.c

      output:
        yacc  parse.y
        mv y.tab.c parse.c
        cc -O -c parse.y
        cc scan.o -o flex

      I fear our compiler doesn't know how to compile parse.y to scan.o !!

  - I have added implicit rules  ".l.c" and ".l.o" for flex (res. ".l.s"
    and ".y.s" for MINIXPC)


[1] make changes for Minix/ST     by Frans Meulenbroeks from  30 Sep 88
[2] cdiffs PC 1.3 make -> ST 1.1  by Simon Poole        from  25 Jan 89
[3] PC 1.4a updates               by Andy Tanenbaum     from  22 Jan 89
[4] PC version 1.3
[5] make                          by Andy Tanenbaum     from  13 Oct 88

Bitnet:  V61@DHDURZ1                               Ronald Lamprecht
UUCP:    ...!unido!DHDURZ1.bitnet!V61              Theoretische Physik
ARPAnet: V61%DHDURZ1.BITNET@CUNYVM.CUNY.EDU       (Heidelberg, West Germany)

--------------------------------cut here------------------------------------
table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 make_sh.Z
M'YV-9<:@>0,"#X@6(*24"4.F31D9"N:4(0/BQ LO6%[,><'Q! @?"1<V? B"z
M!X^*+TXHP+*22!HS9N: ,/-&#@@H0T T2>,FC<$8+F: V$*#18TN(-J$65,&y
M!!V"8^K(D5/&#1T0=LK(F9/FC1L0*'"", %B"I44(-*B 'K#!8X<::4$89)Bx
M98^[>//JW<NWK]^_?%>NA"+GC1@V9=K(-.-SHHZ5:1':"2.G:QV98\*P82/Sw
MC9F9==R,H=/5C<P[:>B@ <%S3$VJHT%0/E/'H569*&"P-DU') C/()Q48<($v
M<EH0<-[P[+T5+4\0<NH@GN-B3-HM,I"B2/)U2PRD/8;.0*I::U/*3>>0W@QBu
MSAN'(#*KGV,\;9LT<[BZ.8-6,);(R(61'T]G_/99&,$-QP1RREFEE5,$J2?'t
M&&W L5M28?!4'0L@W(%&&@(YA4939H% 1AIDN''"56RDP51]LEVE&1O7?0<6s
M=DBY5B%B!HE11X&,X;&#>$CAEQ1^^A6HFI$^ ND3""&$4-=_QQF'4!H[@I@:r
M=-*5(=.)*:[884UKL';@5V7@ 4>+8VP9'6(="@C"&6ED]15--I4'(QEEP%$5q
MGZ+E,5,:</IXE1L$O<$&15EM59J!(C;%IY]N #J&H(S!F29^O9'A HQ%X!'&p
MCF4\QA*5QV'(5*:EPICJ"/8MU523,1S4 D+M9>;&AG/H*D-U]EUVZ!M7;:H>o
ME"&X>IP9/(*@0ZYA[!JAKRZ\H6Q:"8QA7:_15@NM&[\2U )!S*9Y+0CG<BNMn
ML]]6=VZZN@+[K+HNL'%N N4:U *G[=(($KUCO(MJJM_^:MV\\=H[<*KX-KOOm
ML?3Z6["["Z>E[!MUT %'QL^B6W%:^1[$;\0?M1OPQZJ6"@(17HFY!J)W@#!0l
MS$^E/+&UIQ(,0A%VBHCQ&:N5QUJ6;5[U9E/5>6LL'3(IQ11K9R!*E4Q"I[FFk
MEG0H>_1,-4UL7;04E=$S:JK)AF:%= AJ-9MN=LFU3?3BK+/33>%Y1AE,0QC?j
M>W 0VI30=[NA51B=F@RELC *0>QJ6A6VE6Q4Q1?&91.!((:@0L\QZJP_=OAAi
MB$G('$96@^)1^7-'4W=RJF2OQI-$<I"V7Z0@B/ &'"WXX,87+0HN0GMTU '3h
MIP-;63L)*ORNU!B%G9;:AU_!)A57I&-Y==%<3B<ZZ6*4414(5H-=^5,PWE'8g
M[).Q48>7_LTM*ZNFZIP6K#8W*0-8TCM:/=%M:]\Z",@#P93D!X*D$21^\LN6f
M=5I@'>11C(#G"MFSW&"&,'AK#GEH0[7NI:VT4-""$<J@M\8U$QX)C( ?E%=[e
M1"BW!+;!#B!(X1CN)\,3$@QC&N/8N3K(P!5J<'7R>V$,*U@=&A(1B#KCX;9$d
MB$2"=7"((/3A",EEPIP1[ K/>T[F N(5BNBH;W#2D5(J!4 5S EO,@E?I2H7c
MAC-DZ"LU$P$&VR "9;VN-PR!E @^^+L0@(4*'TJCJ$@% C:\X0UKD EE2,.8b
M-FG&5I&*G)'"H*PVU*0I5-$,IT#T&\%9K@R&O,, "08C0#8E@,LKC.@HTKWOa
M2>0JW</3WT9DHC[]J2J7&I3VT)#'5GY%*7QB0?D^MQK72(<B5.$38SPIM%02z
MI(UO= $(0A>D\=&R21=*';# YK%4T0U8*!"#@$#)D_0$#R93,IX(2, #Y86!y
M>6]PWI*B%Y#IU:DIUF.;T;HD$UYRSWMH4I/X*$*^@9G/*P5*W_KH4[R*T8U5x
MYZ(?W2SW(Z&@('_4PR?_]NF_YP'P)*/4F0&=Q<$%-I '-M29!*%X01:6U(-$w
M#*$&Q45%<Z'L7#)DUQPWB+($"%&&1K1@$U-UL8QMC X(3*))I3C4X_STB$%]v
MH/R4R-0=6H>E,IUB"6U:I8IA<9ZTDXAKR/A%O^VM#6.D"#O/F#<U\HDBT-0Bu
M0>28P3I6[(Z^ <X>*]C'/P82?(-<4U,,B4A%QNXE6GKDK2*)3T56\I+064B+t
MU,-)K\P*E&\0)>(&9LJ/8@B>J_RD*_'V25G2;E*W#)0NO11:7V(HF,,$43$Qs
MMJC(*K.<M'.F;-RHH6F6SIJ<*Q#J^+E-,L+HF]9! 4^.VCMS"L\,Z;1B6IH r
MV4Q.EC36>:A9:\8G2_)&#H2;Y2G-R,VU-FD.277J^_R6WE>E!0Z4D8@+\L Aq
M@+5G(,<$+*?J&R^"H+92G?D*?+=2!A>L!@5Y< $=PB & X>48/3SD&P[1"@:p
M=>^,@@-OX9YRM_+8Y'\#EF]30=8LA'6KA3I38+MHNE4\I)1@<6-7B O<U*+Fo
M$*GGRL,[KSKC^9Y+B E><(.MT^,1QV>!3S@(D>-;X#Q8=<4'J:F+;UHQ:B[$n
M)ABS25D18Q,RO,%+*KK*RS(K,S+7;,M-Z3'FIG5B9&T60*'SYWG(\-:A7:]_m
MK*U=O:KS.VZ*8,]O^!V>6HP_+TGSSVQPP1SLFBH_SU?1@NY:$Y+@A"1@ 2</l
M]H]WD#)1@43K;HN1-$]\\H(2I>IR(# ">$VCDS)TR0UB*$P9$CF3PK0A+3/0k
MS13Z! (<X& E.(K/B6 B$[$ 12@3S5U9J  "H-3*<H*: I:\<I-#PDE^9K!Uj
M6F10 Q H(5J]S@&PQW.3G "%!@BJ QS($%Z9$%!GJ Y"I01%A6A519RU(5BVi
MW[/M^WW[*V\!-@V0(I9&<87:QP;V46SV[H;#6U#R)@.][0WKR=TZ5?N^> R$h
M\H38^%HP+U! 0 92D(-@2$-C^,(8AFV&B%3.(AC1"$=24C*EH%SE+"_)22RBg
M$BRHX.=EF= 7X+#Q%]A\5V-( "#K ((@P,$F,L !"& P QW ( 8ZD(%08I"#f
M@&/A5@@Y>G64C@:F*R$T() !7*BN@USKH 92Y[K7?T[WNMM=!2NA>[.USH(8e
MJ!T$=3=. O!%.,V@0 1#B!:BKC+J!6_F#=E-3$WR(((4[, X(_C32XRS$C\Fd
MX"5@D1"%X( "[2*&0R)H0>5!<)>IIR !+S C"!+_%<H![T1?D9/IFP+XD%-Ic
M\"^A2'C4@_O+_QZ4$A'\YS^#@A#L_O6PEWT2/H.HU7*H/+672"TK*)VKJ,#Wb
M8-_[#/K^=["W0/D5=/SA:;_XW:1F1I!/BN3E0'G+8U[S+:=2YT&P?+#L?BQDa
M(7H54GKK=7JUHWIHT7HP\'JQEQ:T!P*V1WS/H7L%R'O?IWS!QWJWQQ/&ARW(z
M5P88R'S.5X'0UX#31'WDXC?7-R+9)REEP'ULX'TA%W(C1Q#ZDC+5@7,OT7(2y
M01$PEQ$;T1$U)RLYN'([J',HT7-Z-P5"1W0S8'1$F'1+UW1/EW92QW98J!MRx
M)VY?MUC(179FAW:Y-G4XD'4YD'5;UW5<>'=L^'-Y!W0S8 ,VP (S< .U$GA=w
MB!!Q.(=U*!3F)WA402?J\2 24@>Q\5\4H0()$ =D  <=R'^DX1!?0 >#-WADv
M$(E-$1XQ\(@)( ;65HD) ";NX1#S5"#A 0/&MP+\YVDVH8B5*$X2X0:;DQ;Au
M@0*L"'AH@8HKH8K9PDNM"(K+E3&R"!^U>(LJD(N/R'F_!WHHX :XHSM?P"QMt
M-!;!\05$\ 1.4 13TH9L^(9F- ,X  -TB ,V 'ATIWS]AP)L\(QLH')M0 :Cs
M!(JQMA!KP(GI& +K."6>9XEYL$:DYXSV]WM]H(S8PHPAT(S/N#O26"!DX01?r
M0 5!( 5'@!8F0!;.F#N[@XFL=XITL1+A!XXR,(Y2]X>_!WS,MXZYTXX4 H_Hq
MV(F95(\A"!;X" ?ZR'_\Z(\(R0(F (M5L3DZ&8QT,(QE$)#8,I#ZMXPBB) 8p
M&8UL,(T-^9 1.9$ &$,).8E8DHD<N8W<:'?>" (SD ,WP (T0'7FZ(8E:938o
M<H]QL%!749%@<9'0N)#4Z)#76 5"P 3:.)5*"8T:>1*7>)4I$(\)L ?[5XETn
M$P,Y64APP"&,2),[$'VUYCTHD (G(!.-V7OH^)?$V&SVN(B-J($H4(B':$MDm
M=(RZ6)*AB"*CB#?0<P8KL +&]Y$YD -B"0/=1I)IB98V:9!KZ25M219[J9!-l
MR9#56)=WF9=N&9Q6"1]^B8F!J7R$B07[Z%.R@IC.R"'KR)B-R"$\*90< I1"k
M:7D@T(#9)IF4:9F?>8&HJ9F9R)GH>)FU*)I7@8BX>)IIF9IDL)JE^)K&MY5<j
MZ7- 1P,Q,(<T, ,T4)9X)Y""]X%F\I95V9<FHI%N>9!P*9Q.69Q/8)=X^9R_i
M%YW[>)B)&9IT$!VQT5SUJ9V."9GE60:369D@<)GJF9:8B (F4*'+.92<J)L)h
MP*#,B!A902,*.)4A((KOP9H$(IA/MQQF<'@E@%X5T:0>823JIC?LUAM<X 8Bg
MP"%MT(\^295+&9Z<2!7!(P=?89\@H)O*Z$<@>IV*B:*C%(B<0H@C:HCS29J)f
MZ)F.:!SR64BXY8H)L(Z/N*=""7B5Z(R/&)W8 J>#"#=S.IJ4<J>-F(QY" ("e
MB@-B.9:V<BN"IZ,\RGPV"J'L*:3**9=/:9P;&H\>:I-KNIBAUZ@LTJ<I((XOd
MNIV6,T[>N1M'!:;C:48KVJ+H:2$Q:I,S6J,/"I@YNJ"<@4\G*3:@M)%3)Z1$c
M2HJMB:25815+*@)-^BPG *6L(1-3REWA=:59FA1<ZA <8J-@NHO\]Q+A9*N;b
M,R6\B"]4P:+=^:YABC=24::/B*9'J:;5F9C9.:NL6J_FBJO"^*[&H:C, 3PDa
M6J>/2JB-&:BNRJ>>Y*> JJ<3.ZA^:JCJ>HORXZ<$6P:I&!^^2$!^"IZ;<ZB z
M6 :"N+![2I^*&*G*Z)]XJ'<%:JDT4* (ZI&+E;-%00,U<)M@AZS)UZ'*)WIPy
MD <B*@<Q@'J5-[(FV7PA"Z\VV8GNNID2LHGJ.GBOY$R'ESPL,+50NWS-A[(.x
M0;65:+;MF;5CV[7O5!B'UTXLH+9$:9.#A@*?&1X1:R*.R+<:V)B"B:A5RXP2w
M@AANL+0Q\)PT*! V:'*[YP)PD'(KYW(^>!% .',> 1*/&[DXAX0\UY5,F').v
M"(6KXC>0*X5E1X50=X55QW8Q< /-IH8\&W85>+I@Z&UH%W7-1@-O5X;@&+MSu
M1[-FJ7=-6XYX.#\Z48%ODS+)TJ^S9P1,$ 1', 4:V )$$!I/8KV35FE69!Q/t
M( 1*, 4)T .]&!!KH&@&2P?HZTSK&TTRP07*]TTRD4E\(@?HJTT,%7[%FZGGs
M1R6PT@3*.VATT[P6(YW/&[W36[W7VQ/Z0@3;:VDX09 @\+WA.[[E.P;G*Q- r
MV;[PU+X:\K[Q2X3S*Q):<;_$11^+2W(W^+CJ0;DH$7-!2'.:6[O'8A))N!+_q
M&\!=,\#^,030*[W4&QXMD&36B[T&L1),\,,)'![^0<'B2[X"8;[>LL$$P;Y5p
M'$T$ ;]8,'C?1!#T6\)>3%PXLQ)THP.#1P(HX,13HF(D-%%HK,8 A ))C,!3o
M$%U1C,'58L9H8& D*\4GLQ)4K,=\O,%_C 56+,BKP;Z%+'9O8,8)L,>)'$V+n
M3(2-/'B0C(.%_,7V6\F7K,D4LQ+:Q,E\K$T!D\*-BQ"D[,(_*'-""!*D[+DIm
ML1*Q!QF*. 1>,:** BE"DT]8TQ[/]22I0\N^YQ\CT!KJPR>U \EVY1^S_!^*l
MJ!!CFGL,LAP/4C.9\\L& 1P((I3"O!+&N!)S@,W-B+!88(R%FK(K$9T)(*;Yk
M"AT\P2=X,,X%>P(N< (!:93,G*"$2@3ERDF(B$L)EA: 9"2%D3&X%09P<#6Lj
M=<TP0=#\1,L)8,WT9S84L4QPU1Y9-@;G048(\DJ0DCK+BR#W,2#[ =$+)@<=i
M)DTGR#6A00;G:B%& DSX9!7/Y!2S05K_L\L;!='N(14:'4-=RDW:%!?X2J8Rh
M00524 5%T*#.&"=-PQ S75"$BB GG=+=C 6>J"@K(7$X>9UP$+(LT#?.>+!Gg
M"\X9.XNNR+'E7+(?ZXI??;4B.W@FZ 2SV#HXY,L-;1"8N=:48;)NK;;&I\X*f
M^R#FG !YNL6#K64EZXIQ8'SKS+)QJMA][8KA#!./"9D37%N5'21IH9X)(*AHe
M/7BW<]ES708Q\\]6T=F^]]EG#1^4[8AR+7M3@,VJO1*LW; 4VQ2N>+%;_+)Vd
M2JBA>-B].-F%:MJ;;7S^8=@:R+:V'0<:B*[HO,4&&9K/M=SB' >!N<:/'<VIc
M-A=34 2D;49.$"&T[=D2!B<HX-PGL=G:K0)P\)H:J )QP)^V[=X:> )<  ,Gb
MX-CLB@+N';(:J!2/-P9+:[B(FP(KD+@)6(R+':L"9-N$IWXB,-[R9TD3/6@Aa
M^[2VC;1*^]]PS0)9&Y"V/=VA:2'A(3AW()2'YP)34 5&8 265@134'DIL)2Dz
M6HT0*9$<.GCL3*;=S03?C=Q;?+?KN-Q5V5Q# JB*J8$HZ0/M*#AX0 ?:?;=Yy
MJY@I^063,B21ZK?AT8BY0P9? .52#N'J/'@HOMD:Z.4^ .9"^:71G;;,5[A5x
M0=WHM )R?KAG_EP(7BL^$!Y,H 7:/7CI9W@B,-MYG3U_<TB%A% :OL6#9^(,w
MJ[6.OHC/;=S/Y=B#=]Y-X=_OK8KA(=^O&>@)@.F&?2ND[MS#=^D0G@":#A;Nv
M#=^?/M\K(.JD/@>0CN(J'N*D3KA5>>,.F>,3N>IE_NC+/:*2#HJH#GAO'8MOu
M#N>M*@<&[N',?K8@H(IWWHR67N=\[N> ONJ"7GAL<'A)L%% #1]/01"&M!^-t
M#HJMSNFP#GBR+NJC[NVXTP*D3NDGGNUF<._M_NJ>#N^A[NWS/ND)<#N5GN*;s
M<^#W;I"WLY0F.J$-SY> *?"6Q)XH<#L!"8S,%_&[8Z)\P >_4:QE3?##;HFWr
M;MJ3<O&LNK1T6DL/:YH9#XHHWER)2:NV[O#E=.4KR2$+>.\)X-YJJX$<'^;-q
M7HD]_A5(K=3W;I25R/0)P/1'_^-!OA+X?"K-3*@ _#1"HTR3$X.(SE![;0?*p
M009D+"NI,YGIO.$3NY+ /0;"#=JN;>9O/[$P:_)"CL/!]X+@XQ4;CC=>*P)"o
M0 13, 1#,*XB("!TE/&Q]]E^_[9O<'B!/_A*/.-.:WD_O]IN?_ K>7AH'/F$n
MCQ:=+_@^3,=HT0)?P4[CRO*QP?8P[]A-G>\([Q K/@;5LNXS7TXAZMLO'ZL<m
MXO8\+^*]W?CPM'Z%CWICL.YN._R(-_F&/\3KGOFPO_GKA *?'\>C#\2E?U*Il
MOZ>L'ZL9__HQ9-HJ_F>T;QAJ8/NF3?-LJOH.^R<G&A^LVO/)G?QP*P)-$(Z&k
MC_@'@:6*KXCT__CV+QPQO\KWF#P;] M_=T#ZH;'[MX#B& .<?*!/;CV[EM?]j
MY-\6 W^X+N']F>51^[Y?^L-]ZT_WN3_3U/OB'_!C?'3@[P4!RE<[](" 6'>+i
M[_\=GA4X &O'T[I\MNT HC@%B *TP H$?2B !I*^* - @,!'V7YK[QW5I^]Wh
M\F(?B_HS J):B('SYP'O@/I;>2*P-/$^^/?[A%P"P(#B3P.Z@!>8\:H<BDMYg
M(9#N_;;69]O H!-<<>9OW9E!E-<G:IYC:H--</SQF3+8!-$@JVI$3/#@Z<% f
MPP</GA_D$(#0]>5!,;@\Y& ?K(-L*A'B04$H!EO<BXMQ,ZX*7D%$B 638"+:e
M@A8P\U2*S6/U])DBF@)%2I?1DBK O>R,/OEZ5ZV8F0%E H$86-]+@8Z/^!D^d
M;8'\A%_]NW[3J_D]@48G"VGA [LT0R '-D$>6/W0&#"L8P>!>J$^#L'^XH,2c
M9(,7<!'*/O(':0)2YDE6RE#SO2/.1_V& !!\AMGO"%)#[G<-O9\BI(3;T( 0b
M0_RC$R@-!$N&%_ #"H[<IP9WGZSR?:['"\I $; "\]^BR7@ZT+3QP!](!$F a
M$9R&$W#UM4,+^ 6UX1-4-!W0]>E#%I4&<1O,VH( T0+>PK^7!8( X3-\.H87z
M]C\42!)KH BX@09P&8[#Z5<2FR$*R (04!U&Q*M0 1&B3"0#AP?(*!@& RP<y
MXKAR>X$0]NG!!'/\-"$([(0><0V"1!/H!1-B IR):*PFFL,XAA.'($2LACW1x
M^!1#O7<,(]@6LXK,<"LZPYS8 JA7D"&*QZ\$^D1Q"!1%@% 4,NC+*,K%=Z@4w
MQ6"".8AB\0.%P^B'%<OA.62+UN$M#IFC> ?/XD\,BC!$,7H+O0C_DB("7(H9v
M$8?1P[*(#[/%8Q0!<N#62,:X6!DUHA5\BNNP'X[ J=@%YY\O!(#0JPA@ <.7u
M+Y[?9T1CL1$+ ,'<^ 5RXE=DAY^0(J+%F2A$>,1\88I%D#%:Q@P8#Q--4S2-t
MFW GNKS5^ ^I8G(;CG41-^(EW1C'>*-OE(!@<2)ZP[SW&3CC8$2 :?$P#L&Vs
M6$C2Q'&$-'OQ/.Y X@A#C&,>^(O),3YF0WAX$1,-8-2,X- QTD5R:!/1H9)Ir
MCWC@/9)&I.C8L"-D1)#OD2!01@8Y"?MB<\R,6$ 4#IMZR+W,HF<<D*#QUMA'q
MIJ@<H2-JE(X?L3JVQE-1$?DC''2$AA 20L66ER*78QB,A_]QB\W!.W (^9:-p
M?(/D#T;"OAXI"?>CA;R(]<>Q[4@BV1A;Y)%<<6Q 2") )ODC]: EA'%80,:Ao
MO].X#R/AC)2(P7%%:DA2.!8_0SSA0E=/$1F!# 'MT@#0N JV!]Q4!5XB&BJ'n
MP7D4P$%HY(1P)@9:  891!H$HID202%G9$-[\!..9+)4#MWR=,I "W@ZD,=+m
MN ?[==588BY$/,6O=JA$QS80GV'STP.V$40Z0[5(_=BB3?B-GG )>D$WJ =Il
MGQS8DM&Q&J;($K@BG>1E%(.9P06\2J?8);]D^]."*C(@5LA;&0\MR*XTD;TRk
M-49%?T@KA:61))87\0WH2EAY(F6E5 R6%)%5,D)722V3)8J\ELTR6UK$%=<&j
M<N6Q;(,;D1\N2^H8+JLD(S26W9(C^LKI""S;)5^$EN126I[+?,@EY:6RI)'@i
MD@LZRV')'"_BO@QN,?(?S<L:>2\+)KE\CK9M2<I(3N@NXV&Y# -2\@Q.3!_9h
M,&_D1828.O(1*DR*V3&!9'7 F(5P2&[,(FDK'>8&1)E*4F3:P8IY$2U)QJ2#g
M(Y-C$DR/^2)3YI1<F4U26Q;+F\DC@2;-7'%7$A/&2SOX+\'D^PN%^(?J*8"0f
! Y-Ce
 d
end
--------------------------------end-----------------------------------------