jeffc@leda (Jeff Currier) (02/16/89)
I don't have a LaserWriter connected to my SE and we don't have the money for FastPath right now, but we have a LaserWriter on our Sun. What I am trying to do is: Create PostScript on my SE using command-K or command-F use NCSA Telnet to transfer the file to my sun use lpr to print the file When I do this, th efile sits in the LaserWriter for a few seconds and then nothing. I am not a PostScript expert. I know we have Transcript on the sun and I have printed many a Postascript file. If anyone know what the problem is, let me know. Thanks. ---------------------------------------------------------- Jeff Currier (602)621-4948 Computational Fluid Mechanics Lab University of Arizona Tucson, AZ 85721 Internet: currier@prandtl.nas.nasa.gov ----------------------------------------------------------
zben@umd5.umd.edu (Ben Cranston) (02/17/89)
In article <914@amethyst.ma.arizona.edu> currier@prandtl.nas.nasa.gov (Jeff Currier) writes: >Create PostScript on my SE using command-K or command-F >use NCSA Telnet to transfer the file to my sun >use lpr to print the file >When I do this, th efile sits in the LaserWriter for a few >seconds and then nothing... Yes, the command-K version of the preload doesn't do an "exitserver", and you don't want it to muck about with the setsccinteractive and the timeouts and things, because they are probably already set correctly for the way the spooling system wants them. By hacking away at a command-K file until it stopped failing I produced the prolog embedded in the following shell script. I use this with a Dec Postscript printer, and have yet to find a Mac command-F file that won't work with it. Enjoy. Some or all features may work. The University of Maryland still thinks I program dinosaurs. Please don't disabuse them of this fantasy... #! /bin/sh # print postscript file transfered from Macintosh # mppr <opts> <file> # <opts> can be -q <queuename> # this shell script prepends an edited version of the Macintosh preload and # queues the file for printing on an MDQS-connected Postscript printer. QNAME=lps40 case $1 in -q|-Q) shift ; QNAME=$1 ; shift ;; esac cat <<@eof - $1 | qpr -q $QNAME %!PS-Adobe %%Title: "(Rational) Laser Prep -- The Apple PostScript Dictionary (md)" %%Creator: Ben Cranston U of Maryland %%CreationDate: Friday, December 23, 1988 %{appledict version #68 0 % @ CopyRight Apple Computer, Inc. 1984,1985,1986,1987,1988 All Rights Reserved. %%EndComments %%BeginProcSet: "(AppleDict md)" 68 0 % % % Setup custom halftone screen % % - sc - % -- % /sc { 60 45 { %setscreen abs exch abs 2 copy add 1 gt { %ifelse 1.0 sub dup mul exch 1.0 sub dup mul add 1.0 sub }{ dup mul exch dup mul add 1.0 exch sub } ifelse } setscreen } bind def % % % if laserwriter ][ then redefine all page setups to use this halftone screen. % statusdict begin product (LaserWriter II) anchorsearch end { %ifelse pop pop /letter [/letter load /exec load /sc load /exec load] cvx def /legal [/legal load /exec load /sc load /exec load] cvx def /a4 [/a4 load /exec load /sc load /exec load] cvx def /b5 [/b5 load /exec load /sc load /exec load] cvx def /lettersmall [/lettersmall load /exec load /sc load /exec load] cvx def /a4small [/a4small load /exec load /sc load /exec load] cvx def /note [/note load /exec load /sc load /exec load] cvx def }{ pop } ifelse % % % if engine has packing, set packed mode, leave original packing mode on stack. % systemdict /currentpacking known {currentpacking true setpacking} if % % % Test what kind of LaserWriter (if any) this is. % % - LW prodcode % -- % % product returns % % (other) 0 % LaserWriter 1 % LaserWriter IINTX 2 % % I wonder why this does a save/restore? % /LW { save statusdict /product get (LaserWriter) anchorsearch exch pop { %ifelse length 0 eq {1} {2} ifelse }{ 0 } ifelse exch restore } bind def % % % Product is a LaserWriter Plus or later (LW returns exactly 2) % % - LW+ bool % --- % /LW+ { LW 2 eq } bind def % % % Test if "statusdict" dictionary is present and later than original LaserWriter. % % - ok bool % -- % /ok { systemdict /statusdict known dup { %ifelse LW 0 gt and } if } bind def % % % dictionary "md" to hold local variables % /md 250 dict def md begin % % % Local variables for the PostScript preload % /av 0 def % /T true def % /F false def % /mtx matrix def % /s75 75 string def % /s8 8 string def % /s1 ( ) def % /pxs 1 def % /pys 1 def % % % Set "pa" name to arctangent of transformed unit vector. % 1 0 mtx defaultmatrix dtransform exch atan /pa exch def % /nlw .24 def % /ppr [-32 -29.52 762 582.48] def % % % Pages in document? % /pgs 1 def % /por true def % /xb 500 array def % /so true def % /tso true def % /fillflag false def % /pnm 1 def % /fmv true def % /sfl false def % % % manual feed active flag (set by fm procedure) % /ma 0 def % /invertflag false def % /dbinvertflag false def % % % flags for reversals in x and y directions, and flag no flipping is active. % /xflip false def /yflip false def /noflips true def % /scaleby96 false def % /fNote true def % /fBitStretch true def % % % fg - Flag vector of some sort % 5 - save sfl state in "bn/bu" % 6 - flag used by "vrb", below % /fg (Rvd\001\001\000\000\177) def % % Bind procedure body and define by name % % name proc bdf - % --- % /bdf { bind def } bind def % % Exchange and define by name % % value name xdf - % --- % /xdf { exch def } bdf % % % Translate (note negative and reversed arguments) % % nty ntx xl - % -- % /xl { neg exch neg translate } bdf % % % Test for pen size not zero (fat pen?) % % - fp bool % -- % /fp { pnsh 0 ne pnsv 0 ne and } bdf % % % No operation % % - nop - % --- % /nop { } bdf % % Non-empty no-operation? % % - lnop - % ---- % /lnop [ /nop load ] cvx bdf % % % Setup graphics verb array. One of these routines is selected for execution % by the "doop" word, below. % /vrb [ % 0 stroke { fp { %if fg 6 get 0 ne { %ifelse gsave stroke grestore }{ gsave 1 setlinewidth pnsh pnsv scale stroke grestore } ifelse } if newpath } bind % 1 fill /eofill load % 2 fill dup % 3 newpath (no-operation) /newpath load % 4 fill 2 index % 5 fill dup % 6 set clipping path {clip newpath} bind % 7 no-op {} bind % 8 no-op dup % 9,10 no-op 2 copy ] def % % % Save procedure (spot function), angle (rotation), and frequency % of current halftone screen % currentscreen /spf xdf /rot xdf /freq xdf % % Perform graphics operation from "vrb" array on current path % % index doop - % ---- % /doop { vrb exch get exec } bdf % % % psu - page setup % % smooth por [ppr] f100 pxs pys pages invert xflip yflip scale96 fbstretch fNote tso psu - % --- % % set global flags for various page setup options. % /psu { /tso xdf /fNote xdf /fBitStretch xdf /scaleby96 xdf /yflip xdf /xflip xdf /invertflag xdf % /dbinvertflag invertflag statusdict begin version cvr 47.0 ge product (LaserWriter) eq not and end invertflag and {not} if def % xflip yflip or {/noflips false def} if /pgs xdf % 2 index .72 mul exch div /pys xdf div .72 mul /pxs xdf ppr astore pop /por xdf sn and /so xdf } bdf % % % tab - % /tab { statusdict /11x17 known { %ifelse statusdict begin /11x17 load end }{ statusdict /setpage known { %ifelse statusdict begin 792 1224 1 setpage end }{ statusdict /setpageparams known { %if statusdict begin 792 1224 0 1 setpageparams end } if } ifelse } ifelse } bdf % % % txpose - % /txpose { fNote {smalls} {bigs} ifelse pgs get exec pxs pys scale ppr aload pop por { %ifelse noflips { %if pop exch neg exch translate pop 1 -1 scale } if xflip yflip and { %if pop exch neg exch translate 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate } if xflip yflip not and { %if pop exch neg exch translate pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 translate } if yflip xflip not and { %if ppr 1 get neg ppr 0 get neg translate } if }{ noflips { %if translate pop pop 270 rotate 1 -1 scale } if xflip yflip and { %if translate pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate } if xflip yflip not and { %if translate pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 translate } if yflip xflip not and { %if translate pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 exch translate } if } ifelse % % !!!!!!!!!!!!!!!! % statusdict begin waittimeout 300 lt { /waittimeout 300 def } if end % scaleby96 { %if ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy translate .96 dup scale neg exch neg exch translate } if } bdf % % % fr - % /fr { 4 copy ppr aload pop 3 -1 roll add 3 1 roll exch add 6 2 roll 3 -1 roll sub 3 1 roll exch sub 3 -1 roll exch div 3 1 roll div exch scale pop pop xl } bdf % % % If bool true, scale, else replace by zero % % real bool obl real % --- % /obl { { 0.212557 mul } { pop 0 } ifelse } bdf % % % Set Font Dimensions depending on ps (fz) and fg[int] and set as current font % % int bool font sfd - % --- % /sfd { ps fg 5 -1 roll get mul 100 div 0 ps 5 -1 roll obl ps neg 0 0 6a astore makefont setfont } bdf % % % Set font by name % % int bool name fnt - % --- /fnt { findfont sfd } bdf % % % Extract bit from style mask and set into element of "sa" % % style index mask bt style % -- % /bt { sa 3 1 roll 3 index and put } bdf % % % Style Array, 0-7 are bits, 8 is style code, 9 used by setTxMode below. % /sa (\000\000\000\000\000\000\000\000\000\000) def % % % Set Font Style, unpack into bits and save original value too % % style fs - % -- % /fs { 0 1 bt 1 2 bt 2 4 bt 3 8 bt 4 16 bt 5 32 bt 6 64 bt 7 128 bt sa exch 8 exch put } bdf % % % Scratch matrices? % /mx1 matrix def /mx2 matrix def /mx3 matrix def % % % Used in pairs with "bn", below % Note op (open page) does "pm save def" % % - bu - % -- % /bu { currentpoint currentgray currentlinewidth currentlinecap currentlinejoin currentdash exch aload length fg 5 sfl {1} {0} ifelse put pnsv pnsh 2t aload pop 3a aload pop mx2 aload pop mx1 aload pop mtx currentmatrix aload pop mx3 aload pop ps pm restore /ps xdf mx3 astore pop } bdf % % % Used in pairs with "bu", above % % - bn - % -- % /bn { /pm save def mx3 setmatrix newpath 0 0 moveto ct dup 39 get 0 exch getinterval cvx exec mtx astore setmatrix mx1 astore pop mx2 astore pop 3a astore pop 2t astore pop /pnsh xdf /pnsv xdf gw /sfl fg 5 get 0 ne def array astore exch setdash setlinejoin setlinecap setlinewidth setgray moveto } bdf % % % Write home if you get work % Why does this do a save/restore? % % - fc - % /fc { save vmstatus exch sub 50000 lt { (%%[|0|]%%) = print flush } if pop restore } bdf % % % tc - % /tc { 32768 div add 3 1 roll 32768 div add 2t astore pop } bdf % % % ? % /3a [0 0 0] def /2t 2 array def % % % tp - % /tp { 3a astore pop } bdf % % % tt - % /tt { mx2 currentmatrix pop currentpoint 2 copy 2t aload pop qa 2 copy translate 3a aload pop exch dup 0 eq { %ifelse pop }{ 1 eq {-1 1} {1 -1} ifelse scale } ifelse rotate pop neg exch neg exch translate moveto } bdf % % % te - % /te { mx2 setmatrix } bdf % % % th - % /th { 3 -1 roll div 3 1 roll exch div 2 copy mx1 scale pop scale /sfl true def } bdf % % % tu - % /tu { 1 1 mx1 itransform scale /sfl false def } bdf % % % ts - % /ts { 1 1 mx1 transform scale /sfl true def } bdf % % % Set font size for succeding text into global "ps" % % size fz - % -- % /fz { /ps xdf } bdf % % % Unless zero, divide by % % real real dv real % -- % /dv { dup 0 ne { div } { pop } ifelse } bdf % % % pop away four stack members % % x1 x2 x3 x4 pop4 - % ---- % /pop4 { pop pop pop pop } bdf % % % If "sfl" flag set, do coordinate transform % % xx yy it xx yy % -- % /it { sfl { % if mx1 itransform } if } bdf % % % Generalized Move % % yy xx gm - % -- % /gm { exch it moveto } bdf % % % Relative Move % % xx yy rm - % -- % /rm { it rmoveto } bdf % % % lm - % /lm { currentpoint sfl { %if mx1 transform } if exch pop sub 0 exch it rmoveto } bdf % % % Test if manualfeed known % % - fm bool % -- % /fm { statusdict /manualfeed known } bdf % % % Set manualfeed variable % % bool se - % -- % /se { statusdict exch /manualfeed exch put } bdf % % % Set manual feed for this document % % int mf - % -- % % 0 mf - no manual feed % 1 mf - manual feed requested % % sets global flag "ma" if manual feed requested % st (below) may be doing some timing tests % /mf { dup /ma exch def 0 gt { %if fm se /t1 5 st ok ma 1 gt and { %if /t2 0 st /t3 0 st % !!!!!!!!!!!!!!!!! statusdict /manualfeedtimeout 3600 put % } if }if } bdf % % % Set job name (for inclusion in status response). % put string into "jobname" string in "statusdict" (if it exists). % % string jn % -- % /jn { /statusdict where exch pop { %if statusdict exch /jobname exch put } if } bdf % % % Set pen size % put pen size, scaled by pnm, into global variables % set postscript drawing line width to (unscaled) horizontal pen size % % psvert pshorz pen % --- % /pen { pnm mul /pnsh xdf pnm mul /pnsv xdf pnsh setlinewidth } bdf % % % Minimum of two stacktop values % % num num min num % --- % /min { 2 copy gt { %if exch } if pop } bdf % % % Maximum of two stacktop values % % num num max num % --- % /max { 2 copy lt { %if exch } if pop } bdf % % % dh - % /dh { fg 6 1 put array astore dup { %forall 1 pxs div mul exch } forall astore exch pop exch pop exch setdash } bdf % % % ih - % /ih [ currentdash ] def % % % rh - % /rh { fg 6 0 put ih aload pop setdash } bdf % % % dl - % /dl { gsave nlw pys div setlinewidth 0 setgray } bdf % % % dlin - % (does this do restore for save in dl, above?) % /dlin { exch currentpoint currentlinewidth 2 div dup translate newpath moveto lineto currentpoint stroke grestore moveto } bdf % % % Draw line from current point to xx,yy % % yy xx lin - % --- % /lin { fg 6 get 0 ne { %ifelse exch lineto currentpoint 0 doop moveto }{ exch currentpoint /pnlv xdf /pnlh xdf gsave newpath /@1 xdf /@2 xdf fp { %if pnlh @2 lt { %ifelse pnlv @1 ge { %ifelse pnlh pnlv moveto @2 @1 lineto pnsh 0 rlineto 0 pnsv rlineto pnlh pnsh add pnlv pnsv add lineto pnsh neg 0 rlineto }{ pnlh pnlv moveto pnsh 0 rlineto @2 pnsh add @1 lineto 0 pnsv rlineto pnsh neg 0 rlineto pnlh pnlv pnsv add lineto } ifelse }{ pnlv @1 gt { %ifelse @2 @1 moveto pnsh 0 rlineto pnlh pnsh add pnlv lineto 0 pnsv rlineto pnsh neg 0 rlineto @2 @1 pnsv add lineto }{ pnlh pnlv moveto pnsh 0 rlineto 0 pnsv rlineto @2 pnsh add @1 pnsv add lineto pnsh neg 0 rlineto 0 pnsv neg rlineto } ifelse } ifelse closepath fill } if @2 @1 grestore moveto } ifelse } bdf % % % gw - % /gw { /pnm fg 3 get fg 4 get div def } bdf % % % lw - % /lw { fg exch 4 exch put fg exch 3 exch put gw pnsv pnsh pen } bdf % % % barc - % /barc { /@1 xdf /@2 xdf /@3 xdf /@4 xdf /@5 xdf /@6 xdf /@7 xdf /@8 xdf gsave @5 @7 add 2 div @6 @8 add 2 div translate newpath 0 0 moveto @5 @7 sub @6 @8 sub mtx currentmatrix pop scale @1 {newpath} if 0 0 0.5 @4 @3 arc @4 @3 sub abs 360 ge {closepath} if mtx setmatrix @2 doop grestore } bdf % % % ar - % /ar { dup 0 eq barc } bdf % % % ov - % /ov { 0 exch 360 exch true barc } bdf % % % Make rectangular path, then apply graphic verb to it % % top left bottom right verb rc - % -- % /rc { /@t xdf currentpoint 6 2 roll newpath 4 copy 4 2 roll exch moveto 6 -1 roll lineto lineto lineto closepath @t doop moveto } bdf % % % mup - % /mup { dup pnsh 2 div le exch pnsv 2 div le or } bdf % % % rr % /rr { /@1 xdf 2. div /@2 xdf 2. div /@3 xdf /@4 xdf /@5 xdf /@6 xdf /@7 xdf @7 @5 eq @6 @4 eq @2 mup or or { %ifelse @7 @6 @5 @4 @1 rc }{ @4 @6 sub 2. div dup @2 lt {/@2 xdf} {pop} ifelse @5 @7 sub 2. div dup @2 lt {/@2 xdf} {pop} ifelse @1 0 eq { %if /@2 @2 pnsh 2 div 2 copy gt {sub def} {0 pop4} ifelse } if currentpoint newpath @4 @6 add 2. div @7 moveto @4 @7 @4 @5 @2 arcto pop4 @4 @5 @6 @5 @2 arcto pop4 @6 @5 @6 @7 @2 arcto pop4 @6 @7 @4 @7 @2 arcto pop4 closepath @1 doop moveto } ifelse } bdf % % % pr - % /pr { gsave newpath /pl { %def exch moveto /pl { exch lineto } def } def } bdf % % % pl - % /pl { exch lineto } bdf % % % ep - % /ep { dup 0 eq { %ifelse {moveto} {exch lin} {} {(%%[|1|]%%)= flush} pathforall pop grestore }{ doop grestore } ifelse currentpoint newpath moveto } bdf % % % Set gray level density based on 0-64 range % 0 is black, 64 is white % % level gr - % -- % /gr { 64. div setgray } bdf % % % pat - % /pat { s8 copy pop 9.375 pa por not {90 add} if {1 add 4 mul cvi s8 exch get exch 1 add 4 mul cvi 7 sub bitshift 1 and} setscreen gr } bdf % % % sg - % /sg { freq rot /spf load setscreen gr } bdf % % % Round to Device Coordinates % % xx yy dc xx yy % -- % /dc { transform round .5 sub exch round .5 sub exch itransform } bdf % % % Test if "smooth4" procedure known % % - sn bool % /sn { userdict /smooth4 known } bdf % % % Multiply by 8 (by shifting) % % int x8 int % -- % /x8 { 3 bitshift } bdf % % % Multiply by 4 (by shifting) % % int x4 int % -- % /x4 { 2 bitshift } bdf % % % Divide by 4 (by shifting) % % int d4 int % -- % /d4 { -2 bitshift } bdf % % % Divide by 8 (by shifting) % % int d8 int % -- % /d8 { -3 bitshift } bdf % % % Convert to bytes of 16 bit words? % 2 * ( x+15 div 16 ) % % int rb int % -- % /rb { 15 add -4 bitshift 1 bitshift } bdf % % % db - (bitmap?) % /db { /@7 save def /@1 xdf /@2 xdf /@3 xdf /@4 xdf /@5 xdf /@6 @5 @3 4 add mul def dc translate scale /xdbit 1 1 idtransform abs /ydbit exch def abs def { 0 0 1 ydbit add 1 10 rc clip } if @1 0 eq @1 4 eq or { 1 setgray ydbit 0 1 ydbit add 1 2 rc } if @1 3 eq @1 7 eq or {1} {0} ifelse setgray /@9 @1 0 eq @1 1 eq @1 3 eq or or dbinvertflag xor def /@13 @6 def @2 fBitStretch or { %if /@10 @4 x4 def /@11 @3 x4 def /@12 @10 rb def /@13 @12 @11 mul def /@15 1 1 dtransform abs /calcY 1 index def round cvi /@14 exch def abs /calcX 1 index def round cvi scaleby96 not {1 add} if def /@16 @15 rb def /@17 @16 @14 mul def } if sn @13 60000 lt and @2 fBitStretch or and { %ifelse mtx currentmatrix dup 1 get exch 2 get 0. eq exch 0. eq and @17 60000 lt and fBitStretch and { %ifelse @16 3 bitshift @14 @9 [calcX 0 0 calcY 0 0] { %imagemask @17 string @13 string currentfile @6 string readhexstring pop 1 index @4 @3 @5 @12 @2 smooth4 @10 @11 @12 dup string 5 index @15 @14 @16 dup string stretch } imagemask }{ @12 x8 @11 @9 [@10 0 0 @11 0 0] { %imagemask @13 string currentfile @6 string readhexstring pop 1 index @4 @3 @5 @12 @2 smooth4 } imagemask } ifelse }{ @5 3 bitshift @3 4 add @9 [@4 0 0 @3 0 2] { %imagemask currentfile @6 string readhexstring pop } imagemask } ifelse @7 restore } bdf % % % multibit - % /multibit { /mbdeep exch def /mbY exch def /mbX exch def save mbX mbY mbdeep [ mbX 0 0 mbY 0 0 ] { currentfile picstr readhexstring pop } image restore } bdf % % % wd % /wd 16 dict def % % % mfont % /mfont 14 dict def % % % mdf % /mdf { mfont wcheck not { %if /mfont 14 dict def } if % mfont begin xdf end } bdf % % % Copy all members of a font directory EXCEPT the FID entry % % font cf - % /cf { { %forall 1 index /FID ne { def }{ pop pop } ifelse } forall } bdf % % % If font unknown, set it up % % proc mark bool string string int rf - % -- % /rf { /@1 exch def /@2 exch def FontDirectory @2 known { %ifelse cleartomark pop }{ findfont dup begin dup length @1 add dict begin cf { %ifelse /Encoding macvec def }{ Encoding dup length array copy /Encoding exch def counttomark 2 idiv { %repeat Encoding 3 1 roll put } repeat } ifelse pop exec currentdict end end @2 exch definefont pop } ifelse } bdf % % % bmbc - % /bmbc { exch begin wd begin /cr xdf save CharTable cr 6 mul 6 getinterval {} forall /bitheight xdf /bitwidth xdf .96 div /width xdf Gkernmax add /XOffset xdf Gdescent add /YOffset xdf /rowbytes xdf rowbytes 255 eq { %ifelse 0 0 0 0 0 0 setcachedevice }{ Gnormsize dup scale width 0 XOffset YOffset bitwidth XOffset add bitheight YOffset add setcachedevice rowbytes 0 ne { %if XOffset YOffset translate newpath 0 0 moveto bitwidth bitheight scale sn { %ifelse /xSmt bitwidth x4 def /ySmt bitheight x4 def /rSmt xSmt rb def rSmt x8 ySmt true [xSmt 0 0 ySmt neg 0 ySmt] { %imagemask rSmt ySmt mul string CharData cr get 1 index bitwidth bitheight rowbytes rSmt tso smooth4 } }{ rowbytes 3 bitshift bitheight 4 add true [bitwidth 0 0 bitheight neg 0 bitheight 2 add] { %imagemask CharData cr get } } ifelse imagemask } if } ifelse restore end end } bdf % % % bb - % /bb { .96 exch div /Gnormsize mdf 2 index /Gkernmax mdf 1 index /Gdescent mdf 3 index div 4 1 roll 2 index div 1. 5 2 roll exch div 4 1 roll 4 array astore /FontBBox mdf } bdf % % % cdf - % /cdf { mfont /CharData get 3 1 roll put } bdf % % % bf - % /bf { mfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /Encoding macvec def /BuildChar /bmbc load def end mfont definefont pop } bdf % % % wi - % /wi LW 1 eq { %ifelse { %def gsave 0 0 0 0 0 0 0 0 moveto lineto lineto lineto closepath clip stringwidth grestore } bind }{ /stringwidth load } ifelse def % % % aps - % /aps { 0 get 124 eq } bdf % % % xc - % /xc { s75 cvs dup } bdf % % xp - % /xp { put cvn } bdf % % % scs - % /scs { xc 3 67 put dup 0 95 xp } bdf % % % sos - % /sos { xc 3 79 xp } bdf % % % sbs - % /sbs { xc 1 66 xp } bdf % % % sis - % /sis { xc 2 73 xp } bdf % % % sob - % /sob { xc 2 79 xp } bdf % % % sss - % /sss { xc 4 83 xp } bdf % % % dd - % /dd { exch 1 index add 3 1 roll add exch } bdf % % % smc - % /smc { moveto dup show } bdf % % % kwn - % /kwn { FontDirectory 1 index known { findfont exch pop } } bdf % % % gl % /gl { 1 currentgray sub setgray } bdf % % % mm - % /mm { /mfont 10 dict def mfont begin /FontMatrix [1 0 0 1 0 0] def /FontType 3 def /Encoding macvec def /df 4 index findfont def /FontBBox [0 0 1 1] def /xda xdf /mbc xdf /BuildChar { wd begin /cr xdf /fd xdf /cs s1 dup 0 cr put def fd /mbc get exec end } def exec end mfont definefont } bdf % % % ac - % /ac { dup scs kwn { %ifelse? exch findfont dup length 1 add dict begin { %forall 1 index /FID ne 2 index /UniqueID ne and { %ifelse def }{ pop pop } ifelse } forall fmv { %if /Encoding macvec def } if /StrokeWidth nlw 1000 mul pys div ps div dup 12 lt { pop 12 } if def /PaintType 2 def currentdict end definefont } ifelse } bdf % % % mb - % /mb { dup sbs kwn { exch { pop } { bbc } {} mm } ifelse sfd } bdf % % % mo - % /mo { dup sos kwn { exch { pop } { boc } {} mm } ifelse sfd } bdf % % % ms - % /ms { dup sss kwn { exch { pop } { bsc } {} mm } ifelse sfd } bdf % % % ou - % /ou { dup sos kwn { exch dup ac pop { scs findfont /df2 xdf } { aoc } {} mm } ifelse sfd } bdf % % % su % /su { dup sss kwn { exch dup ac pop { scs findfont /df2 xdf } { asc } {} mm } ifelse sfd } bdf % % % ao - % /ao { /fmv true def ou } bdf % % % as - % /as { /fmv true def su } bdf % % % vo - % /vo { /fmv false def ou } bdf % % % vs - % /vs { /fmv false def su } bdf % % % bbc - % /bbc { /da .03 def fd /df get setfont gsave cs wi 1 index 0 ne { exch da add exch } if grestore setcharwidth cs 0 0 smc da 0 smc da da smc 0 da moveto show } bdf % % % boc - % /boc { /da 1 ps div def fd /df get setfont gsave cs wi 1 index 0 ne { exch da add exch } if grestore setcharwidth cs 0 0 smc da 0 smc da da smc 0 da smc gl da 2. div dup moveto show } bdf % % % bsc - % /bsc { /da 1 ps div def /ds .05 def /da2 da 2. div def fd /df get setfont gsave cs wi 1 index 0 ne { exch ds add da2 add exch } if grestore setcharwidth cs ds da2 add .01 add 0 smc 0 ds da2 sub translate 0 0 smc da 0 smc da da smc 0 da smc gl da 2. div dup moveto show } bdf % % % aoc - % /aoc { fd /df get setfont gsave cs wi grestore setcharwidth gl cs 0 0 smc fd/df2 get setfont gl 0 0 moveto show } bdf % % % asc - % /asc { /da .05 def fd /df get setfont gsave cs wi 1 index 0 ne { exch da add exch } if grestore setcharwidth cs da .01 add 0 smc 0 da translate gl 0 0 smc gl fd /df2 get setfont 0 0 moveto show } bdf % % % st - % /st { 1000 mul usertime add dup 2147483647 gt { 2147483647 sub } if def } bdf % % % Time Has Expired? % % - the bool % --- % /the { usertime sub dup 0 lt exch -2147483648 gt and } bdf % % % arrays? % /6a 6 array def /2a 2 array def /3q 3 array def % % % qs - % /qs { 3 -1 roll sub exch 3 -1 roll sub exch } bdf % % % qa - % /qa { 3 -1 roll add exch 3 -1 roll add exch } bdf % % % qm - % /qm { 3 -1 roll 1 index mul 3 1 roll mul } bdf % % % qn % /qn { 6a exch get mul } bdf % % % constants? % /qA .166667 def /qB .833333 def /qC .5 def % % % qx - % /qx { 6a astore pop qA 0 qn qB 2 qn add qA 1 qn qB 3 qn add qB 2 qn qA 4 qn add qB 3 qn qA 5 qn add qC 2 qn qC 4 qn add qC 3 qn qC 5 qn add } bdf % % % qp - % /qp { 6 copy 12 -2 roll pop pop } bdf % % % qc - % /qc { exch qp qx curveto } bdf % % % qi - % /qi { { %ifelse exch 4 copy 2a astore aload pop qa .5 qm newpath moveto }{ exch 2 copy 6 -2 roll 2 qm qs 4 2 roll } ifelse } bdf % % % qq - % /qq { { %ifelse qc 2a aload pop qx curveto }{ exch 4 copy qs qa qx curveto } ifelse } bdf % % % pt - % /pt { currentpoint newpath moveto } bdf % % % qf - % /qf { /fillflag true def } bdf % % % ec - % /ec { 1 and 0 ne { %if 0 doop } if grestore currentpoint newpath moveto /fillflag false def } bdf % % % eu - % /eu { currentpoint fp { %ifelse 0 ep }{ grestore newpath } ifelse moveto /fillflag false def } bdf % % % bp - % /bp { currentpoint newpath 2 copy moveto } bdf % % % ef - % /ef { gsave fillflag { %if gsave eofill grestore } if } bdf % % % sm - % /sm { 0 exch { % forall @1 eq { %if 1 add } if } forall } bdf % % % lshow - % /lshow { 4 1 roll exch /@1 exch def { %ifelse 1 index wi pop sub 1 index sm dv 0 @1 4 -1 roll widthshow }{ 1 index wi pop sub 1 index dup sm 10 mul exch length 1 sub add dv dup 10. mul 0 @1 4 -1 roll 0 6 -1 roll awidthshow } ifelse } bdf % % % Set Text Mode? % Stash arg into sa[9], if 3 then white else black % % int setTxMode - % /setTxMode { sa 9 2 index put 3 eq { %ifelse 1 }{ 0 } ifelse setgray } bdf % % % SwToSym - % /SwToSym { {} mark false /Symbol /|______Symbol 0 rf 0 sa 6 get 0 ne { %ifelse pop 1 }{ sa 7 get 0 eq { pop 2 } if } ifelse sa 1 get 0 ne /|______Symbol sa 4 get 0 ne { %ifelse vs }{ sa 3 get 0 ne { vo } { fnt } ifelse } ifelse } bdf % % % mc - % /mc { 0 3 1 roll transform neg exch pop } bdf % % % Something about underlining??? % % - ul - % /ul { dup 0 ne sa 2 get 0 ne and { %ifelse gsave 0 0 /UnderlinePosition kif { mc } { ps -10 div } ifelse /UnderlineThickness kif { mc } { ps 15 div } ifelse abs setlinewidth neg rmoveto sa 4 get 0 ne{ %if gsave currentlinewidth 2. div dup rmoveto currentpoint newpath moveto 2 copy rlineto stroke grestore } if sa 3 get sa 4 get or 0 ne { %ifelse gsave gl 2 copy rlineto stroke grestore rlineto strokepath nlw pys div setlinewidth }{ rlineto } ifelse stroke grestore }{ pop } ifelse } bdf % % % sgt - % /sgt { 2 copy known { %ifelse get true }{ pop pop false } ifelse } bdf % % % kif - % /kif { currentfont dup /FontMatrix get exch /FontInfo sgt { %ifelse true }{ currentfont /df sgt { %ifelse dup /FontInfo sgt { %ifelse 3 1 roll/FontMatrix get mtx concatmatrix exch true }{ pop pop pop false } ifelse }{ pop pop false } ifelse } ifelse % { %ifelse 3 -1 roll sgt { %ifelse exch true }{ pop false } ifelse }{ false } ifelse } bdf % % % blank - % /blank /Times-Roman findfont /CharStrings get /space get def % % % setup Macintosh characterset encoding. % /macvec 256 array def % /NUL /SOH /STX /ETX /EOT /ENQ /ACK /BEL /BS /HT /LF /VT /FF /CR /SO /SI /DLE /DC1 /DC2 /DC3 /DC4 /NAK /SYN /ETB /CAN /EM /SUB /ESC /FS /GS /RS /US macvec 0 32 getinterval astore pop macvec 32 /Times-Roman findfont /Encoding get 32 96 getinterval putinterval macvec dup 39 /quotesingle put 96 /grave put /Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis /dagger /degree /cent /sterling /section /bullet /paragraph /germandbls /registered /copyright /trademark /acute /dieresis /notequal /AE /Oslash /infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation /product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash /questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft /guillemotright /ellipsis /blank /Agrave /Atilde /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge /ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron macvec 128 128 getinterval astore pop % {} mark true /Courier /|______Courier 0 rf { %def /Metrics 21 dict begin /zero 600 def /one 600 def /two 600 def /three 600 def /four 600 def /five 600 def /six 600 def /seven 600 def /eight 600 def /nine 600 def /comma 600 def /period 600 def /dollar 600 def /numbersign 600 def /percent 600 def /plus 600 def /hyphen 600 def /E 600 def /parenleft 600 def /parenright 600 def /space 600 def currentdict end def currentdict /UniqueID known { /UniqueID 16#800000 def } if /FontBBox FontBBox 4 array astore def } mark true /Helvetica /|______Seattle 1 rf /oldsettransfer /settransfer load def % % % concatprocs - concatenate two PostScript procedures. % /concatprocs { /proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx } def % % % settransfer % /settransfer { currenttransfer concatprocs oldsettransfer } def % % % PaintBlack - % /PaintBlack { {1 exch sub} settransfer gsave newpath clippath 1 setgray fill grestore } def % % % od - Open Document (no arguments) % /od { (Rvd\001\001\000\000\177) fg copy pop txpose 1 0 mtx defaultmatrix dtransform exch atan /pa exch def newpath clippath mark { transform { itransform moveto } } { transform { itransform lineto } } { %pathforall 6 -2 roll transform 6 -2 roll transform 6 -2 roll transform { itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto } } { { closepath } } pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F /|______Courier fnt invertflag { PaintBlack } if } bdf % % % cd - Close Document (no arguments) % /cd {} bdf % % % op - Open Page (no arguments) % /op { /sfl false def /pm save def } bdf % % % cp - Close Page % % bool bool - cp % /cp { not { userdict /#copies 0 put } if ma 0 gt { %if { %loop t1 the { exit } if } loop } if { copypage }{ showpage } ifelse pm restore } bdf % % % px - % /px { 0 3 1 roll tp tt } bdf % % % psb - % /psb { /us save def } bdf % % % pse - % /pse { us restore } bdf % % % ct % /ct 40 string def % % % nc - something to do with path % /nc { currentpoint initclip newpath gc { %forall dup type dup /arraytype eq exch/packedarraytype eq or { %if exec } if } forall clip newpath moveto } def % % % kp - something to do with path... % /kp { ct 0 2 index length 2 index 39 2 index put getinterval copy cvx exec mx3 currentmatrix pop } bdf % % % av % /av 68 def % % End for "md begin" above % end % % % If not already known, define a4small procedure. % LW 1 eq userdict /a4small known not and { %if /a4small [ [300 72 div 0 0 -300 72 div -120 3381] 280 3255 { %framedevice statusdict /jobstate (printing) put 0 setblink margins exch 196 add exch 304 add 8 div round cvi frametoroket statusdict /jobstate (busy) put 1 setblink } /framedevice load 60 45 { %def dup mul exch dup mul add 1.0 exch sub } /setscreen load {} /settransfer load /initgraphics load /erasepage load ] cvx statusdict begin bind end readonly def } if % % % % md begin % /bigs [ lnop userdict /letter known { /letter load } { lnop } ifelse userdict /legal known { /legal load } { lnop } ifelse userdict /a4 known { /a4 load } { lnop } ifelse userdict /b5 known { /b5 load } { lnop } ifelse lnop lnop lnop /tab load ] def % /smalls [ lnop userdict /lettersmall known { %ifelse /lettersmall load }{ userdict /note known {/note load} {lnop} ifelse } ifelse userdict /legal known { /legal load } { lnop } ifelse userdict /a4small known { /a4small load } { lnop } ifelse userdict /b5 known { %ifelse /b5 load }{ userdict /note known { /note load } { lnop } ifelse } ifelse lnop lnop lnop /tab load ] def % % end for md begin % end % % % restore packing saved on stack above. % systemdict /currentpacking known { setpacking } if % % % % not sure i want to fool around with this... % currentfile ok userdict/stretch known not and{eexec}{2431{currentfile read pop pop}repeat}ifelse 373A767D4B7FD94FE5903B7014B1B8D3BED02632C855D56F458B118ACF3AF73FC4EF5E81F5749042B5F9CF1016D093B75F250B7D8280B2EACE05A37037F7BDF6E12226D7D4E2DF2C52FAFD5FD40FE72A0D3AC4BD485D8369D4C87636E920D1DAF222D92155A9CB1667E715F0B82799B37CC8F5B32B74B39CF494536DC39C7EF04A7BCB29E2CEC79073CADCCFB23B4AA1363F876F5121B618071B7B4EB1E5DE75FAA2368A3E5DB2B198623AFE92AE9484270FE7F57A850E88C0D3EEA156611C91D8E480D4370B025CCA6929A2BF40AD3D01B2CB7EE6DFB46E12A830542337F7819B67F9765210F76DB06F34DA5B13A11759305C582E16D2B854939F6D9121F2A 4F285282F5DCD3D15896D121E3D6F5BE79E087451BB0ED233CDBEF090D3B4AC2DC34B97E70C61D95FB072B8C12D2ABD843520949A39DCF99E2C1AA8FBCD025E47E0A82A8D96E75BAF40F52AD402495BBD4DE0F356C8B14E764874E639C9F045A0D1908EC6456EB6C5B8A6F826192F767EF2C55A21C58F5F9CC1F59247B55F2387828C7FE89D5E7D8484D1BC86CB6673BDBE4FE17DD9BDE95224FE645136F41330BF155A4DDE1B0A32233BF471CE58FBC660DC7E641B0A0D30018454E2191C414A3011FF3FED1C0D88FE1FF9F75DCC456D097947226FBEC92509146D3A4CFFC0471B31C53222ED9DD88566F60F6C0D705AD79DACF53B070026F083ED28B5CF75 7AAA0A169F6F320A75E9D2ED50ABD939AF85B6346C2ADB25D168F10508E1516D194C635E6B187FADEA0829DBF0390C0F003F0265E215BC96CA3CC13D4A8E01570BE193CA75A620728CD275ACF1986EFFB3A13419FE55EA7C4467B7E7EEDC1FC29C9F8C46A557D2CCDB914EF7B93E7530D555DFC2398AFC68CAD991F062EF85BAA1884EC166C7C5DF8543666D8C41BE267D706BD1588F1F662F705CAE4D29DC38EF66BFAA89470D8A099B6F1B4587F7B024412276106FCD3EB5AE17A5D1DF1781992DC40EA0A992F706F701304CEA9D9073E7A74F1E687D81C3E5841D31CF86855BAAAD9B5D30317C75150A857C6B114735315CDD1AEF36C26BBB0645499406D EE2F24B3B1C72FEC97C7BA31AA2CDAB25418BB1DC4C7E4757F1D625087B0FD0300C03A65F2A72CE734925735277E034CDCF599129679F70CC8B66E03878851DB75041F275E1E5761F3EC753BE1359CA364A22047AE4886217F9259FE19FF5B116E8019B98B143114B313E8BEF87EC949D85C82E0812E6F50525E73890AF362CC8EE8A85F4197E6AC18638EF12E56A808D439AF1BFD363F140314BF4E534485C42F1856688CC35288E8D770120A420FB9F1FCF8AE8BD6D6156CC23E6C51119FE4DE1B68C9DF3487E9974BF9ED31F8D3CE93FF101867319F2FF492D5D398B4F09A66F2F55BCAB34B99173B7EE89039D00DD21A7B3A52E9F028F8301B5FC12D409 412E064513BC579AAC498F577EA8ECD1FE3E42DC3CC320786C7B00194FEDF344402C33FC492D4BA86992B01683F440220FFE756BC88A94223D316078D69D33560E8EAB76B24CB7AA4320CF435593D76F624324ABE00B5587A4F283C725EA24567133F25F472B5E2E4474DDB5A16AC5F2DF32350395D3E3892FE361F4D5C9A610C654C9227614FBBAFF3356A90A2266E00F66234061075491571A65616211257F160000000000000000000000000000000000000000000000000000000000000000 currentfile ok userdict/smooth4 known not and{eexec}{5455{currentfile read pop pop}repeat}ifelse F94E00EE41A71C59E5CAEED1EDBCF23D1DBA1EE99B9BB356492923BD8B1BA83A87CEB0E07377A31FD6241E814681118E17DC7CACE570399506E6E441B871B6043831BD03EFC11DBBD8001EE2FF8CFBD485065D455A2E15AC36F1A84AD8789FA6461199C7CD14CB9FD64D4B06452B7FC0A8FC263F70F1CCB893295D4DE70ADAB771C0F84396FA98C60B11DA02ABA157298DF0A23621853BEF167443A985ADC09BEFFD51CB4D29179E2B34609EF38A49DA61F4BFC256A3DE0732D7D29754A194857B9C9E9971227AA1DD0611FBB10E44E5FF66C062D9C24ED3290529330BC317825E876929582DB0E39B9FC5EFD20CC1D4F94920EB9C534D0DA90DE70D25BC728 7319CF28602B3F46633C242CAFC8905E960317E3C2FA20AB8DB06ADBAF292FC7BA2CA14EE65DF28B99CC11666B70AD33E8E1D57D63D4B89ECC615AE5747C1CA752C833D8D6DE54CD4A0350B44310555CE3BD2C615ADD27B634CDB350AF3A432CE78AACD2909A5B586F666CD87919A36DB1CBE86B3CE281DFD01CD7E1B8A18A4B415CECBFF79A5C4390A15EA77D14D6BE12BAB5A8268C3F286D0590060647CABED674443CD258F11415E866AB330A251691B61F2422A61AFE59B6B4FBDCF85ED9BA0F8E483C034089E6877FF5923698D3A0DC0EED6B9CFD32DF0839BC4EA5F6D1FCB6DD0920391E57E84745131D02D100179F4E0A68EC0A5FF6680A6F463D038 B04AF63FFA13D743B995A26A743C26D387209023C91DE43DF047A16F328AC9DDC08573B38BE9EA341EA16C78EC32F3A1B36B90D95A50610F4D050EC1C33497F3F3A81A1B4C8BEF0BA84EE2FAA32DC112DAC490AF53E1749C4A0D866CAF7B893E52383B0D38065C333FB122B700D7246F7EE87D942AE3DB5C1DD77E9E76C80CC5AD63D28DFED0E229CE604673F78CD47F258FDF5BF3A3EAEC5C9BC8E482D8DBA9D268A35DA8C095A690679ED2123E8B8F5E4826FA3B199EAA5D482D4B6AA86572E387CECEB7149C8947F41D6339328A748A17F8C4AD3B0555F1E409450BA0C564F1F488BB5096EB003568D4D5EF6489897E27409547D0EE4487D30184793B0F2 7BD265A64BDB3EA6761569DA955620C612E718677B77D6D81B999C6298877AFE0D1D6F6F358377A8BD2402F669C64B972B3A065EF7DD4BDEFFFE17E63DB8898FA6E69166B710AAD6BA2EA9AF61E4B8C8701638D4D6E4DFFFC192AEF6BC027095C4C72D748979675BA29FAF61E75343E14E61034602E5A79CD2519796ED6A9CC4EDEA46A9B59D4A807E786B5EE46F25B0360BC8E7C12D723122CDEEF247C9776F4C99C8EBED6828AA19744B5ADF0D07D95D98B3072372388D41B0FAB1CCE2775170679575ECDCA13B22A17FE9C6605C3445F58F1A829512DAB6C528F83580C8AA53C35D605F626F5AD0B7FC1EA87D69A835E3F53A1F450FB0AF42A5772F89D92 A50D10F15BDBDA409F50C0B8AB93FE8A16D029DD8BB5C480D1466735ED4D9CAF637E5ECD6C2ECB6BF3B3EFBEE7AB936D2C568E3009D156B87CACB1FB3A48A70BC91B2EC35CC9147FFB1A524E2B2F2E4E2C1B12F1C1C63768BB95CD62FEC01CBA79B9FA282DD4DF49990F27FF8EE4E2DDE2F0ACD83BC9D4BE0090192C7A799967EC4DC2D63C0835E22D4C4B366D7FDCF3A05A4B53DF780F986EF25C79B665D5C00EFF7F17C0BB6D544F9D83A7FDAC47D9C5683A656011374253C918FF6EA64749DD971B2300DD5320033E01EC591F6318CCE94CE2B81C04322EC52B624E50643B52391CCD2AB56396A2AD8E2D3CA61B80D9D4CC363B2DF7863526958CDF3497E 36648406C317E58EC563E7C26149A2A3C643ADFB39A8DD92974C6D2A2A9D7B71CDF3FEBBF32BB02E7B45CF53AAEAD5E963A4AA4AF9A149A08A4EC303D5F2369977E93F54897EEAD31B06C5845D63F49D65F8E5573962241A57CCD717CE6CA8C784A11192943616EA059B51BC38429E18D0121FCBB6FBD5D909B0D89E616C66DEF6A0F165A7030BD911A1B120468329CBB006C8D37720E531CF31E878CB4AAAC137633675C3D546F5162487AB35F470C042BDEB945E0F2532BF92AA6FD53434440221ECD3533A7AA89900CB19EFE2CD872DF8B7969AF0D3B72BF31DC5DD69CA6460966F61AB17CB507964098DBA3AF122EEC3128A9BAFE1034493F372B36BD13 51205E9043A67C544402D8BCE24358C8A5CE33867A00794CF7097D59C88279A11EE9C854E7E7AAE881F9828C569D208F5F33375F59E9A3818CFA38AAD0CBFBA32F9F44A8BB79DE4C40E3886457C16DA4A27953AA1E99472E35F2323F0BAA5E37DC28CBA46FEFB73B190016055ADD4D27615D748499A0E1C4B8C7EC339C1C4D95A813A85918A8D01EEB485DDCDCEA6EA3F2C2A9D85C139CD90CCB352634F9AFE836BCAC0C274E352BA2071B5269D5DE4CCDE3FF990CBA974980C7332AE1545A9C60D5D1459D3AE95C1AC065733AF14FADB440A110DD539563B8D850CD0704C52F3F7CCCB53630D776560CBD22D8FF08F5B354487A171AEC15F5F54DE9CAB668B CAC573E788D92762EF63E76087005F4AC2D02E0CAC173C11BE62ACE5DC4D3374F2F9746C9981E125FF9AB8CAE76D13039E2C54DFD708E028A619EA1ED78E6B46F06DF0D0B74BBEDD8C190C7C0CEBDE8F7A4888CC36575313478DD2CFE392E9BB7B2416955D44B7024A3BA43FBF37293B386D64746D7748895411D243FAEC50638F2AA33337D7FA018ADDAC5835A0DDFAE99AD6299DFB4CA6872C59853E3AC12FC9E3D26629C5B49CF844C87B3C4BFBE3074E3A1CE6984758C20C661084381CD6B4582D84F19C0000B5FC0DCB42B567E396031601C095D7016283EBE5F13CD8A3A374A74DDBBABD36081149F8BC242085F2F7297CC97FD3B8BAD206D8AC9707A 39ECCC7963B522E08DA391A1EF12DD4D746DBDDDCC0834F88160CF189A9645567CEC2F023A571AF0DFD15DB85B744C28C000DF53B05F8F210841F6E87A04F20C777B7C0BE6182BE2E90226E5301A12532A745F2FAAA81637CF11B78CD2B99A4D18B862D6C5DBD31793FB16A2D9AAD376D4484D75AA833D0068B1D34DB74E3302480854E3B5484D8A47E39A89A2FA927BC3641EA7F8E004FDE4C2F08D40D99F1ACB47CAF6887629BF6DFE12968D297596D28CE0CF148B12E7DCB49FB94F5ADBD214C3A6CE1E249831BA9EB8A189F2CE1ABE39A7B537253E369A508A2AF2ADB9463F9B56BBBFF31D535FF997F537C6675C196E7ECBD493F652FA7CC6D9C1CA337 9BFDB5AF7513C6E834054494296B91A6EE800114363D5D5D0759F41B4DECB653B9DE3E94583579EF549ED5F3FAFB12661ABC0C57A332406517ED3454EDED34B386C60F78DC976266E0EAF54FC245FB0E3EFC8016236436B599C1C97A8C5E0AC8F7836161873C71F01ED9CC25C236420F41FD8277993D3959205912FA0927B59E3DAE7377D82079447D6E41EE5AEC0DFFF79AF8F4ED47F17EE708FEA45877860D56F8CBCE65A061E8E1CA4A5FBAF0E13429A7F0ADB6F178FA449F46CC539BBC0107E3A53B1C362A04B20E6D721E7E6E1E4976A11DDC98C7614D22B53DFBB6DAE533AC9BE882021A735C30DAA4A44AED09F49A390E8CFF59BD9C30667AF21B03E C5CEBD5C2C3AA2769E8D714191A48E7DDF50B13D1560E82EFB65FCE601AE9E8C351FBA1DED80B7351314E7F9F9A784BFE3759B7E322A84E7B51F9DC5F5D9C8050CD79B27C0A4B0DD68A3C27A948AD6858E35B960D2DEA838C479CAEA83B1A912174ACB2100E55E7A14892D7A9B3711FF0B20065C1995B49E1F23464A92DD140642E3A7B1973849E64D1A3CF60000000000000000000000000000000000000000000000000000000000000000 %%EndProcSet %%EOF @eof -- Copyright 1987 Ben Cranston (you may redistribute ONLY if your recipients can). umd5.UUCP <= {seismo!mimsy,ihnp4!rlgvax}!cvl!umd5!zben zben @ umd2.UMD.EDU Kingdom of Merryland UniSys 1100/92 umd2.BITNET "via HASP with RSCS"