initial import of pristine upstream template
authorBenjamin Mako Hill <mako@atdot.cc>
Mon, 18 Mar 2013 09:44:57 +0000 (05:44 -0400)
committerBenjamin Mako Hill <mako@atdot.cc>
Mon, 18 Mar 2013 09:44:57 +0000 (05:44 -0400)
README.tex [new file with mode: 0644]
envlab.cfg [new file with mode: 0644]
envlab.drv [new file with mode: 0644]
envlab.dtx [new file with mode: 0644]
envlab.ins [new file with mode: 0644]
envlab.sty [new file with mode: 0644]
mitletter1.cls [new file with mode: 0644]
mitlogo.eps [new file with mode: 0644]

diff --git a/README.tex b/README.tex
new file mode 100644 (file)
index 0000000..38ae598
--- /dev/null
@@ -0,0 +1,37 @@
+\documentclass{mitletter1}
+\makelabels
+\begin{document}
+\name{Your Name}
+\signature{Your Name\\{\it Your Title}}
+
+
+
+\begin{letter}{Addressee's Name\\
+Title\\
+Company Name\\
+Street Address\\
+City, State/Province\\
+Zip/Postal code}
+
+
+\opening{Dear Recipient,}
+This a template for writing letters using the PSB LaTeX templates.  There
+are three new document classes, one for each letter template, called
+"mitletter1", "mitletter2", and "mitletter3" respectively.
+                                                                                
+First, one must modify each of the class files "mitletter1.cls",
+"mitletter2.cls", and "mitletter3.cls" so that his/her personal
+information is set.  The parameters to change are: Office Name, Room
+Number, Phone Number, Fax Number, website, E-mail, name, and title.  The
+last two parameters (name and title) are called "person" and "ID" within
+the class files.
+                                                                                
+Next, to compose a letter, one must: set the document class to one of the
+above document classes, specify a name and (optionally) a signature, and
+then proceed with writing the letter as if it were a standard letter.
+
+\closing{Sincerely}
+
+\end{letter}
+
+\end{document}
diff --git a/envlab.cfg b/envlab.cfg
new file mode 100644 (file)
index 0000000..f9a0262
--- /dev/null
@@ -0,0 +1,47 @@
+%%
+%% This is file `envlab.cfg',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% envlab.dtx  (with options: `cfg')
+%% 
+%% You are allowed and encouraged to modify THIS file.
+%% 
+%% The first part of this file contains default options for your site.
+%% The second part (inside AtEndOfPackage declaration) should contain
+%% customization commands specific to your site.
+%% 
+%% Good luck
+%% 
+\ProvidesFile{envlab.cfg}
+[1997/07/16 v1.2 Envelopes and Labels]
+%%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%% \changes{v1.2}{1996/07/16}{Updated User Guide}
+%%
+%% The default options go here
+%%
+\ExecuteOptions{businessenvelope,rotateenvelopes,centerenvelopes}
+\ExecuteOptions{printbarcodes,capaddress}
+\ExecuteOptions{nopswait,printreturnaddress,nopsautotray,nore}
+%%
+\AtEndOfPackage{\relax % Customization goes here
+}
+\endinput
+%%
+%% End of file `envlab.cfg'.
diff --git a/envlab.drv b/envlab.drv
new file mode 100644 (file)
index 0000000..52f0add
--- /dev/null
@@ -0,0 +1,105 @@
+%%
+%% This is file `envlab.drv',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% envlab.dtx  (with options: `driver')
+%% 
+%% IMPORTANT NOTICE:
+%% 
+%% For the copyright see the source file.
+%% 
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from envlab.drv.
+%% 
+%% For distribution of the original source see the terms
+%% for copying and modification in the file envlab.dtx.
+%% 
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{envlab.drv}
+[1997/07/16 v1.2 Envelopes and Labels]
+%%
+%% Copyright Boris Veytsman 1996, 1997
+%%
+%%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+\documentclass{ltxdoc}
+\DoNotIndex{\@Alph,\@alph,\@arabic,\@badmath}
+\DoNotIndex{\@centercr}
+\DoNotIndex{\@empty,\@ignoretrue}
+\DoNotIndex{\@ixpt}
+\DoNotIndex{\@M,\@minus,\@ne,\@plus}
+\DoNotIndex{\\,\addtolength}
+\DoNotIndex{\advance}
+\DoNotIndex{\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+\DoNotIndex{\bullet}
+\DoNotIndex{\cdot,\cr,\day,\DeclareOption}
+\DoNotIndex{\def,\DocInput,\documentclass}
+\DoNotIndex{\DoNotIndex,\egroup,\ifx,\else,\fi,\endtrivlist}
+\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+\DoNotIndex{\endlist,\everycr,\ExecuteOptions}
+\DoNotIndex{\filedate,\filename,\fileversion}
+\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+\DoNotIndex{\hsize,\hskip,\hspace,\hss,\ifcase,\or,\fi}
+\DoNotIndex{\ifvmode,\fi,\ifnum,\fi,\input}
+\DoNotIndex{\kern,\leavevmode,\let,\leftmark}
+\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark}
+\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+\DoNotIndex{\NeedsTeXFormat,\newdimen}
+\DoNotIndex{\newpage,\nobreak,\noindent,\number}
+\DoNotIndex{\p@}
+\DoNotIndex{\pagestyle,\par}
+\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
+\DoNotIndex{\rightmargin,\rlap,\rmfamily}
+\DoNotIndex{\setbox,\setcounter,\setlength}
+\DoNotIndex{\skip,\slshape,\space}
+\DoNotIndex{\trivlist,\typeout,\tw@}
+\DoNotIndex{\vskip,\vspace,\year,\z@}
+\DoNotIndex{\@ptsize,\@sptoken,\addtocounter,\afterassignment}
+\DoNotIndex{\AtEndOfPackage,\baselineskip,\boxmaxdepth,\clearpage}
+\DoNotIndex{\clubpenalty,\csname,\CurrentOption,\DeclareRobustCommand}
+\DoNotIndex{\eject,\endcsname,\evensidemargin,\expandafter}
+\DoNotIndex{\footnotesize,\footskip,\fromaddress,\futurelet}
+\DoNotIndex{\headheight,\headsep,\hfuzz,\ignorespaces}
+\DoNotIndex{\InputIfFileExists,\large,\lineskip,\loop}
+\DoNotIndex{\MakeUppercase,\MessageBreak,\mbox,\multiply}
+\DoNotIndex{\newcount,\newif,\newlength,\newtoks,\nolinebreak}
+\DoNotIndex{\nopagebreak,\normalfont,\normalsize,\null,\newline}
+\DoNotIndex{\oddsidemargin,\PackageError,\PackageInfo}
+\DoNotIndex{\paperheight,\paperwidth,\parbox,\parindent}
+\DoNotIndex{\PassOptionsToPackage,\ProvidesPackage,\RequirePackage}
+\DoNotIndex{\rule,\selectfont,\sffamily,\sloppy,\small,\spaceskip}
+\DoNotIndex{\stepcounter,\textheight,\textwidth,\the,\topmargin}
+\DoNotIndex{\unhbox,\voidb@x,\vsize,\vfuzz,\widowpenalty,\xspaceskip}
+\DoNotIndex{\AtBeginDocument,\AtEndDocument}
+\usepackage{enumerate}
+\CodelineIndex
+\RecordChanges
+\EnableCrossrefs
+\begin{document}
+  \DocInput{envlab.dtx}
+\end{document}
+%% \changes{v1.2}{1996/07/16}{Updated User Guide}
+\endinput
+%%
+%% End of file `envlab.drv'.
diff --git a/envlab.dtx b/envlab.dtx
new file mode 100644 (file)
index 0000000..6e479b4
--- /dev/null
@@ -0,0 +1,1759 @@
+% \iffalse
+%<*driver>
+\ProvidesFile{envlab.drv}
+%</driver>
+%<*driver|package|cfg>
+%<+package>\ProvidesPackage{envlab}
+%<+cfg>\ProvidesFile{envlab.cfg}
+[1997/07/16 v1.2 Envelopes and Labels] 
+%</driver|package|cfg>
+%<*driver|package>
+%%
+%% Copyright Boris Veytsman 1996, 1997
+%%
+%</driver|package>
+%<*driver|package|cfg>
+% \fi 
+%%
+% \CheckSum{1378}
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~} 
+% \iffalse
+%</driver|package|cfg>
+%
+% \section{Documentation driver}
+%<*driver>
+% Nothing interesting here\dots
+%    \begin{macrocode}
+\documentclass{ltxdoc}
+\DoNotIndex{\@Alph,\@alph,\@arabic,\@badmath}
+\DoNotIndex{\@centercr}
+\DoNotIndex{\@empty,\@ignoretrue}
+\DoNotIndex{\@ixpt}
+\DoNotIndex{\@M,\@minus,\@ne,\@plus}
+\DoNotIndex{\\,\addtolength}
+\DoNotIndex{\advance}
+\DoNotIndex{\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+\DoNotIndex{\bullet}
+\DoNotIndex{\cdot,\cr,\day,\DeclareOption}
+\DoNotIndex{\def,\DocInput,\documentclass}
+\DoNotIndex{\DoNotIndex,\egroup,\ifx,\else,\fi,\endtrivlist}
+\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+\DoNotIndex{\endlist,\everycr,\ExecuteOptions}
+\DoNotIndex{\filedate,\filename,\fileversion}
+\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+\DoNotIndex{\hsize,\hskip,\hspace,\hss,\ifcase,\or,\fi}
+\DoNotIndex{\ifvmode,\fi,\ifnum,\fi,\input}
+\DoNotIndex{\kern,\leavevmode,\let,\leftmark}
+\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark}
+\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+\DoNotIndex{\NeedsTeXFormat,\newdimen}
+\DoNotIndex{\newpage,\nobreak,\noindent,\number}
+\DoNotIndex{\p@}
+\DoNotIndex{\pagestyle,\par}
+\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
+\DoNotIndex{\rightmargin,\rlap,\rmfamily}
+\DoNotIndex{\setbox,\setcounter,\setlength}
+\DoNotIndex{\skip,\slshape,\space}
+\DoNotIndex{\trivlist,\typeout,\tw@}
+\DoNotIndex{\vskip,\vspace,\year,\z@}
+%
+\DoNotIndex{\@ptsize,\@sptoken,\addtocounter,\afterassignment}
+\DoNotIndex{\AtEndOfPackage,\baselineskip,\boxmaxdepth,\clearpage}
+\DoNotIndex{\clubpenalty,\csname,\CurrentOption,\DeclareRobustCommand}
+\DoNotIndex{\eject,\endcsname,\evensidemargin,\expandafter}
+\DoNotIndex{\footnotesize,\footskip,\fromaddress,\futurelet}
+\DoNotIndex{\headheight,\headsep,\hfuzz,\ignorespaces}
+\DoNotIndex{\InputIfFileExists,\large,\lineskip,\loop}
+\DoNotIndex{\MakeUppercase,\MessageBreak,\mbox,\multiply}
+\DoNotIndex{\newcount,\newif,\newlength,\newtoks,\nolinebreak}
+\DoNotIndex{\nopagebreak,\normalfont,\normalsize,\null,\newline}
+\DoNotIndex{\oddsidemargin,\PackageError,\PackageInfo}
+\DoNotIndex{\paperheight,\paperwidth,\parbox,\parindent}
+\DoNotIndex{\PassOptionsToPackage,\ProvidesPackage,\RequirePackage}
+\DoNotIndex{\rule,\selectfont,\sffamily,\sloppy,\small,\spaceskip}
+\DoNotIndex{\stepcounter,\textheight,\textwidth,\the,\topmargin}
+\DoNotIndex{\unhbox,\voidb@x,\vsize,\vfuzz,\widowpenalty,\xspaceskip}
+\DoNotIndex{\AtBeginDocument,\AtEndDocument}
+\usepackage{enumerate}
+\CodelineIndex
+\RecordChanges
+\EnableCrossrefs
+\begin{document}
+  \DocInput{envlab.dtx}
+\end{document}
+%    \end{macrocode}
+%</driver>
+% \fi
+%
+% \changes{v0.9}{1996/05/31}{Beta version}
+% \changes{v0.91}{1996/05/31}{Added new option---"alwaysbarcodes"}
+% \changes{v1.0}{1996/06/09}{First released version}
+% \changes{v1.1}{1996/07/08}{Fixed typos in "elold.ins"}
+% \changes{v1.1}{1996/07/08}{Updated User Guide}
+% \changes{v1.2}{1996/07/10}{Changed envlab.ins: made it parallel.}
+%% \changes{v1.2}{1996/07/16}{Updated User Guide}
+%
+% \newcommand{\EL}{\textsl{EnvLab}}
+%
+%
+% \GetFileInfo{envlab.drv}
+%
+% \title{Printing Envelopes and Labels in \LaTeXe: \EL\ Package
+%  \thanks{This file
+%        has version number \fileversion, last
+%        revised \filedate.}
+%  \thanks{\copyright Boris Veytsman, 1996, 1997}
+%  }
+% \author{Boris Veytsman}
+% \date{\filedate}
+% \maketitle
+% 
+% \tableofcontents
+%
+%
+% \section{Introduction}
+% \MakeShortVerb{\"}
+% The standard "\makelabels" command in the \LaTeXe\ "letter.cls"
+% documentclass typesets labels on Avery 5352 sheets. A typical user
+% may want more. \EL\ redefines "\makelabels" in\footnote{hopefully}
+% a more useful and customizable way
+%
+% The detailed usage of the package is described in the file
+% "elguide.tex". Here we just comment the macros.
+%
+% \StopEventually
+%
+% \section{Identification}
+%
+% First, we must say ``Hello world.'' 
+%    \begin{macrocode}
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+%    \end{macrocode}
+%
+% \begin{macro}{\envlab@ok}
+% \begin{macro}{\envlab@oops}
+% \changes{v1.2}{1997/07/10}{Used \cs{@ifundefined} instead of direct check}
+% Now let us check whether we in the letter documentclass. Actually we
+% will accept any class that has "\makelabels" defined (custom letter
+% classes, etc.)
+%    \begin{macrocode}
+\def\envlab@oops{%
+  \PackageError{envlab}%
+  {Envlab is used outside of \MessageBreak%
+   a letter-compatible documentclass}%
+  {You are trying to use Envelopes & Labels\MessageBreak%
+   package, but your documentclass does not\MessageBreak%
+   understand address formatting commands.\MessageBreak%
+   Try standard document class letter\MessageBreak}}
+\def\envlab@ok{%
+  \PackageInfo{envlab}%
+  {Envelopes & Labels package: found makelabels...\MessageBreak%
+  Seems everything is OK. Good luck.}}
+\@ifundefined{makelabels}{\envlab@oops}{\envlab@ok}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \section{Preliminary code}
+%
+% \subsection{Switches, etc.} 
+% 
+%
+% \DescribeMacro{\if@envelope}
+% \DescribeMacro{\if@biglabel}
+% \changes{v1.2}{1997/07/13}{Added Big Labels---thanks to Genick
+% Bar-Meir, "meyerson@msi.umn.edu"}
+% There are three kinds of things we can print: envelopes (default)
+% labels and big labels The differences are summarized in
+% Table~\ref{tab:diffs}.
+% \begin{table}
+%   \begin{center}
+%     \begin{tabular}{cccc}
+%       \hline
+%       Media & Number per page & Rotation & Return address \\
+%       \hline
+%       Envelopes & One & Settable & Yes\\
+%       Labels & Several & Not rotated & No\\
+%       Big Labels & Several & Not rotated & Yes\\
+%       \hline
+%     \end{tabular}
+%   \end{center}
+%   \caption{Differences between envelopes, labels and big labels}
+%   \label{tab:diffs}
+% \end{table}
+%
+%    \begin{macrocode}
+\newif\if@envelope 
+\@envelopetrue 
+\newif\if@biglabel 
+\@biglabelfalse
+%    \end{macrocode}
+%
+% \DescribeMacro{\if@rotateenvelopes}
+% \DescribeMacro{\if@printreturnaddress}
+% Now we must determine whether we want to rotate envelopes and
+% whether to include return address (both yes by default).
+%    \begin{macrocode}
+\newif\if@rotateenvelopes
+\@rotateenvelopestrue
+\newif\if@printreturnaddress
+\@printreturnaddresstrue
+%    \end{macrocode}
+%
+% \DescribeMacro{\@envelopeposition}
+% Now let us decide how to print envelopes. They can be either centered
+% (default) \emph{or} shifted to the left or to the right of the paper
+% tray.  The
+% counter "\@envelopeposition" can be, correspondingly, either 0 or 1
+% or 2. The value of
+% 3 corresponds to the ``custom placing'', when the user sets
+% "\EnvelopeLeftMargin" manually.
+%
+%    \begin{macrocode}
+\newcount\@envelopeposition 
+\@envelopeposition=0\relax
+%    \end{macrocode}
+%
+% \begin{macro}{\if@pswait}
+% \changes{v1.1}{1996/07/08}{Added \cs{if@pswait}}
+% \begin{macro}{\if@psautotray}
+% \changes{v1.1}{1997/07/13}{Added \cs{if@psautotray}}
+% \begin{macro}{\PSEnvelopeTray}
+% \changes{v1.1}{1997/07/13}{Added \cs{PSEnvelopeTray}}
+% The switches "\if@pswait" and "\if@psautotray" control optional manual 
+% feeding of envelopes and labels in \textsl{Postscript} printers 
+% (see Section~\ref{sec:Print} for details). The register
+% "\PSEnvelopeTray" contains the  name of the required tray.
+%    \begin{macrocode}
+\newif\if@pswait
+\@pswaitfalse
+\newif\if@psautotray
+\@psautotrayfalse
+\newtoks\PSEnvelopeTray
+\PSEnvelopeTray={/otherenvelopetray }
+%    \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@barcodes}
+% \begin{macro}{\if@alwaysbarcodes}
+% We can either print bar codes (default) or not. The second switch
+% forces to print barcodes even if they are not last in the address
+% (like "Pa 16801\\USA") 
+%    \begin{macrocode}
+\newif\if@barcodes
+\newif\if@alwaysbarcodes
+\@barcodestrue
+\@alwaysbarcodesfalse
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@EL@redefine@opening}
+% \changes{v1.2}{1997/07/14}{Wrote new command}
+% Now let us decide whether to mess with the "\opening" command.
+%    \begin{macrocode}
+\newif\if@EL@redefine@opening
+\@EL@redefine@openingfalse
+%    \end{macrocode}
+% \end{macro} 
+%
+%
+% \begin{macro}{\if@capitalizeaddress}
+% Also, we can either capitalize the address (default) or not.
+%    \begin{macrocode}
+\newif\if@capitalizeaddress
+\@capitalizeaddresstrue
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Lengths and numbers}
+%
+% We want all lengths to be user settable, so no "@" in the names.
+%
+% 
+% \DescribeMacro{\EnvelopeWidth}
+% \DescribeMacro{\EnvelopeHeight}
+% \DescribeMacro{\EnvelopeTopMargin}
+% \DescribeMacro{\EnvelopeLeftMargin}
+% An envelope has four basic lengths.
+% The first two are self-evident. The third is the distance between the
+% edge of the paper and the leading edge of the envelope. All
+% pre-defined envelope sizes set this to zero. The fourth is the distance
+% between the left edge of the paper and the envelope. Its value depends
+% on the value of the "\@envelopeposition" variable. We will preset it to
+% zero
+%    \begin{macrocode}
+\newlength{\EnvelopeWidth}
+\newlength{\EnvelopeHeight}
+\newlength{\EnvelopeTopMargin}
+\newlength{\EnvelopeLeftMargin}
+\setlength{\EnvelopeLeftMargin}{0pt}
+%    \end{macrocode}
+%
+% 
+% \DescribeMacro{\LabelWidth}
+% \DescribeMacro{\LabelHeight}
+% \DescribeMacro{\LabelTopMargin}
+% \DescribeMacro{\LabelLeftMargin}
+% \DescribeMacro{\LabelRightMargin}
+% A label has more parameters.
+% The first two are the same as for the envelopes. The next two define the
+% distances from the paper edges to the beginning of the labels. The
+% last one describes the distance between the labels.
+%    \begin{macrocode}
+\newlength{\LabelWidth}
+\newlength{\LabelHeight}
+\newlength{\LabelTopMargin}
+\newlength{\LabelLeftMargin}
+\newlength{\LabelRightMargin}
+%    \end{macrocode}
+%
+% \DescribeMacro{\c@LabelMaxCol}
+% \DescribeMacro{\c@LabelMaxRow}
+% The following numbers define, how many labels are in each row and how
+% many rows are on each page
+%    \begin{macrocode}
+\newcounter{LabelMaxCol}
+\newcounter{LabelMaxRow}
+%    \end{macrocode}
+%
+% The lengths above are \emph{external} parameters that determine an
+% envelope or a label. Now we will describe \emph{internal} lengths. We
+% define them here because the commands "\SetEnvelope" and "\SetLabel"
+% determine them basing on the given envelope or label type.
+%
+% 
+% \DescribeMacro{\FromAddressTopMargin}
+% \DescribeMacro{\FromAddressLeftMargin}
+% \DescribeMacro{\FromAddressHeight}
+% \DescribeMacro{\FromAddressWidth}
+% \DescribeMacro{\ToAddressTopMargin}
+% \DescribeMacro{\ToAddressLeftMargin}
+% \DescribeMacro{\ToAddressWidth}
+% The following lengths are self-evident.
+%    \begin{macrocode}
+\newlength{\FromAddressTopMargin}
+\newlength{\FromAddressLeftMargin}
+\newlength{\FromAddressHeight}
+\newlength{\FromAddressWidth}
+\newlength{\ToAddressTopMargin}
+\newlength{\ToAddressLeftMargin}
+\newlength{\ToAddressWidth}
+%    \end{macrocode}
+%
+% \subsection{Main setting commands}
+%
+% OK, we are ready to set up envelopes and labels.
+%
+% \begin{macro}{\SetEnvelope}
+% \changes{v1.2}{1997/07/14}{Added \cs{@biglabelfalse}}
+% The command "\SetEnvelope" has three parameters: optional top Margin,
+% width and height of the envelope.
+%    \begin{macrocode}
+\DeclareRobustCommand{\SetEnvelope}[3][0pt]{%
+  \@envelopetrue%
+  \@biglabelfalse%
+  \setlength{\EnvelopeTopMargin}{#1}%
+  \setlength{\EnvelopeWidth}{#2}%
+  \setlength{\EnvelopeHeight}{#3}%
+  \setlength{\FromAddressTopMargin}{0.5in}%
+  \setlength{\FromAddressLeftMargin}{0.5in}%
+  \setlength{\FromAddressHeight}{0.33\EnvelopeHeight}%
+  \setlength{\FromAddressWidth}{0.5\EnvelopeWidth}%
+  \setlength{\ToAddressTopMargin}{0.5in}%
+  \setlength{\ToAddressLeftMargin}{0.5in}%
+  \setlength{\ToAddressWidth}{3in}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SetLabel}
+% \changes{v1.2}{1997/07/14}{Added \cs{@biglabelfalse}}
+% The command "\SetLabel" has seven parameters: five lengths and two
+% numbers. All are mandatory:
+%    \begin{macrocode}
+\DeclareRobustCommand{\SetLabel}[7]{%
+  \@envelopefalse%
+  \@biglabelfalse%
+  \setlength{\LabelWidth}{#1}%
+  \setlength{\LabelHeight}{#2}%
+  \setlength{\LabelTopMargin}{#3}%
+  \setlength{\LabelLeftMargin}{#4}%
+  \setlength{\LabelRightMargin}{#5}%
+  \setcounter{LabelMaxCol}{#6}%
+  \setcounter{LabelMaxRow}{#7}%
+  \setlength{\ToAddressTopMargin}{0.1in}%
+  \setlength{\ToAddressLeftMargin}{0.2in}%
+  \setlength{\ToAddressWidth}{\LabelWidth}%
+  \addtolength{\ToAddressWidth}{-\ToAddressLeftMargin}%
+  \addtolength{\ToAddressWidth}{-\LabelRightMargin}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SetBigLabel}
+% \changes{v1.2}{1997/07/14}{Wrote new command}
+% The command "\SetBigLabel" has seven parameters: five lengths and two
+% numbers. All are mandatory:
+%    \begin{macrocode}
+\DeclareRobustCommand{\SetBigLabel}[7]{%
+  \@envelopefalse%
+  \@biglabeltrue%
+  \setlength{\LabelWidth}{#1}%
+  \setlength{\LabelHeight}{#2}%
+  \setlength{\LabelTopMargin}{#3}%
+  \setlength{\LabelLeftMargin}{#4}%
+  \setlength{\LabelRightMargin}{#5}%
+  \setcounter{LabelMaxCol}{#6}%
+  \setcounter{LabelMaxRow}{#7}%
+  \setlength{\FromAddressTopMargin}{0.0in}%
+  \setlength{\FromAddressLeftMargin}{0.5in}%
+  \setlength{\FromAddressHeight}{0.33\LabelHeight}%
+  \setlength{\ToAddressTopMargin}{0.1in}%
+  \setlength{\ToAddressLeftMargin}{0.5in}%
+  \setlength{\ToAddressWidth}{\LabelWidth}%
+  \addtolength{\ToAddressWidth}{-\ToAddressLeftMargin}%
+  \addtolength{\ToAddressWidth}{-\LabelRightMargin}%
+  \setlength{\FromAddressWidth}{\ToAddressWidth}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \section{Defining options}
+%
+% \subsection{Envelope Sizes}
+% \changes{v1.2}{1996/07/22}{Added new option: dlenvelope (thanks to
+% "J.P.Jansen@net.HCC.nl")} 
+% \changes{v1.2}{1997/07/13}{Added \cs{PSEnvelopeTray} to envelope
+% options} 
+%    \begin{macrocode}
+\DeclareOption{businessenvelope}{\SetEnvelope{9.5in}{4.125in}%
+  \PSEnvelopeTray={/com10envelopetray }}
+\DeclareOption{executiveenvelope}{\SetEnvelope{7.5in}{3.875in}%
+  \PSEnvelopeTray={/monarcenvelopetray }}
+\DeclareOption{bookletenvelope}{\SetEnvelope{10.5in}{7.5in}}
+\DeclareOption{personalenvelope}{\SetEnvelope{6.5in}{3.625in}}
+\DeclareOption{c6envelope}{\SetEnvelope{162mm}{114mm}}
+\DeclareOption{c65envelope}{\SetEnvelope{224mm}{114mm}}
+\DeclareOption{c5envelope}{\SetEnvelope{229mm}{162mm}%
+  \PSEnvelopeTray={/162x229cenvelopetray }}
+\DeclareOption{dlenvelope}{\SetEnvelope{220mm}{110mm}%
+  \PSEnvelopeTray={/dlenvelopetray }}
+%    \end{macrocode}
+%
+% \subsection{Labels sizes}
+%
+% \changes{v1.2}{1996/07/22}{Added new option: herma4625label (thanks to
+% "J.P.Jansen@net.HCC.nl")} 
+% \changes{v1.2}{1996/09/06}{Added new option: avery5262label (thanks to
+% Uri Blumenthal "uri@ibm.net")}
+% \changes{v1.2}{1997/07/13}{Added new option: avery5164biglabel}  
+% \changes{v1.2}{1997/07/13}{Added new option: avery5163biglabel}  
+%
+%    \begin{macrocode}
+\DeclareOption{avery5160label}{%
+  \SetLabel{2.75in}{1in}{0.5in}{0.19in}{0.12in}{3}{10}}
+\DeclareOption{avery5161label}{%
+  \SetLabel{4.19in}{1in}{0.5in}{0.16in}{0.19in}{2}{10}}
+\DeclareOption{avery5162label}{%
+  \SetLabel{4.19in}{1.33in}{0.83in}{0.16in}{0.19in}{2}{7}}
+\DeclareOption{avery5163label}{%
+  \SetLabel{4.19in}{2in}{0.5in}{0.16in}{0.19in}{2}{5}}
+\DeclareOption{avery5164label}{%
+  \SetLabel{4.19in}{3.33in}{0.5in}{0.16in}{0.19in}{2}{3}}
+\DeclareOption{herma4625label}{%
+  \SetLabel{105mm}{42.3mm}{0mm}{5mm}{5mm}{2}{7}}
+\DeclareOption{avery5262label}{%
+  \SetLabel{110mm}{34mm}{21mm}{4mm}{5mm}{2}{7}}
+\DeclareOption{avery5163biglabel}{%
+  \SetBigLabel{4.19in}{2in}{0.5in}{0.16in}{0.19in}{2}{5}%
+  \setlength{\ToAddressTopMargin}{0.1in}}%
+\DeclareOption{avery5164biglabel}{%
+  \SetBigLabel{4.19in}{3.33in}{0.5in}{0.16in}{0.19in}{2}{3}}%
+%    \end{macrocode}
+%
+% \subsection{Optional switches}
+%
+% \changes{v1.1}{1996/07/08}{Added new options: "printreturnaddress", 
+% "noprintreturnaddress"}
+% \changes{v1.1}{1996/07/08}{Added new options: "pswait", 
+% "nopswait"}
+% \changes{v1.2}{1997/07/13}{Added new options: "psautotray", 
+% "nopsautotray"}
+% \changes{v1.2}{1997/07/14}{Added new options: "re", "nore"}
+% All this should be evident\dots
+%
+%    \begin{macrocode}
+\DeclareOption{rotateenvelopes}{\@rotateenvelopestrue}
+\DeclareOption{norotateenvelopes}{\@rotateenvelopesfalse}
+\DeclareOption{centerenvelopes}{\@envelopeposition=0\relax}
+\DeclareOption{leftenvelopes}{\@envelopeposition=1\relax}
+\DeclareOption{rightenvelopes}{\@envelopeposition=2\relax}
+\DeclareOption{customenvelopes}{\@envelopeposition=3\relax}
+\DeclareOption{printbarcodes}{\@barcodestrue}
+\DeclareOption{noprintbarcodes}{\@barcodesfalse\@alwaysbarcodesfalse}
+\DeclareOption{alwaysbarcodes}{\@alwaysbarcodestrue\@barcodestrue}
+\DeclareOption{noalwaysbarcodes}{\@alwaysbarcodesfalse}
+\DeclareOption{capaddress}{\@capitalizeaddresstrue}
+\DeclareOption{nocapaddress}{\@capitalizeaddressfalse}
+\DeclareOption{printreturnaddress}{\@printreturnaddresstrue}
+\DeclareOption{noprintreturnaddress}{\@printreturnaddressfalse}
+\DeclareOption{pswait}{\@pswaittrue\@psautotrayfalse}
+\DeclareOption{nopswait}{\@pswaitfalse}
+\DeclareOption{psautotray}{\@psautotraytrue\@pswaitfalse}
+\DeclareOption{nopsautotray}{\@psautotrayfalse}
+\DeclareOption{re}{\@EL@redefine@openingtrue}
+\DeclareOption{nore}{\@EL@redefine@openingfalse}
+%    \end{macrocode}
+%
+% \subsection{Unknown options}
+%
+% All options we did not declare above are probably the options for the
+% "graphics" package; let us send them there.
+%    \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{graphics}}
+%    \end{macrocode}
+%
+% \subsection{Default options}\label{sec:DefOpt}
+%
+% \changes{v1.1}{1996/07/08}{Fixed typo in "businessenvelope" option}
+% \changes{v1.1}{1996/07/09}{Added default options: "nopswait", 
+% "printreturnaddress"}
+%
+%    \begin{macrocode}
+\ExecuteOptions{businessenvelope,rotateenvelopes,centerenvelopes}
+\ExecuteOptions{printbarcodes,capaddress}
+\ExecuteOptions{nopswait,printreturnaddress,nopsautotray,nore}
+%    \end{macrocode}
+%
+% \section{Configuration file}
+%
+% At this point we will look for the configuration file. This file is
+% named "envlab.cfg". The options declared in this file will supersede
+% the ones declared in Section~\ref{sec:DefOpt}, but will be in their
+% turn be superseded by the options explicitly defined when the package
+% is loaded.
+%    \begin{macrocode}
+\InputIfFileExists{envlab.cfg}{%
+  \typeout{Loading configuration file envlab.cfg}}{%
+  \typeout{Configuration file envlab.cfg is not found}}
+%    \end{macrocode}
+%
+% Now let us discuss the structure of the configuration file. We want it
+% to contain default options, and therefore to be loaded before the
+% "\ProcessOptions" command. On the other hand we want it to contain
+% some definitions that \emph{supersede} the ones in this package. The
+% hook "\AtEndOfPackage" helps to do this: we will just delay all
+% definitions until later.
+%
+% OK, let's construct an example of "envlab.cfg" file. The commands here
+% essentially repeat Section~\ref{sec:DefOpt}, but we want to be
+% foolproof\dots
+%    \begin{macrocode}
+%</package>
+%<*cfg>
+%%
+%% The default options go here
+%%
+\ExecuteOptions{businessenvelope,rotateenvelopes,centerenvelopes}
+\ExecuteOptions{printbarcodes,capaddress}
+\ExecuteOptions{nopswait,printreturnaddress,nopsautotray,nore}
+%%
+\AtEndOfPackage{\relax % Customization goes here
+}
+%</cfg>
+%<*package>
+%    \end{macrocode}
+%
+% \section{Processing options and loading packages}
+% \changes{v0.92}{1996/06/06}{Added \cs{IfFileExists} when loading packages}
+%    \begin{macrocode}
+\ProcessOptions
+\IfFileExists{graphics.sty}{%
+  \RequirePackage{graphics}}{%
+  \PackageWarning{envlab}{%
+    You don't have the graphics package!\MessageBreak
+    Probably you will not be able to print\MessageBreak
+    envelopes sidewise. \MessageBreak}}
+%    \end{macrocode}
+%
+% \section{Document layout}
+%
+% \subsection{Printer specific commands}
+% \label{sec:Print}
+%
+% \DescribeMacro{\@beginlabelshook}
+% \changes{v1.1}{1996/07/09}{Replaced \cs{@printpreamble} with 
+% \cs{@beginlabelshook}}
+% The command "\@beginlabelshook" is called at the beginning of the
+% printing of envelopes and labels. We define it to be a no-op, but it
+% is possible to introduce some printer-specific commands (like paper
+% change). 
+%    \begin{macrocode}
+\def\@beginlabelshook{\relax}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@beginlabelpagehook}
+% \changes{v1.1}{1996/07/09}{Introduced new command 
+% \cs{@beginlabelpagehook}}
+% The command "\@beginlabelpagehook" is like "\@beginlabelshook", but is 
+% called at the beginning of each \emph{page}
+%  of envelopes and labels.
+%    \begin{macrocode}
+\def\@beginlabelpagehook{\relax}
+%    \end{macrocode}
+%
+% \begin{macro}{\AtBeginLabels}
+% \changes{v1.1}{1996/07/08}{Made \cs{AtBeginLabels} cumulative}
+%   \begin{macro}{\AtBeginLabelPage}
+% \changes{v1.1}{1996/07/09}{Introduced \cs{AtBeginLabelPage}}
+% The hooks "\AtBeginLabels" and "\AtBeginLabelPage" redefine 
+% "\@beginlabelshook" and  "\@beginlabelpagehook". They are built like 
+% the standard \LaTeXe\ hooks
+% "\AtBeginDocument", "\AtBeginDvi", etc. In the implementation we use the 
+% \emph{internal} \LaTeXe\ command "\g@addto@macro". In the current 
+% (June~1996) \LaTeXe\ release it is defined as:
+% \DescribeMacro{\g@addto@macro}
+% \begin{verbatim}
+% \long\def\g@addto@macro#1#2{{%
+%   \toks@\expandafter{#1#2}%
+%   \xdef#1{\the\toks@}}}
+% \end{verbatim}
+% We quote this definition in case \emph{They} change Their minds\dots\ 
+%    \begin{macrocode}
+\def\AtBeginLabels{\g@addto@macro\@beginlabelshook}
+\def\AtBeginLabelPage{\g@addto@macro\@beginlabelpagehook}
+%    \end{macrocode}
+%   \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\PSwait}
+% \changes{v1.1}{1996/07/09}{Put William Slough's code in a separate macro}
+% \textsl{PostScript} printers can be switched to the manual feeding mode 
+% with the following code by \emph{William Slough} "<cfwas@eiu.edu>".
+%    \begin{macrocode}
+\def\PSwait{\special{ps: clear grestore @manualfeed 0 0 bop}}
+%    \end{macrocode} 
+% The author explains his code in the following way:
+% \begin{quotation}
+%       Here is a possible explanation:
+%       
+%       The clear removes operands from the PostScript stack, which has the
+%       effect of reversing some actions from the *previous* bop.  Unfortunately,
+%       it reverses other important actions too (such as font size), but the
+%       grestore seems to get these back.  Then the desired @manualfeed, followed
+%       by the ``bop'' for the beginning of page.  The pair of 0's are used for
+%       bop and are completely bogus.  However, from what I could detect, 0's are
+%       as good as anything.  The values that DVIPS provides for bop seem to be
+%       related to DVI page numbers.
+%       
+%       I make no guarantee about the reliability of this solution, but initial
+%       tests indicate it will work for my environment.
+% \end{quotation}
+% \end{macro}
+%
+% \begin{macro}{\PSautotray}
+% \changes{v1.2}{1997/07/13}{Wrote new command}
+% This implements the code by \emph{Uri Blumenthal}
+% "<uri@.ibm.net>". 
+%    \begin{macrocode}
+\edef\PSautotray{%
+  \special{ps:clear grestore 
+    statusdict begin false setduplexmode
+    /manualfeed true def
+    \the\PSEnvelopeTray end 0 0 bop }}
+%    \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.1}{1996/07/08}{Added implementation of the "pswait" option}
+% \changes{v1.1}{1996/07/09}{Moved \cs{PSwait} code to \cs{AtBeginLabelPage}}
+% \changes{v1.1}{1996/07/15}{Moved \cs{PSwait} code to
+%   \cs{AtBeginLabels}}
+% \changes{v1.1}{1997/07/13}{Added implementation of the "psautotray" option}
+% The option "pswait" puts the "\PSwait" code in the beginning of each
+% page. The option "\psautotray" puts there the "\PSautotray" code.
+%    \begin{macrocode}
+\if@pswait 
+  \AtBeginLabels{\PSwait}%
+\else
+  \if@psautotray
+    \AtBeginLabels{\PSautotray}%
+  \fi
+\fi
+%    \end{macrocode}
+% 
+%
+% \subsection{Some useful counters for labels}
+%
+% 
+% 
+% \DescribeMacro{\c@LabelCountCol}
+% \DescribeMacro{\c@LabelCountRow}
+% These counters store the position of the currently printed label:
+%    \begin{macrocode}
+\newcounter{LabelCountCol}
+\newcounter{LabelCountRow}
+%    \end{macrocode}
+%
+% 
+% \DescribeMacro{\c@LabelOffsetCol}
+% \DescribeMacro{\c@LabelOffsetRow}
+% And these counters provide the offset for the label printed on a
+% partially used sheet:
+%    \begin{macrocode}
+\newcounter{LabelOffsetCol}
+\newcounter{LabelOffsetRow}
+\setcounter{LabelOffsetCol}{1}
+\setcounter{LabelOffsetRow}{1}
+%    \end{macrocode}
+%
+% \begin{macro}{\FirstLabel}
+% \changes{v1.1}{1996/07/08}{Introduced new command \cs{FirstLabel}}
+% The command "\FirstLabel"\marg{Row}\marg{Col} sets the counters 
+% "LabelOffsetRow" and "LabelOffsetCol".
+%    \begin{macrocode}
+\DeclareRobustCommand{\FirstLabel}[2]{%
+  \setcounter{LabelOffsetRow}{#1}%
+  \setcounter{LabelOffsetCol}{#2}}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Fonts}
+%
+%
+% \begin{macro}{\@toaddressfont}
+%   \begin{macro}{\@fromaddressfont}
+% \changes{v1.1}{1996/07/08}{Fixed documentation about \cs{@fromaddressfont}}
+% We want the address to be printed in \textsf{\large 12pt sans serif}
+% font. The return address will be printed in 10pt normal font.
+%    \begin{macrocode}
+\def\@toaddressfont{%
+  \ifcase\@ptsize \large\or\normalsize\or\small\fi%
+  \sffamily\selectfont}
+\def\@fromaddressfont{%
+  \ifcase\@ptsize \normalsize\or\small\or\footnotesize\fi%
+  \normalfont}
+%    \end{macrocode}
+%   \end{macro}
+% \end{macro}
+%
+% \subsection{Return address}
+%
+% \begin{macro}{\returnaddress}
+% \changes{v1.2}{1997/07/13}{Deleted check for \cs{if@envelope}}
+% The standard letter class defines "\returnaddress" to be null. This
+% is sensible if we are printing labels, but not so good if we are
+% printing \emph{envelopes}. Therefore let us redefine it:
+%    \begin{macrocode}
+\def\returnaddress{\fromaddress}
+%    \end{macrocode}
+% \end{macro}
+% 
+% \subsection{Margins, page styles, etc.}
+%
+% 
+% \begin{macro}{\startlabels}
+% \changes{v1.2}{1996/09/07}{Added \cs{clearpage}}
+% \changes{v1.2}{1996/09/20}{Added percent signs}
+% \changes{v1.2}{1997/07/10}{Moved here calculations for 
+%   \cs{EnvelopeLeftMargin}} 
+% \changes{v1.2}{1997/07/10}{Added \cs{LabelLeftMargin}} 
+% The command "\startlabels" is the internal command that prepares
+% the paper for labels or envelopes, resets the internal counters and
+% calls "\@beginlabelshook". 
+%    \begin{macrocode}
+\def\startlabels{%
+  \clearpage%
+  \pagestyle{empty}%
+  \setlength{\topmargin}{-1.0in}%
+  \if@envelope%
+    \addtolength{\topmargin}{\EnvelopeTopMargin}%
+    \else \addtolength{\topmargin}{\LabelTopMargin}%
+  \fi%
+  \setlength{\headheight}{0pt}%
+  \setlength{\headsep}{0pt}%
+  \setlength{\footskip}{0pt}% 
+  \setlength{\textheight}{200in}%
+  \setlength\paperheight{\textheight}%
+  \global\vsize=200in\relax%
+  \addtolength{\textheight}{-\topmargin}%
+  \addtolength{\textheight}{-1.0in}%
+  \setlength{\oddsidemargin}{-1.0in}%
+  \if@envelope\relax%
+  \else%
+     \addtolength{\oddsidemargin}{\LabelLeftMargin}%
+  \fi%
+  \setlength{\evensidemargin}{\oddsidemargin}%
+  \setlength{\textwidth}{20in}%
+  \hsize=20in%
+  \baselineskip=0pt%
+  \lineskip=0pt%
+  \parindent=0pt%
+  \if@envelope
+%    \end{macrocode}
+%
+% Now we can calculate "\EnvelopeLeftMargin"
+%
+%    \begin{macrocode}
+    \ifcase\the\@envelopeposition%
+      \setlength{\EnvelopeLeftMargin}{\paperwidth}%
+      \if@rotateenvelopes%
+        \addtolength{\EnvelopeLeftMargin}{-\EnvelopeHeight}%
+      \else%
+        \addtolength{\EnvelopeLeftMargin}{-\EnvelopeWidth}%
+      \fi%
+      \setlength{\EnvelopeLeftMargin}{0.5\EnvelopeLeftMargin}%
+    \or%
+      \setlength{\EnvelopeLeftMargin}{0pt}%
+    \or%
+      \setlength{\EnvelopeLeftMargin}{\paperwidth}%
+      \if@rotateenvelopes%
+        \addtolength{\EnvelopeLeftMargin}{-\EnvelopeHeight}%
+      \else%
+        \addtolength{\EnvelopeLeftMargin}{-\EnvelopeWidth}%
+      \fi%
+    \else%
+      \relax%
+    \fi%
+  \else%
+%    \end{macrocode}
+%
+% Initializing labels counters\ldots
+%
+%    \begin{macrocode}
+    \setcounter{LabelCountCol}{\theLabelOffsetCol}%
+    \setcounter{LabelCountRow}{\theLabelOffsetRow}%
+    \ifnum\theLabelOffsetRow>1%
+      \null%
+      \loop \vspace*{\LabelHeight}%
+        \addtocounter{LabelOffsetRow}{-1} \ifnum\theLabelOffsetRow>1%
+      \repeat%
+    \fi%
+    \ifnum\theLabelOffsetCol>1%
+      \loop \hspace*{\LabelWidth}\nolinebreak%
+        \addtocounter{LabelOffsetCol}{-1} \ifnum\theLabelOffsetCol>1%
+      \repeat%
+    \fi%
+    \nopagebreak%
+  \fi%
+  \spaceskip0pt\relax%
+  \xspaceskip 0pt\relax%
+  \clubpenalty=0%
+  \widowpenalty=0%
+  \raggedbottom%
+  \sloppy%
+  \setlength\hfuzz{5in}%
+  \setlength\vfuzz{5in}%
+  \ignorespaces%
+  \@beginlabelshook%
+  \@beginlabelpagehook%
+  \nopagebreak}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Printing of the addresses}
+%
+% \DescribeMacro{\PrintReturnAddress}
+% This macro uses the text as an argument and prints it according to
+%  the conventions.
+%    \begin{macrocode}
+\newcommand{\PrintReturnAddress}[1]{%
+  \vspace*{\FromAddressTopMargin}
+  \null\hspace{\FromAddressLeftMargin}
+  \parbox[t][\FromAddressHeight]{\FromAddressWidth}%
+    {\@fromaddressfont \lineskip=1pt 
+      \if@printreturnaddress #1\else\relax\fi}}
+%    \end{macrocode}
+%
+% \DescribeMacro{\PrintAddress}
+% This macro works like "\PrintReturnAddress", with several important
+% differences: it prints barcodes if necessary \emph{and}
+% capitalizes the address.
+%    \begin{macrocode}
+\newcommand{\PrintAddress}[1]{%
+  \vspace*{\ToAddressTopMargin}
+  \leavevmode
+  \null\hspace*{\ToAddressLeftMargin}
+  \parbox[t]{\ToAddressWidth}{%
+    \lineskip=1pt
+    \if@barcodes \PrintBarCode{#1} \fi 
+    \@toaddressfont
+    \if@capitalizeaddress \@make@capitalize{#1} \else #1 \fi}}
+%    \end{macrocode}
+%
+% \subsection{Label setup}
+%
+% \begin{macro}{\PrintLabel}
+% \changes{v1.2}{1996/09/20}{Added percent signs}
+% This macro prints a label in a parbox
+%    \begin{macrocode}
+\newcommand{\PrintLabel}[1]{%
+  \parbox[t][\LabelHeight]{\LabelWidth}{%
+    \PrintAddress{#1}}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\PrintBigLabel}
+% \changes{v1.2}{1997/07/13}{Wrote new command}
+% This macro makes a minipage with addresses on it, similarly to
+% "\PrintEnvelope" below.
+%    \begin{macrocode}
+\newcommand{\PrintBigLabel}[2]{%
+  \begin{minipage}[t][\LabelHeight]{\LabelWidth}%
+    \baselineskip=0pt%
+    \lineskip=0pt%
+    \parindent=0pt%
+    \begin{center}%
+      \PrintReturnAddress{#1}\\%
+      \rule{\ToAddressWidth}{0.1pt}%
+      \PrintAddress{#2}%
+    \end{center}%
+  \end{minipage}}
+%    \end{macrocode}
+%
+%
+% \subsection{Envelope setup} 
+% 
+% Labels include one box per label, so their setup is simple. The 
+% situation with envelopes is different: they contain several boxes, and
+% could be rotated, centered, etc. 
+%
+% \begin{macro}{\PrintEnvelope}
+% \changes{v1.2}{1996/09/20}{Added percent signs}
+% This macro makes a minipage with addresses on it.
+%    \begin{macrocode}
+\newcommand{\PrintEnvelope}[2]{%
+  \begin{minipage}[t][\EnvelopeHeight]{\EnvelopeWidth}%
+    \baselineskip=0pt%
+    \lineskip=0pt%
+    \parindent=0pt%
+    \PrintReturnAddress{#1}\\%
+    \begin{center}%
+      \PrintAddress{#2}%
+    \end{center}%
+  \end{minipage}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@PrintEnvelope}
+% The following macro checks for rotation:
+%    \begin{macrocode}
+\newcommand{\@PrintEnvelope}[2]{%
+  \if@rotateenvelopes\rotatebox{90}{\PrintEnvelope{#1}{#2}}%
+  \else\PrintEnvelope{#1}{#2}%
+  \fi}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Printing of envelopes and labels}
+%
+% \subsection{Main Command}
+%
+% \begin{macro}{\mlabel}
+% Now we are prepared to print actual envelopes and labels. It is done by 
+% the "\mlabel" command. It has two forms: for labels and envelopes.
+%    \begin{macrocode}
+\renewcommand{\mlabel}[2]{\ignorespaces%
+  \spaceskip 0pt\relax%
+  \xspaceskip 0pt\relax%
+%    \end{macrocode}
+%
+% \subsection{Printing of one envelope}
+% \changes{v1.1}{1996/07/09}{Put \cs{@beginlabelpagehook} in the envelope
+% printing}
+%    \begin{macrocode}
+  \if@envelope%
+    \leavevmode%
+    \hspace*{\EnvelopeLeftMargin}%
+    \@PrintEnvelope{#1}{#2}%
+    \clearpage%
+    \@beginlabelpagehook%
+%    \end{macrocode}
+% \subsection{Printing of one label}
+% \changes{v1.1}{1996/07/09}{Put \cs{@beginlabelpagehook} in the label 
+% printing}
+% \changes{v1.2}{1997/07/14}{Added printing of big labels}
+%    \begin{macrocode}
+  \else%
+    \ignorespaces%
+    \ifnum\theLabelCountCol>\theLabelMaxCol%
+      \\\nopagebreak%
+      \stepcounter{LabelCountRow}%
+      \setcounter{LabelCountCol}{1}%
+    \fi%
+    \ifnum\theLabelCountRow>\theLabelMaxRow%
+      \vfill\eject\@beginlabelpagehook%
+      \setcounter{LabelCountRow}{1}%
+      \setcounter{LabelCountCol}{1}%
+    \fi%
+    \if@biglabel%
+        \PrintBigLabel{#1}{#2}%
+    \else%
+        \PrintLabel{#2}%
+    \fi%
+    \ignorespaces\nolinebreak%
+    \stepcounter{LabelCountCol}%
+  \fi}%
+%    \end{macrocode}
+% \end{macro} 
+%
+% \subsection{Printing of return labels}
+%
+% We print only mailing addresses on labels. The user is supposed to have
+% preprinted return labels. Here we describe a utility for printing them.
+% This utility should be used in a separate document.
+%
+% \DescribeMacro{\@numreturnlabels}
+% The counter "\@numreturnlabels" stores the number of return labels to
+% be printed. Note that it is a \TeX\ counter, not a \LaTeX\ one.
+%    \begin{macrocode}
+\newcount\@numreturnlabels
+%    \end{macrocode}
+%
+% \DescribeMacro{\printreturnlabels}
+% This macro has two parameters: the number of labels to be printed and 
+% the text that is printed. It is the same on all labels.
+%    \begin{macrocode}
+\newcommand{\printreturnlabels}[2]{%
+  \@numreturnlabels=#1
+  \def\@toaddressfont{\@fromaddressfont}
+  \@capitalizeaddressfalse
+  \@barcodesfalse
+  \startlabels
+  \loop \mlabel{\relax}{#2} \advance\@numreturnlabels by -1 
+    \ifnum\@numreturnlabels>0\repeat}
+%    \end{macrocode}
+%
+% \section{Barcodes}
+%
+% \subsection{Main command}
+%
+% The USPS Postnet codes are printed accordingly to the specifications
+% Ref.~\cite{Pub25}. The scanning algorithm
+% is stolen from David Carlisle's \textsf{enumerate} package~\cite{Enum}. 
+%
+% \DescribeMacro{\PrintBarCode}
+% First, we extract barcodes by the command "\@extractbarcode". Then
+% we print them by "\@printbarcode".
+%    \begin{macrocode}
+\newcommand{\PrintBarCode}[1]{%
+  \@extractbarcode{#1}
+  \@printbarcode}
+%    \end{macrocode} 
+%
+% \subsection{Extraction of barcodes}\label{sec:Extract}
+% \changes{v1.2}{1996/07/10}{Deleted \cs{global} from zipcode 
+%   extracting commands}
+% We define zipcode as a sequence of digits (0--9) that:
+% \begin{itemize}
+% \item Has no characters other than digits and dashes (-) inside it
+% \item Has no bracketed groups inside it and is not bracketed itself
+% \item Is the last in the address field unless "\if@alwaysbarcodes=true"
+% \end{itemize}
+%
+% We print this sequence plus the \emph{control character}. 
+% The latter is defined as minus sum of digits of the 
+% zip code
+% modulo 10 (that is, the complement of the sum of digits to a 
+% multiple of 10).
+%
+% First, some internal registers.
+% \DescribeMacro{\@zipcode}
+% \DescribeMacro{\@zipcodesum}
+% \DescribeMacro{\@zipcodefound}
+% The token list "\@zipcode" contains barcode found so far. The register 
+% "\@zipcodesum" first contains the sum of digits of the barcode, and
+% then the control character. The
+% switch "\@zipcodefound" shows whether we found zip code so far.
+%    \begin{macrocode}
+\newtoks\@zipcode
+\newcount\@zipcodesum
+\newif\if@zipcodefound
+%    \end{macrocode}
+%
+%
+% 
+% There are two modes for gobbling tokens:
+% \begin{enumerate}[{State} A:]
+% \item We are outside a potential zipcode sequence
+% ("\if@zipcodefound=false")\label{state:notfound}
+% \item We are inside a potential zipcode sequence
+% ("\if@zipcodefound=true")\label{state:found}
+% \end{enumerate}
+%
+% \begin{itemize}
+%
+% \item \DescribeMacro{\@endaddress} \DescribeMacro{\@finishzipcode}
+% If we meet in any state the special token "\@endaddress", we 
+% gobble it and finish the loop.
+%    \begin{macrocode}
+\long\def\@finishzipcode#1{}
+%    \end{macrocode}
+%
+% \item  \DescribeMacro{\@firstzipcode} If we meet a number (0--9) in
+% state~\ref{state:notfound}, we initialize registers, process the
+% token and go to state~\ref{state:found} 
+%    \begin{macrocode}
+\long\def\@firstzipcode#1{%
+  \@zipcode{#1}
+  \@zipcodesum=#1\relax
+  \@zipcodefoundtrue
+  \@zipcodeloop}
+%    \end{macrocode}
+%
+% \item \DescribeMacro{\@continuezipcode} If we meet a number (0--9)
+% in state~\ref{state:found}, we just process it.
+%    \begin{macrocode}
+\long\def\@continuezipcode#1{%
+  \@zipcode=\expandafter{\the\@zipcode#1}
+  \advance\@zipcodesum by #1
+  \@zipcodeloop}
+%    \end{macrocode}
+%    
+% \item  \DescribeMacro{\@dashzipcode} If we meet a dash in
+% state~\ref{state:found}, we gobble it.
+%    \begin{macrocode} 
+\long\def\@dashzipcode#1{\@zipcodeloop}
+%    \end{macrocode}
+% 
+% \item \DescribeMacro{\@spacezipcode} If we meet a space in any
+% state, we gobble it and go to the state~\ref{state:notfound}. The
+% trick is from Carlisle's \textsf{enumerate} package.
+%    \begin{macrocode} 
+\def\@spacezipcode{%
+  \@zipcodefoundfalse
+  \afterassignment\@zipcodeloop\let\EL@temp= }
+%    \end{macrocode}
+%
+% \item \DescribeMacro{\@abortzipcode} If we meet anything else in any
+% mode, we gobble it and go to state~\ref{state:notfound} 
+%    \begin{macrocode}
+\long\def\@abortzipcode#1{%
+  \@zipcodefoundfalse
+  \@zipcodeloop}
+%    \end{macrocode}
+%
+% \end{itemize}
+%
+%
+% \DescribeMacro{\@zipcodeloop}
+% \DescribeMacro{\EL@temp}
+% \changes{v1.2}{1997/07/14}{Changed \cs{@temp} to \cs{EL@temp} to
+% avoid clashes with amsmath}
+% This macro is simple. We just put the next token into "\EL@temp" and
+% process it through "\@zipcodeloop@".
+%    \begin{macrocode}
+\def\@zipcodeloop{\futurelet\EL@temp\@zipcodeloop@}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@zipcodeloop@}
+% \DescribeMacro{\EL@tempa}
+% \changes{v1.2}{1997/07/14}{Changed \cs{@tempa} to \cs{EL@tempa} to
+% avoid clashes with amsmath}
+% This macro performs actual processing\dots We put the command
+% that gobbles the next token into "\EL@tempa"
+%    \begin{macrocode}
+\def\@zipcodeloop@{%
+  \ifx \@endaddress\EL@temp      \def\EL@tempa{\@finishzipcode}    \else
+  \ifx 0\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 1\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 2\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 3\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 4\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 5\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 6\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 7\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 8\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 9\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx -\EL@temp \if@zipcodefound \def\EL@tempa{\@dashzipcode}
+               \else           \def\EL@tempa{\@abortzipcode} \fi \else
+  \ifx \@sptoken\EL@temp         \def\EL@tempa{\@spacezipcode}     \else
+                               \def\EL@tempa{\@abortzipcode}
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \EL@tempa}
+%    \end{macrocode}
+%
+%
+% \DescribeMacro{\@extractbarcode}
+% The command "\@extractbarcode" puts barcode into the "\@zipcode", 
+% and calculates the control character (10 minus sum of the digits
+% of the barcode).
+%    \begin{macrocode}
+\long\def\@extractbarcode#1{%
+  \@zipcodefoundfalse
+  \@zipcodeloop#1\@endaddress
+  \if@alwaysbarcodes \@zipcodefoundtrue \fi
+  \if@zipcodefound
+    \ifnum\the\@zipcodesum>0
+      \loop \advance \@zipcodesum by -10 \ifnum\the\@zipcodesum>0
+      \repeat
+    \fi
+    \multiply\@zipcodesum by -1
+  \fi}
+%    \end{macrocode}
+%
+% \subsection{Printing barcodes}
+%
+% \DescribeMacro{\@barcodewidth}
+% \DescribeMacro{\@barcodeLheight}
+% \DescribeMacro{\@barcodeSheight}
+% \DescribeMacro{\@barcodeskip}
+% First, some lengths. ``L'' and ``S'' below refer to ``long'' and
+% ``short'' bars correspondingly.
+%    \begin{macrocode}
+\newlength{\@barcodewidth}
+\newlength{\@barcodeLheight}
+\newlength{\@barcodeSheight}
+\newlength{\@barcodeskip}
+\setlength{\@barcodewidth}{0.020in}
+\setlength{\@barcodeLheight}{0.125in}
+\setlength{\@barcodeSheight}{0.050in}
+\setlength{\@barcodeskip}{0.026in}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@barL}
+% \DescribeMacro{\@barS}
+% The following macros print long and short bars.
+%    \begin{macrocode}
+\DeclareRobustCommand{\@barL}{%
+  \rule{\@barcodewidth}{\@barcodeLheight}\hspace{\@barcodeskip}}
+\DeclareRobustCommand{\@barS}{%
+  \rule{\@barcodewidth}{\@barcodeSheight}\hspace{\@barcodeskip}}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@printonezip}
+% \DescribeMacro{\@printbarcode}
+% The scanning of "\@zipcode" is simpler than the scanning of the address:
+% the only tokens we can meet are digits. Well, we will add an end marking
+% token to the list. Let it be the letter ``S'' (from ``Stop'').
+%    \begin{macrocode}
+\def\@printonezip#1{%
+  \ifx1#1\@barS\@barS\@barS\@barL\@barL\else
+  \ifx2#1\@barS\@barS\@barL\@barS\@barL\else
+  \ifx3#1\@barS\@barS\@barL\@barL\@barS\else
+  \ifx4#1\@barS\@barL\@barS\@barS\@barL\else
+  \ifx5#1\@barS\@barL\@barS\@barL\@barS\else
+  \ifx6#1\@barS\@barL\@barL\@barS\@barS\else
+  \ifx7#1\@barL\@barS\@barS\@barS\@barL\else
+  \ifx8#1\@barL\@barS\@barS\@barL\@barS\else
+  \ifx9#1\@barL\@barS\@barL\@barS\@barS\else
+  \ifx0#1\@barL\@barL\@barS\@barS\@barS\else
+  \ifx S#1\def\EL@tempa{\relax}%
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+  \EL@tempa}
+\def\@printbarcode{%
+  \if@zipcodefound
+   \mbox{%
+    \@barL%
+    \def\EL@tempa{\@printonezip}%
+    \expandafter\EL@tempa\the\@zipcode S%
+    \def\EL@tempa{\@printonezip}%
+    \expandafter\EL@tempa\the\@zipcodesum S%
+    \@barL}
+    \\[1ex]
+  \fi}
+%    \end{macrocode}
+%
+%
+%
+% \section{Capitalization}
+%
+%
+% \changes{v1.2}{1996/07/10}{Deleted \cs{global} from capitalization commands}
+%
+%
+%
+% These macros process the address (actually, any string) according to the
+% USPS recommendations. Specifically, they:
+% \begin{itemize}
+% \item Strip dots (.) and commas (,) from the address unless they are 
+% enclosed in brackets
+% \item Make all letters uppercase
+% \item Add 1pt space between letters
+% \item Add 1em space between words
+% \end{itemize}
+% An interesting question is whether we should de-accent accented
+% letters. USPS says nothing about it. In the present version accents
+% are \emph{not} stripped. However due to the scanning algorithm they
+% should be enclosed by brackets, like this:  
+% "{\u S}andor {\c C}edi". 
+%
+%
+%
+% \DescribeMacro{\@addr@cap}
+% We store the capitalized address in the token list "\@addr@cap".
+%    \begin{macrocode}
+\newtoks\@addr@cap
+%    \end{macrocode}
+%
+% The following macros process the tokens one by one.
+%
+% \DescribeMacro{\@finishaddrcap}
+% If we meet the special token "\@endaddress", we gobble it and stop.
+%    \begin{macrocode}
+\long\def\@finishaddrcap#1{}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@dotcommaaddrcap}
+% If we meet comma or dot, we gobble it and do \emph{not} stop. This macro 
+% is also useful for gobbling \LaTeXe\ \textsf{letter} commands like
+% "\voidb@x" and "\unhbox".
+%    \begin{macrocode}
+\long\def\@dotcommaaddrcap#1{%
+  \@addrcaploop}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@newlineaddrcap}
+% If we meet "\\", we add it to the list
+%    \begin{macrocode}
+\long\def\@newlineaddrcap#1{%
+  \@addr@cap=\expandafter{\the\@addr@cap #1}
+  \@addrcaploop}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@bgroupaddrcap}
+% If we meet "\bgroup", we add it to the list the complete group (uppercase)
+%    \begin{macrocode}
+\long\def\@bgroupaddrcap#1{%
+  \@addr@cap=\expandafter{\the\@addr@cap {\MakeUppercase{#1}}}
+  \@addrcaploop}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@spaceaddrcap} 
+% If we meet a space we gobble it (oh-oh) and add it to the list. 
+%    \begin{macrocode} 
+\def\@spaceaddrcap{%
+  \@addr@cap=\expandafter{\the\@addr@cap\hspace{0.6em}}
+  \afterassignment\@addrcaploop\let\EL@temp= }
+%    \end{macrocode}
+%
+% \DescribeMacro{\@otheraddrcap}
+% And if we meet anything else, we make it uppercase and add to the
+% list
+%    \begin{macrocode} 
+\def\@otheraddrcap#1{%
+  \@addr@cap=\expandafter{\the\@addr@cap%
+     \MakeUppercase{#1}\kern1pt\relax}
+  \@addrcaploop}
+%    \end{macrocode}
+%
+%
+% \DescribeMacro{\@addrcaploop}
+% This macro is simple. We just put the next token into "\EL@temp" and
+% process it through "\@addrcaploop@".
+%    \begin{macrocode}
+\def\@addrcaploop{\futurelet\EL@temp\@addrcaploop@}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@addrcaploop@}
+% This macro performs actual processing\dots
+%    \begin{macrocode}
+\def\@addrcaploop@{%
+  \ifx \@endaddress\EL@temp      \def\EL@tempa{\@finishaddrcap}    \else
+  \ifx .\EL@temp                 \def\EL@tempa{\@dotcommaaddrcap}  \else
+  \ifx ,\EL@temp                 \def\EL@tempa{\@dotcommaaddrcap}  \else
+  \ifx \voidb@x\EL@temp          \def\EL@tempa{\@dotcommaaddrcap}  \else
+  \ifx \unhbox\EL@temp            \def\EL@tempa{\@dotcommaaddrcap} \else
+  \ifx \\\EL@temp                \def\EL@tempa{\@newlineaddrcap}   \else
+  \ifx \bgroup\EL@temp           \def\EL@tempa{\@bgroupaddrcap}    \else
+  \ifx \@sptoken\EL@temp         \def\EL@tempa{\@spaceaddrcap}     \else
+                               \def\EL@tempa{\@otheraddrcap}
+  \fi\fi\fi\fi\fi\fi\fi\fi
+  \EL@tempa}
+%    \end{macrocode}
+%
+% \DescribeMacro{\@make@capitalize}
+%    \begin{macrocode}
+\long\def\@make@capitalize#1{%
+  \@addr@cap={\relax}
+  \@addrcaploop#1\@endaddress
+  \the\@addr@cap}
+%    \end{macrocode}
+%
+% 
+% \section{Games with \texttt{.aux} file}
+%
+% The commands described in this section write something to the
+% |.aux| file, and thus change the way \EL\ treats the labels and
+% envelopes. Since the action is delayed till the |.aux| file is
+% processed, these commands affect only the labels automatically 
+% extracted from the |letter| environment, and do not affect the 
+% labels explicitly defined by the |\mlabel| commands in the main 
+% file.
+%
+%
+% \changes{v1.2}{1996/09/07}{Added \cs{@@mlabel}}
+% \DescribeMacro{\@@mlabel}
+% The macro |\@@mlabel| stores the status of the |\@mlabel| as 
+% determined by |\makelabels|. It is a no-op at the start. 
+% If |\makelabels| redefines |\@mlabel|, we catch it through the 
+% |\AtEndDocument| hook. Note that since |\makelabel| is allowed 
+% only in the preamble, we are not in danger of redefining commands too
+% early.
+%    \begin{macrocode}
+\let\@@mlabel=\@gobbletwo
+\AtEndDocument{\let\@@mlabel=\@mlabel}
+%    \end{macrocode}
+%
+%
+% The next four commands redefine |\@mlabel| to suppress or resume
+%  printing  mailing labels.
+%
+% \begin{macro}{\suppresslabels}
+% \changes{v1.2}{1996/09/06}{Wrote new command}
+%  This command suppress printing labels and envelopes until it is
+%  resumed by |\resumelabels| or similar commands.
+%    \begin{macrocode}
+\def\suppresslabels{\if@filesw\immediate\write\@auxout{%
+  \string\@suppresslabels}\fi}
+%    \end{macrocode}
+%
+% \begin{macro}{\@suppresslabels}
+% \changes{v1.2}{1996/09/07}{Deleted the \cs{AtBeginDocument} hook}
+% This is the internal command that performs the actual
+% processing. 
+%    \begin{macrocode}
+\def\@suppresslabels{\let\@mlabel=\@gobbletwo}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\resumelabels}
+% \changes{v1.2}{1996/09/06}{Wrote new command}
+% \begin{macro}{\@resumelabels}
+% \changes{v1.2}{1996/09/07}{Changed \cs{mlabel} to \cs{@@mlabel} and 
+%   deleted the \cs{AtBeginDocument} hook}
+%  These commands resume printing labels and envelopes if it was
+%  suppressed by |\suppresslabels| or similar commands.
+%    \begin{macrocode}
+\def\resumelabels{\if@filesw\immediate\write\@auxout{%
+  \string\@resumelabels}\fi}
+\def\@resumelabels{\let\@mlabel=\@@mlabel}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\suppressonelabel}
+% \changes{v1.2}{1996/06/09}{Wrote new command}
+% \begin{macro}{\@suppressonelabel}
+% \changes{v1.2}{1996/09/07}{Deleted the \cs{AtBeginDocument} hook}
+% \begin{macro}{\@old@mlabel}
+%  These commands suppress printing of one label or envelope.
+%  The macro |\@old@mlabel| is used to store the
+% system state.
+%    \begin{macrocode}
+\def\suppressonelabel{\if@filesw\immediate\write\@auxout{%
+  \string\@suppressonelabel}\fi}
+\def\@suppressonelabel{\let\@old@mlabel=\@mlabel%
+  \def\@mlabel{%
+    \let\@mlabel=\@old@mlabel%
+    \@gobbletwo}}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\printonelabel}
+% \changes{v1.2}{1996/06/09}{Wrote new command}
+% \begin{macro}{\@printonelabel}
+% \changes{v1.2}{1996/09/07}{Changed \cs{mlabel} to \cs{@@mlabel} and 
+%   deleted the \cs{AtBeginDocument} hook}
+%  These commands resume printing for one label or envelope 
+% The macro |\@old@mlabel| is used to store the
+% system state.
+%    \begin{macrocode}
+\def\printonelabel{\if@filesw\immediate\write\@auxout{%
+  \string\@printonelabel}\fi}
+\def\@printonelabel{\let\@old@mlabel=\@mlabel%
+  \def\@mlabel{%
+    \let\@mlabel=\@old@mlabel%
+    \@@mlabel}}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\ChangeEnvelope}
+% \changes{v1.2}{1996/09/07}{Wrote new command}
+% \begin{macro}{\@ChangeEnvelope}
+% \begin{macro}{\@ChangeEnvelopeStar}
+% This macro writes |\@SetEnvelope| to the |.aux| file. It has 
+% two forms: starred and and unstarred. In the unstarred mode it also
+% writes |\@startlabels| to the |.aux| file. In the unstarred form it
+% does not.
+% Since we want to treat \emph{both} stars and optional arguments, we
+% introduce two internal commands that can be invoked by the main
+% macro. 
+%    \begin{macrocode}
+\def\ChangeEnvelope{\@ifstar{\@ChangeEnvelopeStar}{\@ChangeEnvelope}}
+\newcommand\@ChangeEnvelopeStar[3][0pt]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetEnvelope[#1]{#2}{#3}}%
+   \fi}
+\newcommand\@ChangeEnvelope[3][0pt]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetEnvelope[#1]{#2}{#3}}
+     \immediate\write\@auxout{\string\@startlabels}
+  \fi}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@SetEnvelope}
+% We define this command as no-op at beginning, and then redefine it 
+% before reading |.aux| file.
+%    \begin{macrocode}
+\def\@SetEnvelope[#1]#2#3{}
+\AtEndDocument{\let\@SetEnvelope=\SetEnvelope}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ChangeLabel}
+% \changes{v1.2}{1997/07/11}{Wrote new command}
+% \begin{macro}{\@ChangeLabel}
+% \begin{macro}{\@ChangeLabelStar}
+% This macro writes |\@SetLabel| to the |.aux| file. It has 
+% two forms: starred and and unstarred. In the unstarred mode it also
+% writes |\@startlabels| to the |.aux| file. In the unstarred form it
+% does not.
+% Since we want to treat \emph{both} stars and optional arguments, we
+% introduce two internal commands that can be invoked by the main
+% macro. 
+%    \begin{macrocode}
+\def\ChangeLabel{\@ifstar{\@ChangeLabelStar}{\@ChangeLabel}}
+\newcommand\@ChangeLabelStar[7]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
+   \fi}
+\newcommand\@ChangeLabel[7]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}
+     \immediate\write\@auxout{\string\@startlabels}
+  \fi}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@SetLabel}
+% We define this command as no-op at beginning, and then redefine it 
+% before reading |.aux| file.
+%    \begin{macrocode}
+\def\@SetLabel#1#2#3#4#5#6#7{}
+\AtEndDocument{\let\@SetLabel=\SetLabel}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ChangeBigLabel}
+% \changes{v1.2}{1997/07/13}{Wrote new command}
+% \begin{macro}{\@ChangeBigLabel}
+% \begin{macro}{\@ChangeBigLabelStar}
+% This macro writes |\@SetBigLabel| to the |.aux| file. It has 
+% two forms: starred and and unstarred. In the unstarred mode it also
+% writes |\@startlabels| to the |.aux| file. In the unstarred form it
+% does not.
+% Since we want to treat \emph{both} stars and optional arguments, we
+% introduce two internal commands that can be invoked by the main
+% macro. 
+%    \begin{macrocode}
+\def\ChangeBigLabel{\@ifstar{\@ChangeBigLabelStar}{\@ChangeBigLabel}}
+\newcommand\@ChangeBigLabelStar[7]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetBigLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
+   \fi}
+\newcommand\@ChangeBigLabel[7]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetBigLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}
+     \immediate\write\@auxout{\string\@startlabels}
+  \fi}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@SetLabel}
+% We define this command as no-op at beginning, and then redefine it 
+% before reading |.aux| file.
+%    \begin{macrocode}
+\def\@SetBigLabel#1#2#3#4#5#6#7{}
+\AtEndDocument{\let\@SetBigLabel=\SetBigLabel}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Reimplementation of the \cs{opening} command}
+% \DescribeMacro{\re}
+% Some people like to put below the address information like 
+% \begin{quote}
+% Re: our recent talk
+% \end{quote}
+% A way to do this is to include it in the address like this:
+% \begin{verbatim}
+% \begin{letter}{%
+%   Dr.~Austin Tankel\\
+%   Some University\\
+%   Anytown, Pa 12345\\[1ex]
+%   Re: Our recent talk}
+% \opening{Dear Austin:}
+% \end{verbatim}
+% However, this additional info will be put in the mailing label,
+% which is wrong.  Here we describe a macro that works like this:
+% \begin{verbatim}
+% \begin{letter}{%
+%   Dr.~Austin Tankel\\
+%   Some University\\
+%   Anytown, Pa 12345}
+% \re{Our recent talk}
+% \opening{Dear Austin:}
+% \end{verbatim}
+%
+% 
+% Now, the implementation.
+% First, lets us check whether the option "re" is chosen (otherwise we
+% don't bother to redefine the commands):
+%    \begin{macrocode}
+\if@EL@redefine@opening
+%    \end{macrocode}
+%
+% \begin{macro}{\re}
+% \changes{v1.2}{1997/07/14}{Wrote new command}
+% \begin{macro}{\recontentents}
+% \changes{v1.2}{1997/07/14}{Wrote new command}
+% The command "\re" just defines "\recontents". Also, we initialize
+% "\recontents" to be initially empty 
+%    \begin{macrocode}
+  \newcommand*{\re}[1]{\def\recontents{#1}}%
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\ReName}
+% \changes{v1.2}{1997/07/14}{Wrote new command}
+% By default it is just plain style ``Re: '' (note the space!)
+%    \begin{macrocode}
+  \def\ReName{Re: }%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\opening}
+% \changes{v1.2}{1997/07/14}{Reimplemented standard command
+%    \cs{opening}}
+% Now we redefine the standard "\opening" command to include the "\re"
+% info. Here is the quote from the standard "letter"
+% class~\cite{letter}: 
+% \begin{quotation}
+%     Text is begun with the |\opening| command, whose argument
+%     generates the salutation, as in
+%\begin{verbatim}
+%      \opening{Dear Henry,}
+%\end{verbatim}
+%    This should produce everything up to and including the
+%    `Dear Henry,' and a |\par| command that follows.
+%    Since there's a |\vfil| at the bottom of every page,
+%    it can add vertical fill to position a short letter.
+%    It should use the following commands:
+%   \begin{itemize}
+%   \item |\toname| : name part of `to' address.
+%                     Will be one line long.
+%   \item |\toaddress| : address part of `to' address.
+%                        The lines separated by |\\|.
+%   \item |\fromname| : name of sender.
+%   \item |\fromaddress| : argument of current |\address|
+%     declaration-- null if none.  Should use standard institutional
+%     address if null.
+%   \item |\fromlocation| : argument of current |\location|
+%     declaration--null if none.
+%   \item |\telephonenum| : argument of current |\telephone|
+%     declaration--null if none.
+%    \end{itemize}
+% \end{quotation}
+% We just "\ReName" and "\recontents" here\ldots
+%    \begin{macrocode}
+  \renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
+    \thispagestyle{firstpage}%
+      {\raggedleft\@date\par}%
+    \else  % home address
+      \thispagestyle{empty}%
+      {\raggedleft\begin{tabular}{l}\ignorespaces
+          \fromaddress \\*[2\parskip]%
+          \@date \end{tabular}\par}%
+    \fi
+    \vspace{2\parskip}%
+    {\raggedright \toname \\ \toaddress \par}%
+    \ifx\@empty\recontents\relax
+    \else
+       {\raggedright \ReName \recontents \par}%
+    \fi
+    \vspace{2\parskip}%
+    #1\par\nobreak}%
+%    \end{macrocode}
+% \end{macro}
+%
+% Now we close \cs{if@EL@redefine@opening}:
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+%
+% And the last line:
+%    \begin{macrocode}
+%</package>
+%    \end{macrocode}
+%
+% \Finale
+%
+% \clearpage
+% \addcontentsline{toc}{section}{\protect\refname}
+% \begin{thebibliography}{1}
+% \bibitem{Enum}
+% David Carlisle.
+% \newblock {\em The \textsf{enumerate} package}.
+% \newblock {CTAN}, v2.02 edition, January 1994.
+% \bibitem{letter}
+% Leslie Lamport, Frank Mittelbach, and Rainer Sch{\"o}pf.
+% \newblock Standard letter document class for {\LaTeX} version 2e.
+% \newblock CTAN, 199c.
+% \bibitem{Pub25}
+% USPS.
+% \newblock {\em Designing Business Letter Mail (Pub 25)}, August 1995.
+% \end{thebibliography}
+%
+% \clearpage
+% \addcontentsline{toc}{section}{Change History}
+% \PrintChanges
+%
+% \clearpage
+%  \addcontentsline{toc}{section}{Index}
+%  \PrintIndex
+%
+\endinput
diff --git a/envlab.ins b/envlab.ins
new file mode 100644 (file)
index 0000000..68e4ced
--- /dev/null
@@ -0,0 +1,25 @@
+\def\batchfile{envlab.ins}
+\input docstrip
+\keepsilent
+
+
+\declarepreamble\cfg
+
+You are allowed and encouraged to modify THIS file.
+
+The first part of this file contains default options for your site.
+The second part (inside AtEndOfPackage declaration) should contain
+customization commands specific to your site.
+
+Good luck
+
+\endpreamble
+
+\generate{%
+  \file{envlab.drv}{\from{envlab.dtx}{driver}}
+  \file{envlab.sty}{\from{envlab.dtx}{package}}
+  \usepreamble\empty\usepreamble\cfg\file{envlab.cfg}{\from{envlab.dtx}{cfg}}}
+
+
+
+
diff --git a/envlab.sty b/envlab.sty
new file mode 100644 (file)
index 0000000..9d63b5a
--- /dev/null
@@ -0,0 +1,617 @@
+%%
+%% This is file `envlab.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% envlab.dtx  (with options: `package')
+%% 
+%% IMPORTANT NOTICE:
+%% 
+%% For the copyright see the source file.
+%% 
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from envlab.sty.
+%% 
+%% For distribution of the original source see the terms
+%% for copying and modification in the file envlab.dtx.
+%% 
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesPackage{envlab}
+[1997/07/16 v1.2 Envelopes and Labels]
+%%
+%% Copyright Boris Veytsman 1996, 1997
+%%
+%%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%% \changes{v1.2}{1996/07/16}{Updated User Guide}
+\NeedsTeXFormat{LaTeX2e}
+\def\envlab@oops{%
+  \PackageError{envlab}%
+  {Envlab is used outside of \MessageBreak%
+   a letter-compatible documentclass}%
+  {You are trying to use Envelopes & Labels\MessageBreak%
+   package, but your documentclass does not\MessageBreak%
+   understand address formatting commands.\MessageBreak%
+   Try standard document class letter\MessageBreak}}
+\def\envlab@ok{%
+  \PackageInfo{envlab}%
+  {Envelopes & Labels package: found makelabels...\MessageBreak%
+  Seems everything is OK. Good luck.}}
+\@ifundefined{makelabels}{\envlab@oops}{\envlab@ok}
+\newif\if@envelope
+\@envelopetrue
+\newif\if@biglabel
+\@biglabelfalse
+\newif\if@rotateenvelopes
+\@rotateenvelopestrue
+\newif\if@printreturnaddress
+\@printreturnaddresstrue
+\newcount\@envelopeposition
+\@envelopeposition=0\relax
+\newif\if@pswait
+\@pswaitfalse
+\newif\if@psautotray
+\@psautotrayfalse
+\newtoks\PSEnvelopeTray
+\PSEnvelopeTray={/otherenvelopetray }
+\newif\if@barcodes
+\newif\if@alwaysbarcodes
+\@barcodestrue
+\@alwaysbarcodesfalse
+\newif\if@EL@redefine@opening
+\@EL@redefine@openingfalse
+\newif\if@capitalizeaddress
+\@capitalizeaddresstrue
+\newlength{\EnvelopeWidth}
+\newlength{\EnvelopeHeight}
+\newlength{\EnvelopeTopMargin}
+\newlength{\EnvelopeLeftMargin}
+\setlength{\EnvelopeLeftMargin}{0pt}
+\newlength{\LabelWidth}
+\newlength{\LabelHeight}
+\newlength{\LabelTopMargin}
+\newlength{\LabelLeftMargin}
+\newlength{\LabelRightMargin}
+\newcounter{LabelMaxCol}
+\newcounter{LabelMaxRow}
+\newlength{\FromAddressTopMargin}
+\newlength{\FromAddressLeftMargin}
+\newlength{\FromAddressHeight}
+\newlength{\FromAddressWidth}
+\newlength{\ToAddressTopMargin}
+\newlength{\ToAddressLeftMargin}
+\newlength{\ToAddressWidth}
+\DeclareRobustCommand{\SetEnvelope}[3][0pt]{%
+  \@envelopetrue%
+  \@biglabelfalse%
+  \setlength{\EnvelopeTopMargin}{#1}%
+  \setlength{\EnvelopeWidth}{#2}%
+  \setlength{\EnvelopeHeight}{#3}%
+  \setlength{\FromAddressTopMargin}{0.5in}%
+  \setlength{\FromAddressLeftMargin}{0.5in}%
+  \setlength{\FromAddressHeight}{0.33\EnvelopeHeight}%
+  \setlength{\FromAddressWidth}{0.5\EnvelopeWidth}%
+  \setlength{\ToAddressTopMargin}{0.5in}%
+  \setlength{\ToAddressLeftMargin}{0.5in}%
+  \setlength{\ToAddressWidth}{3in}}
+\DeclareRobustCommand{\SetLabel}[7]{%
+  \@envelopefalse%
+  \@biglabelfalse%
+  \setlength{\LabelWidth}{#1}%
+  \setlength{\LabelHeight}{#2}%
+  \setlength{\LabelTopMargin}{#3}%
+  \setlength{\LabelLeftMargin}{#4}%
+  \setlength{\LabelRightMargin}{#5}%
+  \setcounter{LabelMaxCol}{#6}%
+  \setcounter{LabelMaxRow}{#7}%
+  \setlength{\ToAddressTopMargin}{0.1in}%
+  \setlength{\ToAddressLeftMargin}{0.2in}%
+  \setlength{\ToAddressWidth}{\LabelWidth}%
+  \addtolength{\ToAddressWidth}{-\ToAddressLeftMargin}%
+  \addtolength{\ToAddressWidth}{-\LabelRightMargin}}
+\DeclareRobustCommand{\SetBigLabel}[7]{%
+  \@envelopefalse%
+  \@biglabeltrue%
+  \setlength{\LabelWidth}{#1}%
+  \setlength{\LabelHeight}{#2}%
+  \setlength{\LabelTopMargin}{#3}%
+  \setlength{\LabelLeftMargin}{#4}%
+  \setlength{\LabelRightMargin}{#5}%
+  \setcounter{LabelMaxCol}{#6}%
+  \setcounter{LabelMaxRow}{#7}%
+  \setlength{\FromAddressTopMargin}{0.0in}%
+  \setlength{\FromAddressLeftMargin}{0.5in}%
+  \setlength{\FromAddressHeight}{0.33\LabelHeight}%
+  \setlength{\ToAddressTopMargin}{0.1in}%
+  \setlength{\ToAddressLeftMargin}{0.5in}%
+  \setlength{\ToAddressWidth}{\LabelWidth}%
+  \addtolength{\ToAddressWidth}{-\ToAddressLeftMargin}%
+  \addtolength{\ToAddressWidth}{-\LabelRightMargin}%
+  \setlength{\FromAddressWidth}{\ToAddressWidth}}
+\DeclareOption{businessenvelope}{\SetEnvelope{9.5in}{4.125in}%
+  \PSEnvelopeTray={/com10envelopetray }}
+\DeclareOption{executiveenvelope}{\SetEnvelope{7.5in}{3.875in}%
+  \PSEnvelopeTray={/monarcenvelopetray }}
+\DeclareOption{bookletenvelope}{\SetEnvelope{10.5in}{7.5in}}
+\DeclareOption{personalenvelope}{\SetEnvelope{6.5in}{3.625in}}
+\DeclareOption{c6envelope}{\SetEnvelope{162mm}{114mm}}
+\DeclareOption{c65envelope}{\SetEnvelope{224mm}{114mm}}
+\DeclareOption{c5envelope}{\SetEnvelope{229mm}{162mm}%
+  \PSEnvelopeTray={/162x229cenvelopetray }}
+\DeclareOption{dlenvelope}{\SetEnvelope{220mm}{110mm}%
+  \PSEnvelopeTray={/dlenvelopetray }}
+\DeclareOption{avery5160label}{%
+  \SetLabel{2.75in}{1in}{0.5in}{0.19in}{0.12in}{3}{10}}
+\DeclareOption{avery5161label}{%
+  \SetLabel{4.19in}{1in}{0.5in}{0.16in}{0.19in}{2}{10}}
+\DeclareOption{avery5162label}{%
+  \SetLabel{4.19in}{1.33in}{0.83in}{0.16in}{0.19in}{2}{7}}
+\DeclareOption{avery5163label}{%
+  \SetLabel{4.19in}{2in}{0.5in}{0.16in}{0.19in}{2}{5}}
+\DeclareOption{avery5164label}{%
+  \SetLabel{4.19in}{3.33in}{0.5in}{0.16in}{0.19in}{2}{3}}
+\DeclareOption{herma4625label}{%
+  \SetLabel{105mm}{42.3mm}{0mm}{5mm}{5mm}{2}{7}}
+\DeclareOption{avery5262label}{%
+  \SetLabel{110mm}{34mm}{21mm}{4mm}{5mm}{2}{7}}
+\DeclareOption{avery5163biglabel}{%
+  \SetBigLabel{4.19in}{2in}{0.5in}{0.16in}{0.19in}{2}{5}%
+  \setlength{\ToAddressTopMargin}{0.1in}}%
+\DeclareOption{avery5164biglabel}{%
+  \SetBigLabel{4.19in}{3.33in}{0.5in}{0.16in}{0.19in}{2}{3}}%
+\DeclareOption{rotateenvelopes}{\@rotateenvelopestrue}
+\DeclareOption{norotateenvelopes}{\@rotateenvelopesfalse}
+\DeclareOption{centerenvelopes}{\@envelopeposition=0\relax}
+\DeclareOption{leftenvelopes}{\@envelopeposition=1\relax}
+\DeclareOption{rightenvelopes}{\@envelopeposition=2\relax}
+\DeclareOption{customenvelopes}{\@envelopeposition=3\relax}
+\DeclareOption{printbarcodes}{\@barcodestrue}
+\DeclareOption{noprintbarcodes}{\@barcodesfalse\@alwaysbarcodesfalse}
+\DeclareOption{alwaysbarcodes}{\@alwaysbarcodestrue\@barcodestrue}
+\DeclareOption{noalwaysbarcodes}{\@alwaysbarcodesfalse}
+\DeclareOption{capaddress}{\@capitalizeaddresstrue}
+\DeclareOption{nocapaddress}{\@capitalizeaddressfalse}
+\DeclareOption{printreturnaddress}{\@printreturnaddresstrue}
+\DeclareOption{noprintreturnaddress}{\@printreturnaddressfalse}
+\DeclareOption{pswait}{\@pswaittrue\@psautotrayfalse}
+\DeclareOption{nopswait}{\@pswaitfalse}
+\DeclareOption{psautotray}{\@psautotraytrue\@pswaitfalse}
+\DeclareOption{nopsautotray}{\@psautotrayfalse}
+\DeclareOption{re}{\@EL@redefine@openingtrue}
+\DeclareOption{nore}{\@EL@redefine@openingfalse}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{graphics}}
+\ExecuteOptions{businessenvelope,rotateenvelopes,centerenvelopes}
+\ExecuteOptions{printbarcodes,capaddress}
+\ExecuteOptions{nopswait,printreturnaddress,nopsautotray,nore}
+\InputIfFileExists{envlab.cfg}{%
+  \typeout{Loading configuration file envlab.cfg}}{%
+  \typeout{Configuration file envlab.cfg is not found}}
+\ProcessOptions
+\IfFileExists{graphics.sty}{%
+  \RequirePackage{graphics}}{%
+  \PackageWarning{envlab}{%
+    You don't have the graphics package!\MessageBreak
+    Probably you will not be able to print\MessageBreak
+    envelopes sidewise. \MessageBreak}}
+\def\@beginlabelshook{\relax}
+\def\@beginlabelpagehook{\relax}
+\def\AtBeginLabels{\g@addto@macro\@beginlabelshook}
+\def\AtBeginLabelPage{\g@addto@macro\@beginlabelpagehook}
+\def\PSwait{\special{ps: clear grestore @manualfeed 0 0 bop}}
+\edef\PSautotray{%
+  \special{ps:clear grestore
+    statusdict begin false setduplexmode
+    /manualfeed true def
+    \the\PSEnvelopeTray end 0 0 bop }}
+\if@pswait
+  \AtBeginLabels{\PSwait}%
+\else
+  \if@psautotray
+    \AtBeginLabels{\PSautotray}%
+  \fi
+\fi
+\newcounter{LabelCountCol}
+\newcounter{LabelCountRow}
+\newcounter{LabelOffsetCol}
+\newcounter{LabelOffsetRow}
+\setcounter{LabelOffsetCol}{1}
+\setcounter{LabelOffsetRow}{1}
+\DeclareRobustCommand{\FirstLabel}[2]{%
+  \setcounter{LabelOffsetRow}{#1}%
+  \setcounter{LabelOffsetCol}{#2}}
+\def\@toaddressfont{%
+  \ifcase\@ptsize \normalsize\or\small\fi%
+  \rmfamily\selectfont}
+\def\@fromaddressfont{%
+  \ifcase\@ptsize \normalsize\or\small\or\footnotesize\fi%
+  \normalfont}
+\def\returnaddress{\fromaddress}
+\def\startlabels{%
+  \clearpage%
+  \pagestyle{empty}%
+  \setlength{\topmargin}{-1.0in}%
+  \if@envelope%
+    \addtolength{\topmargin}{\EnvelopeTopMargin}%
+    \else \addtolength{\topmargin}{\LabelTopMargin}%
+  \fi%
+  \setlength{\headheight}{0pt}%
+  \setlength{\headsep}{0pt}%
+  \setlength{\footskip}{0pt}%
+  \setlength{\textheight}{200in}%
+  \setlength\paperheight{\textheight}%
+  \global\vsize=200in\relax%
+  \addtolength{\textheight}{-\topmargin}%
+  \addtolength{\textheight}{-1.0in}%
+  \setlength{\oddsidemargin}{-1.0in}%
+  \if@envelope\relax%
+  \else%
+     \addtolength{\oddsidemargin}{\LabelLeftMargin}%
+  \fi%
+  \setlength{\evensidemargin}{\oddsidemargin}%
+  \setlength{\textwidth}{20in}%
+  \hsize=20in%
+  \baselineskip=0pt%
+  \lineskip=0pt%
+  \parindent=0pt%
+  \if@envelope
+    \ifcase\the\@envelopeposition%
+      \setlength{\EnvelopeLeftMargin}{\paperwidth}%
+      \if@rotateenvelopes%
+        \addtolength{\EnvelopeLeftMargin}{-\EnvelopeHeight}%
+      \else%
+        \addtolength{\EnvelopeLeftMargin}{-\EnvelopeWidth}%
+      \fi%
+      \setlength{\EnvelopeLeftMargin}{0.5\EnvelopeLeftMargin}%
+    \or%
+      \setlength{\EnvelopeLeftMargin}{0pt}%
+    \or%
+      \setlength{\EnvelopeLeftMargin}{\paperwidth}%
+      \if@rotateenvelopes%
+        \addtolength{\EnvelopeLeftMargin}{-\EnvelopeHeight}%
+      \else%
+        \addtolength{\EnvelopeLeftMargin}{-\EnvelopeWidth}%
+      \fi%
+    \else%
+      \relax%
+    \fi%
+  \else%
+    \setcounter{LabelCountCol}{\theLabelOffsetCol}%
+    \setcounter{LabelCountRow}{\theLabelOffsetRow}%
+    \ifnum\theLabelOffsetRow>1%
+      \null%
+      \loop \vspace*{\LabelHeight}%
+        \addtocounter{LabelOffsetRow}{-1} \ifnum\theLabelOffsetRow>1%
+      \repeat%
+    \fi%
+    \ifnum\theLabelOffsetCol>1%
+      \loop \hspace*{\LabelWidth}\nolinebreak%
+        \addtocounter{LabelOffsetCol}{-1} \ifnum\theLabelOffsetCol>1%
+      \repeat%
+    \fi%
+    \nopagebreak%
+  \fi%
+  \spaceskip0pt\relax%
+  \xspaceskip 0pt\relax%
+  \clubpenalty=0%
+  \widowpenalty=0%
+  \raggedbottom%
+  \sloppy%
+  \setlength\hfuzz{5in}%
+  \setlength\vfuzz{5in}%
+  \ignorespaces%
+  \@beginlabelshook%
+  \@beginlabelpagehook%
+  \nopagebreak}%
+\newcommand{\PrintReturnAddress}[1]{%
+  \vspace*{\FromAddressTopMargin}
+  \null\hspace{\FromAddressLeftMargin}
+  \parbox[t][\FromAddressHeight]{\FromAddressWidth}%
+    {\@fromaddressfont \lineskip=1pt
+      \if@printreturnaddress #1\else\relax\fi}}
+\newcommand{\PrintAddress}[1]{%
+  \vspace*{\ToAddressTopMargin}
+  \leavevmode
+  \null\hspace*{\ToAddressLeftMargin}
+  \parbox[t]{\ToAddressWidth}{%
+    \lineskip=1pt
+    \if@barcodes \PrintBarCode{#1} \fi
+    \@toaddressfont
+    \if@capitalizeaddress \@make@capitalize{#1} \else #1 \fi}}
+\newcommand{\PrintLabel}[1]{%
+  \parbox[t][\LabelHeight]{\LabelWidth}{%
+    \PrintAddress{#1}}}
+\newcommand{\PrintBigLabel}[2]{%
+  \begin{minipage}[t][\LabelHeight]{\LabelWidth}%
+    \baselineskip=0pt%
+    \lineskip=0pt%
+    \parindent=0pt%
+    \begin{center}%
+      \PrintReturnAddress{#1}\\%
+      \rule{\ToAddressWidth}{0.1pt}%
+      \PrintAddress{#2}%
+    \end{center}%
+  \end{minipage}}
+\newcommand{\PrintEnvelope}[2]{%
+  \begin{minipage}[t][\EnvelopeHeight]{\EnvelopeWidth}%
+    \baselineskip=0pt%
+    \lineskip=0pt%
+    \parindent=0pt%
+    \PrintReturnAddress{#1}\\%
+    \begin{center}%
+      \PrintAddress{#2}%
+    \end{center}%
+  \end{minipage}}
+\newcommand{\@PrintEnvelope}[2]{%
+  \if@rotateenvelopes\rotatebox{90}{\PrintEnvelope{#1}{#2}}%
+  \else\PrintEnvelope{#1}{#2}%
+  \fi}
+\renewcommand{\mlabel}[2]{\ignorespaces%
+  \spaceskip 0pt\relax%
+  \xspaceskip 0pt\relax%
+  \if@envelope%
+    \leavevmode%
+    \hspace*{\EnvelopeLeftMargin}%
+    \@PrintEnvelope{#1}{#2}%
+    \clearpage%
+    \@beginlabelpagehook%
+  \else%
+    \ignorespaces%
+    \ifnum\theLabelCountCol>\theLabelMaxCol%
+      \\\nopagebreak%
+      \stepcounter{LabelCountRow}%
+      \setcounter{LabelCountCol}{1}%
+    \fi%
+    \ifnum\theLabelCountRow>\theLabelMaxRow%
+      \vfill\eject\@beginlabelpagehook%
+      \setcounter{LabelCountRow}{1}%
+      \setcounter{LabelCountCol}{1}%
+    \fi%
+    \if@biglabel%
+        \PrintBigLabel{#1}{#2}%
+    \else%
+        \PrintLabel{#2}%
+    \fi%
+    \ignorespaces\nolinebreak%
+    \stepcounter{LabelCountCol}%
+  \fi}%
+\newcount\@numreturnlabels
+\newcommand{\printreturnlabels}[2]{%
+  \@numreturnlabels=#1
+  \def\@toaddressfont{\@fromaddressfont}
+  \@capitalizeaddressfalse
+  \@barcodesfalse
+  \startlabels
+  \loop \mlabel{\relax}{#2} \advance\@numreturnlabels by -1
+    \ifnum\@numreturnlabels>0\repeat}
+\newcommand{\PrintBarCode}[1]{%
+  \@extractbarcode{#1}
+  \@printbarcode}
+\newtoks\@zipcode
+\newcount\@zipcodesum
+\newif\if@zipcodefound
+\long\def\@finishzipcode#1{}
+\long\def\@firstzipcode#1{%
+  \@zipcode{#1}
+  \@zipcodesum=#1\relax
+  \@zipcodefoundtrue
+  \@zipcodeloop}
+\long\def\@continuezipcode#1{%
+  \@zipcode=\expandafter{\the\@zipcode#1}
+  \advance\@zipcodesum by #1
+  \@zipcodeloop}
+\long\def\@dashzipcode#1{\@zipcodeloop}
+\def\@spacezipcode{%
+  \@zipcodefoundfalse
+  \afterassignment\@zipcodeloop\let\EL@temp= }
+\long\def\@abortzipcode#1{%
+  \@zipcodefoundfalse
+  \@zipcodeloop}
+\def\@zipcodeloop{\futurelet\EL@temp\@zipcodeloop@}
+\def\@zipcodeloop@{%
+  \ifx \@endaddress\EL@temp      \def\EL@tempa{\@finishzipcode}    \else
+  \ifx 0\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 1\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 2\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 3\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 4\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 5\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 6\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 7\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 8\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx 9\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode}
+               \else           \def\EL@tempa{\@firstzipcode} \fi \else
+  \ifx -\EL@temp \if@zipcodefound \def\EL@tempa{\@dashzipcode}
+               \else           \def\EL@tempa{\@abortzipcode} \fi \else
+  \ifx \@sptoken\EL@temp         \def\EL@tempa{\@spacezipcode}     \else
+                               \def\EL@tempa{\@abortzipcode}
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \EL@tempa}
+\long\def\@extractbarcode#1{%
+  \@zipcodefoundfalse
+  \@zipcodeloop#1\@endaddress
+  \if@alwaysbarcodes \@zipcodefoundtrue \fi
+  \if@zipcodefound
+    \ifnum\the\@zipcodesum>0
+      \loop \advance \@zipcodesum by -10 \ifnum\the\@zipcodesum>0
+      \repeat
+    \fi
+    \multiply\@zipcodesum by -1
+  \fi}
+\newlength{\@barcodewidth}
+\newlength{\@barcodeLheight}
+\newlength{\@barcodeSheight}
+\newlength{\@barcodeskip}
+\setlength{\@barcodewidth}{0.020in}
+\setlength{\@barcodeLheight}{0.125in}
+\setlength{\@barcodeSheight}{0.050in}
+\setlength{\@barcodeskip}{0.026in}
+\DeclareRobustCommand{\@barL}{%
+  \rule{\@barcodewidth}{\@barcodeLheight}\hspace{\@barcodeskip}}
+\DeclareRobustCommand{\@barS}{%
+  \rule{\@barcodewidth}{\@barcodeSheight}\hspace{\@barcodeskip}}
+\def\@printonezip#1{%
+  \ifx1#1\@barS\@barS\@barS\@barL\@barL\else
+  \ifx2#1\@barS\@barS\@barL\@barS\@barL\else
+  \ifx3#1\@barS\@barS\@barL\@barL\@barS\else
+  \ifx4#1\@barS\@barL\@barS\@barS\@barL\else
+  \ifx5#1\@barS\@barL\@barS\@barL\@barS\else
+  \ifx6#1\@barS\@barL\@barL\@barS\@barS\else
+  \ifx7#1\@barL\@barS\@barS\@barS\@barL\else
+  \ifx8#1\@barL\@barS\@barS\@barL\@barS\else
+  \ifx9#1\@barL\@barS\@barL\@barS\@barS\else
+  \ifx0#1\@barL\@barL\@barS\@barS\@barS\else
+  \ifx S#1\def\EL@tempa{\relax}%
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+  \EL@tempa}
+\def\@printbarcode{%
+  \if@zipcodefound
+   \mbox{%
+    \@barL%
+    \def\EL@tempa{\@printonezip}%
+    \expandafter\EL@tempa\the\@zipcode S%
+    \def\EL@tempa{\@printonezip}%
+    \expandafter\EL@tempa\the\@zipcodesum S%
+    \@barL}
+    \\[1ex]
+  \fi}
+\newtoks\@addr@cap
+\long\def\@finishaddrcap#1{}
+\long\def\@dotcommaaddrcap#1{%
+  \@addrcaploop}
+\long\def\@newlineaddrcap#1{%
+  \@addr@cap=\expandafter{\the\@addr@cap #1}
+  \@addrcaploop}
+\long\def\@bgroupaddrcap#1{%
+  \@addr@cap=\expandafter{\the\@addr@cap {\MakeUppercase{#1}}}
+  \@addrcaploop}
+\def\@spaceaddrcap{%
+  \@addr@cap=\expandafter{\the\@addr@cap\hspace{0.6em}}
+  \afterassignment\@addrcaploop\let\EL@temp= }
+\def\@otheraddrcap#1{%
+  \@addr@cap=\expandafter{\the\@addr@cap%
+     \MakeUppercase{#1}\kern1pt\relax}
+  \@addrcaploop}
+\def\@addrcaploop{\futurelet\EL@temp\@addrcaploop@}
+\def\@addrcaploop@{%
+  \ifx \@endaddress\EL@temp      \def\EL@tempa{\@finishaddrcap}    \else
+  \ifx .\EL@temp                 \def\EL@tempa{\@dotcommaaddrcap}  \else
+  \ifx ,\EL@temp                 \def\EL@tempa{\@dotcommaaddrcap}  \else
+  \ifx \voidb@x\EL@temp          \def\EL@tempa{\@dotcommaaddrcap}  \else
+  \ifx \unhbox\EL@temp            \def\EL@tempa{\@dotcommaaddrcap} \else
+  \ifx \\\EL@temp                \def\EL@tempa{\@newlineaddrcap}   \else
+  \ifx \bgroup\EL@temp           \def\EL@tempa{\@bgroupaddrcap}    \else
+  \ifx \@sptoken\EL@temp         \def\EL@tempa{\@spaceaddrcap}     \else
+                               \def\EL@tempa{\@otheraddrcap}
+  \fi\fi\fi\fi\fi\fi\fi\fi
+  \EL@tempa}
+\long\def\@make@capitalize#1{%
+  \@addr@cap={\relax}
+  \@addrcaploop#1\@endaddress
+  \the\@addr@cap}
+\let\@@mlabel=\@gobbletwo
+\AtEndDocument{\let\@@mlabel=\@mlabel}
+\def\suppresslabels{\if@filesw\immediate\write\@auxout{%
+  \string\@suppresslabels}\fi}
+\def\@suppresslabels{\let\@mlabel=\@gobbletwo}
+\def\resumelabels{\if@filesw\immediate\write\@auxout{%
+  \string\@resumelabels}\fi}
+\def\@resumelabels{\let\@mlabel=\@@mlabel}
+\def\suppressonelabel{\if@filesw\immediate\write\@auxout{%
+  \string\@suppressonelabel}\fi}
+\def\@suppressonelabel{\let\@old@mlabel=\@mlabel%
+  \def\@mlabel{%
+    \let\@mlabel=\@old@mlabel%
+    \@gobbletwo}}
+\def\printonelabel{\if@filesw\immediate\write\@auxout{%
+  \string\@printonelabel}\fi}
+\def\@printonelabel{\let\@old@mlabel=\@mlabel%
+  \def\@mlabel{%
+    \let\@mlabel=\@old@mlabel%
+    \@@mlabel}}
+\def\ChangeEnvelope{\@ifstar{\@ChangeEnvelopeStar}{\@ChangeEnvelope}}
+\newcommand\@ChangeEnvelopeStar[3][0pt]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetEnvelope[#1]{#2}{#3}}%
+   \fi}
+\newcommand\@ChangeEnvelope[3][0pt]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetEnvelope[#1]{#2}{#3}}
+     \immediate\write\@auxout{\string\@startlabels}
+  \fi}
+\def\@SetEnvelope[#1]#2#3{}
+\AtEndDocument{\let\@SetEnvelope=\SetEnvelope}
+\def\ChangeLabel{\@ifstar{\@ChangeLabelStar}{\@ChangeLabel}}
+\newcommand\@ChangeLabelStar[7]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
+   \fi}
+\newcommand\@ChangeLabel[7]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}
+     \immediate\write\@auxout{\string\@startlabels}
+  \fi}
+\def\@SetLabel#1#2#3#4#5#6#7{}
+\AtEndDocument{\let\@SetLabel=\SetLabel}
+\def\ChangeBigLabel{\@ifstar{\@ChangeBigLabelStar}{\@ChangeBigLabel}}
+\newcommand\@ChangeBigLabelStar[7]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetBigLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
+   \fi}
+\newcommand\@ChangeBigLabel[7]{%
+  \if@filesw\immediate\write\@auxout{%
+       \string\@SetBigLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}
+     \immediate\write\@auxout{\string\@startlabels}
+  \fi}
+\def\@SetBigLabel#1#2#3#4#5#6#7{}
+\AtEndDocument{\let\@SetBigLabel=\SetBigLabel}
+\if@EL@redefine@opening
+  \newcommand*{\re}[1]{\def\recontents{#1}}%
+  \def\ReName{Re: }%
+  \renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
+    \thispagestyle{firstpage}%
+      {\raggedleft\@date\par}%
+    \else  % home address
+      \thispagestyle{empty}%
+      {\raggedleft\begin{tabular}{l}\ignorespaces
+          \fromaddress \\*[2\parskip]%
+          \@date \end{tabular}\par}%
+    \fi
+    \vspace{2\parskip}%
+    {\raggedright \toname \\ \toaddress \par}%
+    \ifx\@empty\recontents\relax
+    \else
+       {\raggedright \ReName \recontents \par}%
+    \fi
+    \vspace{2\parskip}%
+    #1\par\nobreak}%
+\fi
+\endinput
+%%
+%% End of file `envlab.sty'.
diff --git a/mitletter1.cls b/mitletter1.cls
new file mode 100644 (file)
index 0000000..1ddb16d
--- /dev/null
@@ -0,0 +1,97 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{mitletter1}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{letter}}
+\ProcessOptions
+\LoadClass{letter}
+\usepackage[dvips]{graphics}
+\usepackage[businessenvelope]{envlab}
+
+\raggedright
+\setlength{\topmargin}{-1in}
+\setlength{\oddsidemargin}{.25in}
+\setlength{\evensidemargin}{.25in}
+\setlength{\textwidth}{6.5in}
+\setlength{\textheight}{8in}
+\setlength{\headsep}{1in}
+\setlength{\footskip}{1.625in}
+
+\DeclareFixedFont{\boldfont}{OT1}{cmss}{bx}{n}{8}
+\DeclareFixedFont{\regularfont}{OT1}{cmss}{m}{n}{8}
+\DeclareFixedFont{\boldfontb}{OT1}{cmss}{bx}{n}{9}
+\DeclareFixedFont{\regularfontb}{OT1}{cmss}{m}{n}{9}
+\DeclareFixedFont{\italicfont}{OT1}{cmr}{m}{it}{10}
+
+
+\renewcommand{\ps@headings}{% 
+  \let\@oddfoot\@empty\let\@evenfoot\@empty
+      \def\@oddhead{\slshape\headtoname{} \ignorespaces\toname
+                    \@date
+                    \hfil \pagename{} \thepage}%
+      \let\@evenhead\@oddhead}
+\renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
+  \thispagestyle{firstpage}%
+    \@date\\%
+  \else  % home address
+    \thispagestyle{empty}%
+    {\raggedleft\begin{tabular}{l@{}}\ignorespaces
+      \fromaddress \\*[2\parskip]%
+      \@date \end{tabular}\par}%
+  \fi
+  \vspace{2\parskip}%
+  {\raggedright \toname \\ \toaddress \par}%
+  \vspace{2\parskip}%
+  #1\par\nobreak\reversemarginpar\marginpar{\hspace*{.35in}\raisebox{.2in}{\scalebox{.33}{\includegraphics*{mitlogo.eps}}}\normalmarginpar}}
+\renewcommand*{\signature}[1]{\def\fromsig{\italicfont #1}}
+\newcommand{\officename}{Office Name}
+\newcommand{\associateofficename}{Associate Office Name}
+\newcommand{\roomnumber}{X00-000}
+\newcommand{\phonenum}{617.000.0000}
+\newcommand{\faxnum}{617.000.0000}
+\newcommand{\website}{web.mit.edu/abcdefghijk}
+\newcommand{\email}{user@mit.edu}
+\newcommand{\person}{Your name}
+\newcommand{\ID}{Your title}
+
+\newsavebox{\headone}
+\sbox{\headone}{\parbox[t]{2.5in}{\boldfont{Massachusetts Institute of Technology}}}
+\newsavebox{\headtwo}
+\sbox{\headtwo}
+     {\parbox[t]{2in}{\setlength{\baselineskip}{9.2pt}\boldfontb{\person}\\\regularfontb{\ID}}}
+\newsavebox{\headthree}
+\sbox{\headthree}
+     {\parbox[t]{2in}{\setlength{\baselineskip}{9.2pt}\boldfont{\officename}\\
+       \regularfont{Building \roomnumber}}}
+\newsavebox{\headfour}
+\sbox{\headfour}
+     {\parbox[t]{2in}{\setlength{\baselineskip}{9.2pt}\regularfont{77 Massachusetts Avenue}\\
+       \regularfont{Cambridge, Massachusetts}\\
+       \regularfont{02139-4307}}}
+\newsavebox{\headfive}
+\sbox{\headfive}
+     {\parbox[t]{2in}{\setlength{\baselineskip}{9.2pt}\regularfont{Phone \hspace{.13cm}\phonenum}\\
+       \regularfont{Fax \hspace{.47cm}\faxnum}\\
+       \regularfont{Email \hspace{.22cm}\email}\\
+       \regularfont{\website}}}
+\newsavebox{\header}
+\sbox{\header}
+     {\begin{tabular*}{\textwidth}{lll@{\extracolsep{\fill}}}
+        \usebox{\headone} & \usebox{\headtwo} & \usebox{\headfour} \\
+        & \usebox{\headthree} & \raisebox{-.1in}{\usebox{\headfive}}
+     \end{tabular*}}
+
+\newsavebox{\envelope}
+\sbox{\envelope}
+     {\parbox[t]{7cm}{\setlength{\baselineskip}{9.2pt}\boldfont{\officename\\\associateofficename\\\\Massachusetts Institute of Technology}\\\regularfont{77 Massachusetts Avenue, Building \roomnumber} \\\regularfont{Cambridge, MA 02139-4307} \\\\\\\\\\\\\\\\ \scalebox{.30}{\includegraphics*{mitlogo.eps}}}}
+
+\renewcommand{\returnaddress}{\protect\usebox{\envelope}}
+
+
+\renewcommand{\ps@firstpage}
+            {\setlength{\headheight}{70pt}\setlength{\headsep}{25pt}%
+              \renewcommand{\@oddhead}{\usebox{\header}}%
+              \renewcommand{\@evenhead}{}\renewcommand{\@evenfoot}{}}
+
+\providecommand{\@evenhead}{}\providecommand{\@oddhead}{}
+\providecommand{\@evenfoot}{}\providecommand{\@oddfoot}{}
+
+\pagestyle{headings}
diff --git a/mitlogo.eps b/mitlogo.eps
new file mode 100644 (file)
index 0000000..1b5ebac
--- /dev/null
@@ -0,0 +1,2160 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 145 75
+%%HiResBoundingBox: 0.000000 0.000000 145.000000 75.000000
+%...........................................
+%%Creator: AFPL Ghostscript 703 (epswrite)
+%%CreationDate: 2003/07/01 16:59:26
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+% This copyright applies to everything between here and the %%EndProlog:
+% Copyright (C) 2001 artofcode LLC, Benicia, CA.  All rights reserved.
+%%BeginResource: procset GS_epswrite_2_0_1001
+/GS_epswrite_2_0_1001 80 dict dup begin
+/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch
+4 index eq and{ pop pop pop}{ PageSize dup  1
+5 -1 roll put 0 4 -1 roll put dup where{ exch get exec}
+{ pop/setpagedevice where
+{ pop 1 dict dup /PageSize PageSize put setpagedevice}
+{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat
+setpage}if}ifelse}ifelse}ifelse} bind def
+/!{bind def}bind def/#{load def}!/N/counttomark #
+/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
+/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
+/w/setlinewidth #/J/setlinecap #
+/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
+/m/moveto #/l/lineto #/c/rcurveto #
+/p{N 2 idiv{N -2 roll rlineto}repeat}!
+/P{N 0 gt{N -2 roll moveto p}if}!
+/h{p closepath}!/H{P closepath}!
+/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
+/re{4 -2 roll m exch dup lx exch ly neg lx h}!
+/^{3 index neg 3 index neg}!
+/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
+/q/gsave #/Q/grestore #/rf{re fill}!
+/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}!
+/|={pop exch 4 1 roll 3 array astore cvx exch 1 index def exec}!
+/|{exch string readstring |=}!
+/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
+/@/currentfile #/${+ @ |}!
+/B{{2 copy string{readstring pop}aload pop 4 array astore cvx
+3 1 roll}repeat pop pop true}!
+/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
+/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
+/Ic{exch Ix false 3 colorimage}!
+/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>>
+/CCITTFaxDecode filter}!/FX{<</EndOfBlock false F}!
+/X{/ASCII85Decode filter}!/@X{@ X}!/&2{2 index 2 index}!
+/@F{@ &2<<F}!/@C{@X &2 FX}!
+/$X{+ @X |}!/&4{4 index 4 index}!/$F{+ @ &4<<F |}!/$C{+ @X &4 FX |}!
+/IC{3 1 roll 10 dict begin 1{/ImageType/Interpolate/Decode/DataSource
+/ImageMatrix/BitsPerComponent/Height/Width}{exch def}forall
+currentdict end image}!
+end readonly def
+%%EndResource
+/pagesave null def
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+GS_epswrite_2_0_1001 begin
+/pagesave save store 100 dict begin
+0.1 0.1 scale
+%%EndPageSetup
+gsave mark
+K
+0 0 0 0 rf
+Q q
+0 0 10 10 re
+Y
+10 w
+K
+1000 1000 10 10 S
+41 31 34 rG
+Q q
+0 0 250000 0 0 250000 ^ Y
+0 740 160 10 rf
+252 255 253 rG
+160 740 90 10 rf
+143 149 r3
+250 740 10 10 rf
+41 31 34 rG
+260 740 150 10 rf
+143 149 r3
+410 740 10 10 rf
+252 255 253 rG
+420 740 90 10 rf
+99 100 102 rG
+510 740 10 10 rf
+41 31 34 rG
+520 740 150 10 rf
+194 199 201 rG
+670 740 10 10 rf
+252 255 253 rG
+680 740 90 10 rf
+41 31 34 rG
+770 740 160 10 rf
+252 255 253 rG
+930 740 90 10 rf
+194 199 201 rG
+1020 740 10 10 rf
+41 31 34 rG
+1030 740 410 10 rf
+143 149 r3
+1440 740 10 10 rf
+41 31 34 rG
+0 730 160 10 rf
+252 255 253 rG
+160 730 90 10 rf
+143 149 r3
+250 730 10 10 rf
+41 31 34 rG
+260 730 150 10 rf
+143 149 r3
+410 730 10 10 rf
+252 255 253 rG
+420 730 90 10 rf
+99 100 102 rG
+510 730 10 10 rf
+41 31 34 rG
+520 730 150 10 rf
+194 199 201 rG
+670 730 10 10 rf
+252 255 253 rG
+680 730 90 10 rf
+41 31 34 rG
+770 730 160 10 rf
+252 255 253 rG
+930 730 90 10 rf
+194 199 201 rG
+1020 730 10 10 rf
+41 31 34 rG
+1030 730 410 10 rf
+143 149 r3
+1440 730 10 10 rf
+41 31 34 rG
+0 720 160 10 rf
+252 255 253 rG
+160 720 90 10 rf
+143 149 r3
+250 720 10 10 rf
+41 31 34 rG
+260 720 150 10 rf
+143 149 r3
+410 720 10 10 rf
+252 255 253 rG
+420 720 90 10 rf
+99 100 102 rG
+510 720 10 10 rf
+41 31 34 rG
+520 720 150 10 rf
+194 199 201 rG
+670 720 10 10 rf
+252 255 253 rG
+680 720 90 10 rf
+41 31 34 rG
+770 720 160 10 rf
+252 255 253 rG
+930 720 90 10 rf
+194 199 201 rG
+1020 720 10 10 rf
+41 31 34 rG
+1030 720 410 10 rf
+143 149 r3
+1440 720 10 10 rf
+41 31 34 rG
+0 710 160 10 rf
+252 255 253 rG
+160 710 90 10 rf
+143 149 r3
+250 710 10 10 rf
+41 31 34 rG
+260 710 150 10 rf
+143 149 r3
+410 710 10 10 rf
+252 255 253 rG
+420 710 90 10 rf
+99 100 102 rG
+510 710 10 10 rf
+41 31 34 rG
+520 710 150 10 rf
+194 199 201 rG
+670 710 10 10 rf
+252 255 253 rG
+680 710 90 10 rf
+41 31 34 rG
+770 710 160 10 rf
+252 255 253 rG
+930 710 90 10 rf
+194 199 201 rG
+1020 710 10 10 rf
+41 31 34 rG
+1030 710 410 10 rf
+143 149 r3
+1440 710 10 10 rf
+41 31 34 rG
+0 700 160 10 rf
+252 255 253 rG
+160 700 90 10 rf
+143 149 r3
+250 700 10 10 rf
+41 31 34 rG
+260 700 150 10 rf
+143 149 r3
+410 700 10 10 rf
+252 255 253 rG
+420 700 90 10 rf
+99 100 102 rG
+510 700 10 10 rf
+41 31 34 rG
+520 700 150 10 rf
+194 199 201 rG
+670 700 10 10 rf
+252 255 253 rG
+680 700 90 10 rf
+41 31 34 rG
+770 700 160 10 rf
+252 255 253 rG
+930 700 90 10 rf
+194 199 201 rG
+1020 700 10 10 rf
+41 31 34 rG
+1030 700 410 10 rf
+143 149 r3
+1440 700 10 10 rf
+41 31 34 rG
+0 690 160 10 rf
+252 255 253 rG
+160 690 90 10 rf
+143 149 r3
+250 690 10 10 rf
+41 31 34 rG
+260 690 150 10 rf
+143 149 r3
+410 690 10 10 rf
+252 255 253 rG
+420 690 90 10 rf
+99 100 102 rG
+510 690 10 10 rf
+41 31 34 rG
+520 690 150 10 rf
+194 199 201 rG
+670 690 10 10 rf
+252 255 253 rG
+680 690 90 10 rf
+41 31 34 rG
+770 690 160 10 rf
+252 255 253 rG
+930 690 90 10 rf
+194 199 201 rG
+1020 690 10 10 rf
+41 31 34 rG
+1030 690 410 10 rf
+143 149 r3
+1440 690 10 10 rf
+41 31 34 rG
+0 680 160 10 rf
+252 255 253 rG
+160 680 90 10 rf
+143 149 r3
+250 680 10 10 rf
+41 31 34 rG
+260 680 150 10 rf
+143 149 r3
+410 680 10 10 rf
+252 255 253 rG
+420 680 90 10 rf
+99 100 102 rG
+510 680 10 10 rf
+41 31 34 rG
+520 680 150 10 rf
+194 199 201 rG
+670 680 10 10 rf
+252 255 253 rG
+680 680 90 10 rf
+41 31 34 rG
+770 680 160 10 rf
+252 255 253 rG
+930 680 90 10 rf
+194 199 201 rG
+1020 680 10 10 rf
+41 31 34 rG
+1030 680 410 10 rf
+143 149 r3
+1440 680 10 10 rf
+41 31 34 rG
+0 670 160 10 rf
+252 255 253 rG
+160 670 90 10 rf
+143 149 r3
+250 670 10 10 rf
+41 31 34 rG
+260 670 150 10 rf
+143 149 r3
+410 670 10 10 rf
+252 255 253 rG
+420 670 90 10 rf
+99 100 102 rG
+510 670 10 10 rf
+41 31 34 rG
+520 670 150 10 rf
+194 199 201 rG
+670 670 10 10 rf
+252 255 253 rG
+680 670 90 10 rf
+41 31 34 rG
+770 670 160 10 rf
+252 255 253 rG
+930 670 90 10 rf
+194 199 201 rG
+1020 670 10 10 rf
+41 31 34 rG
+1030 670 410 10 rf
+143 149 r3
+1440 670 10 10 rf
+41 31 34 rG
+0 660 160 10 rf
+252 255 253 rG
+160 660 90 10 rf
+143 149 r3
+250 660 10 10 rf
+41 31 34 rG
+260 660 150 10 rf
+143 149 r3
+410 660 10 10 rf
+252 255 253 rG
+420 660 90 10 rf
+99 100 102 rG
+510 660 10 10 rf
+41 31 34 rG
+520 660 150 10 rf
+194 199 201 rG
+670 660 10 10 rf
+252 255 253 rG
+680 660 90 10 rf
+41 31 34 rG
+770 660 160 10 rf
+252 255 253 rG
+930 660 90 10 rf
+194 199 201 rG
+1020 660 10 10 rf
+41 31 34 rG
+1030 660 410 10 rf
+143 149 r3
+1440 660 10 10 rf
+41 31 34 rG
+0 650 160 10 rf
+252 255 253 rG
+160 650 90 10 rf
+143 149 r3
+250 650 10 10 rf
+41 31 34 rG
+260 650 150 10 rf
+143 149 r3
+410 650 10 10 rf
+252 255 253 rG
+420 650 90 10 rf
+99 100 102 rG
+510 650 10 10 rf
+41 31 34 rG
+520 650 150 10 rf
+194 199 201 rG
+670 650 10 10 rf
+252 255 253 rG
+680 650 90 10 rf
+41 31 34 rG
+770 650 160 10 rf
+252 255 253 rG
+930 650 90 10 rf
+194 199 201 rG
+1020 650 10 10 rf
+41 31 34 rG
+1030 650 410 10 rf
+143 149 r3
+1440 650 10 10 rf
+41 31 34 rG
+0 640 160 10 rf
+252 255 253 rG
+160 640 90 10 rf
+143 149 r3
+250 640 10 10 rf
+41 31 34 rG
+260 640 150 10 rf
+143 149 r3
+410 640 10 10 rf
+252 255 253 rG
+420 640 90 10 rf
+99 100 102 rG
+510 640 10 10 rf
+41 31 34 rG
+520 640 150 10 rf
+194 199 201 rG
+670 640 10 10 rf
+252 255 253 rG
+680 640 90 10 rf
+41 31 34 rG
+770 640 160 10 rf
+252 255 253 rG
+930 640 90 10 rf
+194 199 201 rG
+1020 640 10 10 rf
+41 31 34 rG
+1030 640 410 10 rf
+143 149 r3
+1440 640 10 10 rf
+41 31 34 rG
+0 630 160 10 rf
+252 255 253 rG
+160 630 90 10 rf
+143 149 r3
+250 630 10 10 rf
+41 31 34 rG
+260 630 150 10 rf
+143 149 r3
+410 630 10 10 rf
+252 255 253 rG
+420 630 90 10 rf
+99 100 102 rG
+510 630 10 10 rf
+41 31 34 rG
+520 630 150 10 rf
+194 199 201 rG
+670 630 10 10 rf
+252 255 253 rG
+680 630 90 10 rf
+41 31 34 rG
+770 630 160 10 rf
+252 255 253 rG
+930 630 90 10 rf
+194 199 201 rG
+1020 630 10 10 rf
+41 31 34 rG
+1030 630 410 10 rf
+143 149 r3
+1440 630 10 10 rf
+41 31 34 rG
+0 620 160 10 rf
+252 255 253 rG
+160 620 90 10 rf
+143 149 r3
+250 620 10 10 rf
+41 31 34 rG
+260 620 150 10 rf
+143 149 r3
+410 620 10 10 rf
+252 255 253 rG
+420 620 90 10 rf
+99 100 102 rG
+510 620 10 10 rf
+41 31 34 rG
+520 620 150 10 rf
+194 199 201 rG
+670 620 10 10 rf
+252 255 253 rG
+680 620 90 10 rf
+41 31 34 rG
+770 620 160 10 rf
+252 255 253 rG
+930 620 90 10 rf
+194 199 201 rG
+1020 620 10 10 rf
+41 31 34 rG
+1030 620 410 10 rf
+143 149 r3
+1440 620 10 10 rf
+41 31 34 rG
+0 610 160 10 rf
+252 255 253 rG
+160 610 90 10 rf
+143 149 r3
+250 610 10 10 rf
+41 31 34 rG
+260 610 150 10 rf
+143 149 r3
+410 610 10 10 rf
+252 255 253 rG
+420 610 90 10 rf
+99 100 102 rG
+510 610 10 10 rf
+41 31 34 rG
+520 610 150 10 rf
+194 199 201 rG
+670 610 10 10 rf
+252 255 253 rG
+680 610 90 10 rf
+41 31 34 rG
+770 610 160 10 rf
+252 255 253 rG
+930 610 90 10 rf
+194 199 201 rG
+1020 610 10 10 rf
+41 31 34 rG
+1030 610 410 10 rf
+143 149 r3
+1440 610 10 10 rf
+41 31 34 rG
+0 600 160 10 rf
+252 255 253 rG
+160 600 90 10 rf
+143 149 r3
+250 600 10 10 rf
+41 31 34 rG
+260 600 150 10 rf
+143 149 r3
+410 600 10 10 rf
+252 255 253 rG
+420 600 90 10 rf
+99 100 102 rG
+510 600 10 10 rf
+41 31 34 rG
+520 600 150 10 rf
+194 199 201 rG
+670 600 10 10 rf
+252 255 253 rG
+680 600 90 10 rf
+41 31 34 rG
+770 600 160 10 rf
+252 255 253 rG
+930 600 90 10 rf
+194 199 201 rG
+1020 600 10 10 rf
+41 31 34 rG
+1030 600 410 10 rf
+143 149 r3
+1440 600 10 10 rf
+41 31 34 rG
+0 590 160 10 rf
+252 255 253 rG
+160 590 90 10 rf
+143 149 r3
+250 590 10 10 rf
+41 31 34 rG
+260 590 150 10 rf
+143 149 r3
+410 590 10 10 rf
+252 255 253 rG
+420 590 90 10 rf
+99 100 102 rG
+510 590 10 10 rf
+41 31 34 rG
+520 590 150 10 rf
+194 199 201 rG
+670 590 10 10 rf
+252 255 253 rG
+680 590 770 10 rf
+41 31 34 rG
+0 580 160 10 rf
+252 255 253 rG
+160 580 90 10 rf
+143 149 r3
+250 580 10 10 rf
+41 31 34 rG
+260 580 150 10 rf
+143 149 r3
+410 580 10 10 rf
+252 255 253 rG
+420 580 90 10 rf
+99 100 102 rG
+510 580 10 10 rf
+41 31 34 rG
+520 580 150 10 rf
+194 199 201 rG
+670 580 10 10 rf
+252 255 253 rG
+680 580 770 10 rf
+41 31 34 rG
+0 570 160 10 rf
+252 255 253 rG
+160 570 90 10 rf
+143 149 r3
+250 570 10 10 rf
+41 31 34 rG
+260 570 150 10 rf
+143 149 r3
+410 570 10 10 rf
+252 255 253 rG
+420 570 90 10 rf
+99 100 102 rG
+510 570 10 10 rf
+41 31 34 rG
+520 570 150 10 rf
+194 199 201 rG
+670 570 10 10 rf
+252 255 253 rG
+680 570 770 10 rf
+41 31 34 rG
+0 560 160 10 rf
+252 255 253 rG
+160 560 90 10 rf
+143 149 r3
+250 560 10 10 rf
+41 31 34 rG
+260 560 150 10 rf
+143 149 r3
+410 560 10 10 rf
+252 255 253 rG
+420 560 90 10 rf
+99 100 102 rG
+510 560 10 10 rf
+41 31 34 rG
+520 560 150 10 rf
+194 199 201 rG
+670 560 10 10 rf
+252 255 253 rG
+680 560 770 10 rf
+41 31 34 rG
+0 550 160 10 rf
+252 255 253 rG
+160 550 90 10 rf
+143 149 r3
+250 550 10 10 rf
+41 31 34 rG
+260 550 150 10 rf
+143 149 r3
+410 550 10 10 rf
+252 255 253 rG
+420 550 90 10 rf
+99 100 102 rG
+510 550 10 10 rf
+41 31 34 rG
+520 550 150 10 rf
+194 199 201 rG
+670 550 10 10 rf
+252 255 253 rG
+680 550 770 10 rf
+41 31 34 rG
+0 540 160 10 rf
+252 255 253 rG
+160 540 90 10 rf
+143 149 r3
+250 540 10 10 rf
+41 31 34 rG
+260 540 150 10 rf
+143 149 r3
+410 540 10 10 rf
+252 255 253 rG
+420 540 90 10 rf
+99 100 102 rG
+510 540 10 10 rf
+41 31 34 rG
+520 540 150 10 rf
+194 199 201 rG
+670 540 10 10 rf
+252 255 253 rG
+680 540 770 10 rf
+41 31 34 rG
+0 530 160 10 rf
+252 255 253 rG
+160 530 90 10 rf
+143 149 r3
+250 530 10 10 rf
+41 31 34 rG
+260 530 150 10 rf
+143 149 r3
+410 530 10 10 rf
+252 255 253 rG
+420 530 90 10 rf
+99 100 102 rG
+510 530 10 10 rf
+41 31 34 rG
+520 530 150 10 rf
+194 199 201 rG
+670 530 10 10 rf
+252 255 253 rG
+680 530 770 10 rf
+41 31 34 rG
+0 520 160 10 rf
+252 255 253 rG
+160 520 90 10 rf
+143 149 r3
+250 520 10 10 rf
+41 31 34 rG
+260 520 150 10 rf
+143 149 r3
+410 520 10 10 rf
+252 255 253 rG
+420 520 90 10 rf
+99 100 102 rG
+510 520 10 10 rf
+41 31 34 rG
+520 520 150 10 rf
+194 199 201 rG
+670 520 10 10 rf
+252 255 253 rG
+680 520 770 10 rf
+41 31 34 rG
+0 510 160 10 rf
+252 255 253 rG
+160 510 90 10 rf
+143 149 r3
+250 510 10 10 rf
+41 31 34 rG
+260 510 150 10 rf
+143 149 r3
+410 510 10 10 rf
+252 255 253 rG
+420 510 90 10 rf
+99 100 102 rG
+510 510 10 10 rf
+41 31 34 rG
+520 510 150 10 rf
+194 199 201 rG
+670 510 10 10 rf
+252 255 253 rG
+680 510 90 10 rf
+168 173 175 rG
+770 510 160 10 rf
+252 255 253 rG
+930 510 90 10 rf
+223 224 225 rG
+1020 510 10 10 rf
+143 149 r3
+1030 510 150 10 rf
+168 173 175 rG
+1180 510 10 10 rf
+252 255 253 rG
+1190 510 260 10 rf
+41 31 34 rG
+0 500 160 10 rf
+252 255 253 rG
+160 500 90 10 rf
+143 149 r3
+250 500 10 10 rf
+41 31 34 rG
+260 500 150 10 rf
+143 149 r3
+410 500 10 10 rf
+252 255 253 rG
+420 500 90 10 rf
+99 100 102 rG
+510 500 10 10 rf
+41 31 34 rG
+520 500 150 10 rf
+194 199 201 rG
+670 500 10 10 rf
+252 255 253 rG
+680 500 90 10 rf
+143 149 r3
+770 500 160 10 rf
+252 255 253 rG
+930 500 90 10 rf
+194 199 201 rG
+1020 500 10 10 rf
+41 31 34 rG
+1030 500 150 10 rf
+99 100 102 rG
+1180 500 10 10 rf
+252 255 253 rG
+1190 500 260 10 rf
+41 31 34 rG
+0 490 160 10 rf
+252 255 253 rG
+160 490 90 10 rf
+143 149 r3
+250 490 10 10 rf
+41 31 34 rG
+260 490 150 10 rf
+143 149 r3
+410 490 10 10 rf
+252 255 253 rG
+420 490 90 10 rf
+99 100 102 rG
+510 490 10 10 rf
+41 31 34 rG
+520 490 150 10 rf
+194 199 201 rG
+670 490 10 10 rf
+252 255 253 rG
+680 490 90 10 rf
+143 149 r3
+770 490 160 10 rf
+252 255 253 rG
+930 490 90 10 rf
+194 199 201 rG
+1020 490 10 10 rf
+41 31 34 rG
+1030 490 150 10 rf
+99 100 102 rG
+1180 490 10 10 rf
+252 255 253 rG
+1190 490 260 10 rf
+41 31 34 rG
+0 480 160 10 rf
+252 255 253 rG
+160 480 90 10 rf
+143 149 r3
+250 480 10 10 rf
+41 31 34 rG
+260 480 150 10 rf
+143 149 r3
+410 480 10 10 rf
+252 255 253 rG
+420 480 90 10 rf
+99 100 102 rG
+510 480 10 10 rf
+41 31 34 rG
+520 480 150 10 rf
+194 199 201 rG
+670 480 10 10 rf
+252 255 253 rG
+680 480 90 10 rf
+143 149 r3
+770 480 160 10 rf
+252 255 253 rG
+930 480 90 10 rf
+194 199 201 rG
+1020 480 10 10 rf
+41 31 34 rG
+1030 480 150 10 rf
+99 100 102 rG
+1180 480 10 10 rf
+252 255 253 rG
+1190 480 260 10 rf
+41 31 34 rG
+0 470 160 10 rf
+252 255 253 rG
+160 470 90 10 rf
+143 149 r3
+250 470 10 10 rf
+41 31 34 rG
+260 470 150 10 rf
+143 149 r3
+410 470 10 10 rf
+252 255 253 rG
+420 470 90 10 rf
+99 100 102 rG
+510 470 10 10 rf
+41 31 34 rG
+520 470 150 10 rf
+194 199 201 rG
+670 470 10 10 rf
+252 255 253 rG
+680 470 90 10 rf
+143 149 r3
+770 470 160 10 rf
+252 255 253 rG
+930 470 90 10 rf
+194 199 201 rG
+1020 470 10 10 rf
+41 31 34 rG
+1030 470 150 10 rf
+99 100 102 rG
+1180 470 10 10 rf
+252 255 253 rG
+1190 470 260 10 rf
+41 31 34 rG
+0 460 160 10 rf
+252 255 253 rG
+160 460 90 10 rf
+143 149 r3
+250 460 10 10 rf
+41 31 34 rG
+260 460 150 10 rf
+143 149 r3
+410 460 10 10 rf
+252 255 253 rG
+420 460 90 10 rf
+99 100 102 rG
+510 460 10 10 rf
+41 31 34 rG
+520 460 150 10 rf
+194 199 201 rG
+670 460 10 10 rf
+252 255 253 rG
+680 460 90 10 rf
+143 149 r3
+770 460 160 10 rf
+252 255 253 rG
+930 460 90 10 rf
+194 199 201 rG
+1020 460 10 10 rf
+41 31 34 rG
+1030 460 150 10 rf
+99 100 102 rG
+1180 460 10 10 rf
+252 255 253 rG
+1190 460 260 10 rf
+41 31 34 rG
+0 450 160 10 rf
+252 255 253 rG
+160 450 90 10 rf
+143 149 r3
+250 450 10 10 rf
+41 31 34 rG
+260 450 150 10 rf
+143 149 r3
+410 450 10 10 rf
+252 255 253 rG
+420 450 90 10 rf
+99 100 102 rG
+510 450 10 10 rf
+41 31 34 rG
+520 450 150 10 rf
+194 199 201 rG
+670 450 10 10 rf
+252 255 253 rG
+680 450 90 10 rf
+143 149 r3
+770 450 160 10 rf
+252 255 253 rG
+930 450 90 10 rf
+194 199 201 rG
+1020 450 10 10 rf
+41 31 34 rG
+1030 450 150 10 rf
+99 100 102 rG
+1180 450 10 10 rf
+252 255 253 rG
+1190 450 260 10 rf
+41 31 34 rG
+0 440 160 10 rf
+252 255 253 rG
+160 440 90 10 rf
+143 149 r3
+250 440 10 10 rf
+41 31 34 rG
+260 440 150 10 rf
+143 149 r3
+410 440 10 10 rf
+252 255 253 rG
+420 440 90 10 rf
+99 100 102 rG
+510 440 10 10 rf
+41 31 34 rG
+520 440 150 10 rf
+194 199 201 rG
+670 440 10 10 rf
+252 255 253 rG
+680 440 90 10 rf
+143 149 r3
+770 440 160 10 rf
+252 255 253 rG
+930 440 90 10 rf
+194 199 201 rG
+1020 440 10 10 rf
+41 31 34 rG
+1030 440 150 10 rf
+99 100 102 rG
+1180 440 10 10 rf
+252 255 253 rG
+1190 440 260 10 rf
+41 31 34 rG
+0 430 160 10 rf
+252 255 253 rG
+160 430 90 10 rf
+143 149 r3
+250 430 10 10 rf
+41 31 34 rG
+260 430 150 10 rf
+143 149 r3
+410 430 10 10 rf
+252 255 253 rG
+420 430 90 10 rf
+99 100 102 rG
+510 430 10 10 rf
+41 31 34 rG
+520 430 150 10 rf
+194 199 201 rG
+670 430 10 10 rf
+252 255 253 rG
+680 430 90 10 rf
+143 149 r3
+770 430 160 10 rf
+252 255 253 rG
+930 430 90 10 rf
+194 199 201 rG
+1020 430 10 10 rf
+41 31 34 rG
+1030 430 150 10 rf
+99 100 102 rG
+1180 430 10 10 rf
+252 255 253 rG
+1190 430 260 10 rf
+41 31 34 rG
+0 420 160 10 rf
+252 255 253 rG
+160 420 90 10 rf
+143 149 r3
+250 420 10 10 rf
+41 31 34 rG
+260 420 150 10 rf
+143 149 r3
+410 420 10 10 rf
+252 255 253 rG
+420 420 90 10 rf
+99 100 102 rG
+510 420 10 10 rf
+41 31 34 rG
+520 420 150 10 rf
+194 199 201 rG
+670 420 10 10 rf
+252 255 253 rG
+680 420 90 10 rf
+143 149 r3
+770 420 160 10 rf
+252 255 253 rG
+930 420 90 10 rf
+194 199 201 rG
+1020 420 10 10 rf
+41 31 34 rG
+1030 420 150 10 rf
+99 100 102 rG
+1180 420 10 10 rf
+252 255 253 rG
+1190 420 260 10 rf
+41 31 34 rG
+0 410 160 10 rf
+252 255 253 rG
+160 410 90 10 rf
+143 149 r3
+250 410 10 10 rf
+41 31 34 rG
+260 410 150 10 rf
+143 149 r3
+410 410 10 10 rf
+252 255 253 rG
+420 410 90 10 rf
+99 100 102 rG
+510 410 10 10 rf
+41 31 34 rG
+520 410 150 10 rf
+194 199 201 rG
+670 410 10 10 rf
+252 255 253 rG
+680 410 90 10 rf
+143 149 r3
+770 410 160 10 rf
+252 255 253 rG
+930 410 90 10 rf
+194 199 201 rG
+1020 410 10 10 rf
+41 31 34 rG
+1030 410 150 10 rf
+99 100 102 rG
+1180 410 10 10 rf
+252 255 253 rG
+1190 410 260 10 rf
+41 31 34 rG
+0 400 160 10 rf
+252 255 253 rG
+160 400 90 10 rf
+143 149 r3
+250 400 10 10 rf
+41 31 34 rG
+260 400 150 10 rf
+143 149 r3
+410 400 10 10 rf
+252 255 253 rG
+420 400 90 10 rf
+99 100 102 rG
+510 400 10 10 rf
+41 31 34 rG
+520 400 150 10 rf
+194 199 201 rG
+670 400 10 10 rf
+252 255 253 rG
+680 400 90 10 rf
+143 149 r3
+770 400 160 10 rf
+252 255 253 rG
+930 400 90 10 rf
+194 199 201 rG
+1020 400 10 10 rf
+41 31 34 rG
+1030 400 150 10 rf
+99 100 102 rG
+1180 400 10 10 rf
+252 255 253 rG
+1190 400 260 10 rf
+41 31 34 rG
+0 390 160 10 rf
+252 255 253 rG
+160 390 90 10 rf
+143 149 r3
+250 390 10 10 rf
+41 31 34 rG
+260 390 150 10 rf
+143 149 r3
+410 390 10 10 rf
+252 255 253 rG
+420 390 90 10 rf
+99 100 102 rG
+510 390 10 10 rf
+41 31 34 rG
+520 390 150 10 rf
+194 199 201 rG
+670 390 10 10 rf
+252 255 253 rG
+680 390 90 10 rf
+143 149 r3
+770 390 160 10 rf
+252 255 253 rG
+930 390 90 10 rf
+194 199 201 rG
+1020 390 10 10 rf
+41 31 34 rG
+1030 390 150 10 rf
+99 100 102 rG
+1180 390 10 10 rf
+252 255 253 rG
+1190 390 260 10 rf
+41 31 34 rG
+0 380 160 10 rf
+252 255 253 rG
+160 380 90 10 rf
+143 149 r3
+250 380 10 10 rf
+41 31 34 rG
+260 380 150 10 rf
+143 149 r3
+410 380 10 10 rf
+252 255 253 rG
+420 380 90 10 rf
+99 100 102 rG
+510 380 10 10 rf
+41 31 34 rG
+520 380 150 10 rf
+194 199 201 rG
+670 380 10 10 rf
+252 255 253 rG
+680 380 90 10 rf
+143 149 r3
+770 380 160 10 rf
+252 255 253 rG
+930 380 90 10 rf
+194 199 201 rG
+1020 380 10 10 rf
+41 31 34 rG
+1030 380 150 10 rf
+99 100 102 rG
+1180 380 10 10 rf
+252 255 253 rG
+1190 380 260 10 rf
+41 31 34 rG
+0 370 160 10 rf
+252 255 253 rG
+160 370 90 10 rf
+143 149 r3
+250 370 10 10 rf
+41 31 34 rG
+260 370 150 10 rf
+143 149 r3
+410 370 10 10 rf
+252 255 253 rG
+420 370 90 10 rf
+99 100 102 rG
+510 370 10 10 rf
+41 31 34 rG
+520 370 150 10 rf
+194 199 201 rG
+670 370 10 10 rf
+252 255 253 rG
+680 370 90 10 rf
+143 149 r3
+770 370 160 10 rf
+252 255 253 rG
+930 370 90 10 rf
+194 199 201 rG
+1020 370 10 10 rf
+41 31 34 rG
+1030 370 150 10 rf
+99 100 102 rG
+1180 370 10 10 rf
+252 255 253 rG
+1190 370 260 10 rf
+41 31 34 rG
+0 360 160 10 rf
+252 255 253 rG
+160 360 90 10 rf
+143 149 r3
+250 360 10 10 rf
+41 31 34 rG
+260 360 150 10 rf
+143 149 r3
+410 360 10 10 rf
+252 255 253 rG
+420 360 90 10 rf
+99 100 102 rG
+510 360 10 10 rf
+41 31 34 rG
+520 360 150 10 rf
+194 199 201 rG
+670 360 10 10 rf
+252 255 253 rG
+680 360 90 10 rf
+143 149 r3
+770 360 160 10 rf
+252 255 253 rG
+930 360 90 10 rf
+194 199 201 rG
+1020 360 10 10 rf
+41 31 34 rG
+1030 360 150 10 rf
+99 100 102 rG
+1180 360 10 10 rf
+252 255 253 rG
+1190 360 260 10 rf
+41 31 34 rG
+0 350 160 10 rf
+252 255 253 rG
+160 350 90 10 rf
+143 149 r3
+250 350 10 10 rf
+41 31 34 rG
+260 350 150 10 rf
+143 149 r3
+410 350 10 10 rf
+252 255 253 rG
+420 350 90 10 rf
+99 100 102 rG
+510 350 10 10 rf
+41 31 34 rG
+520 350 150 10 rf
+194 199 201 rG
+670 350 10 10 rf
+252 255 253 rG
+680 350 90 10 rf
+143 149 r3
+770 350 160 10 rf
+252 255 253 rG
+930 350 90 10 rf
+194 199 201 rG
+1020 350 10 10 rf
+41 31 34 rG
+1030 350 150 10 rf
+99 100 102 rG
+1180 350 10 10 rf
+252 255 253 rG
+1190 350 260 10 rf
+41 31 34 rG
+0 340 160 10 rf
+252 255 253 rG
+160 340 90 10 rf
+143 149 r3
+250 340 10 10 rf
+41 31 34 rG
+260 340 150 10 rf
+143 149 r3
+410 340 10 10 rf
+252 255 253 rG
+420 340 90 10 rf
+99 100 102 rG
+510 340 10 10 rf
+41 31 34 rG
+520 340 150 10 rf
+194 199 201 rG
+670 340 10 10 rf
+252 255 253 rG
+680 340 90 10 rf
+143 149 r3
+770 340 160 10 rf
+252 255 253 rG
+930 340 90 10 rf
+194 199 201 rG
+1020 340 10 10 rf
+41 31 34 rG
+1030 340 150 10 rf
+99 100 102 rG
+1180 340 10 10 rf
+252 255 253 rG
+1190 340 260 10 rf
+41 31 34 rG
+0 330 160 10 rf
+252 255 253 rG
+160 330 90 10 rf
+143 149 r3
+250 330 10 10 rf
+41 31 34 rG
+260 330 150 10 rf
+143 149 r3
+410 330 10 10 rf
+252 255 253 rG
+420 330 90 10 rf
+99 100 102 rG
+510 330 10 10 rf
+41 31 34 rG
+520 330 150 10 rf
+194 199 201 rG
+670 330 10 10 rf
+252 255 253 rG
+680 330 90 10 rf
+143 149 r3
+770 330 160 10 rf
+252 255 253 rG
+930 330 90 10 rf
+194 199 201 rG
+1020 330 10 10 rf
+41 31 34 rG
+1030 330 150 10 rf
+99 100 102 rG
+1180 330 10 10 rf
+252 255 253 rG
+1190 330 260 10 rf
+41 31 34 rG
+0 320 160 10 rf
+252 255 253 rG
+160 320 90 10 rf
+143 149 r3
+250 320 10 10 rf
+41 31 34 rG
+260 320 150 10 rf
+143 149 r3
+410 320 10 10 rf
+252 255 253 rG
+420 320 90 10 rf
+99 100 102 rG
+510 320 10 10 rf
+41 31 34 rG
+520 320 150 10 rf
+194 199 201 rG
+670 320 10 10 rf
+252 255 253 rG
+680 320 90 10 rf
+143 149 r3
+770 320 160 10 rf
+252 255 253 rG
+930 320 90 10 rf
+194 199 201 rG
+1020 320 10 10 rf
+41 31 34 rG
+1030 320 150 10 rf
+99 100 102 rG
+1180 320 10 10 rf
+252 255 253 rG
+1190 320 260 10 rf
+41 31 34 rG
+0 310 160 10 rf
+252 255 253 rG
+160 310 90 10 rf
+143 149 r3
+250 310 10 10 rf
+41 31 34 rG
+260 310 150 10 rf
+143 149 r3
+410 310 10 10 rf
+252 255 253 rG
+420 310 90 10 rf
+99 100 102 rG
+510 310 10 10 rf
+41 31 34 rG
+520 310 150 10 rf
+194 199 201 rG
+670 310 10 10 rf
+252 255 253 rG
+680 310 90 10 rf
+143 149 r3
+770 310 160 10 rf
+252 255 253 rG
+930 310 90 10 rf
+194 199 201 rG
+1020 310 10 10 rf
+41 31 34 rG
+1030 310 150 10 rf
+99 100 102 rG
+1180 310 10 10 rf
+252 255 253 rG
+1190 310 260 10 rf
+41 31 34 rG
+0 300 160 10 rf
+252 255 253 rG
+160 300 90 10 rf
+143 149 r3
+250 300 10 10 rf
+41 31 34 rG
+260 300 150 10 rf
+143 149 r3
+410 300 10 10 rf
+252 255 253 rG
+420 300 90 10 rf
+99 100 102 rG
+510 300 10 10 rf
+41 31 34 rG
+520 300 150 10 rf
+194 199 201 rG
+670 300 10 10 rf
+252 255 253 rG
+680 300 90 10 rf
+143 149 r3
+770 300 160 10 rf
+252 255 253 rG
+930 300 90 10 rf
+194 199 201 rG
+1020 300 10 10 rf
+41 31 34 rG
+1030 300 150 10 rf
+99 100 102 rG
+1180 300 10 10 rf
+252 255 253 rG
+1190 300 260 10 rf
+41 31 34 rG
+0 290 160 10 rf
+252 255 253 rG
+160 290 90 10 rf
+143 149 r3
+250 290 10 10 rf
+41 31 34 rG
+260 290 150 10 rf
+143 149 r3
+410 290 10 10 rf
+252 255 253 rG
+420 290 90 10 rf
+99 100 102 rG
+510 290 10 10 rf
+41 31 34 rG
+520 290 150 10 rf
+194 199 201 rG
+670 290 10 10 rf
+252 255 253 rG
+680 290 90 10 rf
+143 149 r3
+770 290 160 10 rf
+252 255 253 rG
+930 290 90 10 rf
+194 199 201 rG
+1020 290 10 10 rf
+41 31 34 rG
+1030 290 150 10 rf
+99 100 102 rG
+1180 290 10 10 rf
+252 255 253 rG
+1190 290 260 10 rf
+41 31 34 rG
+0 280 160 10 rf
+252 255 253 rG
+160 280 90 10 rf
+143 149 r3
+250 280 10 10 rf
+41 31 34 rG
+260 280 150 10 rf
+143 149 r3
+410 280 10 10 rf
+252 255 253 rG
+420 280 90 10 rf
+99 100 102 rG
+510 280 10 10 rf
+41 31 34 rG
+520 280 150 10 rf
+194 199 201 rG
+670 280 10 10 rf
+252 255 253 rG
+680 280 90 10 rf
+143 149 r3
+770 280 160 10 rf
+252 255 253 rG
+930 280 90 10 rf
+194 199 201 rG
+1020 280 10 10 rf
+41 31 34 rG
+1030 280 150 10 rf
+99 100 102 rG
+1180 280 10 10 rf
+252 255 253 rG
+1190 280 260 10 rf
+41 31 34 rG
+0 270 160 10 rf
+252 255 253 rG
+160 270 90 10 rf
+143 149 r3
+250 270 10 10 rf
+41 31 34 rG
+260 270 150 10 rf
+143 149 r3
+410 270 10 10 rf
+252 255 253 rG
+420 270 90 10 rf
+99 100 102 rG
+510 270 10 10 rf
+41 31 34 rG
+520 270 150 10 rf
+194 199 201 rG
+670 270 10 10 rf
+252 255 253 rG
+680 270 90 10 rf
+143 149 r3
+770 270 160 10 rf
+252 255 253 rG
+930 270 90 10 rf
+194 199 201 rG
+1020 270 10 10 rf
+41 31 34 rG
+1030 270 150 10 rf
+99 100 102 rG
+1180 270 10 10 rf
+252 255 253 rG
+1190 270 260 10 rf
+41 31 34 rG
+0 260 160 10 rf
+252 255 253 rG
+160 260 90 10 rf
+143 149 r3
+250 260 10 10 rf
+41 31 34 rG
+260 260 150 10 rf
+143 149 r3
+410 260 10 10 rf
+252 255 253 rG
+420 260 90 10 rf
+99 100 102 rG
+510 260 10 10 rf
+41 31 34 rG
+520 260 150 10 rf
+194 199 201 rG
+670 260 10 10 rf
+252 255 253 rG
+680 260 90 10 rf
+143 149 r3
+770 260 160 10 rf
+252 255 253 rG
+930 260 90 10 rf
+194 199 201 rG
+1020 260 10 10 rf
+41 31 34 rG
+1030 260 150 10 rf
+99 100 102 rG
+1180 260 10 10 rf
+252 255 253 rG
+1190 260 260 10 rf
+41 31 34 rG
+0 250 160 10 rf
+252 255 253 rG
+160 250 90 10 rf
+143 149 r3
+250 250 10 10 rf
+41 31 34 rG
+260 250 150 10 rf
+143 149 r3
+410 250 10 10 rf
+252 255 253 rG
+420 250 90 10 rf
+99 100 102 rG
+510 250 10 10 rf
+41 31 34 rG
+520 250 150 10 rf
+194 199 201 rG
+670 250 10 10 rf
+252 255 253 rG
+680 250 90 10 rf
+143 149 r3
+770 250 160 10 rf
+252 255 253 rG
+930 250 90 10 rf
+194 199 201 rG
+1020 250 10 10 rf
+41 31 34 rG
+1030 250 150 10 rf
+99 100 102 rG
+1180 250 10 10 rf
+252 255 253 rG
+1190 250 260 10 rf
+41 31 34 rG
+0 240 160 10 rf
+252 255 253 rG
+160 240 90 10 rf
+143 149 r3
+250 240 10 10 rf
+41 31 34 rG
+260 240 150 10 rf
+143 149 r3
+410 240 10 10 rf
+252 255 253 rG
+420 240 90 10 rf
+99 100 102 rG
+510 240 10 10 rf
+41 31 34 rG
+520 240 150 10 rf
+194 199 201 rG
+670 240 10 10 rf
+252 255 253 rG
+680 240 90 10 rf
+143 149 r3
+770 240 160 10 rf
+252 255 253 rG
+930 240 90 10 rf
+194 199 201 rG
+1020 240 10 10 rf
+41 31 34 rG
+1030 240 150 10 rf
+99 100 102 rG
+1180 240 10 10 rf
+252 255 253 rG
+1190 240 260 10 rf
+41 31 34 rG
+0 230 160 10 rf
+252 255 253 rG
+160 230 350 10 rf
+99 100 102 rG
+510 230 10 10 rf
+41 31 34 rG
+520 230 150 10 rf
+194 199 201 rG
+670 230 10 10 rf
+252 255 253 rG
+680 230 90 10 rf
+143 149 r3
+770 230 160 10 rf
+252 255 253 rG
+930 230 90 10 rf
+194 199 201 rG
+1020 230 10 10 rf
+41 31 34 rG
+1030 230 150 10 rf
+99 100 102 rG
+1180 230 10 10 rf
+252 255 253 rG
+1190 230 260 10 rf
+41 31 34 rG
+0 220 160 10 rf
+252 255 253 rG
+160 220 350 10 rf
+99 100 102 rG
+510 220 10 10 rf
+41 31 34 rG
+520 220 150 10 rf
+194 199 201 rG
+670 220 10 10 rf
+252 255 253 rG
+680 220 90 10 rf
+143 149 r3
+770 220 160 10 rf
+252 255 253 rG
+930 220 90 10 rf
+194 199 201 rG
+1020 220 10 10 rf
+41 31 34 rG
+1030 220 150 10 rf
+99 100 102 rG
+1180 220 10 10 rf
+252 255 253 rG
+1190 220 260 10 rf
+41 31 34 rG
+0 210 160 10 rf
+252 255 253 rG
+160 210 350 10 rf
+99 100 102 rG
+510 210 10 10 rf
+41 31 34 rG
+520 210 150 10 rf
+194 199 201 rG
+670 210 10 10 rf
+252 255 253 rG
+680 210 90 10 rf
+143 149 r3
+770 210 160 10 rf
+252 255 253 rG
+930 210 90 10 rf
+194 199 201 rG
+1020 210 10 10 rf
+41 31 34 rG
+1030 210 150 10 rf
+99 100 102 rG
+1180 210 10 10 rf
+252 255 253 rG
+1190 210 260 10 rf
+41 31 34 rG
+0 200 160 10 rf
+252 255 253 rG
+160 200 350 10 rf
+99 100 102 rG
+510 200 10 10 rf
+41 31 34 rG
+520 200 150 10 rf
+194 199 201 rG
+670 200 10 10 rf
+252 255 253 rG
+680 200 90 10 rf
+143 149 r3
+770 200 160 10 rf
+252 255 253 rG
+930 200 90 10 rf
+194 199 201 rG
+1020 200 10 10 rf
+41 31 34 rG
+1030 200 150 10 rf
+99 100 102 rG
+1180 200 10 10 rf
+252 255 253 rG
+1190 200 260 10 rf
+41 31 34 rG
+0 190 160 10 rf
+252 255 253 rG
+160 190 350 10 rf
+99 100 102 rG
+510 190 10 10 rf
+41 31 34 rG
+520 190 150 10 rf
+194 199 201 rG
+670 190 10 10 rf
+252 255 253 rG
+680 190 90 10 rf
+143 149 r3
+770 190 160 10 rf
+252 255 253 rG
+930 190 90 10 rf
+194 199 201 rG
+1020 190 10 10 rf
+41 31 34 rG
+1030 190 150 10 rf
+99 100 102 rG
+1180 190 10 10 rf
+252 255 253 rG
+1190 190 260 10 rf
+41 31 34 rG
+0 180 160 10 rf
+252 255 253 rG
+160 180 350 10 rf
+99 100 102 rG
+510 180 10 10 rf
+41 31 34 rG
+520 180 150 10 rf
+194 199 201 rG
+670 180 10 10 rf
+252 255 253 rG
+680 180 90 10 rf
+143 149 r3
+770 180 160 10 rf
+252 255 253 rG
+930 180 90 10 rf
+194 199 201 rG
+1020 180 10 10 rf
+41 31 34 rG
+1030 180 150 10 rf
+99 100 102 rG
+1180 180 10 10 rf
+252 255 253 rG
+1190 180 260 10 rf
+41 31 34 rG
+0 170 160 10 rf
+252 255 253 rG
+160 170 350 10 rf
+99 100 102 rG
+510 170 10 10 rf
+41 31 34 rG
+520 170 150 10 rf
+194 199 201 rG
+670 170 10 10 rf
+252 255 253 rG
+680 170 90 10 rf
+143 149 r3
+770 170 160 10 rf
+252 255 253 rG
+930 170 90 10 rf
+194 199 201 rG
+1020 170 10 10 rf
+41 31 34 rG
+1030 170 150 10 rf
+99 100 102 rG
+1180 170 10 10 rf
+252 255 253 rG
+1190 170 260 10 rf
+41 31 34 rG
+0 160 160 10 rf
+252 255 253 rG
+160 160 350 10 rf
+99 100 102 rG
+510 160 10 10 rf
+41 31 34 rG
+520 160 150 10 rf
+194 199 201 rG
+670 160 10 10 rf
+252 255 253 rG
+680 160 90 10 rf
+143 149 r3
+770 160 160 10 rf
+252 255 253 rG
+930 160 90 10 rf
+194 199 201 rG
+1020 160 10 10 rf
+41 31 34 rG
+1030 160 150 10 rf
+99 100 102 rG
+1180 160 10 10 rf
+252 255 253 rG
+1190 160 260 10 rf
+41 31 34 rG
+0 150 160 10 rf
+252 255 253 rG
+160 150 350 10 rf
+99 100 102 rG
+510 150 10 10 rf
+41 31 34 rG
+520 150 150 10 rf
+194 199 201 rG
+670 150 10 10 rf
+252 255 253 rG
+680 150 90 10 rf
+143 149 r3
+770 150 160 10 rf
+252 255 253 rG
+930 150 90 10 rf
+194 199 201 rG
+1020 150 10 10 rf
+41 31 34 rG
+1030 150 150 10 rf
+99 100 102 rG
+1180 150 10 10 rf
+252 255 253 rG
+1190 150 260 10 rf
+41 31 34 rG
+0 140 160 10 rf
+252 255 253 rG
+160 140 350 10 rf
+99 100 102 rG
+510 140 10 10 rf
+41 31 34 rG
+520 140 150 10 rf
+194 199 201 rG
+670 140 10 10 rf
+252 255 253 rG
+680 140 90 10 rf
+143 149 r3
+770 140 160 10 rf
+252 255 253 rG
+930 140 90 10 rf
+194 199 201 rG
+1020 140 10 10 rf
+41 31 34 rG
+1030 140 150 10 rf
+99 100 102 rG
+1180 140 10 10 rf
+252 255 253 rG
+1190 140 260 10 rf
+41 31 34 rG
+0 130 160 10 rf
+252 255 253 rG
+160 130 350 10 rf
+99 100 102 rG
+510 130 10 10 rf
+41 31 34 rG
+520 130 150 10 rf
+194 199 201 rG
+670 130 10 10 rf
+252 255 253 rG
+680 130 90 10 rf
+143 149 r3
+770 130 160 10 rf
+252 255 253 rG
+930 130 90 10 rf
+194 199 201 rG
+1020 130 10 10 rf
+41 31 34 rG
+1030 130 150 10 rf
+99 100 102 rG
+1180 130 10 10 rf
+252 255 253 rG
+1190 130 260 10 rf
+41 31 34 rG
+0 120 160 10 rf
+252 255 253 rG
+160 120 350 10 rf
+99 100 102 rG
+510 120 10 10 rf
+41 31 34 rG
+520 120 150 10 rf
+194 199 201 rG
+670 120 10 10 rf
+252 255 253 rG
+680 120 90 10 rf
+143 149 r3
+770 120 160 10 rf
+252 255 253 rG
+930 120 90 10 rf
+194 199 201 rG
+1020 120 10 10 rf
+41 31 34 rG
+1030 120 150 10 rf
+99 100 102 rG
+1180 120 10 10 rf
+252 255 253 rG
+1190 120 260 10 rf
+41 31 34 rG
+0 110 160 10 rf
+252 255 253 rG
+160 110 350 10 rf
+99 100 102 rG
+510 110 10 10 rf
+41 31 34 rG
+520 110 150 10 rf
+194 199 201 rG
+670 110 10 10 rf
+252 255 253 rG
+680 110 90 10 rf
+143 149 r3
+770 110 160 10 rf
+252 255 253 rG
+930 110 90 10 rf
+194 199 201 rG
+1020 110 10 10 rf
+41 31 34 rG
+1030 110 150 10 rf
+99 100 102 rG
+1180 110 10 10 rf
+252 255 253 rG
+1190 110 260 10 rf
+41 31 34 rG
+0 100 160 10 rf
+252 255 253 rG
+160 100 350 10 rf
+99 100 102 rG
+510 100 10 10 rf
+41 31 34 rG
+520 100 150 10 rf
+194 199 201 rG
+670 100 10 10 rf
+252 255 253 rG
+680 100 90 10 rf
+143 149 r3
+770 100 160 10 rf
+252 255 253 rG
+930 100 90 10 rf
+194 199 201 rG
+1020 100 10 10 rf
+41 31 34 rG
+1030 100 150 10 rf
+99 100 102 rG
+1180 100 10 10 rf
+252 255 253 rG
+1190 100 260 10 rf
+41 31 34 rG
+0 90 160 10 rf
+252 255 253 rG
+160 90 350 10 rf
+99 100 102 rG
+510 90 10 10 rf
+41 31 34 rG
+520 90 150 10 rf
+194 199 201 rG
+670 90 10 10 rf
+252 255 253 rG
+680 90 90 10 rf
+143 149 r3
+770 90 160 10 rf
+252 255 253 rG
+930 90 90 10 rf
+194 199 201 rG
+1020 90 10 10 rf
+41 31 34 rG
+1030 90 150 10 rf
+99 100 102 rG
+1180 90 10 10 rf
+252 255 253 rG
+1190 90 260 10 rf
+41 31 34 rG
+0 80 160 10 rf
+252 255 253 rG
+160 80 350 10 rf
+99 100 102 rG
+510 80 10 10 rf
+41 31 34 rG
+520 80 150 10 rf
+194 199 201 rG
+670 80 10 10 rf
+252 255 253 rG
+680 80 90 10 rf
+143 149 r3
+770 80 160 10 rf
+252 255 253 rG
+930 80 90 10 rf
+194 199 201 rG
+1020 80 10 10 rf
+41 31 34 rG
+1030 80 150 10 rf
+99 100 102 rG
+1180 80 10 10 rf
+252 255 253 rG
+1190 80 260 10 rf
+41 31 34 rG
+0 70 160 10 rf
+252 255 253 rG
+160 70 350 10 rf
+99 100 102 rG
+510 70 10 10 rf
+41 31 34 rG
+520 70 150 10 rf
+194 199 201 rG
+670 70 10 10 rf
+252 255 253 rG
+680 70 90 10 rf
+143 149 r3
+770 70 160 10 rf
+252 255 253 rG
+930 70 90 10 rf
+194 199 201 rG
+1020 70 10 10 rf
+41 31 34 rG
+1030 70 150 10 rf
+99 100 102 rG
+1180 70 10 10 rf
+252 255 253 rG
+1190 70 260 10 rf
+41 31 34 rG
+0 60 160 10 rf
+252 255 253 rG
+160 60 350 10 rf
+99 100 102 rG
+510 60 10 10 rf
+41 31 34 rG
+520 60 150 10 rf
+194 199 201 rG
+670 60 10 10 rf
+252 255 253 rG
+680 60 90 10 rf
+143 149 r3
+770 60 160 10 rf
+252 255 253 rG
+930 60 90 10 rf
+194 199 201 rG
+1020 60 10 10 rf
+41 31 34 rG
+1030 60 150 10 rf
+99 100 102 rG
+1180 60 10 10 rf
+252 255 253 rG
+1190 60 260 10 rf
+41 31 34 rG
+0 50 160 10 rf
+252 255 253 rG
+160 50 350 10 rf
+99 100 102 rG
+510 50 10 10 rf
+41 31 34 rG
+520 50 150 10 rf
+194 199 201 rG
+670 50 10 10 rf
+252 255 253 rG
+680 50 90 10 rf
+143 149 r3
+770 50 160 10 rf
+252 255 253 rG
+930 50 90 10 rf
+194 199 201 rG
+1020 50 10 10 rf
+41 31 34 rG
+1030 50 150 10 rf
+99 100 102 rG
+1180 50 10 10 rf
+252 255 253 rG
+1190 50 260 10 rf
+41 31 34 rG
+0 40 160 10 rf
+252 255 253 rG
+160 40 350 10 rf
+99 100 102 rG
+510 40 10 10 rf
+41 31 34 rG
+520 40 150 10 rf
+194 199 201 rG
+670 40 10 10 rf
+252 255 253 rG
+680 40 90 10 rf
+143 149 r3
+770 40 160 10 rf
+252 255 253 rG
+930 40 90 10 rf
+194 199 201 rG
+1020 40 10 10 rf
+41 31 34 rG
+1030 40 150 10 rf
+99 100 102 rG
+1180 40 10 10 rf
+252 255 253 rG
+1190 40 260 10 rf
+41 31 34 rG
+0 30 160 10 rf
+252 255 253 rG
+160 30 350 10 rf
+99 100 102 rG
+510 30 10 10 rf
+41 31 34 rG
+520 30 150 10 rf
+194 199 201 rG
+670 30 10 10 rf
+252 255 253 rG
+680 30 90 10 rf
+143 149 r3
+770 30 160 10 rf
+252 255 253 rG
+930 30 90 10 rf
+194 199 201 rG
+1020 30 10 10 rf
+41 31 34 rG
+1030 30 150 10 rf
+99 100 102 rG
+1180 30 10 10 rf
+252 255 253 rG
+1190 30 260 10 rf
+41 31 34 rG
+0 20 160 10 rf
+252 255 253 rG
+160 20 350 10 rf
+99 100 102 rG
+510 20 10 10 rf
+41 31 34 rG
+520 20 150 10 rf
+194 199 201 rG
+670 20 10 10 rf
+252 255 253 rG
+680 20 90 10 rf
+143 149 r3
+770 20 160 10 rf
+252 255 253 rG
+930 20 90 10 rf
+194 199 201 rG
+1020 20 10 10 rf
+41 31 34 rG
+1030 20 150 10 rf
+99 100 102 rG
+1180 20 10 10 rf
+252 255 253 rG
+1190 20 260 10 rf
+41 31 34 rG
+0 10 160 10 rf
+252 255 253 rG
+160 10 350 10 rf
+99 100 102 rG
+510 10 10 10 rf
+41 31 34 rG
+520 10 150 10 rf
+194 199 201 rG
+670 10 10 10 rf
+252 255 253 rG
+680 10 90 10 rf
+143 149 r3
+770 10 160 10 rf
+252 255 253 rG
+930 10 90 10 rf
+194 199 201 rG
+1020 10 10 10 rf
+41 31 34 rG
+1030 10 150 10 rf
+99 100 102 rG
+1180 10 10 10 rf
+252 255 253 rG
+1190 10 260 10 rf
+143 149 r3
+0 0 160 10 rf
+252 255 253 rG
+160 0 350 10 rf
+168 173 175 rG
+510 0 10 10 rf
+143 149 r3
+520 0 150 10 rf
+223 224 225 rG
+670 0 10 10 rf
+252 255 253 rG
+680 0 90 10 rf
+223 224 225 rG
+770 0 160 10 rf
+252 255 253 rG
+930 0 90 10 rf
+223 224 225 rG
+1020 0 10 10 rf
+143 149 r3
+1030 0 150 10 rf
+168 173 175 rG
+1180 0 10 10 rf
+252 255 253 rG
+1190 0 260 10 rf
+cleartomark end end pagesave restore showpage
+%%PageTrailer
+%%Trailer
+%%Pages: 1

Benjamin Mako Hill || Want to submit a patch?