[comp.sys.ibm.pc] c beautifier

evan@blake.acs.washington.edu (Not Evan) (01/16/89)

Does anybody have a public domain (or shareware) C beautifier that runs
under MS-DOS?  I have about 500K of some of the least readable C source
I've ever seen...

Pointer to an executable would be wonderful.  Source code would be even
better.  How about source code for a C syntax checker, e.g. lint?  I'm
sure that I could adapt it within the next millenium...

Any help would be greatly appreciated.  And yes, if you're looking for the
same thing, you can send me mail and I'll route a copy to you when (if) I
get something.

--erw;
}
    }
}
    }

matthew@sunpix.UUCP ( Sun NCAA) (01/18/89)

In article <563@blake.acs.washington.edu>, evan@blake.acs.washington.edu (Not Evan) writes:
> Does anybody have a public domain (or shareware) C beautifier that runs
> under MS-DOS?  I have about 500K of some of the least readable C source
> I've ever seen...
> 

    Excuse the direct posting but the e-mail is bouncing and what I have is
small anyway.

    Included are the source to one cb, and the docs and executable for another.
Enjoy;


---- Cut Here and unpack ----
#!/bin/sh
# shar:	Shell Archiver  (v1.22)
#	Packed Tue Jan 17 17:20:17 EST 1989 by friar-taac!matthew
#	from directory /home/matthew/cb
#
#	Run the following text with /bin/sh to create:
#	  cb.c
#	  cb.arc
#
echo "x - extracting cb.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > cb.c &&
X/*
X	Modified by Matthew Lee Stier 1/17/89
X	(outvect defined as 'char *outvect;',
X	 vice 'int outvect;' )
X
X	Compiled on Manx C86 by Allen Morris 3/22/86
X
X	Modified for DeSmet C by S. Lekach 3/20/86
X
X	Modified for Lattice C Ver 1.01
X	by: John W. Kindschi Jr. (10-30-83)
X
X	Swiped from CPIG'S UNIX system and modified to
X	run under BDS C by William C. Colley, III
X
X	
X	To use the program type the following command line:
X
X		A>cb input.fil [output.fil]
X
X	Where input.fil is the file to be pretty printed and [output.fil]
X	is the destination file. If no output file is specified, then
X	the output goes to the console:
X*/
X#include <stdio.h>
X
XFILE *f1,*f2;
X
Xint slevel[10];
Xint clevel;
Xint spflg[20][10];
Xint sind[20][10];
Xint siflev[10];
Xint sifflg[10];
Xint iflev;
Xint ifflg;
Xint level;
Xint eflg;
Xint paren;
Xint aflg;
Xint ct;
Xint stabs[20][10];
Xint qflg;
Xint j;
Xint sflg;
Xint bflg;
Xint peek;
Xint tabs;
X
Xstatic int ind[10] = { 
X	0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
Xstatic int pflg[10] = { 
X	0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
X
Xchar lchar;
Xchar pchar;
Xchar *wif[2];
Xchar *welse[2];
Xchar *wfor[2];
Xchar *wds[3];
Xchar cc;
Xchar string[200];
Xint lastchar;
Xint c;
Xint outvect;
X
X
Xmain(argc,argv)
Xint argc;
Xchar *argv[];
X{
X	int k;
X	/* Initialize everything here */
X	outvect = 1;
X	if (argc < 2 || argc > 3){
X		printf("Usage: A>Cpretty input.fil [output.fil]\n");
X		exit();
X	}
X	if ((f1 = fopen(*++argv,"r")) == NULL){
X		printf("File not found\n\n");
X		exit();
X	}
X	if (argc == 3){
X		if ((f2 = fopen(*++argv,"w")) == NULL){
X			print("Couldn't create output file\n");
X			exit();
X		}
X		outvect = 0;
X	}
X	clevel = iflev = level = eflg = paren = 0;
X	aflg = qflg = j = bflg = tabs = 0;
X	ifflg = peek = -1;
X	sflg = 1;
X	wif[0] = "if";
X	welse[0] = "else";
X	wfor[0] = "for";
X	wds[0] = "case";
X	wds[1] = "default";
X	wif[1] = welse[1] = wfor[1] = wds[2] = 0;
X
X	/* End of Initialization */
X
X	while ((c = getchr()) != EOF){
X		switch(c){
X		default:
X			string[j++] = c;
X			if (c != ',') lchar = c;
X			break;
X		case ' ':
X		case '\t':
X			if (lookup(welse) == 1){
X				gotelse();
X				if(sflg == 0 || j > 0)string[j++] = c;
X				putsx();
X				sflg = 0;
X				break;
X			}
X			if(sflg == 0 || j > 0) string[j++] = c;
X			break;
X		case '\n':
X			if (eflg = lookup(welse) == 1) gotelse();
X			putsx();
X			print("\n");
X			sflg = 1;
X			if (eflg == 1){
X				pflg[level]++;
X				tabs++;
X			} 
X			else
X				if(pchar == lchar)
X					aflg = 1;
X			break;
X		case '{':
X			if (lookup(welse) == 1) gotelse();
X			siflev[clevel] = iflev;
X			sifflg[clevel] = ifflg;
X			iflev = ifflg = 0;
X			clevel++;
X			if (sflg == 1 && pflg[level] != 0){
X				pflg[level]--;
X				tabs--;
X			}
X			string[j++] = c;
X			putsx();
X			getnl();
X			putsx();
X			print("\n");
X			tabs++;
X			sflg = 1;
X			if (pflg[level] > 0){
X				ind[level] = 1;
X				level++;
X				slevel[level] = clevel;
X			}
X			break;
X		case '}':
X			clevel--;
X			if ((iflev = siflev[clevel]-1) < 0) iflev = 0;
X			ifflg = sifflg[clevel];
X			putsx();
X			tabs--;
X			ptabs();
X			if ((peek = getchr()) == ';'){
X				print("%c;",c);
X				peek = -1;
X			} 
X			else print("%c",c);
X			getnl();
X			putsx();
X			print("\n");
X			sflg = 1;
X			if (clevel < slevel[level]) if (level > 0) level--;
X			if (ind[level] != 0){
X				tabs -= pflg[level];
X				pflg[level] = 0;
X				ind[level] = 0;
X			}
X			break;
X		case '"':
X		case '\'':
X			string[j++] = c;
X			while((cc = getchr()) != c){
X				string[j++] = cc;
X				if(cc == '\\'){
X					string[j++] = getchr();
X				}
X				if(cc == '\n'){
X					putsx();
X					sflg = 1;
X				}
X			}
X			string[j++] = cc;
X			if(getnl() == 1){
X				lchar = cc;
X				peek = '\n';
X			}
X			break;
X		case ';':
X			string[j++] = c;
X			putsx();
X			if(pflg[level] > 0 && ind[level] == 0){
X				tabs -= pflg[level];
X				pflg[level] = 0;
X			}
X			getnl();
X			putsx();
X			print("\n");
X			sflg = 1;
X			if(iflev > 0)
X				if(ifflg == 1){
X					iflev--;
X					ifflg = 0;
X				} 
X				else iflev = 0;
X			break;
X		case '\\':
X			string[j++] = c;
X			string[j++] = getchr();
X			break;
X		case '?':
X			qflg = 1;
X			string[j++] = c;
X			break;
X		case ':':
X			string[j++] = c;
X			if(qflg == 1){
X				qflg = 0;
X				break;
X			}
X			if(lookup(wds) == 0){
X				sflg = 0;
X				putsx();
X			} 
X			else {
X				tabs--;
X				putsx();
X				tabs++;
X			}
X			if((peek = getchr()) == ';'){
X				print(";");
X				peek = -1;
X			}
X			getnl();
X			putsx();
X			print("\n");
X			sflg = 1;
X			break;
X		case '/':
X			string[j++] = c;
X			if((peek = getchr()) != '*') break;
X			string[j++] = peek;
X			peek = -1;
X			comment();
X			break;
X		case ')':
X			paren--;
X			string[j++] = c;
X			putsx();
X			if(getnl() == 1){
X				peek = '\n';
X				if(paren != 0) aflg = 1;
X				else if(tabs > 0){
X					pflg[level]++;
X					tabs++;
X					ind[level] = 0;
X				}
X			}
X			break;
X		case '#':
X			string[j++] = c;
X			while((cc = getchr()) != '\n') string[j++] = cc;
X			string[j++] = cc;
X			sflg = 0;
X			putsx();
X			sflg = 1;
X			break;
X		case '(':
X			string[j++] = c;
X			paren++;
X			if(lookup(wfor) == 1){
X				while((c = getsx()) != ';');
X				ct = 0;
Xcont:
X				while((c = getsx()) != ')'){
X					if(c == '(') ct++;
X				}
X				if(ct != 0){
X					ct--;
X					goto cont;
X				}
X				paren--;
X				putsx();
X				if(getnl() == 1){
X					peek = '\n';
X					pflg[level]++;
X					tabs++;
X					ind[level] = 0;
X				}
X				break;
X			}
X			if(lookup(wif) == 1){
X				putsx();
X				stabs[clevel][iflev] = tabs;
X				spflg[clevel][iflev] = pflg[level];
X				sind[clevel][iflev] = ind[level];
X				iflev++;
X				ifflg = 1;
X			}
X		}
X	}
X	fclose(f1);
X	fclose(f2);
X}
X
X
Xptabs(){
X	int i;
X	for (i=0; i < tabs; i++) print("\t");
X}
Xgetchr(){
X	if(peek<0 && lastchar != ' ' && lastchar != '\t')pchar = lastchar;
X	lastchar = (peek < 0) ? getc(f1) : peek;
X	peek = -1;
X	return(lastchar == '\r' ? getchr() : lastchar);
X}
Xputsx(){
X	if (j > 0)
X	{
X		if (sflg != 0)
X		{
X			ptabs();
X			sflg = 0;
X			if (aflg == 1)
X			{
X				aflg = 0;
X				if (tabs > 0) print ("    ");
X			}
X		}
X		string[j] = '\0';
X		print("%s",string);
X		j = 0;
X	} 
X	else {
X		if (sflg != 0) {
X			sflg = 0;
X			aflg = 0;
X		}
X	}
X}
Xlookup(tab)
Xchar *tab[];
X{
X	char r;
X	int i,kk,k,l;
X	if(j < 1) return(0);
X	kk = 0;
X	while (string[kk] == ' ') kk++;
X	for (i = 0; tab[i] != 0; i++)
X	{
X		l = 0;
X		for(k=kk;(r = tab[i][l++]) == string[k] && r != '\0';k++);
X		if(r == '\0' && (string[k] < 'a' || string[k] > 'z'))return(1);
X	}
X	return(0);
X}
Xgetsx(){
X	char ch;
Xbeg:
X	if((ch = string[j++] = getchr()) == '\\')
X	{
X		string[j++] = getchr();
X		goto beg;
X	}
X	if(ch == '\'' || ch == '"')
X	{
X		while((cc = string[j++] = getchr()) != ch) 
X			if(cc == '\\') string[j++] = getchr();
X		goto beg;
X	}
X	if(ch == '\n'){
X		putsx();
X		aflg = 1;
X		goto beg;
X	} 
X	else return(ch);
X}
Xgotelse(){
X	tabs = stabs[clevel][iflev];
X	pflg[level] = spflg[clevel][iflev];
X	ind[level] = sind[clevel][iflev];
X	ifflg = 1;
X}
Xgetnl(){
X	while ((peek = getchr()) == '\t' || peek == ' '){
X		string[j++] = peek;
X		peek = -1;
X	}
X	if((peek = getchr()) == '/'){
X		peek = -1;
X		if ((peek = getchr()) == '*'){
X			string[j++] = '/';
X			string[j++] = '*';
X			peek = -1;
X			comment();
X		} 
X		else string[j++] = '/';
X	}
X	if((peek = getchr()) == '\n'){
X		peek = -1;
X		return(1);
X	}
X	return(0);
X}
Xcomment(){
Xrep:
X	while ((c = string[j++] = getchr()) != '*')
X		if (c == '\n'){
X			putsx();
X			sflg = 1;
X		}
Xgotstar:
X	if ((c = string[j++] = getchr()) != '/'){
X		if (c == '*') goto gotstar;
X		goto rep;
X	}
X}
Xprint(fmt,args)
Xchar *fmt;
Xunsigned args;
X{
X	if (outvect == 1) printf(fmt,args);
X	else if (outvect == 0) fprintf(f2,fmt,args);
X}
X
SHAR_EOF
chmod 0644 cb.c || echo "restore of cb.c fails"
echo "x - extracting cb.arc (Binary)"
sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp &&
Xbegin 600 cb.arc
XM&@A#0BY#3TT```,```2^F#$``'$,1EA,90`\```,G*I88=1L4#$(C6RU&F#%
XMUPD`5I8U*=+DB90L)*P`,!&*!8!18@#X`K11$0,9[<95,&)"$0$>/>A`X`&"
XMSLL$=0HD^=-N1K)U1"`!F+$M"1T7+%W2I&."1P(Z(EC`X(/"Z1\2`[;)`;%H
XM6E8Y&KY:&*!-C@09Y`9@D\-@W;,%V^@82.0!1-M=NL@`2&<*P**Z#**MRQIH
XM'P`!=P[L.DS7KHE%%@0`8(1M!;1[P@#`J[,@FCC/H,6M(R!4%[Q_H20`&#!,
XM#H$=T.X8T#4)P#HR0A-9@`!`'V5'T!:)V[<H6NJ/6#YJ\>N!]XK*@.5<H\L%
XM@($9P*`L8K=(VR)E@X81"#3.W[\5XQ;QLV&LP)@CXQZP+P#B2$L"-A`5,')$
XMG+WY?A$#A0<'H"/(![@`P$0S(="2`(.X!+!@"*'PU@(!?H&C2RH`.`BAA`QN
XMMX@1`M`R816#L(/`#B8L=\<`Z5CSSW:X2'``%.@4(L$BY8S(0`^2\5%`#QCZ
XM@00N-MR(SAL[EH.+%4J:T20NCRC9Q93**$G%E`(@@.,24]K@)3I"3.G#F#E,
XM.08`.&83`8^+V.'`/W0(D*`!.-;B`8^XN,#FG3AJT`"/A0`S"@,'T$$#+F=X
XM^8\-B*(#RP>$`D-'!+BPX2BD!7Y":3F%UB$!+G&,*<Z;3JZ)HR"HXE*)EW'.
XM62<Z*#A0Z2@.'%`'!K'2:><E8]+2JJKH4-'J*F/:H@&?LGB)"[(XSC,HJ(9"
XMH.NHM8Q9R+!LHE,"JL<88`(!&`[B!P,#U+%"KS:AH\"T@^P3`%WC"ADO`GZ,
XM2LZ83G"+HSL0\(C=+O_\$VX`!P0`0"X9)*`+!PF,8@4!HZA3P"C^7#S``:,<
XMP+$U'X%`,0D4\T"Q#P3@$D+$]!2`2PD1X^.R"A'K4P!VH[ASL3P7VW,Q/P4D
XMX@`[05L`3]`>B$``7044*,@!HBQP``SD]*`!`(D8`4`=,,H%!-?IN&$`*%)3
XMG<X3!H22\3\&9+P(/&0?@`@AUE'=@T=T(!.W*%00L`XPN!R-8Q@(\(A$'2R@
XM0TT"@_B`,`!T'-!XQ@#X`8':!;#M-MQ2SVT=.I\<</`!`-B&2../TZ'`Y`4`
XM\`>,=Z"V=ML%O!VWYP:D0\8_@1>`8P&%EX.$3=@-AAT0HYA<*!T#H*-&`NA,
XM<0`N,B0`Q:/6%KNGDPHW;G(`HR`L:B@D1P/.V_\0`@0!;'N<#@;_@-(WU8IX
XM4`4!,/RS`S;,IV.`P0:8F,+2T0]_]`Y'GCB`X;B&C@@D(!0@,]_;_B*R1'`"
XM'P,(A=(200@&$(`H;`,9ZA+6F*4EC0!UZ`#Y""!!>`R"%^N#W`-6V,)_,&)]
XM_\C5`3"GN=IQ3FYT,P`Z1"%$!4"/$P:@GO6P5Z!.=(!'[9N>POY2OG$,XA<Q
XM#-\!$N$%U\%H#/Y(Q"%00(`5(J]\YX,'!+%&B,RD0PG^6",21A'!-"Z"$!B<
XMH\CZ8(!PB:QT:VSA'3TX"J6AHP7_TR$Z8%``=&1B2#OX2-/JL(&X40T*N*#!
XM$FV0/0L\L1SA:EK!UC$!2Y(#DSC89/;VP0$>H:,*"$#'.5Q6O>MQLD#H:"7W
XMF%/%13@`9#MX1&:TV(<%K+!0?F"?`TA&PS2^D(Q8TQK8+-&/17!B?2D@T`&(
XM8L'U69",Z0A$/WA(.]MU+HCHF`<!ZE>V?X@"`%,CQ_ZR)@`Z".$O&>,B`880
XMIW4Z`)Z(8(1U>E`=NF2L#A'H(1<!@(Y=$"!.`,`=*.!I-P5LC1;HB$$!1J>P
XM=:2"G)N;*!`_%X@##`]&`>B'2$-Y`(ORC0#ID`<_0.K#VZ'3'65$X]M>&,.L
XM58X#S\10'2K0S`E>DP#9]-@QU(<AAJ:@0`Y5HBVSQXL-\&F*=2%`(;:AQ=>E
XMPQ'\:)S2`E"'!N109.%26NG2H0=^^+&IZ8C#3/.I-2!`E)URXX1U?(JQ`MC5
XM#A_))V#1$8T!0!1WZ1`"/R+$G-EE3!$.Z-PCK%.Q`J0C!7/-7#E_B+O&68RL
XM"0B7Q=::@,7*#$>J>"BU.#.ZTJ%#`'Y;0`X]AHY\#""*Z$##`'H0R5%,<@*X
XMV($J"[2.98'2`*+\!SI^(,3"2I6)Z)"&<3FZ%U;L@Z;F'*D0/;!;%4@R43!R
XMQ'4=Z\-0-`UW+"V8+',GAWWD$&78Y2PZU=`\:13@I.F0PCY8:M'&H0QRH0T@
XM`0;(@^MZK%!>E0%Q/%#%?QP"AP90ZACANH'Q:C:DY_Q<(P3PSGCVP*)TD$!\
XM18J[=81CQ``-8FL9*@X!4#<=RM#'B#/\/P.@#!<MP]$5#"N\.J0!'0T@0-0\
XM',DZS"-<6&@J.O0Q@"';+071A-P">H""K:V#;4E>1SE"D>3E)3++V'@O`=!Q
XM!P&@XQL$P.\7],%?`!3U-$R-XE*AN9<@Z`,71,-1BPW7/QGH`QT^L!,%`'`/
XM%X#L;:$0F?D&H$:/<5`+*1MTH0^M1D6#@]%%Q<<B"N%-0F##S2#;A:37@6A+
XM8UJGFBX$&3F(!@&P#:T&&.M>F)&/*@,!`2,`P#L.`&5,'.`%`/#"`70`@'`8
XMX`<`0(8!JI,)`T02`P9X2"(*(`*L%:`/```&`?8`@"!;U!0#2```E#``$(Q[
XM`+[``0!<L`-"^``G!7#!/T@!!,;A-`_O2(<F\H&+'@P7'8G@53F@&XK@/2I7
XMZ,!$\-AE)^O@J!@6X).?,.EP=*B@=M0ZE*X>D"EG5?P!`E]'`SINRTA5(N).
XMJC@#)L`GAS,<'2S`.,.?-:8.8!P[.-I#`G@T"&(@H`O#0)&*6.0B&!G@'ML)
XMA<<*/2YZ[@(!`,C$/?81BP%DC0#3`$<*2'0,(QB@="-RMA$(T(=1_>#?P;@`
XM%+V^#G-T_>M^\?H.2%1V7`3AWZ)0^\#9;HZ>_SSH*1(`T0'P(GW;(^E-*U0>
XM*-"X!!R@)@UH_`&>DC;'B^)^YCV`XEFP"!OD:A%$$``2$A'Z0N&!`8M@WT/Q
XMH8@.Y&\=LO5\@7;0I$5@@RZ.7T?:FC8*QTO^'W7HHP$<?[7T_D/R#<@).@#Q
XMC\&$PO?$$`#0A2[X%A$>1A`X/#M85[DWC!!R1FB<QRI7@8D:P&[<IL,"&B?`
XM.K`OP@5RAC^P(W[2:=$/Y:];U=*_?A^T7YE*)6!@9P,98PQ!!`"`@@M#\&^1
XM@'+A0CFV\0#?1P<(@#,3HT4])WV`QPX0,'B%=P?UL!VL$P!]L$W`T',0`'1=
XM)VY^80<)H`A!9#?FEA/_8`0)L`[MT'4-`'9&T``29`<4P&B#P`.0XP9=1SIQ
XMEP!9LP`CXH/G`X2,-B('4(,*Q`,#P'JU8P<+H`AZ=7[_@`A>1S7S1")UD`#+
XMDSE&L`#KP`R*$(;D$"HA$"=;&(-5$P8`P`=SJ'\]H`>5@P",A8)`5X,-L`Z#
XM0'_$D((;N"+65WBY0`])1UYODPB#%0#^<%A!!(;G5S75L2OQ)8D,%0[5!%@E
XMA@QMF(D](&U:0P=#4FUU0`2=.%BW$(H1%42*X`5>V&%B>'LD0@>/0%!;0PVO
XMR%"+((LEQ@NE6%%;PP#H\`_]$"X"M!=<\`_'2`Y^-WTIP@`>""/\,`])%VJC
XM-D%9%0WCX(D#P(V,`&F043[BL`CRL`@8M`]"XS&+T`B?E@@WM'H#0!R%T&H<
XM1$9I-6``T',,8(WL\!J+"".EP(WL4%O\X&_?I8H],(,8$%^9AU[(-87-APV$
XMU9#`YENZL@3&AP[`T)#>Y9&(@SD^]5<`8(#6\0)\E3$JR9(&H`+&UU?HP&WK
XMX`#Q)9,O<),-:5$FZ0#&]X?$0`!`9XA&N8'55W3I@`_MN'T^0#E^``,3"#W2
XML%\&\#A^08`%(),(Z'`*^&^VP'+'!8$92)`&R92M\)3!B`[U0!RB&$1.5C7>
XMY5.J\V%;HY%[T'S3T);(`)>S:!USV0/`9I<4T`/>10?88$IX60>A@`Y$T'R<
XMT'-)*73.=I#I4`-/&2<*(`A$2`>48@PI68L,D#\F`0/ML`/+D#4*4`?B,'I&
XML#K$8`!'>8*S29`8D(U-&0_;T746904CTDI>X`&-X`0"$`59`P%<1`'HD`YD
XM.2((T`A>(`!3()T*,`53L`LA``!30$_HH`H\U@,#$$T6<)>M`Y$1L#5^6#`]
XMAP&UV9X$Z0"Z:0F\R1UV(`$N(8-1!I'B1H-&(`'K<`Y=QP!@=Y_Y634ML#6B
XM8P0,T%$/$"?XB3]5LP*0<UM.(`$U*`&^63I=!W4M&*%V`P-1Q@<ST`,YX#HN
XM,"(*L`A>4(')H`L6E7`"`*$9>IKM,`CI``,S(`V%D`QY$`#DE@T3(`RLR44(
XML`Z^8"X$JCKW8`4*<`\M.@A>H``S$ILLB@`]YP`$>9E,V0WP0",V2$^X,*4L
XM*GC8,`</H`A'@`!4XV6#0"(.$*`C(@`],*5U8((]1YO#\`]VX&IVP`!\J@#H
XM0#H\=YL;B(V8V0A?:I\4H`A$@`"$8"D?0#4E(!FJ8P6X4#`XX@;3$B>-2@0)
XM<$GH<`U,V",&2@0!8#<42CS;8#S;,`0'B@A3F@[LX&:&T``-`'4^)0A^`&(N
XM(QF#P5@L"@`+@`V!L`P`$`"X0`H!``53P*<0@`XUH%I98P!?@Z?$,)##@`N2
XM`04X1Q3/:@=")`\K6@Z\ZJNX0!+!*AE7EPZC``#G"CF_:AL"@!U_<:O%&J[1
XM:@X\5JW7:HC:&J^JF*ZV,0",=77K<`8".Z_!BE7X:JS(&@#'>AC+VJSZB@Z=
XMT*]>]Z^V&;"]*J\$NZ[1Y#<>`+!`UP-W`#FKT`-RL#4P<@;_T`-V"#;_X`_K
XML(Y>9SXM)`B\\`4@-@&!X`3D$G<44``$ZJFD9P#K4#A`>`Q$`'=AYZF(`*J@
XM-Q<?!`RDMS2A1WHK.G936SC&()!HJ9OCX`XB8@<(X*AL2@Z5"CD*@*F:B@[(
XM4*IQDK:/2JD$BE"#P`<@)ENJ0R=")`NZ9*]HF[1<:PR/"@".&JJG-*CE2IEH
XMN1T^M0##0`=?D`C&N0#*0`=4,")^89QO4PCVD`<'<`^7L0T=4#`S$`^>V*.D
XM>P_1<`_:,`C9\`^^8&Z26*_V,`/_$`WN$`W?$`W8$`W;,`<$,`#Z,`'Q\`_&
XM60?M$`V$M0T0);IYT`"F>P^H.TI72Q20>Z@BX@400![_L!K;D!7880".``R/
XML45>]QA'(`#LBP#&8`0%H`GSJP#+,+\$P`F,8`4"T`ACYU,LNB-_L*)W4#A7
XM8`"+\`0/I4!?(``>8`!3P*(6H!U'@+X'X`C8@`5;\`]==``?,,%>0`&)L$4,
XMG`@)G`@'G`@%G`6)\`0"(+8;F);7EPZ2T`Z]22(\2*>#U@<3L`O_=`_KL!_6
XM@PZ'4(E[)P!:UG62$9!^(``4T`=FU:?197`D@H.!RJ>Q]`4!4P[=6P6!P($!
XMH)LZ@,/LT`B&8`'S8@2V8@L4$``'&BHP`@]^(9IUI0@<D#_Q4@*)8`AO;*3]
XMLPI^`0]XK,?[4`)U0`/_X,=P+*%_@04)L`1;E34(0!>0C`>V8@-4D`!LL\F(
XM(*'K<`JXL,G7@[;HH`P[5P[KD`D`K`!0`,`.\,I&``'7X\8!H#A=7"A9PP!@
XMHP<&XW6ET\=O'+53NC]>M3N/',F3[`&7S'*:S,D&L,GNJ`A#``&?3#7KL"/B
XMJ@A"``%4LPN;/`6#D\HUJ+2\P&4)@`2%,@J7O"//W,D[9P0(<,WDD`X0P#ND
XMK,7H,`.IG`X!\`^!<(@!0)!+6<,?P!W<X76F9P$]T,,1H+-I!(-32JDD45;A
XM8@8,(&Z&J(%A!]$%,*5GN8$*H)O70&KLT'5--2($T-``T`<5`-%O(]$*T*:6
XM@H9^8T7)1`%U()0&@-$8@(#L20P*`'0J[=%DJD9JT``E``"`P*(0,`/#D)Q+
XM#0B2B``#RQOK4*_`T``D4;>?/"(04`+CN0Y/4+<'V@!`$%%^(P5@70)0-[!0
XME]78T0#F9M9Y_`_%B@@<L`XS8-82V@!@H-;K4`)U:PP8<M$,8`%`?7Q"?;*6
XMF@T]H#!T4`L]4#IT(`KK(+UR$L?`4`</BK:(&P`!H-(]-]3#\'8\:``]\--]
XM<`.[8%%"7`"NH`!`4,H.@`XW4*JATDI>]]J$1FJ$3`BSO0A^,,]%,-IC5]J!
XMR';!4-BH&G=A?1@4R*>W[06=.LMBS2;4C0Z\@'JF6LFAUSADL*0TT-:K<2DX
XMM]V"X-UU2WHQ[`/C#3D^@-B24=@8DJF,;=KF/20`4`!U0"EHZROH\`?>C=CI
XM:=^+K=S#0-J-O8%<6L,"H`XBPJ!3W0`!8%A>P`#B^P?B'*CH0`!(G*<$20&Z
XM20WI,.$<H'@\C=&*C=\]1P&!:`<8@`[#6"E9(P%UL)Z,#>,+?JJI6L^@,*-&
XMP`&1[47I8`@`T`,DX0<NHZZ&->2[X`D+,`6B(.4950$\@MH`T*&2`0I23C4L
XMZFS#X`=&`)TU6#C!+>5@**$]L(-E5<YQ$A;S8-@*L`XCT(9L?C5WJN79''9P
XM;@=A0<A>ZS>N@`L6A2.<P-Y>]^)`]R0DL`N^0`)9XP!<!`'KP`"X8`Z//@!\
XMS,:5#J$'6@*\00<MH.5A-W<<T`>\XG5P[@5A<7M=]`]68"NBZ#?GL^C$P..F
XM+G=#S@<P`C*R[@!K;C:U@(`[>#U6T,6&KMW)#B=>EY)Q/@"`1>?5RNC#8"Y?
XM1P>Z@`M0A^S*;F[>SB?=+NM=O`Z=@`O'3NY\<NCJ7@Z&R.-^[G71+N@$0,\1
XMV=(:,*;,WL5X3C5^M>\\D@[/VN^GU.[I4`3_<#7G@`%01PP8L(.:@`$6%?&^
XM0*#L1@@_D`$Y(6^D$`09,`CW]@[KL`EA9^WO'N,<P*?+<I\"S@'E6NWPO:0Z
XM;NV@+J&B#CF%@^L\CAV4S)K0&>;[XP=5<.;S[A+#3@[K@`/0N0)>AP1$H7@!
XML`2YH#!1T.$RC@XDXNRRR>/K\`LJ6H,K"NB,AN>?O`ZMT.:0@PI6`SF^<+/F
XM8E%EB.T5*O!5NO6-'M0\3@<9L`D7T`89H`,8X/<[E3%S<`#18`X<'P,:L`[>
XM('0=B)G>8`X3C@$JCM@M'M2(R*?,60GZ8.-LG.,N?HA$O=FH:C:-H*R1CK`.
XM@`LKT.E^DT2<?G6[KL!>D)O8X`<V\.=C0<CU3B+(.%2Q$NJ\48;HSNRJU88"
XM<$FRKEI_4_*BW^,.$.IO/2K=^JW;$*[,Z0&C;:K1;_.CC@)\"C]V8`$"3@G!
XM`_/Q38&ACXC.CXCS.YX\_^SR[//R7OM!#P>Z/_:]G_Q5`_<1T(8#8#<[&#GS
XM*P!FY00*//]U=5?3B0B<(.5*'DWS[`4#P`>U@$E2KAUR(N`0</X,*MXRW_Y$
XMS:`!$)L=6CKK8`CF\M8AH,6X(.7:(2<"G@T*5`Z[+-Y+NE$,FMJ`N.!&@`&`
XM>-H]O7()_OSTH`&1H`&9H`&AH`'^8%4N1/B&C_CS1@%[C0U"-]*8N0_DL!W;
XM?0R:1BV4S!GX33#Y/?IV^^/+DP#8P;T-KOE\BJ%V$#`!/BM?H$#E4*WZ)-Y+
XM&@&6O]@$D]]$7?\$H."6J9N`0`[;X>%,H&G4<G6@']1Z2KCKQ`6I^@^33(84
XM(.!$Q',Q+Z],7##]9-AQ%\.&6@7;P:=C9@\*[,4Q#[(%4YL$J8A,R0#D<+8,
XMH+:4*J+J']1_%R<,L+=PSP%J2ZE")0%6@`Z],*/4HOY!_7=QP@!J2ZD8$CEO
XMUU$I$"<,H+:4:JDS[W.CSP!J2S46'E&/"GH*4*UQP@"+2S5\^C]R@2.@D`^>
XM3P!Y0.L,H+940]<1]:CF(E2TS@!J2S4-P!M?J]+(Q(1_ZMY5FP@/]:=J2ZDB
XMJOY!_7=Q@GJA-WJE!PRGEWK_L'JM]WI4^J?H8`](;'N+<.T^1Y"(RI3WL(X)
XM'3`&R@5L"M#C(*)9DR@SGZVC+P%["_=;H+:4*E118`7H$`K;OSPSGZVCCY]W
XM2PX-(!E?"WH*D+6C1P1:!0QX\*"JY]3NB`BNUWQ3C*%V$*U\,",]@@V+<.W9
XM.OKX>;=LBR%T@`/F<L]W:K(+/LN@S@6A^LL)H#!\F@#%20!5O^;HH%]9/LL%
XMDS66-0@?JK:4*MDSGZVCCY]W2PX-(!E?:R[W3`<RL+=%PGE$D&99:WH/JGI.
XM[8Z(X'K--\48:@?1J@U(;'M==\\S<I^IMP)/FS5/80&+2S5\RLER@2/.T/GE
XMD#4%,,1=USI.G#EU$#"GNK9T'5&/N@X11[]S]Q2TCI]W2PX-P!M?"Z&@IP!9
XM6[6)\%"SW`,%0P=<P04$L`2)P`5:M0UXL*(I7^_Q!'M\BJ%V$*U)@,2@?K=L
XM*Z+J']3::BY3>*<FN^!&(#G92M"Z20'A<+8&L+<@]O]WR[90=Z<;'8@V0`@-
XM@`ZRT*GBF@A::P"ALN(,0*"AKX&A0`B#(JY<J[:4.@]?^*@\3P1:&\/1-[:8
XM>0KG8Y\(0/2]"O:*4`"?'*EUL'U%N:6Z^0?G<]*Q1J`!Z0,BP``@T`=NP)D'
XM:E>LMX^ER;9OC89U+OEVH`"<30=)H$&`&FN!84>QR4$D@'IVH`"<;9<38%>L
XMMX^ER;90YY]U_@V<Z1)@;]@1-78T70>-L`XK:0!/(&ZP$`"S(`#&8`#/8P#&
XM8`!3"@SA0@8*H#"Q``KA@@8*(!FZH#!2(`I=D`"BX`0)@`@.8`8*@`@.(`8*
XM@`@>L`8)@`@>P`704PPS6@XE0!+J!PI<P+A!!@"BP`4)@`LDP`"V)`+*2`S?
XM(##9@0X`T(Y>;*A"1\.%MPC?<+8*<*!VG3_[4P<7P-EWBI3+C0!@OP[7P)D'
XM:M?Y\QR+<.U%.;:8R0/?<+9I*Z%G>.;K\*4!+L_$3:6QJ0@%\,F16@?;5Y33
XM%\8.,,:8.0#?L!UHK,:[O`BVS-E@0\>+8,<```2%?'R'+,SS8HO]<PJ#7,C'
XM=\AU(`.+_,8'N@BV(`&CS04$L`2)P`5:M0W5B@<KFO+U'D\>]0^V(`'_+*[H
XM4`G$H<J;`,!>`L`,(,NQ_`^V##HS2BVL"39\\,M-)<S(_5`M:LPP8@8S8@L2
XM,-I<0`!+D`A<H%7;@`</FO*K1\W"'D]];@?K)`0.0#7_8`L2T*SHX`+$L7=^
XMXPN+8`L2,-I$D&99:WH!HWIA[HZ(X'K_D`X8^@^V(`'_+*[HX`^=WR/8X,\`
XM30P.,-!!][T$P`@'P`@PS`A70`",\`5Z6@6]:0#Q[1<3LPA.8`"TP`,,,@<#
XM,`KC/7V]:0#Q[1<3$W:TT`,,,@<#,`KC/7V]:0#Q[1=>0`"TX`,,,@<#,`KC
XM/7V]:0#Q[1=>\%!.4#A68`"T\`,,,@<7,][8,7V]:0#Q[1=>\%!.4#A68`"T
XM``0,,@<7,][8,7V]:0#Q'7<*0`OWY`4/Y02%8P4&P"!S,`"C,-ZVMPC",'V]
XM:0#Q[1<30PM!P"!S,`"C,-[3UYL&$-]^,3%A1PO\Y`0(P"!S,`"C,-Z+$`S3
XM][TI`P!$$"+",'W;P:?_8P=CA@_<P"-CBYG3P`TTTNWH(`;>#88"$*F10S7=
XMR^W=L@3>_<4I0L.%]PG<0",*@R,NX-U@*`"1&CE4T[V,A2,7X-U?''BZN0;<
XML!W3B$G=B@[T4*K3&-+4IYM#P`TT,IXX(@VE&M+4IYLFP`W;,8V8A"$X\@JE
XM.HTA37VZZ0_2RP[3B$FM@R.'4*K3&-)"9P.Z:0W2RP[8T748^LL44-=VH`.%
XM?'S[T`*[G#46,.G)2?P*4X,ZL,MQH@,'"NW!C0:ER;880@=*8"X```,YT744
XM(*)QH@,UJ`.A_@#D&2<Z<*!VQ7K[6)ILBR%TL"Q&8`&^+<0UJ`.%#-#QL1I1
XM;006L`[1$"<Z<*`]X"=U<`,UJ`-=IQHMJ`,':E>LMX^ER;880@?+\I^^+<0U
XMJ`.%#-#QL1I1_9_K$`UQH@,'V@-LL#4)P%@UJ`.3WG4<4*`Z<*#ID`HQ[`?_
XM1`=J9P<^D'J#0"X3Q`4SR@"8ZP%<!`+KD`%QX@.I-P@$,*-?R@$^L54_F@28
XM"P)<M"=&``**)P1-"@)0Z@%2"@*_#`$=%0/F\D]TH'9VX`.I-PCD,D%<,*,,
XM@+D>P$4@L`X4$"<^D'J#0``S^J4<$/\@P$4>\'8+$'<&@`21*.]&P!7#Z1,P
XMBC6#Y0BK(PQ4&0TM&%%2(`(CPA7#Z1,PRE"JDS4@P$5[8@0@L`!&X`%UD*26
XM0U:#TO1O8PQ"(`(M4*T`+`)AKA:XL```P/1S$9M<Q`'I\`P!8"[_1`=J9P<^
XMD'J#0"X3Q`4SR@"8ZP%<!`+K0`%QX@.I-P@$,*-?R@'Q#P)<Y`%O!W5AAP03
XMY`5<X00ENPV!$`X/X!?YH`B=P`8-@`A:(`*Y@"$LRA56X`'1L`_1H`WBH`]<
XM!`+B^P#5F@A6X`%<Q!5&``(+8`0>4`>^`,`B$.9JP>T`P/1S$9M<Q`'I``0!
XM8"[_1`=J9P<^D'J#0"X3Q`4SR@"8ZP%<!`+K0`%QX@.I-P@$,*-?R@'Q#P)<
XMY`%OMP!Q9P!(,$%>P!5.4++;$`CA0#J#$`Q4.0T1I00BD`OCR:)<804>$`W[
XM$`W:(`[ZP$4@(+X?4*V)8`4>P$5<800@L`!&X`%UX`L`+`)AKA:XL```P/1S
XM$9M<Q`'I$`M.C*$YT742@`Q;'IL\N*)>(`%!'W%^X`.+4`.+8(582-.J"/;K
XM\(0^D'J#0``S^J4<P$5[#0<`+`*^.45VX`.+`%0$,*,/D#4<@`A.(`+K8`5=
XMIP'`^@1==S6V@01=IP$=%02&:`-`9P8`\`PH4`;)A@)G``#!@`)K<@HH,`<`
XM8`8H\`8`<`TG@`<`@`0G4`<`8`HFH!=88`*WNV[MU@THL/'S]@TH`/($@&]=
XM;RX<X++I(`MQ9P%G.'<*P$<JFC41%YM;9P%:KJ20\P,JJLY8&YMXH':L+N]V
XM8(5?Z@<I/^2*4`!E[PTC8@'JC+5&8`%X$`7QKL!V8(5?:@044/;I8006H,Y8
XM:P06@`<[PNKR;@=6^*5&0`%EGQZQJ<Y8&YMXH':L+N]V8(5?Z@<I/^2*4`!E
XM[PU1:P=`D`@/900Z``0]9P-`9RX8FA-=)P%?9RX20`%"@@L34+`C(@&L"032
XM*0+5";[56?OAJ@':80<^\`\TL$@+9P<^,`@$$)U>(`*+X`24GPQ%Z@1SX04<
XMD`<#`*4&8"X:(`!U8`%O[[;8;@!\<+7&`PQ`D#4:\/85RKP8$/\&8"ZC?EN+
XM[@=70P=Q^)]V98NLP:*4OPW5B@<#$`"V:"ZJ00<Q4,[KP'G_60!?%P#R;@24
XM#PQY0`#W@`V#,2(8T`-K0LE^<%M>%PC%?0X#X`>WM>CGLC4I,"(6,'<&X`=Q
XMZ'5;%W%&8`'JC+5&8`%X$#!VP`,UR`,C0@&?7,Y:9BZCOG-VP`,UR`.&W0+F
XMHN<P(@YQ1_G`D`=D$"<\L`AV#`!`8-@P$(E&P`-`8-@ND#4\,"(2H,Y8^Y]Y
XM`"./@-P8``2Z;`08D`=,:`<\4(,\8-@PL`[<H*+JC+6QB0?:S`,UR`/$G?)#
XMK@@%4/9>;P<\4(,\8-@PL`ZT,"+PXP24#PQX@`(JJLY8&YMXH,T\4(,\0-PI
XM/^2*4`!EGPUQP@,UR`.&#0/KX`SFHAITL'-VP`,UR`.&G:+_J<Y8^Y]Y`","
XM@-P*H,Y8&YMXH,T\4(,\0-PI/^2*4`!E7PUQP@,UR`.&#0/KH`PJJLY8&YMX
XMH,T\4(,\0-PI/^2*4`!EOW-VP`,UR`.&#0-QP@,UR`.&G:+_J<Y8^Y]X@`(J
XMJLY8&YMXH,T\4(,\0-PI/^2*4`!ECPUQP@,UR`.&#0/KT`QQP@.+8,<```2&
XM700L2OG;D#4\4+WH8P0\8-@M`*48L`X[9P<\4(,\8-@KX)L+$'<*@`21:*5&
XM@`&^+77[,`C"``.((`4B,"(8('7P:`08\/8)\`?98"X_70?3H*(]L``MK<T\
XM4(,\`/;3/`0B4/9]=RYDE0(C8@%S9P!^$(=>MW419P06H,Y8:P06@`<!8P<\
XM4(,\,"(4\,GEK&51:P=`D`@/900Z``0]9P/3)R(30PL*P"`$K9LO0`U)QP>#
XMX@%^T`!;-0J`T`!T(0C)-_/11]0V``@-P/-E)`@-X-X;3="Z&0_3L!TX-ZA^
XMX<71MZ6Z60W3,.$*H'@S;ZCAP@<[N.4&X`<[N.5CEZPXMQ@$,`71PV.Z3(8S
XM;ZASRJ(4PP<-0!=^,"BQ"9L*L#P9@'.+00!3@`X@P&/+$\\#9@!^,(C<0"O_
XM8(AZ*G0T7'A0,`U))PA.:#Y$,0E?G"**R)0R,`T3S@#@"@57QT5"1*A>[',$
XM^?A,R0#3,.$1-\(^L:/H8``(\`?8ROY&4+080L&#,`T`T`+=LPU1M@@+WD4^
XMH0L8@@X@@&Z`,"@,,.F8.Q<97M5R3P=B$"<*''K<I#6+$-73.:R+X`2V8@7*
XMB`H'P`<UL`/!4`>"IPUEF'KM[3=8SJ!QHL!<(`#/D0A<(`#B*(X!8(L^D@(&
XM(`B#@NOL+^]?R@$];XOK@`FY4-]LS**!,0[1``WBH`_.B@[OL/VLN3PYT#A^
XMX.:HE^&CP`<-0!=^,(@>$`I^X(02Y`%\T`!JH:([$-6V>*<^$@`&X`>#$IN`
XM.`R&B(A"IXA,^0[1,.$.`*ZES`!7QT5"1*A>[',CKIO&$`THSJ(:X!,[*I(&
XM\`<SG^M$;02\XNKA\5!.`%31$)#K$`"T&TVH%PP^H0L8@@[9,"_@*X[BN`A.
XM@"[+X-0!X`&"T``C,2@<<..82^E>L#1HJ])RG`[:,,B+P`4"(([BJ!:+X`3R
XMB0Q<9`!SD`%QP@")\%"S[-Z+8`SM?;4T/W9SYP!UD`(3U$KGD@A/%'I$L0A.
XM``$#@`R+8`42,`'3D`A-,*/'T-Y72_,,.G<&@*9@G0(&(`@CA_=$S:!S9P!U
XM4.9V\%!:92D1YP7RB0UV\*"SG`(&(`@CA_=$/<O]%`"AEWK+\R9>()_84`<K
XM^KX!$'J+L$572_-C%^83Q``]+[1<I`#ID/(^TMX?)+WPD`B\K9RAMPC7GNO3
XMMQV*8`;K),^+8`4&P""T``!CBYE)$!P)O:(MZDM=!!G5L5P%X`?8FI2AL!Q7
XM&@`>L!S95!V+X`0*D`$.T$7T],4IHHA,.0#!D=`,`*XX$@HS4@[5>H;5N*U!
XM_7="1\.%1PW/D'3)\1?+\1P^L54_F@0!X`'5$0$.T$6CL!Q?G"(/Q0Z82ZS*
XM<*?8013Z%DT"0+EWZA,[F@X"M0A.$'<S"@_4*P'7F[W_D`<)@!T^L:/K\`9"
XML;J>.`/VX+JE&[NS6[LI5`C2@`<9\`OF)H[1``W18`T[(`]R,``K(`]#\`1U
XM``\^L0C6L`XA\`N\(8[1``W18`T[$`]RL`#NMP/"(`<%L`+"L`'Q,`1/4`<T
XM[@R+``W8<0]:P]21<[W9^P_WH,.`$#FP*[NTR]B5F2(HD,,```D#,*`%RGE/
XMJW@%$+2E`P@E\`]_4`<LAP\+P`<HQ``+P`<"<*<+P`-<LPY](!2Q@'6'Y`]6
XMQ\:+@'I<,*-$\%!RL:._T#J^*[S$&PW9$`W:\`1&MH-4'<"VB+F5[*0#6J"V
XMX@RB2P=ID`<0,`C&,`!X,`&^H#`9=5MLK&7H$.0UV!8/X`L8$@!R@@X;T#SZ
XMX&I.P`#W,'9,70?'P+RW/0M*'`\S8`]!6SI`X!/WH#4`\#5Q.'8+X'4Y#IT+
XM$)N7@@[%(``]6@>KXP]DE3E.T!;O``C!``.(H`04$'[^0`%\H`Q=!P%39`0P
XM$"<NL#P+,/5QQP!(P&AXT`*Y,&B#X`\2T`>$[0S<7`$$4``\H`-\H`'&(`05
XM``/^(`2-*@04X`3X5H.`Z@008"XB2@<!$`3$;0-Q\M3;P,T4H!]#<`0[D`U]
XM$`'AYP\4P`?O``LPH!]',`0[X`4NP`?W@!WWH#5,38'WH#4`\#4!@`1Q0@.)
XM\%`,&B<RD`@$<`]:`P!`4"<^L0C!T',H0)`HL!WQ'TT,0$^3?G75VO.QF5$"
XMP`,P<*=!6SH@L`[RP`,MD.-!6SJ`@`X:(``\,!4XP`,Y\`<T$+2E`P+).:=;
XMQP#W,'::H8HUV!;;@`ZS@-QA_0#)&IN#8`50-PA6\'6#,#&V$0P\X`)U@'HD
XM$BI"4(-*'`L\4`0VP0-E4`<U@`[#$``\L`)TD``\T`(Y'K2E$ZVS$``\,!4>
XMP`,Y\`<:0`(/D)PC<MM(<.&S/.D]\`\/(`?!BP[K0`_WH#4```*>3;@RD`@/
XM]9\]AP)$S<;WH#4```%U<@_8$``,JM(+X'4+(,\+$)M@0Q)=YP`H<P]CQ]0Y
XMC@[3``#,&Z>\R:#+LP%X$`&^@"$!("<-=,MTS+QM<0WH@&TUV!;/,"(.8'I!
XMT`/_<`!_<`.Q@'7@,.DJ'>:+X`2%XZ2*8`V*$`^*T`R*L`Z*\`V*P'K$\`OC
XM";W$&PW9$`W:\`1U4`\E\`#$RL8B%SA_(-?`0!0^L:-Q0@/WH#5,S3P[2-5/
XMFPA<L#1,(`")0`'":@<RD`@/]9\]AP)`YPMI;:]>\%!.H,!64#B]&@WG$`W2
XM$`V0,`#3$`W0@)>NT0(6=01.4`?JH$^8.Q=64,F]NN"Q:3[TCP#1``V4W-'0
XM4*U%#0U7M^#8X!,Z"PD#``[14%C7'@T`H+/1,`P^\0M?MPA#L#1+,&;<,"-;
XM<+S7'@U8,P0$\`1/D`?HL.!C%^:+X`2%XZ302[S1D`W1H`U.4`?U<'5<-!=.
XM4,E.>NU^@#?QS`)=YQ$`L*=6``,WSKPN$'Q!6SH(,`SWH#4`8-4&6S##X*W!
XM@`50@`</L`+!L-/8L0/:0($O@@2#859_4"A8,`P`H`%,$`9T0`=I,`9E``)#
XM``(RX`(P``,XD`H!D`1N8`=AP`9I0`8@,`=T$`9CL`8@,`=IH`=ET``*0`))
XMX`9V$`9LD`9D``))\`)/``)R4`9DD`9R4`9C0`=I\`:<J@`DD`1N,`=U8`9F
XMD`9CD`9EX`9T``)M4`9M\`9R4+T*0`(J``GE-@54$`1#L`0@\`164`128`1,
XM\`17``(J``D#T``*0`*\$`"AD`%#(`0@``(Q(`,O(`,W\`(X,`,@``)64`9R
XM,`<@(`,N``,@8`9OL!5)(`1-T`)0,`0*8%%5,`=A<`9EH`,@``)#(`0@D`9N
XM``=U<!1FD`9L``);D`9N0`9EX`9TT`4*8%%IX`9P4`='809IP`8@``(M``(G
XM,`0G``)IX`9P4`=T``)S\`9U(`=C4`8@8`9IP`9E``)IX`8@,`9U(`=R4`9N
XM0`<@0`9I(`=E,`9T\`9RD`<6E09N0`9EX`9T``*04``M``)W@`9E(`=E``(G
XMD`9N0`9EX`9T<`(@D`9S``)A``)N4`=M(`9EL!5F(`=OT`8@$`,U\08@@`,@
XM4`9Q4`=AP`86!0*0T`!T\`8@X`9UT`9B4`9;\09F``)S``=A,`9E,`<@8`9O
XML!5E$`9C@`8@D`9N0`9EX`9T``)L4`9V4`9L8%$@``D-0`1E8`9A4`=L0`<@
XM0`,@D`9F``)N\`9T``)S4`=P``=LD`9E0`8@\`9N``)CT`9D``)LD`9N4`86
XMY01/0`5%,`4Z8%$@``D$T`(@\`1RD`9GD`9OX`9AP`8@,`=O4`=R,`9E``)I
XM,`<@D`9N``)IX`9P4`='(01!L`0*8%$N(`9AL`;K)@1!L`0`D`1N``=U0`<@
XM8`9IP`9E``)C$`9N``)N\`9T``)B4`8@$`8@X`)"$`1+``)FD`9L4`8A8%$M
XM:P1IP`9E``)N\`9T``)F\`9UX`9DH`,@4`)S8%%#(`0N0`*0,)YWT+)#\`9U
XMP`9D``)N\`9T``)C(`=E$`9T4`8@,`1"X`(D``D#P`(U@09E4!-ET`9P``)O
XM4`=T``=U0`<@8`9IP`9E8%%)X`9D4`9N0`<@\`9P0`=I\`9N``)V$`9L4`=E
XM``)O4`=T``)O8`8@(`=AX`9G4`8L``)V$`9LD`9D``)F(`=OT`8@$`,U\08@
XM@`-^D@9F``!EP`9S4`8`8`9OT+)C$`9S4`8`0`9E8`9A4`=L0`<`8%$E,`:1
XM5`)K$DE7(V[F5@)S8`8),`T%$`!C\`9NH`,4H,9#\`1.H`,4$!EP(`=NH`,4
XM$!E0(`5.H`,4$!EL,`=TH`,4$!E,,`54H`,4$!EL``=TH`,4$!E,``54H`,4
XM$!EL``=T$`.`+P$"P`100`4Q`/@2,`!A4`=XH`,4,!9!4`58H`,4,!9C\`9M
XMH`,4,!9#\`1-H`,4,!9C\`9M$`.`+P$#,`1/T`0Q`/@2,`!R0`9RH`,4,!92
XM0`12H`,4,!9P4`=NH`,4,!904`5.H`,48`$$X`9UP`8Z0`$60`!.4`5,H`,4
XM8`$$X`9UP`9L`/@20`!.4`5,P`2`_P`#@``$\`@!``*0D``H``GT`0D2@`00
XM``D/0`B0H``0``D'$`B0D)600`$0``D&(`B08``"``D4``&00``@``D*@`*0
XM0!^0(`%(``&0\`"$``D*``&0<`"!``E9"0D4``&08`""``D&(`"00`$0``D$
XM8&X%X``P$`,R,`,T4`,V<`,XD`-!(`1#0`1%8`1`8`)-3*"]@=\:C-_`P0O)
XMN@^X(!0-,`JJP0A?9P8#T%0_0`#B=@51X`*C0`(!,%.2L0+%P`C7P`C>L`-"
XMO'/$T`+E``"Q@'7HT`,,/`>8@@`3X@$KD!VZ(`$!X"$AL`P>X`L8X@`?X`C%
XML`+_P#``,`^D\`$N$``ND`(!X`(!X`(<$`!"(11"(11"(11"(11"@<8_0`".
XM4`Q9\`5>T`6=`!R\D*R<,`51(`56<`55X`$>P`C%D`N2,0X?X`L=```.\`&L
XMH`C@H`+`,`#%D+X+40R7T`J7\!@5L`J+H`]"4`?W(`[FX`O@```.\`$6<``K
XM\`^YL`0`,`^D@,:EH\&^,`TZ@,:ED[Z_<`Y#T`\6$`7+$`WG(`<'P`C`D*`(
XMD+Z'+P<'0!D)B@`:G`_1X`WY`+RL``WH,`<#H`CHP`J*@`S1D`_&"PL`,`^J
XM,`^D4`?.`,)=\`5>H`59L`7G_@,$`!R\D*R9)`'J(!F0@``:"$-"+D1/0P``
XM`P``!+X#!0``<0Q$6%.U@`D```P@(#40,40$B"EOZL@94P:$D3=RVH2A0Z>,
XMG(`#3D"14X9B'A`;T[BI*.=$`P4G3Q(I,F6(E"10J"1YXD3'R8`%J*!),P<$
XM'#EOSL@)TP8$G3!KRO0,TU,DG#IT0(0!0=#@G(0+&_H$*I0H"!!FTK#1&L8-
XM&1`W(14P`U$BG9X@TD2](Q>-430-?[Z!8S&NV3(C>[*]6";,&+MSCE9L`YB.
XMBZ\Z&Z8M`#'-&9%AV/A]&C7LV+@].;HA6N:L5+A30;@0$F3)5\]E6'PM:YH.
XM7K0*<`YV6]%T0CJ<O_+TR<9P:;]2P8IM2-?VW89S2(,8S?@T;IRV&U:^/%JS
XM4ZB/000!,>9-&XEF0;`1J1T.G31OW$AEP^;-G9[9_9)I?%WM6#ME:$;'&R"(
XM`1U?8Z01UG%,@05443$812`.7\T!AW%SA*?3<%L%-511D]%%'PCQL?&1''7(
XME^)^%Q'QQ!0@R.`"#%*E5QQ)CZ6D0!).6/'$$$'(1)--N4'RP!!";`:59R!L
XM(=)^(W6A(T[?T<$D)`<DX49P5!4$PE4*,=1A5VT\!LD`&PJVW)=H),3&66E1
XM8.!LRGUFVT0@H-%@>6W`L=Q9%@%UD8-EQ#9;3W'FM]M$)($VW1M1S2&1'%$!
XMEM`9=@WH4QICK/%5'7#T1\$<>8P4!AX@!`I1AE.J]21_D"20IG!+35='&P9>
XM9,:#($2H*86:6EA&@F9\])RH;MR:*XEF?'DA0X)!E*IA=KTZDGIE`,B&F6C>
XM%N=^9H11!QN1/BO2&8[2X(*.2!3!!!1$XD1%'GZZ@2Z2(#1GEQL$PC:==&3P
XM!$=Q>=0Z1YN4YAE@J!RU\:H<ZZ*D0!%8!-$$%$P4$:]:4J0(`K[QU=E018G)
XM=E12((`K+KGZ\?=&L^JV>F225+!$1:L%J'`F"#P,$5]%@3$+0LU34%%@&8,U
XMA*(;LHE&VEE$4[%::P5^A*0/(.@\`,XCB#0&&W7L1U5B`;_A`AHB3$9&0F)\
XM-I0;**0PV0LJX'0$8!9-U-!4;Z]=5+*X]F4@'7<4*A\,,]9X5@R)0X*`"B],
XMMH?:;+N]PV2)3<0I""G.89D;QXD4::%G]0`"#)<764!B*(X1%4=GV)$9"'OT
XM5X#H4N'!@ABZCZ$[&;I[SD+`P\_!@E([V-Y'ZCBQ7H?K(,`NNV:PSY'Z9`J"
XM@,(<I/?0`PPIT#Y9]2Z<"H+I,.`APQ`PH!Z0`G0?U!'GH2J:HNOPR0<YY@7C
XMCD+Z,H@!"TQ0O0%6+P7,4POWCF,Z\@$O@07HP_C.]R72@>`%(+!!#6HP`QNX
XM`((++)WV9%"#&-Q@!EFKX'%6T*L9X(`&.0A?"3*XP0XF;WP=40C<Y(#`R4A0
XM`2ZXT&2TQC.?C:0Q/7F9R(9F,ZF8H5'Y61K6M,8UKX%-;"(@&WS.EC;5K:T.
XM;5-:6>(VM[JIY6Z@&TI%DM,W\]@J<!<97.$`<[K$T:97C7M<Y%0WN2(EX(MA
XMC%X"$Y"Y]XR!<V[PW!E`=Q;<A9""J$L+(>G0NM>5(7:SJUU:(("[4^VN=[\+
XM7AJ&-THR&`]Y_4G`\B3I/.A);W;5NYX?L[>][GTO?'T,"`3(9S[TJ8]][L-2
XM_*8P/U`=RPSW>T_(]E<D")#*<]?ZG_H$2,!+&J^:9YA##YOYR`9:TP4/E.0/
XM`Y*`BYCND1C4(`<].,ANCK"$)TSA(UD8`Q?"4(8TY&!:#/##DP``$CP`&@`:
XM&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:`!H`````
XM````````````````````````````````````````````````````````````
XM````````````````````````````````````````````````````````````
XM````````````````````````````````````````````````````````````
XM````````````````````````````````````````````````````````````
XM````````````````````````````````````````````````````````````
X:````````````````````````````````````
X`
Xend
SHAR_EOF
echo "uudecoding file cb.arc"
uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp &&
chmod 0644 cb.arc || echo "restore of cb.arc fails"
exit 0

-- 
Matthew Lee Stier     (919) 469-8300|
Sun Microsystems ---  RTP, NC  27560|          "Wisconsin   Escapee"
uucp: {sun, rti}!sunpix!matthew     |

marcl@vax.3Com.Com (Marc Lavine) (01/26/89)

In article <366@greens.UUCP> matthew@sunpix.UUCP ( Sun NCAA) writes:
>X	Swiped from CPIG'S UNIX system and modified to
>X	run under BDS C by William C. Colley, III

Note the above comment in the code!  This is based on Unix source code
(it looks VERY similar to the version that comes with 4.3bsd) and thus
is not public domain.  To the author of the posting, I recommend
cancelling this article unless you can prove me wrong.
-- 
Marc Lavine				Internet: marcl%vax.3Com.Com@Sun.Com
Smart mailer: marcl@vax.3Com.Com	UUCP: ...{oliveb|sun}!3comvax!marcl

matthew@sunpix.UUCP ( Sun NCAA) (01/28/89)

In article <2275@3comvax.3Com.Com>, marcl@vax.3Com.Com (Marc Lavine) writes:
> In article <366@greens.UUCP> matthew@sunpix.UUCP ( Sun NCAA) writes:
> >X	Swiped from CPIG'S UNIX system and modified to
> >X	run under BDS C by William C. Colley, III
> 
> Note the above comment in the code!  This is based on Unix source code
> (it looks VERY similar to the version that comes with 4.3bsd) and thus
> is not public domain.  To the author of the posting, I recommend
> cancelling this article unless you can prove me wrong.
> -- 
> Marc Lavine				Internet: marcl%vax.3Com.Com@Sun.Com
> Smart mailer: marcl@vax.3Com.Com	UUCP: ...{oliveb|sun}!3comvax!marcl

    I received two or there comments like this since I reposted source code
for cb.c recently, and thats right 'REPOSTED'. The cb.c source code I reposted 
recently was taken from a posting to this group (comp.sys.ibm.pc) last 
September by one: Alan Strassberg         UUCP: ..!{pyramid,leadsv}!oetl!alan.

    I work for Sun Microsystems, and I have access to the source code for the
version of 'cb' for SunOS 4.0. Although the output looks near Identical, I 
couldn't find even a passing similarity between the cb.c files.

    No one has yet told me what the acronymn 'CPIG' stands for. Probably 
Mr William C. Colley, III can tell us, but I don't even know who this 
gentleman is.

    With the first modification date listed as (10-30-83), this version of
'cb' has been on the loose for quite some time. Lets see if we can compile 
a correct history of it origins before scorch the net from another wave of
flames.

[Here is a sinippit for the beginning of the 'cb' source in question]
/*
        Compiled on Manx C86 by Allen Morris 3/22/86

        Modified for DeSmet C by S. Lekach 3/20/86

        Modified for Lattice C Ver 1.01
        by: John W. Kindschi Jr. (10-30-83)

        Swiped from CPIG'S UNIX system and modified to
        run under BDS C by William C. Colley, III


        To use the program type the following command line:

                A>cb input.fil [output.fil]

        Where input.fil is the file to be pretty printed and [output.fil]
        is the destination file. If no output file is specified, then
        the output goes to the console:
*/

    If anybody can bring us upto date on the history of this version of 'cb.c'
please write to me at the below address. Thanks in Advance: 
 
-- 
Matthew Lee Stier     (919) 469-8300|
Sun Microsystems ---  RTP, NC  27560|          "Wisconsin   Escapee"
uucp: {sun, rti}!sunpix!matthew     |