summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/IEEEtran
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/IEEEtran
Initial commit
Diffstat (limited to 'macros/latex/contrib/IEEEtran')
-rw-r--r--macros/latex/contrib/IEEEtran/IEEEtran.cls6347
-rw-r--r--macros/latex/contrib/IEEEtran/IEEEtran_HOWTO.pdfbin0 -> 671626 bytes
-rw-r--r--macros/latex/contrib/IEEEtran/README140
-rw-r--r--macros/latex/contrib/IEEEtran/bare_adv.tex943
-rw-r--r--macros/latex/contrib/IEEEtran/bare_conf.tex576
-rw-r--r--macros/latex/contrib/IEEEtran/bare_conf_compsoc.tex599
-rw-r--r--macros/latex/contrib/IEEEtran/bare_jrnl.tex717
-rw-r--r--macros/latex/contrib/IEEEtran/bare_jrnl_compsoc.tex787
-rw-r--r--macros/latex/contrib/IEEEtran/bare_jrnl_comsoc.tex744
-rw-r--r--macros/latex/contrib/IEEEtran/bare_jrnl_transmag.tex714
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/IEEEabrv.bib489
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/IEEEexample.bib1203
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/IEEEfull.bib486
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/IEEEtran.bst2409
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/IEEEtranN.bst2735
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/IEEEtranS.bst2607
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/IEEEtranSA.bst2806
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/IEEEtranSN.bst2878
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/IEEEtran_bst_HOWTO.pdfbin0 -> 286900 bytes
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/README138
-rw-r--r--macros/latex/contrib/IEEEtran/bibtex/changelog.txt173
-rw-r--r--macros/latex/contrib/IEEEtran/changelog.txt783
-rw-r--r--macros/latex/contrib/IEEEtran/extras/README53
-rw-r--r--macros/latex/contrib/IEEEtran/extras/tux.eps1958
-rw-r--r--macros/latex/contrib/IEEEtran/extras/tux.pdfbin0 -> 19349 bytes
-rw-r--r--macros/latex/contrib/IEEEtran/testflow/README82
-rw-r--r--macros/latex/contrib/IEEEtran/testflow/testflow.tex592
-rw-r--r--macros/latex/contrib/IEEEtran/testflow/testflow_ctl_A4.pdfbin0 -> 74762 bytes
-rw-r--r--macros/latex/contrib/IEEEtran/testflow/testflow_ctl_A4.ps3000
-rw-r--r--macros/latex/contrib/IEEEtran/testflow/testflow_ctl_LTR.pdfbin0 -> 74715 bytes
-rw-r--r--macros/latex/contrib/IEEEtran/testflow/testflow_ctl_LTR.ps3001
-rw-r--r--macros/latex/contrib/IEEEtran/testflow/testflow_doc.pdfbin0 -> 389625 bytes
-rw-r--r--macros/latex/contrib/IEEEtran/tools/IEEEtrantools.sty2799
-rw-r--r--macros/latex/contrib/IEEEtran/tools/IEEEtrantools_doc.txt329
-rw-r--r--macros/latex/contrib/IEEEtran/tools/README121
-rw-r--r--macros/latex/contrib/IEEEtran/tools/changelog.txt119
36 files changed, 40328 insertions, 0 deletions
diff --git a/macros/latex/contrib/IEEEtran/IEEEtran.cls b/macros/latex/contrib/IEEEtran/IEEEtran.cls
new file mode 100644
index 0000000000..8d2b1c6478
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/IEEEtran.cls
@@ -0,0 +1,6347 @@
+%%
+%% IEEEtran.cls 2015/08/26 version V1.8b
+%%
+%% This is the IEEEtran LaTeX class for authors of the Institute of
+%% Electrical and Electronics Engineers (IEEE) Transactions journals and
+%% conferences.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and
+%% http://www.ieee.org/
+%%
+%% Based on the original 1993 IEEEtran.cls, but with many bug fixes
+%% and enhancements (from both JVH and MDS) over the 1996/7 version.
+%%
+%%
+%% Contributors:
+%% Gerry Murray (1993), Silvano Balemi (1993),
+%% Jon Dixon (1996), Peter N"uchter (1996),
+%% Juergen von Hagen (2000), and Michael Shell (2001-2014)
+%%
+%%
+%% Copyright (c) 1993-2000 by Gerry Murray, Silvano Balemi,
+%% Jon Dixon, Peter N"uchter,
+%% Juergen von Hagen
+%% and
+%% Copyright (c) 2001-2015 by Michael Shell
+%%
+%% Current maintainer (V1.3 to V1.8b): Michael Shell
+%% See:
+%% http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% Special thanks to Peter Wilson (CUA) and Donald Arseneau
+%% for allowing the inclusion of the \@ifmtarg command
+%% from their ifmtarg LaTeX package.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex,
+%% bare_conf.tex, bare_jrnl.tex, bare_conf_compsoc.tex,
+%% bare_jrnl_compsoc.tex
+%%
+%% Major changes to the user interface should be indicated by an
+%% increase in the version numbers. If a version is a beta, it will
+%% be indicated with a BETA suffix, i.e., 1.4 BETA.
+%% Small changes can be indicated by appending letters to the version
+%% such as "IEEEtran_v14a.cls".
+%% In all cases, \Providesclass, any \typeout messages to the user,
+%% \IEEEtransversionmajor and \IEEEtransversionminor must reflect the
+%% correct version information.
+%% The changes should also be documented via source comments.
+%%*************************************************************************
+%%
+%
+% Available class options
+% e.g., \documentclass[10pt,conference]{IEEEtran}
+%
+% *** choose only one from each category ***
+%
+% 9pt, 10pt, 11pt, 12pt
+% Sets normal font size. The default is 10pt.
+%
+% conference, journal, technote, peerreview, peerreviewca
+% determines format mode - conference papers, journal papers,
+% correspondence papers (technotes), or peer review papers. The user
+% should also select 9pt when using technote. peerreview is like
+% journal mode, but provides for a single-column "cover" title page for
+% anonymous peer review. The paper title (without the author names) is
+% repeated at the top of the page after the cover page. For peer review
+% papers, the \IEEEpeerreviewmaketitle command must be executed (will
+% automatically be ignored for non-peerreview modes) at the place the
+% cover page is to end, usually just after the abstract (keywords are
+% not normally used with peer review papers). peerreviewca is like
+% peerreview, but allows the author names to be entered and formatted
+% as with conference mode so that author affiliation and contact
+% information can be easily seen on the cover page.
+% The default is journal.
+%
+% draft, draftcls, draftclsnofoot, final
+% determines if paper is formatted as a widely spaced draft (for
+% handwritten editor comments) or as a properly typeset final version.
+% draftcls restricts draft mode to the class file while all other LaTeX
+% packages (i.e., \usepackage{graphicx}) will behave as final - allows
+% for a draft paper with visible figures, etc. draftclsnofoot is like
+% draftcls, but does not display the date and the word "DRAFT" at the foot
+% of the pages. If using one of the draft modes, the user will probably
+% also want to select onecolumn.
+% The default is final.
+%
+% letterpaper, a4paper, cspaper
+% determines paper size: 8.5in X 11in, 210mm X 297mm or 7.875in X 10.75in.
+% Changing the paper size in the standard journal and conference modes
+% will not alter the typesetting of the document - only the margins will
+% be affected. In particular, documents using the a4paper option will
+% have reduced side margins (A4 is narrower than US letter) and a longer
+% bottom margin (A4 is longer than US letter). For both cases, the top
+% margins will be the same and the text will be horizontally centered.
+% For the compsoc conference and draft modes, it is the margins that will
+% remain constant, and thus the text area size will vary, with changes in
+% the paper size.
+% The cspaper option is the special ``trim'' paper size (7.875in x 10.75in)
+% used in the actual publication of Computer Society journals. Under
+% compsoc journal mode, this option does not alter the typesetting of the
+% document. Authors should invoke the cspaper option only if requested to
+% do so by the editors of the specific journal they are submitting to.
+% For final submission to the IEEE, authors should generally use US letter
+% (8.5 X 11in) paper unless otherwise instructed. Note that authors should
+% ensure that all post-processing (ps, pdf, etc.) uses the same paper
+% specificiation as the .tex document. Problems here are by far the number
+% one reason for incorrect margins. IEEEtran will automatically set the
+% default paper size under pdflatex (without requiring any change to
+% pdftex.cfg), so this issue is more important to dvips users. Fix
+% config.ps, config.pdf, or ~/.dvipsrc for dvips, or use the
+% dvips -t papersize option instead as needed. For the cspaper option,
+% the corresponding dvips paper name is "ieeecs".
+% See the testflow documentation
+% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/testflow
+% for more details on dvips paper size configuration.
+% The default is letterpaper.
+%
+% oneside, twoside
+% determines if layout follows single sided or two sided (duplex)
+% printing. The only notable change is with the headings at the top of
+% the pages.
+% The default is oneside.
+%
+% onecolumn, twocolumn
+% determines if text is organized into one or two columns per page. One
+% column mode is usually used only with draft papers.
+% The default is twocolumn.
+%
+% comsoc, compsoc, transmag
+% Use the format of the IEEE Communications Society, IEEE Computer Society
+% or IEEE Transactions on Magnetics, respectively.
+%
+% romanappendices
+% Use the "Appendix I" convention when numbering appendices. IEEEtran.cls
+% now defaults to Alpha "Appendix A" convention - the opposite of what
+% v1.6b and earlier did.
+%
+% captionsoff
+% disables the display of the figure/table captions. Some IEEE journals
+% request that captions be removed and figures/tables be put on pages
+% of their own at the end of an initial paper submission. The endfloat
+% package can be used with this class option to achieve this format.
+%
+% nofonttune
+% turns off tuning of the font interword spacing. Maybe useful to those
+% not using the standard Times fonts or for those who have already "tuned"
+% their fonts.
+% The default is to enable IEEEtran to tune font parameters.
+%
+%
+%----------
+% Available CLASSINPUTs provided (all are macros unless otherwise noted):
+% \CLASSINPUTbaselinestretch
+% \CLASSINPUTinnersidemargin
+% \CLASSINPUToutersidemargin
+% \CLASSINPUTtoptextmargin
+% \CLASSINPUTbottomtextmargin
+%
+% Available CLASSINFOs provided:
+% \ifCLASSINFOpdf (TeX if conditional)
+% \CLASSINFOpaperwidth (macro)
+% \CLASSINFOpaperheight (macro)
+% \CLASSINFOnormalsizebaselineskip (length)
+% \CLASSINFOnormalsizeunitybaselineskip (length)
+%
+% Available CLASSOPTIONs provided:
+% all class option flags (TeX if conditionals) unless otherwise noted,
+% e.g., \ifCLASSOPTIONcaptionsoff
+% point size options provided as a single macro:
+% \CLASSOPTIONpt
+% which will be defined as 9, 10, 11, or 12 depending on the document's
+% normalsize point size.
+% also, class option peerreviewca implies the use of class option peerreview
+% and classoption draft implies the use of class option draftcls
+
+
+
+
+
+\ProvidesClass{IEEEtran}[2015/08/26 V1.8b by Michael Shell]
+\typeout{-- See the "IEEEtran_HOWTO" manual for usage information.}
+\typeout{-- http://www.michaelshell.org/tex/ieeetran/}
+\NeedsTeXFormat{LaTeX2e}
+
+% IEEEtran.cls version numbers, provided as of V1.3
+% These values serve as a way a .tex file can
+% determine if the new features are provided.
+% The version number of this IEEEtrans.cls can be obtained from
+% these values. i.e., V1.4
+% KEEP THESE AS INTEGERS! i.e., NO {4a} or anything like that-
+% (no need to enumerate "a" minor changes here)
+\def\IEEEtransversionmajor{1}
+\def\IEEEtransversionminor{8}
+
+
+% hook to allow easy changeover to IEEEtran.cls/tools.sty error reporting
+\def\@IEEEclspkgerror{\ClassError{IEEEtran}}
+
+
+% These do nothing, but provide them like in article.cls
+\newif\if@restonecol
+\newif\if@titlepage
+
+
+% class option conditionals
+\newif\ifCLASSOPTIONonecolumn \CLASSOPTIONonecolumnfalse
+\newif\ifCLASSOPTIONtwocolumn \CLASSOPTIONtwocolumntrue
+
+\newif\ifCLASSOPTIONoneside \CLASSOPTIONonesidetrue
+\newif\ifCLASSOPTIONtwoside \CLASSOPTIONtwosidefalse
+
+\newif\ifCLASSOPTIONfinal \CLASSOPTIONfinaltrue
+\newif\ifCLASSOPTIONdraft \CLASSOPTIONdraftfalse
+\newif\ifCLASSOPTIONdraftcls \CLASSOPTIONdraftclsfalse
+\newif\ifCLASSOPTIONdraftclsnofoot \CLASSOPTIONdraftclsnofootfalse
+
+\newif\ifCLASSOPTIONpeerreview \CLASSOPTIONpeerreviewfalse
+\newif\ifCLASSOPTIONpeerreviewca \CLASSOPTIONpeerreviewcafalse
+
+\newif\ifCLASSOPTIONjournal \CLASSOPTIONjournaltrue
+\newif\ifCLASSOPTIONconference \CLASSOPTIONconferencefalse
+\newif\ifCLASSOPTIONtechnote \CLASSOPTIONtechnotefalse
+
+\newif\ifCLASSOPTIONnofonttune \CLASSOPTIONnofonttunefalse
+
+\newif\ifCLASSOPTIONcaptionsoff \CLASSOPTIONcaptionsofffalse
+
+\newif\ifCLASSOPTIONcomsoc \CLASSOPTIONcomsocfalse
+\newif\ifCLASSOPTIONcompsoc \CLASSOPTIONcompsocfalse
+\newif\ifCLASSOPTIONtransmag \CLASSOPTIONtransmagfalse
+
+\newif\ifCLASSOPTIONromanappendices \CLASSOPTIONromanappendicesfalse
+
+
+% class info conditionals
+
+% indicates if pdf (via pdflatex) output
+\newif\ifCLASSINFOpdf \CLASSINFOpdffalse
+
+
+% V1.6b internal flag to show if using a4paper
+\newif\if@IEEEusingAfourpaper \@IEEEusingAfourpaperfalse
+% V1.6b internal flag to show if using cspaper
+\newif\if@IEEEusingcspaper \@IEEEusingcspaperfalse
+
+
+% IEEEtran class scratch pad registers
+% dimen
+\newdimen\@IEEEtrantmpdimenA
+\newdimen\@IEEEtrantmpdimenB
+\newdimen\@IEEEtrantmpdimenC
+% count
+\newcount\@IEEEtrantmpcountA
+\newcount\@IEEEtrantmpcountB
+\newcount\@IEEEtrantmpcountC
+% token list
+\newtoks\@IEEEtrantmptoksA
+
+% we use \CLASSOPTIONpt so that we can ID the point size (even for 9pt docs)
+% as well as LaTeX's \@ptsize to retain some compatability with some
+% external packages
+\def\@ptsize{0}
+% LaTeX does not support 9pt, so we set \@ptsize to 0 - same as that of 10pt
+\DeclareOption{9pt}{\def\CLASSOPTIONpt{9}\def\@ptsize{0}}
+\DeclareOption{10pt}{\def\CLASSOPTIONpt{10}\def\@ptsize{0}}
+\DeclareOption{11pt}{\def\CLASSOPTIONpt{11}\def\@ptsize{1}}
+\DeclareOption{12pt}{\def\CLASSOPTIONpt{12}\def\@ptsize{2}}
+
+
+
+\DeclareOption{letterpaper}{\setlength{\paperwidth}{8.5in}%
+ \setlength{\paperheight}{11in}%
+ \@IEEEusingAfourpaperfalse
+ \@IEEEusingcspaperfalse
+ \def\CLASSOPTIONpaper{letter}%
+ \def\CLASSINFOpaperwidth{8.5in}%
+ \def\CLASSINFOpaperheight{11in}}
+
+
+\DeclareOption{a4paper}{\setlength{\paperwidth}{210mm}%
+ \setlength{\paperheight}{297mm}%
+ \@IEEEusingAfourpapertrue
+ \@IEEEusingcspaperfalse
+ \def\CLASSOPTIONpaper{a4}%
+ \def\CLASSINFOpaperwidth{210mm}%
+ \def\CLASSINFOpaperheight{297mm}}
+
+% special paper option for compsoc journals
+\DeclareOption{cspaper}{\setlength{\paperwidth}{7.875in}%
+ \setlength{\paperheight}{10.75in}%
+ \@IEEEusingcspapertrue
+ \@IEEEusingAfourpaperfalse
+ \def\CLASSOPTIONpaper{ieeecs}%
+ \def\CLASSINFOpaperwidth{7.875in}%
+ \def\CLASSINFOpaperheight{10.75in}}
+
+\DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse
+ \CLASSOPTIONonesidetrue\CLASSOPTIONtwosidefalse}
+\DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue
+ \CLASSOPTIONtwosidetrue\CLASSOPTIONonesidefalse}
+
+\DeclareOption{onecolumn}{\CLASSOPTIONonecolumntrue\CLASSOPTIONtwocolumnfalse}
+\DeclareOption{twocolumn}{\CLASSOPTIONtwocolumntrue\CLASSOPTIONonecolumnfalse}
+
+% If the user selects draft, then this class AND any packages
+% will go into draft mode.
+\DeclareOption{draft}{\CLASSOPTIONdrafttrue\CLASSOPTIONdraftclstrue
+ \CLASSOPTIONdraftclsnofootfalse}
+% draftcls is for a draft mode which will not affect any packages
+% used by the document.
+\DeclareOption{draftcls}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue
+ \CLASSOPTIONdraftclsnofootfalse}
+% draftclsnofoot is like draftcls, but without the footer.
+\DeclareOption{draftclsnofoot}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue
+ \CLASSOPTIONdraftclsnofoottrue}
+\DeclareOption{final}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclsfalse
+ \CLASSOPTIONdraftclsnofootfalse}
+
+\DeclareOption{journal}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse
+ \CLASSOPTIONjournaltrue\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse}
+
+\DeclareOption{conference}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse
+ \CLASSOPTIONjournalfalse\CLASSOPTIONconferencetrue\CLASSOPTIONtechnotefalse}
+
+\DeclareOption{technote}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse
+ \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotetrue}
+
+\DeclareOption{peerreview}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcafalse
+ \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse}
+
+\DeclareOption{peerreviewca}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcatrue
+ \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse}
+
+\DeclareOption{nofonttune}{\CLASSOPTIONnofonttunetrue}
+
+\DeclareOption{captionsoff}{\CLASSOPTIONcaptionsofftrue}
+
+\DeclareOption{comsoc}{\CLASSOPTIONcomsoctrue\CLASSOPTIONcompsocfalse\CLASSOPTIONtransmagfalse}
+
+\DeclareOption{compsoc}{\CLASSOPTIONcomsocfalse\CLASSOPTIONcompsoctrue\CLASSOPTIONtransmagfalse}
+
+\DeclareOption{transmag}{\CLASSOPTIONtransmagtrue\CLASSOPTIONcomsocfalse\CLASSOPTIONcompsocfalse}
+
+\DeclareOption{romanappendices}{\CLASSOPTIONromanappendicestrue}
+
+
+% default to US letter paper, 10pt, twocolumn, one sided, final, journal
+\ExecuteOptions{letterpaper,10pt,twocolumn,oneside,final,journal}
+% overrride these defaults per user requests
+\ProcessOptions
+
+
+
+%% -- Command Argument Scanning Support Functions --
+
+% Sets the category codes for punctuation to their normal values.
+% For local use with argument scanning.
+\def\IEEEnormalcatcodespunct{\catcode`\!=12 \catcode`\,=12 \catcode`\:=12
+\catcode`\;=12 \catcode`\`=12 \catcode`\'=12 \catcode`\"=12 \catcode`\.=12
+\catcode`\/=12 \catcode`\?=12 \catcode`\*=12 \catcode`\+=12 \catcode`\-=12
+\catcode`\<=12 \catcode`\>=12 \catcode`\(=12 \catcode`\)=12 \catcode`\[=12
+\catcode`\]=12 \catcode`\==12 \catcode`\|=12}
+% Sets the category codes for numbers to their normal values.
+% For local use with argument scanning.
+\def\IEEEnormalcatcodesnum{\catcode`\0=12 \catcode`\1=12 \catcode`\2=12
+\catcode`\3=12 \catcode`\4=12 \catcode`\5=12 \catcode`\6=12 \catcode`\7=12
+\catcode`\8=12 \catcode`\9=12}
+% combined action of \IEEEnormalcatcodespunct and \IEEEnormalcatcodesnum
+\def\IEEEnormalcatcodes{\IEEEnormalcatcodespunct\IEEEnormalcatcodesnum}
+
+
+% usage: \@IEEEextracttoken*{}
+% \@IEEEextracttoken fully expands its argument (which it then stores in
+% \@IEEEextracttokenarg) via \edef and then the meaning of the first
+% nonbrace (but including the empty group) token found is assigned via \let
+% to \@IEEEextractedtoken as well as stored in the macro
+% \@IEEEextractedtokenmacro. Tokens that would otherwise be discarded during
+% the acquisition of the first are stored in \@IEEEextractedtokensdiscarded,
+% however their original relative brace nesting depths are not guaranteed to
+% be preserved.
+% If the argument is empty, or if a first nonbrace token does not exist (or
+% is an empty group), \@IEEEextractedtoken will be \relax and
+% \@IEEEextractedtokenmacro and \@IEEEextractedtokensdiscarded will be empty.
+%
+% For example:
+% \@IEEEextracttoken{{{ab}{cd}}{{ef}g}}
+% results in:
+%
+% \@IEEEextracttokenarg ==> a macro containing {{ab}{cd}}{{ef}g}
+% \@IEEEextractedtoken ==> the letter a
+% \@IEEEextractedtokenmacro ==> a macro containing a
+% \@IEEEextractedtokensdiscarded ==> a macro containing bcd{ef}g
+%
+% the *-star form, \@IEEEextracttoken*, does not expand its argument
+% contents during processing.
+\def\@IEEEextracttoken{\@ifstar{\let\@IEEEextracttokendef=\def\@@IEEEextracttoken}{\let\@IEEEextracttokendef=\edef\@@IEEEextracttoken}}
+
+\def\@@IEEEextracttoken#1{\@IEEEextracttokendef\@IEEEextracttokenarg{#1}\relax
+\def\@IEEEextractedtokensdiscarded{}\relax % initialize to empty
+% if the macro is unchanged after being acquired as a single undelimited argument
+% with anything after it being stripped off as a delimited argument
+% we know we have one token without any enclosing braces. loop until this is true.
+\let\@IEEEextracttokencurgroup\@IEEEextracttokenarg
+\loop
+ % trap case of an empty argument as this would cause a problem with
+ % \@@@IEEEextracttoken's first (nondelimited) argument acquisition
+ \ifx\@IEEEextracttokencurgroup\@empty
+ \def\@IEEEextractedtokenmacro{}\relax
+ \else
+ \expandafter\@@@IEEEextracttoken\@IEEEextracttokencurgroup\@IEEEgeneralsequenceDELIMITER\relax
+ \fi
+ \ifx\@IEEEextractedtokenmacro\@IEEEextracttokencurgroup
+ \else
+ \let\@IEEEextracttokencurgroup=\@IEEEextractedtokenmacro
+\repeat
+% we can safely do a \let= here because there should be at most one token
+% the relax is needed to handle the case of no token found
+\expandafter\let\expandafter\@IEEEextractedtoken\@IEEEextractedtokenmacro\relax}
+
+\def\@@@IEEEextracttoken#1#2\@IEEEgeneralsequenceDELIMITER{\def\@IEEEextractedtokenmacro{#1}\relax
+\def\@@IEEEextractedtokensdiscarded{#2}\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter
+\@IEEEextractedtokensdiscarded\expandafter\expandafter\expandafter
+{\expandafter\@@IEEEextractedtokensdiscarded\@IEEEextractedtokensdiscarded}}
+%%
+%% -- End of Command Argument Scanning Support Functions --
+
+
+
+% Computer Society conditional execution command
+\long\def\@IEEEcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\relax#1\relax\fi\relax}
+% inverse
+\long\def\@IEEEnotcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\else\relax#1\relax\fi\relax}
+% compsoc conference
+\long\def\@IEEEcompsocconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\relax#1\relax\fi\fi\relax}
+% compsoc not conference
+\long\def\@IEEEcompsocnotconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\else\relax#1\relax\fi\fi\relax}
+
+
+% comsoc verify that newtxmath, mtpro2, mt11p or mathtime has been loaded
+\def\@IEEEcomsocverifymathfont{\typeout{-- Verifying Times compatible math font.}\relax
+ \@ifpackageloaded{newtxmath}{\typeout{-- newtxmath loaded, OK.}}{\@@IEEEcomsocverifymathfont}}
+\def\@@IEEEcomsocverifymathfont{\@ifpackageloaded{mtpro2}{\typeout{-- mtpro2 loaded, OK.}}{\@@@IEEEcomsocverifymathfont}}
+\def\@@@IEEEcomsocverifymathfont{\@ifpackageloaded{mt11p}{\typeout{-- mt11p2 loaded, OK.}}{\@@@@IEEEcomsocverifymathfont}}
+\def\@@@@IEEEcomsocverifymathfont{\@ifpackageloaded{mathtime}{\typeout{-- mathtime loaded, OK.}}{\@IEEEcomsocenforcemathfont}}
+
+% comsoc, if a Times math font was not loaded by user, enforce it
+\def\@IEEEcomsocenforcemathfont{\typeout{** Times compatible math font not found, forcing.}\relax
+\IfFileExists{newtxmath.sty}{\typeout{-- Found newtxmath, loading.}\RequirePackage{newtxmath}}{\@@IEEEcomsocenforcemathfont}}
+\def\@@IEEEcomsocenforcemathfont{\IfFileExists{mtpro2.sty}{\typeout{-- Found mtpro2, loading.}\RequirePackage{mtpro2}}{\@@@IEEEcomsocenforcemathfont}}
+\def\@@@IEEEcomsocenforcemathfont{\IfFileExists{mt11p.sty}{\typeout{-- Found mt11p, loading.}\RequirePackage{mt11p}}{\@@@@IEEEcomsocenforcemathfont}}
+\def\@@@@IEEEcomsocenforcemathfont{\IfFileExists{mathtime.sty}{\typeout{-- Found mathtime, loading.}\RequirePackage{mathtime}}{\@@@@@IEEEcomsocenforcemathfont}}
+% if no acceptable Times math font package found, error with newtxmath requirement
+\def\@@@@@IEEEcomsocenforcemathfont{\typeout{** No Times compatible math font package found. newtxmath is required.}\RequirePackage{newtxmath}}
+
+
+\ifCLASSOPTIONcomsoc
+ % ensure that if newtxmath is used, the cmintegrals option is also invoked
+ \PassOptionsToPackage{cmintegrals}{newtxmath}
+ % comsoc requires a Times like math font
+ % ensure this requirement is satisfied at document start
+ \AtBeginDocument{\@IEEEcomsocverifymathfont}
+\fi
+
+
+
+% The IEEE uses Times Roman font, so we'll default to Times.
+% These three commands make up the entire times.sty package.
+\renewcommand{\sfdefault}{phv}
+\renewcommand{\rmdefault}{ptm}
+\renewcommand{\ttdefault}{pcr}
+
+% V1.7 compsoc nonconference papers, use Palatino/Palladio as the main text font,
+% not Times Roman.
+\@IEEEcompsocnotconfonly{\renewcommand{\rmdefault}{ppl}}
+
+% enable the selected main text font
+\normalfont\selectfont
+
+
+\ifCLASSOPTIONcomsoc
+ \typeout{-- Using IEEE Communications Society mode.}
+\fi
+
+\ifCLASSOPTIONcompsoc
+ \typeout{-- Using IEEE Computer Society mode.}
+\fi
+
+
+% V1.7 conference notice message hook
+\def\@IEEEconsolenoticeconference{\typeout{}%
+\typeout{** Conference Paper **}%
+\typeout{Before submitting the final camera ready copy, remember to:}%
+\typeout{}%
+\typeout{ 1. Manually equalize the lengths of two columns on the last page}%
+\typeout{ of your paper;}%
+\typeout{}%
+\typeout{ 2. Ensure that any PostScript and/or PDF output post-processing}%
+\typeout{ uses only Type 1 fonts and that every step in the generation}%
+\typeout{ process uses the appropriate paper size.}%
+\typeout{}}
+
+
+% we can send console reminder messages to the user here
+\AtEndDocument{\ifCLASSOPTIONconference\@IEEEconsolenoticeconference\fi}
+
+
+% warn about the use of single column other than for draft mode
+\ifCLASSOPTIONtwocolumn\else%
+ \ifCLASSOPTIONdraftcls\else%
+ \typeout{** ATTENTION: Single column mode is not typically used with IEEE publications.}%
+ \fi%
+\fi
+
+
+% V1.7 improved paper size setting code.
+% Set pdfpage and dvips paper sizes. Conditional tests are similar to that
+% of ifpdf.sty. Retain within {} to ensure tested macros are never altered,
+% even if only effect is to set them to \relax.
+% if \pdfoutput is undefined or equal to relax, output a dvips special
+{\@ifundefined{pdfoutput}{\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}}{%
+% pdfoutput is defined and not equal to \relax
+% check for pdfpageheight existence just in case someone sets pdfoutput
+% under non-pdflatex. If exists, set them regardless of value of \pdfoutput.
+\@ifundefined{pdfpageheight}{\relax}{\global\pdfpagewidth\paperwidth
+\global\pdfpageheight\paperheight}%
+% if using \pdfoutput=0 under pdflatex, send dvips papersize special
+\ifcase\pdfoutput
+\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}%
+\else
+% we are using pdf output, set CLASSINFOpdf flag
+\global\CLASSINFOpdftrue
+\fi}}
+
+% let the user know the selected papersize
+\typeout{-- Using \CLASSINFOpaperwidth\space x \CLASSINFOpaperheight\space
+(\CLASSOPTIONpaper)\space paper.}
+
+\ifCLASSINFOpdf
+\typeout{-- Using PDF output.}
+\else
+\typeout{-- Using DVI output.}
+\fi
+
+
+% The idea hinted here is for LaTeX to generate markleft{} and markright{}
+% automatically for you after you enter \author{}, \journal{},
+% \journaldate{}, journalvol{}, \journalnum{}, etc.
+% However, there may be some backward compatibility issues here as
+% well as some special applications for IEEEtran.cls and special issues
+% that may require the flexible \markleft{}, \markright{} and/or \markboth{}.
+% We'll leave this as an open future suggestion.
+%\newcommand{\journal}[1]{\def\@journal{#1}}
+%\def\@journal{}
+
+
+
+% pointsize values
+% used with ifx to determine the document's normal size
+\def\@IEEEptsizenine{9}
+\def\@IEEEptsizeten{10}
+\def\@IEEEptsizeeleven{11}
+\def\@IEEEptsizetwelve{12}
+
+
+
+% FONT DEFINITIONS (No sizexx.clo file needed)
+% V1.6 revised font sizes, displayskip values and
+% revised normalsize baselineskip to reduce underfull vbox problems
+% on the 58pc = 696pt = 9.5in text height we want
+% normalsize #lines/column baselineskip (aka leading)
+% 9pt 63 11.0476pt (truncated down)
+% 10pt 58 12pt (exact)
+% 11pt 52 13.3846pt (truncated down)
+% 12pt 50 13.92pt (exact)
+%
+
+% we need to store the nominal baselineskip for the given font size
+% in case baselinestretch ever changes.
+% this is a dimen, so it will not hold stretch or shrink
+\newdimen\@IEEEnormalsizeunitybaselineskip
+\@IEEEnormalsizeunitybaselineskip\baselineskip
+
+
+
+%% ******* WARNING! *******
+%%
+%% Authors should not alter font sizes, baselineskip ("leading"),
+%% margins or other spacing values in an attempt to squeeze more
+%% material on each page.
+%%
+%% The IEEE's own typesetting software will restore the correct
+%% values when re-typesetting/proofing the submitted document,
+%% possibly resulting in unexpected article over length charges.
+%%
+%% ******* WARNING! *******
+
+
+% 9pt option defaults
+\ifx\CLASSOPTIONpt\@IEEEptsizenine
+\typeout{-- This is a 9 point document.}
+\def\normalsize{\@setfontsize{\normalsize}{9}{11.0476pt}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{11.0476pt}
+\normalsize
+\abovedisplayskip 1.5ex plus 3pt minus 1pt
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 3pt
+\belowdisplayshortskip 1.5ex plus 3pt minus 1pt
+\def\small{\@setfontsize{\small}{8.5}{10pt}}
+\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}}
+\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}}
+\def\tiny{\@setfontsize{\tiny}{5}{6pt}}
+% sublargesize is the same as large - 10pt
+\def\sublargesize{\@setfontsize{\sublargesize}{10}{12pt}}
+\def\large{\@setfontsize{\large}{10}{12pt}}
+\def\Large{\@setfontsize{\Large}{12}{14pt}}
+\def\LARGE{\@setfontsize{\LARGE}{14}{17pt}}
+\def\huge{\@setfontsize{\huge}{17}{20pt}}
+\def\Huge{\@setfontsize{\Huge}{20}{24pt}}
+\fi
+%
+% 10pt option defaults
+\ifx\CLASSOPTIONpt\@IEEEptsizeten
+\typeout{-- This is a 10 point document.}
+\def\normalsize{\@setfontsize{\normalsize}{10}{12.00pt}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{12pt}
+\normalsize
+\abovedisplayskip 1.5ex plus 4pt minus 2pt
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 4pt
+\belowdisplayshortskip 1.5ex plus 4pt minus 2pt
+\def\small{\@setfontsize{\small}{9}{10pt}}
+\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}}
+\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}}
+\def\tiny{\@setfontsize{\tiny}{5}{6pt}}
+% sublargesize is a tad smaller than large - 11pt
+\def\sublargesize{\@setfontsize{\sublargesize}{11}{13.4pt}}
+\def\large{\@setfontsize{\large}{12}{14pt}}
+\def\Large{\@setfontsize{\Large}{14}{17pt}}
+\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}}
+\def\huge{\@setfontsize{\huge}{20}{24pt}}
+\def\Huge{\@setfontsize{\Huge}{24}{28pt}}
+\fi
+%
+% 11pt option defaults
+\ifx\CLASSOPTIONpt\@IEEEptsizeeleven
+\typeout{-- This is an 11 point document.}
+\def\normalsize{\@setfontsize{\normalsize}{11}{13.3846pt}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{13.3846pt}
+\normalsize
+\abovedisplayskip 1.5ex plus 5pt minus 3pt
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 5pt
+\belowdisplayshortskip 1.5ex plus 5pt minus 3pt
+\def\small{\@setfontsize{\small}{10}{12pt}}
+\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}}
+\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}}
+\def\tiny{\@setfontsize{\tiny}{6}{7pt}}
+% sublargesize is the same as large - 12pt
+\def\sublargesize{\@setfontsize{\sublargesize}{12}{14pt}}
+\def\large{\@setfontsize{\large}{12}{14pt}}
+\def\Large{\@setfontsize{\Large}{14}{17pt}}
+\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}}
+\def\huge{\@setfontsize{\huge}{20}{24pt}}
+\def\Huge{\@setfontsize{\Huge}{24}{28pt}}
+\fi
+%
+% 12pt option defaults
+\ifx\CLASSOPTIONpt\@IEEEptsizetwelve
+\typeout{-- This is a 12 point document.}
+\def\normalsize{\@setfontsize{\normalsize}{12}{13.92pt}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{13.92pt}
+\normalsize
+\abovedisplayskip 1.5ex plus 6pt minus 4pt
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 6pt
+\belowdisplayshortskip 1.5ex plus 6pt minus 4pt
+\def\small{\@setfontsize{\small}{10}{12pt}}
+\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}}
+\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}}
+\def\tiny{\@setfontsize{\tiny}{6}{7pt}}
+% sublargesize is the same as large - 14pt
+\def\sublargesize{\@setfontsize{\sublargesize}{14}{17pt}}
+\def\large{\@setfontsize{\large}{14}{17pt}}
+\def\Large{\@setfontsize{\Large}{17}{20pt}}
+\def\LARGE{\@setfontsize{\LARGE}{20}{24pt}}
+\def\huge{\@setfontsize{\huge}{22}{26pt}}
+\def\Huge{\@setfontsize{\Huge}{24}{28pt}}
+\fi
+
+
+
+% V1.8a compsoc font sizes
+% compsoc font sizes use bp "Postscript" point units (1/72in)
+% rather than the traditional pt (1/72.27)
+\ifCLASSOPTIONcompsoc
+% -- compsoc defaults --
+% ** will override some of these values later **
+% 9pt
+\ifx\CLASSOPTIONpt\@IEEEptsizenine
+\def\normalsize{\@setfontsize{\normalsize}{9bp}{11bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{11bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 3bp minus 1bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0bp plus 3bp
+\belowdisplayshortskip 1.5ex plus 3bp minus 1bp
+\def\small{\@setfontsize{\small}{8.5bp}{10bp}}
+\def\footnotesize{\@setfontsize{\footnotesize}{8bp}{9bp}}
+\def\scriptsize{\@setfontsize{\scriptsize}{7bp}{8bp}}
+\def\tiny{\@setfontsize{\tiny}{5bp}{6bp}}
+% sublargesize is the same as large - 10bp
+\def\sublargesize{\@setfontsize{\sublargesize}{10bp}{12bp}}
+\def\large{\@setfontsize{\large}{10bp}{12bp}}
+\def\Large{\@setfontsize{\Large}{12bp}{14bp}}
+\def\LARGE{\@setfontsize{\LARGE}{14bp}{17bp}}
+\def\huge{\@setfontsize{\huge}{17bp}{20bp}}
+\def\Huge{\@setfontsize{\Huge}{20bp}{24bp}}
+\fi
+%
+% 10pt
+\ifx\CLASSOPTIONpt\@IEEEptsizeten
+\def\normalsize{\@setfontsize{\normalsize}{10bp}{12bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{12bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 4bp minus 2bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 4bp
+\belowdisplayshortskip 1.5ex plus 4bp minus 2bp
+\def\small{\@setfontsize{\small}{9bp}{10bp}}
+\def\footnotesize{\@setfontsize{\footnotesize}{8bp}{9bp}}
+\def\scriptsize{\@setfontsize{\scriptsize}{7bp}{8bp}}
+\def\tiny{\@setfontsize{\tiny}{5bp}{6bp}}
+% sublargesize is a tad smaller than large - 11bp
+\def\sublargesize{\@setfontsize{\sublargesize}{11bp}{13.5bp}}
+\def\large{\@setfontsize{\large}{12bp}{14bp}}
+\def\Large{\@setfontsize{\Large}{14bp}{17bp}}
+\def\LARGE{\@setfontsize{\LARGE}{17bp}{20bp}}
+\def\huge{\@setfontsize{\huge}{20bp}{24bp}}
+\def\Huge{\@setfontsize{\Huge}{24bp}{28bp}}
+\fi
+%
+% 11pt
+\ifx\CLASSOPTIONpt\@IEEEptsizeeleven
+\def\normalsize{\@setfontsize{\normalsize}{11bp}{13.5bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{13.5bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 5bp minus 3bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 5bp
+\belowdisplayshortskip 1.5ex plus 5bp minus 3bp
+\def\small{\@setfontsize{\small}{10bp}{12bp}}
+\def\footnotesize{\@setfontsize{\footnotesize}{9bp}{10.5bp}}
+\def\scriptsize{\@setfontsize{\scriptsize}{8bp}{9bp}}
+\def\tiny{\@setfontsize{\tiny}{6bp}{7bp}}
+% sublargesize is the same as large - 12bp
+\def\sublargesize{\@setfontsize{\sublargesize}{12bp}{14bp}}
+\def\large{\@setfontsize{\large}{12bp}{14bp}}
+\def\Large{\@setfontsize{\Large}{14bp}{17bp}}
+\def\LARGE{\@setfontsize{\LARGE}{17bp}{20bp}}
+\def\huge{\@setfontsize{\huge}{20bp}{24bp}}
+\def\Huge{\@setfontsize{\Huge}{24bp}{28bp}}
+\fi
+%
+% 12pt
+\ifx\CLASSOPTIONpt\@IEEEptsizetwelve
+\def\normalsize{\@setfontsize{\normalsize}{12bp}{14bp}}%
+\setlength{\@IEEEnormalsizeunitybaselineskip}{14bp}%
+\normalsize
+\abovedisplayskip 1.5ex plus 6bp minus 4bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 6bp
+\belowdisplayshortskip 1.5ex plus 6bp minus 4bp
+\def\small{\@setfontsize{\small}{10bp}{12bp}}
+\def\footnotesize{\@setfontsize{\footnotesize}{9bp}{10.5bp}}
+\def\scriptsize{\@setfontsize{\scriptsize}{8bp}{9bp}}
+\def\tiny{\@setfontsize{\tiny}{6bp}{7bp}}
+% sublargesize is the same as large - 14bp
+\def\sublargesize{\@setfontsize{\sublargesize}{14bp}{17bp}}
+\def\large{\@setfontsize{\large}{14bp}{17bp}}
+\def\Large{\@setfontsize{\Large}{17bp}{20bp}}
+\def\LARGE{\@setfontsize{\LARGE}{20bp}{24bp}}
+\def\huge{\@setfontsize{\huge}{22bp}{26bp}}
+\def\Huge{\@setfontsize{\Huge}{24bp}{28bp}}
+\fi
+%
+% -- override defaults: compsoc journals use special normalsizes --
+\ifCLASSOPTIONconference
+%
+% compsoc conferences
+% 9pt
+\ifx\CLASSOPTIONpt\@IEEEptsizenine
+\def\normalsize{\@setfontsize{\normalsize}{9bp}{10.8bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{10.8bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 3bp minus 1bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0bp plus 3bp
+\belowdisplayshortskip 1.5ex plus 3bp minus 1bp
+\fi
+% 10pt
+\ifx\CLASSOPTIONpt\@IEEEptsizeten
+\def\normalsize{\@setfontsize{\normalsize}{10bp}{11.2bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{11.2bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 4bp minus 2bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 4bp
+\belowdisplayshortskip 1.5ex plus 4bp minus 2bp
+\fi
+% 11pt
+\ifx\CLASSOPTIONpt\@IEEEptsizeeleven
+\def\normalsize{\@setfontsize{\normalsize}{11bp}{13.2bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{13.2bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 5bp minus 3bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 5bp
+\belowdisplayshortskip 1.5ex plus 5bp minus 3bp
+\fi
+% 12pt
+\ifx\CLASSOPTIONpt\@IEEEptsizetwelve
+\def\normalsize{\@setfontsize{\normalsize}{12bp}{14.4bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{14.4bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 6bp minus 4bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 6bp
+\belowdisplayshortskip 1.5ex plus 6bp minus 4bp
+\fi
+%
+% compsoc nonconferences
+\else
+% 9pt
+\ifx\CLASSOPTIONpt\@IEEEptsizenine
+\def\normalsize{\@setfontsize{\normalsize}{9bp}{10.8bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{10.8bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 3bp minus 1bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0bp plus 3bp
+\belowdisplayshortskip 1.5ex plus 3bp minus 1bp
+\fi
+% 10pt
+\ifx\CLASSOPTIONpt\@IEEEptsizeten
+% the official spec is 9.5bp with 11.4bp leading for 10pt,
+% but measurements of proofs suggest upto 11.723bp leading
+% here we'll use 11.54bp which gives 61 lines per column
+% with the standard compsoc margins
+\def\normalsize{\@setfontsize{\normalsize}{9.5bp}{11.54bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{11.54bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 4bp minus 2bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 4bp
+\belowdisplayshortskip 1.5ex plus 4bp minus 2bp
+\fi
+% 11pt
+\ifx\CLASSOPTIONpt\@IEEEptsizeeleven
+\def\normalsize{\@setfontsize{\normalsize}{11bp}{13.2bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{13.2bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 5bp minus 3bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 5bp
+\belowdisplayshortskip 1.5ex plus 5bp minus 3bp
+\fi
+% 12pt
+\ifx\CLASSOPTIONpt\@IEEEptsizetwelve
+\def\normalsize{\@setfontsize{\normalsize}{12bp}{14.4bp}}
+\setlength{\@IEEEnormalsizeunitybaselineskip}{14.4bp}
+\normalsize
+\abovedisplayskip 1.5ex plus 6bp minus 4bp
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus 6bp
+\belowdisplayshortskip 1.5ex plus 6bp minus 4bp
+\fi
+\fi\fi
+
+
+
+
+% V1.6 The Computer Modern Fonts will issue a substitution warning for
+% 24pt titles (24.88pt is used instead, but the default and correct
+% Times font will scale exactly as needed) increase the substitution
+% tolerance to turn off this warning.
+%
+% V1.8a, the compsoc bp font sizes can also cause bogus font substitution
+% warnings with footnote or scriptsize math and the $\bullet$ itemized
+% list of \IEEEcompsocitemizethanks. So, increase this to 1.5pt or more.
+\def\fontsubfuzz{1.7bp}
+
+
+% warn the user in case they forget to use the 9pt option with
+% technote
+\ifCLASSOPTIONtechnote%
+ \ifx\CLASSOPTIONpt\@IEEEptsizenine\else%
+ \typeout{** ATTENTION: Technotes are normally 9pt documents.}%
+ \fi%
+\fi
+
+
+% V1.7
+% Improved \textunderscore to provide a much better fake _ when used with
+% OT1 encoding. Under OT1, detect use of pcr or cmtt \ttfamily and use
+% available true _ glyph for those two typewriter fonts.
+\def\@IEEEstringptm{ptm} % Times Roman family
+\def\@IEEEstringppl{ppl} % Palatino Roman family
+\def\@IEEEstringphv{phv} % Helvetica Sans Serif family
+\def\@IEEEstringpcr{pcr} % Courier typewriter family
+\def\@IEEEstringcmtt{cmtt} % Computer Modern typewriter family
+\DeclareTextCommandDefault{\textunderscore}{\leavevmode
+\ifx\f@family\@IEEEstringpcr\string_\else
+\ifx\f@family\@IEEEstringcmtt\string_\else
+\ifx\f@family\@IEEEstringptm\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else
+\ifx\f@family\@IEEEstringppl\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else
+\ifx\f@family\@IEEEstringphv\kern -0.03em\vbox{\hrule\@width 0.62em\@height 0.52pt\kern -0.33ex}\kern -0.03em\else
+\kern 0.09em\vbox{\hrule\@width 0.6em\@height 0.44pt\kern -0.63pt\kern -0.42ex}\kern 0.09em\fi\fi\fi\fi\fi\relax}
+
+
+
+
+% set the default \baselinestretch
+\def\baselinestretch{1}
+\ifCLASSOPTIONdraftcls
+ \def\baselinestretch{1.5}% default baselinestretch for draft modes
+\fi
+
+
+% process CLASSINPUT baselinestretch
+\ifx\CLASSINPUTbaselinestretch\@IEEEundefined
+\else
+ \edef\baselinestretch{\CLASSINPUTbaselinestretch} % user CLASSINPUT override
+ \typeout{** ATTENTION: Overriding \string\baselinestretch\space to
+ \baselinestretch\space via \string\CLASSINPUT.}
+\fi
+
+\small\normalsize % make \baselinestretch take affect
+
+
+
+
+% store the normalsize baselineskip
+\newdimen\CLASSINFOnormalsizebaselineskip
+\CLASSINFOnormalsizebaselineskip=\baselineskip\relax
+% and the normalsize unity (baselinestretch=1) baselineskip
+% we could save a register by giving the user access to
+% \@IEEEnormalsizeunitybaselineskip. However, let's protect
+% its read only internal status
+\newdimen\CLASSINFOnormalsizeunitybaselineskip
+\CLASSINFOnormalsizeunitybaselineskip=\@IEEEnormalsizeunitybaselineskip\relax
+% store the nominal value of jot
+\newdimen\IEEEnormaljot
+\IEEEnormaljot=0.25\baselineskip\relax
+
+% set \jot
+\jot=\IEEEnormaljot\relax
+
+
+
+
+% V1.6, we are now going to fine tune the interword spacing
+% The default interword glue for Times under TeX appears to use a
+% nominal interword spacing of 25% (relative to the font size, i.e., 1em)
+% a maximum of 40% and a minimum of 19%.
+% For example, 10pt text uses an interword glue of:
+%
+% 2.5pt plus 1.49998pt minus 0.59998pt
+%
+% However, the IEEE allows for a more generous range which reduces the need
+% for hyphenation, especially for two column text. Furthermore, the IEEE
+% tends to use a little bit more nominal space between the words.
+% The IEEE's interword spacing percentages appear to be:
+% 35% nominal
+% 23% minimum
+% 50% maximum
+% (They may even be using a tad more for the largest fonts such as 24pt.)
+%
+% for bold text, the IEEE increases the spacing a little more:
+% 37.5% nominal
+% 23% minimum
+% 55% maximum
+
+% here are the interword spacing ratios we'll use
+% for medium (normal weight)
+\def\@IEEEinterspaceratioM{0.35}
+\def\@IEEEinterspaceMINratioM{0.23}
+\def\@IEEEinterspaceMAXratioM{0.50}
+
+% for bold
+\def\@IEEEinterspaceratioB{0.375}
+\def\@IEEEinterspaceMINratioB{0.23}
+\def\@IEEEinterspaceMAXratioB{0.55}
+
+
+% compsoc nonconference papers use Palatino,
+% tweak settings to better match the proofs
+\ifCLASSOPTIONcompsoc
+\ifCLASSOPTIONconference\else
+% for medium (normal weight)
+\def\@IEEEinterspaceratioM{0.28}
+\def\@IEEEinterspaceMINratioM{0.21}
+\def\@IEEEinterspaceMAXratioM{0.47}
+% for bold
+\def\@IEEEinterspaceratioB{0.305}
+\def\@IEEEinterspaceMINratioB{0.21}
+\def\@IEEEinterspaceMAXratioB{0.52}
+\fi\fi
+
+
+% command to revise the interword spacing for the current font under TeX:
+% \fontdimen2 = nominal interword space
+% \fontdimen3 = interword stretch
+% \fontdimen4 = interword shrink
+% since all changes to the \fontdimen are global, we can enclose these commands
+% in braces to confine any font attribute or length changes
+\def\@@@IEEEsetfontdimens#1#2#3{{%
+\setlength{\@IEEEtrantmpdimenB}{\f@size pt}% grab the font size in pt, could use 1em instead.
+\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}%
+\fontdimen2\font=\@IEEEtrantmpdimenA\relax
+\addtolength{\@IEEEtrantmpdimenA}{-#2\@IEEEtrantmpdimenB}%
+\fontdimen3\font=-\@IEEEtrantmpdimenA\relax
+\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}%
+\addtolength{\@IEEEtrantmpdimenA}{-#3\@IEEEtrantmpdimenB}%
+\fontdimen4\font=\@IEEEtrantmpdimenA\relax}}
+
+% revise the interword spacing for each font weight
+\def\@@IEEEsetfontdimens{{%
+\mdseries
+\@@@IEEEsetfontdimens{\@IEEEinterspaceratioM}{\@IEEEinterspaceMAXratioM}{\@IEEEinterspaceMINratioM}%
+\bfseries
+\@@@IEEEsetfontdimens{\@IEEEinterspaceratioB}{\@IEEEinterspaceMAXratioB}{\@IEEEinterspaceMINratioB}%
+}}
+
+% revise the interword spacing for each font shape
+% \slshape is not often used for IEEE work and is not altered here. The \scshape caps are
+% already a tad too large in the free LaTeX fonts (as compared to what the IEEE uses) so we
+% won't alter these either.
+\def\@IEEEsetfontdimens{{%
+\normalfont
+\@@IEEEsetfontdimens
+\normalfont\itshape
+\@@IEEEsetfontdimens
+}}
+
+% command to revise the interword spacing for each font size (and shape
+% and weight). Only the \rmfamily is done here as \ttfamily uses a
+% fixed spacing and \sffamily is not used as the main text of IEEE papers.
+\def\@IEEEtunefonts{{\selectfont\rmfamily
+\tiny\@IEEEsetfontdimens
+\scriptsize\@IEEEsetfontdimens
+\footnotesize\@IEEEsetfontdimens
+\small\@IEEEsetfontdimens
+\normalsize\@IEEEsetfontdimens
+\sublargesize\@IEEEsetfontdimens
+\large\@IEEEsetfontdimens
+\LARGE\@IEEEsetfontdimens
+\huge\@IEEEsetfontdimens
+\Huge\@IEEEsetfontdimens}}
+
+% if the nofonttune class option is not given, revise the interword spacing
+% now - in case IEEEtran makes any default length measurements, and make
+% sure all the default fonts are loaded
+\ifCLASSOPTIONnofonttune\else
+\@IEEEtunefonts
+\fi
+
+% and again at the start of the document in case the user loaded different fonts
+\AtBeginDocument{\ifCLASSOPTIONnofonttune\else\@IEEEtunefonts\fi}
+
+
+
+
+
+% -- V1.8a page setup commands --
+
+% The default sample text for calculating margins
+% Note that IEEE publications use \scriptsize for headers and footers.
+\def\IEEEdefaultsampletext{\normalfont\normalsize gT}
+\def\IEEEdefaultheadersampletext{\normalfont\scriptsize T}% IEEE headers default to uppercase
+\def\IEEEdefaultfootersampletext{\normalfont\scriptsize gT}
+
+
+
+% usage: \IEEEsettextwidth{inner margin}{outer margin}
+% Sets \textwidth to allow the specified inner and outer margins
+% for the current \paperwidth.
+\def\IEEEsettextwidth#1#2{\@IEEEtrantmpdimenA\paperwidth
+\@IEEEtrantmpdimenB#1\relax
+\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB
+\@IEEEtrantmpdimenB#2\relax
+\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB
+\textwidth\@IEEEtrantmpdimenA}
+
+
+
+% usage: \IEEEsetsidemargin{mode: i, o, c, a}{margin/offset}
+% Sets \oddsidemargin and \evensidemargin to yield the specified margin
+% of the given mode.
+% The available modes are:
+% i = inner margin
+% o = outer margin
+% c = centered, with the given offset
+% a = adjust the margins using the given offset
+% For the offsets, positive values increase the inner margin.
+% \textwidth should be set properly for the given margins before calling this
+% function.
+\def\IEEEsetsidemargin#1#2{\@IEEEtrantmpdimenA #2\relax
+\@IEEEextracttoken{#1}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEsetsidemargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `i'}{Valid modes for \string\IEEEsetsidemargin\space are: i, o, c and a.}\relax
+ \let\@IEEEextractedtoken=i\relax
+ \def\@IEEEextractedtokenmacro{i}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEsetsidemargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% handle each mode
+\if\@IEEEextractedtoken a\relax
+ \advance\oddsidemargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken c\relax
+ \oddsidemargin\paperwidth
+ \advance\oddsidemargin by -\textwidth
+ \divide\oddsidemargin by 2\relax
+ \advance\oddsidemargin by -1in\relax
+ \advance\oddsidemargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken o\relax
+ \oddsidemargin\paperwidth
+ \advance\oddsidemargin by -\textwidth
+ \advance\oddsidemargin by -\@IEEEtrantmpdimenA
+ \advance\oddsidemargin by -1in\relax
+\else
+ \if\@IEEEextractedtoken i\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetsidemargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `i'}%
+ {Valid modes for \string\IEEEsetsidemargin\space are: i, o, c and a.}%
+ \fi
+ \oddsidemargin\@IEEEtrantmpdimenA
+ \advance\oddsidemargin by -1in\relax
+\fi\fi\fi
+% odd and even side margins both mean "inner" for single sided pages
+\evensidemargin\oddsidemargin
+% but are mirrors of each other when twosided is in effect
+\if@twoside
+ \evensidemargin\paperwidth
+ \advance\evensidemargin by -\textwidth
+ \advance\evensidemargin by -\oddsidemargin
+ % have to compensate for both the builtin 1in LaTex offset
+ % and the fact we already subtracted this offset from \oddsidemargin
+ \advance\evensidemargin -2in\relax
+\fi}
+
+
+
+% usage: \IEEEsettextheight[sample text]{top text margin}{bottom text margin}
+% Sets \textheight based on the specified top margin and bottom margin.
+% Takes into consideration \paperheight, \topskip, and (by default) the
+% the actual height and depth of the \IEEEdefaultsampletext text.
+\def\IEEEsettextheight{\@ifnextchar [{\@IEEEsettextheight}{\@IEEEsettextheight[\IEEEdefaultsampletext]}}
+\def\@IEEEsettextheight[#1]#2#3{\textheight\paperheight\relax
+ \@IEEEtrantmpdimenA #2\relax
+ \advance \textheight by -\@IEEEtrantmpdimenA% subtract top margin
+ \@IEEEtrantmpdimenA #3\relax
+ \advance \textheight by -\@IEEEtrantmpdimenA% subtract bottom margin
+ \advance \textheight by \topskip% add \topskip
+ % subtract off everything above the top, and below the bottom, baselines
+ \settoheight{\@IEEEtrantmpdimenA}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance \textheight by -\@IEEEtrantmpdimenA
+ \settodepth{\@IEEEtrantmpdimenA}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance \textheight by -\@IEEEtrantmpdimenA}
+
+
+
+\newdimen\IEEEquantizedlength
+\IEEEquantizedlength 0sp\relax
+\newdimen\IEEEquantizedlengthdiff
+\IEEEquantizedlengthdiff 0sp\relax
+\def\IEEEquantizedlengthint{0}
+
+% usage: \IEEEquantizelength{mode: d, c, i}{base unit}{length}
+% Sets the length \IEEEquantizedlength to be an integer multiple of the given
+% (nonzero) base unit such that \IEEEquantizedlength approximates the given
+% length.
+% \IEEEquantizedlengthdiff is a length equal to the difference between the
+% \IEEEquantizedlength and the given length.
+% \IEEEquantizedlengthint is a macro containing the integer number of base units
+% in \IEEEquantizedlength.
+% i.e., \IEEEquantizedlength = \IEEEquantizedlengthint * base unit
+% The mode determines how \IEEEquantizedlength is quantized:
+% d = always decrease (always round down \IEEEquantizeint)
+% c = use the closest match
+% i = always increase (always round up \IEEEquantizeint)
+% In anycase, if the given length is already quantized,
+% \IEEEquantizedlengthdiff will be set to zero.
+\def\IEEEquantizelength#1#2#3{\begingroup
+% work in isolation so as not to externally disturb the \@IEEEtrantmp
+% variables
+% load the argument values indirectly via \IEEEquantizedlengthdiff
+% in case the user refers to our \@IEEEtrantmpdimenX, \IEEEquantizedlength,
+% etc. in the arguments. we also will work with these as counters,
+% i.e., in sp units
+% A has the base unit
+\IEEEquantizedlengthdiff #2\relax\relax\relax\relax
+\@IEEEtrantmpcountA\IEEEquantizedlengthdiff
+% B has the input length
+\IEEEquantizedlengthdiff #3\relax\relax\relax\relax
+\@IEEEtrantmpcountB\IEEEquantizedlengthdiff
+\@IEEEtrantmpdimenA\the\@IEEEtrantmpcountA sp\relax
+\@IEEEtrantmpdimenB\the\@IEEEtrantmpcountB sp\relax
+% \@IEEEtrantmpcountC will have the quantized int
+% \IEEEquantizedlength will have the quantized length
+% \@IEEEtrantmpdimenC will have the quantized diff
+% initialize them to zero as this is what will be
+% exported if an error occurs
+\@IEEEtrantmpcountC 0\relax
+\IEEEquantizedlength 0sp\relax
+\@IEEEtrantmpdimenC 0sp\relax
+% extract mode
+\@IEEEextracttoken{#1}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `d'}{Valid modes for \string\IEEEquantizelength\space are: d, c and i.}\relax
+ \let\@IEEEextractedtoken=d\relax
+ \def\@IEEEextractedtokenmacro{d}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEquantizelength\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% check for base unit is zero error
+\ifnum\@IEEEtrantmpcountA=0\relax
+\@IEEEclspkgerror{Base unit is zero in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak
+ \string\IEEEquantizedlength\space and \string\IEEEquantizedlengthdiff\space are set to zero}{Division by zero is not allowed.}\relax
+\else% base unit is nonzero
+ % \@IEEEtrantmpcountC carries the number of integer units
+ % in the quantized length (integer length \ base)
+ \@IEEEtrantmpcountC\@IEEEtrantmpcountB\relax
+ \divide\@IEEEtrantmpcountC by \@IEEEtrantmpcountA\relax
+ % \IEEEquantizedlength has the (rounded down) quantized length
+ % = base * int
+ \IEEEquantizedlength\@IEEEtrantmpdimenA\relax
+ \multiply\IEEEquantizedlength by \@IEEEtrantmpcountC\relax
+ % \@IEEEtrantmpdimenC has the difference
+ % = quantized length - length
+ \@IEEEtrantmpdimenC\IEEEquantizedlength\relax
+ \advance\@IEEEtrantmpdimenC by -\@IEEEtrantmpdimenB\relax
+ % trap special case of length being already quantized
+ % to avoid a roundup under i option
+ \ifdim\@IEEEtrantmpdimenC=0sp\relax
+ \else % length not is already quantized
+ % set dimenA to carry the upper quantized (absolute value) difference:
+ % quantizedlength + base - length
+ \advance\@IEEEtrantmpdimenA by \IEEEquantizedlength\relax
+ \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB\relax
+ % set dimenB to carry the lower quantized (absolute value) difference:
+ % length - quantizedlength
+ \advance\@IEEEtrantmpdimenB by -\IEEEquantizedlength\relax
+ % handle each mode
+ \if\@IEEEextractedtoken c\relax
+ % compare upper and lower amounts, select upper if lower > upper
+ \ifdim\@IEEEtrantmpdimenB>\@IEEEtrantmpdimenA\relax
+ % use upper
+ \advance\IEEEquantizedlength by \the\@IEEEtrantmpcountA sp\relax
+ \advance\@IEEEtrantmpcountC by 1\relax
+ \@IEEEtrantmpdimenC\@IEEEtrantmpdimenA
+ \else% <=. uselower
+ % no need to do anything for lower, use output values already setup
+ \fi
+ \else% not mode c
+ \if\@IEEEextractedtoken i\relax
+ % always round up under i mode
+ \advance\IEEEquantizedlength by \the\@IEEEtrantmpcountA sp\relax
+ \advance\@IEEEtrantmpcountC by 1\relax
+ \@IEEEtrantmpdimenC\@IEEEtrantmpdimenA
+ \else
+ \if\@IEEEextractedtoken d\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `d'}%
+ {Valid modes for \string\IEEEquantizelength\space are: d, c, and i.}\relax
+ \fi % if d
+ % no need to do anything for d, use output values already setup
+ \fi\fi % if i, c
+ \fi % if length is already quantized
+\fi% if base unit is zero
+% globally assign the results to macros we use here to escape the enclosing
+% group without needing to call \global on any of the \@IEEEtrantmp variables.
+% \@IEEEtrantmpcountC has the quantized int
+% \IEEEquantizedlength has the quantized length
+% \@IEEEtrantmpdimenC has the quantized diff
+\xdef\@IEEEquantizedlengthintmacro{\the\@IEEEtrantmpcountC}\relax
+\@IEEEtrantmpcountC\IEEEquantizedlength\relax
+\xdef\@IEEEquantizedlengthmacro{\the\@IEEEtrantmpcountC}\relax
+\@IEEEtrantmpcountC\@IEEEtrantmpdimenC\relax
+\xdef\@IEEEquantizedlengthdiffmacro{\the\@IEEEtrantmpcountC}\relax
+\endgroup
+% locally assign the outputs here from the macros
+\expandafter\IEEEquantizedlength\@IEEEquantizedlengthmacro sp\relax
+\expandafter\IEEEquantizedlengthdiff\@IEEEquantizedlengthdiffmacro sp\relax
+\edef\IEEEquantizedlengthint{\@IEEEquantizedlengthintmacro}\relax}
+
+
+
+\newdimen\IEEEquantizedtextheightdiff
+\IEEEquantizedtextheightdiff 0sp\relax
+
+% usage: \IEEEquantizetextheight[base unit]{mode: d, c, i}
+% Sets \textheight to be an integer multiple of the current \baselineskip
+% (or the optionally specified base unit) plus the first (\topskip) line.
+% \IEEEquantizedtextheightdiff is a length equal to the difference between
+% the new quantized and original \textheight.
+% \IEEEquantizedtextheightlpc is a macro containing the integer number of
+% lines per column under the quantized \textheight. i.e.,
+% \textheight = \IEEEquantizedtextheightlpc * \baselineskip + \topskip
+% The mode determines how \textheight is quantized:
+% d = always decrease (always round down the number of lines per column)
+% c = use the closest match
+% i = always increase (always round up the number of lines per column)
+% In anycase, if \textheight is already quantized, it will remain unchanged,
+% and \IEEEquantizedtextheightdiff will be set to zero.
+% Depends on: \IEEEquantizelength
+\def\IEEEquantizetextheight{\@ifnextchar [{\@IEEEquantizetextheight}{\@IEEEquantizetextheight[\baselineskip]}}
+\def\@IEEEquantizetextheight[#1]#2{\begingroup
+% use our \IEEEquantizedtextheightdiff as a scratch pad
+% we need to subtract off \topskip before quantization
+\IEEEquantizedtextheightdiff\textheight
+\advance\IEEEquantizedtextheightdiff by -\topskip\relax
+\IEEEquantizelength{#2}{#1}{\IEEEquantizedtextheightdiff}
+% add back \topskip line
+\advance\IEEEquantizedlength by \topskip
+\@IEEEtrantmpcountC\IEEEquantizedlengthint\relax
+\advance\@IEEEtrantmpcountC by 1\relax
+% globally assign the results to macros we use here to escape the enclosing
+% group without needing to call \global on any of the \@IEEEtrantmp variables.
+\xdef\@IEEEquantizedtextheightlpcmacro{\the\@IEEEtrantmpcountC}\relax
+\@IEEEtrantmpcountC\IEEEquantizedlength\relax
+\xdef\@IEEEquantizedtextheightmacro{\the\@IEEEtrantmpcountC}\relax
+\@IEEEtrantmpcountC\IEEEquantizedlengthdiff\relax
+\xdef\@IEEEquantizedtextheightdiffmacro{\the\@IEEEtrantmpcountC}\relax
+\endgroup
+% locally assign the outputs here from the macros
+\textheight\@IEEEquantizedtextheightmacro sp\relax
+\IEEEquantizedtextheightdiff\@IEEEquantizedtextheightdiffmacro sp\relax
+\edef\IEEEquantizedtextheightlpc{\@IEEEquantizedtextheightlpcmacro}}
+
+
+
+% usage: \IEEEsettopmargin[sample text]{mode: t, b, c, a, q}{margin/offset}
+% Sets \topmargin based on the specified vertical margin.
+% Takes into consideration the base 1in offset, \headheight, \headsep,
+% \topskip, and (by default) the the actual height (or, for the bottom, depth)
+% of the \IEEEdefaultsampletext text.
+% The available modes are:
+% t = top margin
+% b = bottom margin
+% c = vertically centered, with the given offset
+% a = adjust the vertical margins using the given offset
+% q = adjust the margins using \IEEEquantizedtextheightdiff and the given offset
+% For the offsets, positive values increase the top margin.
+% \headheight, \headsep, \topskip and \textheight should be set properly for the
+% given margins before calling this function.
+\def\IEEEsettopmargin{\@ifnextchar [{\@IEEEsettopmargin}{\@IEEEsettopmargin[\IEEEdefaultsampletext]}}
+\def\@IEEEsettopmargin[#1]#2#3{\@IEEEtrantmpdimenA #3\relax
+\@IEEEextracttoken{#2}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEsettopmargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}{Valid modes for \string\IEEEsettopmargin\space are: t, b, c, a and q.}\relax
+ \let\@IEEEextractedtoken=t\relax
+ \def\@IEEEextractedtokenmacro{t}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEsettopmargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% handle each mode
+\if\@IEEEextractedtoken a\relax
+ \advance\topmargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken q\relax
+ % we need to adjust by half the \IEEEquantizedtextheightdiff value
+ \@IEEEtrantmpdimenB\IEEEquantizedtextheightdiff\relax
+ \divide\@IEEEtrantmpdimenB by 2\relax
+ % a positive \IEEEquantizedtextheightdiff means we need to reduce \topmargin
+ % because \textheight has been lenghtened
+ \advance\topmargin by -\@IEEEtrantmpdimenB\relax
+ \advance\topmargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken c\relax
+ \topmargin\paperheight
+ \advance\topmargin by -\textheight
+ % \textheight includes \topskip, but we should not count topskip whitespace here, backout
+ \advance \topmargin by \topskip
+ \settoheight{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\topmargin by -\@IEEEtrantmpdimenB\relax
+ \settodepth{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\topmargin by -\@IEEEtrantmpdimenB\relax
+ \divide\topmargin by 2\relax
+ \advance\topmargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken b\relax
+ \topmargin\paperheight
+ \advance\topmargin by -\textheight
+ % \textheight includes \topskip, but we should not count topskip whitespace here, backout
+ \advance \topmargin by \topskip
+ \settodepth{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\topmargin by -\@IEEEtrantmpdimenB\relax
+ \advance\topmargin by -\@IEEEtrantmpdimenA\relax
+\else
+ \if\@IEEEextractedtoken t\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsettopmargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}%
+ {Valid modes for \string\IEEEsettopmargin\space are: t, b, c, a and q.}\relax
+ \fi
+ \topmargin\@IEEEtrantmpdimenA\relax
+ \settoheight{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\topmargin by \@IEEEtrantmpdimenB\relax
+\fi\fi % if t, b, c
+% convert desired top margin into actual \topmargin
+% this is not done for the q or a modes because they are only adjustments
+\advance \topmargin by -\topskip
+\advance \topmargin by -1in
+\advance \topmargin by -\headheight
+\advance \topmargin by -\headsep
+\fi\fi % if q, a
+}
+
+
+
+% usage: \IEEEsetheadermargin[header sample][text sample]{mode: t, b, c, a}{margin/offset}
+% Differentially adjusts \topmargin and \headsep (such that their sum is unchanged)
+% based on the specified header margin.
+% Takes into consideration the base 1in offset, \headheight, \topskip, and (by default)
+% the actual height (or depth) of the \IEEEdefaultheadersampletext and
+% \IEEEdefaultsampletext text.
+% The available modes are:
+% t = top margin (top of the header text to the top of the page)
+% b = bottom margin (bottom of the header text to the top of the main text)
+% c = vertically centered between the main text and the top of the page,
+% with the given offset
+% a = adjust the vertical position using the given offset
+% For the offsets, positive values move the header downward.
+% \headheight, \headsep, \topskip and \topmargin should be set properly before
+% calling this function.
+\def\IEEEsetheadermargin{\@ifnextchar [{\@IEEEsetheadermargin}{\@IEEEsetheadermargin[\IEEEdefaultheadersampletext]}}
+\def\@IEEEsetheadermargin[#1]{\@ifnextchar [{\@@IEEEsetheadermargin[#1]}{\@@IEEEsetheadermargin[#1][\IEEEdefaultsampletext]}}
+\def\@@IEEEsetheadermargin[#1][#2]#3#4{\@IEEEtrantmpdimenA #4\relax
+\@IEEEextracttoken{#3}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEsetheadermargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}{Valid modes for \string\IEEEsetheadermargin\space are: t, b, c, and a.}\relax
+ \let\@IEEEextractedtoken=t\relax
+ \def\@IEEEextractedtokenmacro{t}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEsetheadermargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% handle each mode
+\if\@IEEEextractedtoken a\relax
+ % No need to do anything here and can pass through the adjustment
+ % value as is. The end adjustment of \topmargin and \headsep will
+ % do all that is needed
+\else
+\if\@IEEEextractedtoken c\relax
+ % get the bottom margin
+ \@IEEEtrantmpdimenB\headsep\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ \advance\@IEEEtrantmpdimenB by \topskip
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual header bottom margin
+ % subtract from it the top header margin
+ \advance\@IEEEtrantmpdimenB -1in\relax % take into consideration the system 1in offset of the top margin
+ \advance\@IEEEtrantmpdimenB by -\topmargin
+ \advance\@IEEEtrantmpdimenB by -\headheight
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the difference between the bottom and top margins
+ % we need to adjust by half this amount to center the header
+ \divide\@IEEEtrantmpdimenB by 2\relax
+ % and add to offset
+ \advance\@IEEEtrantmpdimenA by \@IEEEtrantmpdimenB
+\else
+\if\@IEEEextractedtoken b\relax
+ \@IEEEtrantmpdimenB\headsep\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ \advance\@IEEEtrantmpdimenB by \topskip
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual header bottom margin
+ % get the difference between the actual and the desired
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenA
+ \@IEEEtrantmpdimenA\@IEEEtrantmpdimenB
+\else
+ \if\@IEEEextractedtoken t\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetheadermargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}%
+ {Valid modes for \string\IEEEsetheadermargin\space are: t, b, c and a.}\relax
+ \fi
+ \@IEEEtrantmpdimenB 1in\relax % take into consideration the system 1in offset of the top margin
+ \advance\@IEEEtrantmpdimenB by \topmargin
+ \advance\@IEEEtrantmpdimenB by \headheight
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual header top margin
+ % get the difference between the desired and the actual
+ \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB
+\fi\fi % if t, b, c
+\fi % if a
+% advance \topmargin by the needed amount and reduce \headsep by the same
+% so as not to disturb the location of the main text
+\advance\topmargin by \@IEEEtrantmpdimenA\relax
+\advance\headsep by -\@IEEEtrantmpdimenA\relax
+}
+
+
+
+% usage: \IEEEsetfootermargin[footer sample][text sample]{mode: t, b, c, a}{margin/offset}
+% Adjusts \footskip based on the specified footer margin.
+% Takes into consideration the base 1in offset, \paperheight, \headheight,
+% \headsep, \textheight and (by default) the actual height (or depth) of the
+% \IEEEdefaultfootersampletext and \IEEEdefaultsampletext text.
+% The available modes are:
+% t = top margin (top of the footer text to the bottom of the main text)
+% b = bottom margin (bottom of the footer text to the bottom of page)
+% c = vertically centered between the main text and the bottom of the page,
+% with the given offset
+% a = adjust the vertical position using the given offset
+% For the offsets, positive values move the footer downward.
+% \headheight, \headsep, \topskip, \topmargin, and \textheight should be set
+% properly before calling this function.
+\def\IEEEsetfootermargin{\@ifnextchar [{\@IEEEsetfootermargin}{\@IEEEsetfootermargin[\IEEEdefaultfootersampletext]}}
+\def\@IEEEsetfootermargin[#1]{\@ifnextchar [{\@@IEEEsetfootermargin[#1]}{\@@IEEEsetfootermargin[#1][\IEEEdefaultsampletext]}}
+\def\@@IEEEsetfootermargin[#1][#2]#3#4{\@IEEEtrantmpdimenA #4\relax
+\@IEEEextracttoken{#3}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEsetfootermargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}{Valid modes for \string\IEEEsetfootermargin\space are: t, b, c, and a.}\relax
+ \let\@IEEEextractedtoken=t\relax
+ \def\@IEEEextractedtokenmacro{t}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEsetfootermargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% handle each mode
+\if\@IEEEextractedtoken a\relax
+ % No need to do anything here and can pass through the adjustment
+ % value as is. The end adjustment of \footskip will do all that
+ % is needed
+\else
+\if\@IEEEextractedtoken c\relax
+ % calculate the bottom margin
+ \@IEEEtrantmpdimenB 1in\relax % system 1in offset
+ \advance\@IEEEtrantmpdimenB\topmargin\relax
+ \advance\@IEEEtrantmpdimenB\headheight\relax
+ \advance\@IEEEtrantmpdimenB\headsep\relax
+ \advance\@IEEEtrantmpdimenB\textheight\relax
+ \advance\@IEEEtrantmpdimenB\footskip\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenC by \@IEEEtrantmpdimenB
+ \@IEEEtrantmpdimenB\paperheight
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual footer bottom margin
+ % now subtract off the footer top margin
+ \advance\@IEEEtrantmpdimenB -\footskip\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the difference between the bottom
+ % and top footer margins
+ % our adjustment must be half this value to center the footer
+ \divide\@IEEEtrantmpdimenB by 2\relax
+ % add to the offset
+ \advance\@IEEEtrantmpdimenA by \@IEEEtrantmpdimenB
+\else
+\if\@IEEEextractedtoken b\relax
+ % calculate the bottom margin
+ \@IEEEtrantmpdimenB 1in\relax % system 1in offset
+ \advance\@IEEEtrantmpdimenB\topmargin\relax
+ \advance\@IEEEtrantmpdimenB\headheight\relax
+ \advance\@IEEEtrantmpdimenB\headsep\relax
+ \advance\@IEEEtrantmpdimenB\textheight\relax
+ \advance\@IEEEtrantmpdimenB\footskip\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenC by \@IEEEtrantmpdimenB
+ \@IEEEtrantmpdimenB\paperheight
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual footer bottom margin
+ % get the difference between the actual and the desired
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenA
+ \@IEEEtrantmpdimenA\@IEEEtrantmpdimenB
+\else
+ \if\@IEEEextractedtoken t\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetfootermargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}%
+ {Valid modes for \string\IEEEsetfootermargin\space are: t, b, c and a.}\relax
+ \fi
+ \@IEEEtrantmpdimenB\footskip\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual footer top margin
+ % get the difference between the desired and the actual
+ \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB
+\fi\fi % if t, b, c
+\fi % if a
+% advance \footskip by the needed amount
+\advance\footskip by \@IEEEtrantmpdimenA\relax
+}
+
+% -- End V1.8a page setup commands --
+
+
+
+
+
+% V1.6
+% LaTeX is a little to quick to use hyphenations
+% So, we increase the penalty for their use and raise
+% the badness level that triggers an underfull hbox
+% warning. The author may still have to tweak things,
+% but the appearance will be much better "right out
+% of the box" than that under V1.5 and prior.
+% TeX default is 50
+\hyphenpenalty=750
+\ifCLASSOPTIONcompsoc
+\hyphenpenalty 500
+\fi
+% If we didn't adjust the interword spacing, 2200 might be better.
+% The TeX default is 1000
+\hbadness=1350
+% The IEEE does not use extra spacing after punctuation
+\frenchspacing
+
+% V1.7 increase this a tad to discourage equation breaks
+\binoppenalty=1000 % default 700
+\relpenalty=800 % default 500
+
+% v1.8a increase these to discourage widows and orphans
+\clubpenalty=1000 % default 150
+\widowpenalty=1000 % default 150
+\displaywidowpenalty=1000 % default 50
+
+
+% margin note stuff
+\marginparsep 10pt
+\marginparwidth 20pt
+\marginparpush 25pt
+
+
+% if things get too close, go ahead and let them touch
+\lineskip 0pt
+\normallineskip 0pt
+\lineskiplimit 0pt
+\normallineskiplimit 0pt
+
+% The distance from the lower edge of the text body to the
+% footline
+\footskip 0.4in
+
+% normally zero, should be relative to font height.
+% put in a little rubber to help stop some bad breaks (underfull vboxes)
+\parskip 0ex plus 0.2ex minus 0.1ex
+
+\parindent 1.0em
+\ifCLASSOPTIONcompsoc
+ \parindent 1.5em
+\fi
+
+\headheight 12pt
+\headsep 18pt
+% use the normal font baselineskip
+% so that \topskip is unaffected by changes in \baselinestretch
+\topskip=\@IEEEnormalsizeunitybaselineskip
+
+
+% V1.8 \maxdepth defaults to 4pt, but should be font size dependent
+\maxdepth=0.5\@IEEEnormalsizeunitybaselineskip
+\textheight 58pc % 9.63in, 696pt
+
+% set the default top margin to 58pt
+% which results in a \topmargin of -49.59pt for 10pt documents
+\IEEEsettopmargin{t}{58pt}
+% tweak textheight to a perfect integer number of lines/column.
+% standard is: 9pt/63 lpc; 10pt/58 lpc; 11pt/52 lpc; 12pt/50 lpc
+\IEEEquantizetextheight{c}
+% tweak top margin so that the error is shared equally at the top and bottom
+\IEEEsettopmargin{q}{0sp}
+
+
+\columnsep 1pc
+\textwidth 43pc % 2 x 21pc + 1pc = 43pc
+
+% set the default side margins to center the text
+\IEEEsetsidemargin{c}{0pt}
+
+
+% adjust margins for default conference mode
+\ifCLASSOPTIONconference
+ \textheight 9.25in % The standard for conferences (668.4975pt)
+ \IEEEsettopmargin{t}{0.75in}
+ % tweak textheight to a perfect integer number of lines/page.
+ % standard is: 9pt/61 lpc; 10pt/56 lpc; 11pt/50 lpc; 12pt/48 lpc
+ \IEEEquantizetextheight{c}
+ % tweak top margin so that the error is shared equally at the top and bottom
+ \IEEEsettopmargin{q}{0sp}
+\fi
+
+
+% compsoc text sizes, margins and spacings
+\ifCLASSOPTIONcompsoc
+ \columnsep 12bp
+ % CS specs for \textwdith are 6.875in
+ % \textwidth 6.875in
+ % however, measurements from proofs show they are using 3.5in columns
+ \textwidth 7in
+ \advance\textwidth by \columnsep
+ % set the side margins to center the text
+ \IEEEsetsidemargin{c}{0pt}
+ % top/bottom margins to center
+ % could just set \textheight to 9.75in for all the different paper sizes
+ % and then quantize, but we'll do it the long way here to allow for easy
+ % future per-paper size adjustments
+ \IEEEsettextheight{0.625in}{0.625in}% 11in - 2 * 0.625in = 9.75in is the standard text height for compsoc journals
+ \IEEEsettopmargin{t}{0.625in}
+ \if@IEEEusingcspaper
+ \IEEEsettextheight{0.5in}{0.5in}% 10.75in - 2 * 0.5in = 9.75in
+ \IEEEsettopmargin{t}{0.5in}
+ \fi
+ \if@IEEEusingAfourpaper
+ \IEEEsettextheight{24.675mm}{24.675mm}% 297mm - 2 * 24.675mm = 247.650mm (9.75in)
+ \IEEEsettopmargin{t}{24.675mm}
+ \fi
+ % tweak textheight to a perfect integer number of lines/page.
+ % standard is: 9pt/65 lpc; 10pt/61 lpc; 11pt/53 lpc; 12pt/49 lpc
+ \IEEEquantizetextheight{c}
+ % tweak top margin so that the error is shared equally at the top and bottom
+ \IEEEsettopmargin{q}{0sp}
+
+% compsoc conference
+ \ifCLASSOPTIONconference
+ % compsoc conference use a larger value for columnsep
+ \columnsep 0.25in
+ \IEEEsettextwidth{0.75in}{0.75in}
+ % set the side margins to center the text (0.75in for letterpaper)
+ \IEEEsetsidemargin{c}{0pt}
+ % compsoc conferences want 1in top and bottom margin
+ \IEEEsettextheight{1in}{1in}
+ \IEEEsettopmargin{t}{1in}
+ % tweak textheight to a perfect integer number of lines/page.
+ % standard is: 9pt/58 lpc; 10pt/53 lpc; 11pt/48 lpc; 12pt/46 lpc
+ \IEEEquantizetextheight{c}
+ % tweak top margin so that the error is shared equally at the top and bottom
+ \IEEEsettopmargin{q}{0sp}
+ \fi
+\fi
+
+
+
+% draft mode settings override that of all other modes
+% provides a nice 1in margin all around the paper and extra
+% space between the lines for editor's comments
+\ifCLASSOPTIONdraftcls
+ % we want 1in side margins regardless of paper type
+ \IEEEsettextwidth{1in}{1in}
+ \IEEEsetsidemargin{c}{0pt}
+ % want 1in top and bottom margins
+ \IEEEsettextheight{1in}{1in}
+ \IEEEsettopmargin{t}{1in}
+ % digitize textheight to be an integer number of lines.
+ % this may cause the top and bottom margins to be off a tad
+ \IEEEquantizetextheight{c}
+ % tweak top margin so that the error is shared equally at the top and bottom
+ \IEEEsettopmargin{q}{0sp}
+\fi
+
+
+
+% process CLASSINPUT inner/outer margin
+% if inner margin defined, but outer margin not, set outer to inner.
+\ifx\CLASSINPUTinnersidemargin\@IEEEundefined
+\else
+ \ifx\CLASSINPUToutersidemargin\@IEEEundefined
+ \edef\CLASSINPUToutersidemargin{\CLASSINPUTinnersidemargin}
+ \fi
+\fi
+
+\ifx\CLASSINPUToutersidemargin\@IEEEundefined
+\else
+ % if outer margin defined, but inner margin not, set inner to outer.
+ \ifx\CLASSINPUTinnersidemargin\@IEEEundefined
+ \edef\CLASSINPUTinnersidemargin{\CLASSINPUToutersidemargin}
+ \fi
+ \IEEEsettextwidth{\CLASSINPUTinnersidemargin}{\CLASSINPUToutersidemargin}
+ \IEEEsetsidemargin{i}{\CLASSINPUTinnersidemargin}
+ \typeout{** ATTENTION: Overriding inner side margin to \CLASSINPUTinnersidemargin\space and
+ outer side margin to \CLASSINPUToutersidemargin\space via \string\CLASSINPUT.}
+\fi
+
+
+
+% process CLASSINPUT top/bottom text margin
+% if toptext margin defined, but bottomtext margin not, set bottomtext to toptext margin
+\ifx\CLASSINPUTtoptextmargin\@IEEEundefined
+\else
+ \ifx\CLASSINPUTbottomtextmargin\@IEEEundefined
+ \edef\CLASSINPUTbottomtextmargin{\CLASSINPUTtoptextmargin}
+ \fi
+\fi
+
+\ifx\CLASSINPUTbottomtextmargin\@IEEEundefined
+\else
+ % if bottomtext margin defined, but toptext margin not, set toptext to bottomtext margin
+ \ifx\CLASSINPUTtoptextmargin\@IEEEundefined
+ \edef\CLASSINPUTtoptextmargin{\CLASSINPUTbottomtextmargin}
+ \fi
+ \IEEEsettextheight{\CLASSINPUTtoptextmargin}{\CLASSINPUTbottomtextmargin}
+ \IEEEsettopmargin{t}{\CLASSINPUTtoptextmargin}
+ \typeout{** ATTENTION: Overriding top text margin to \CLASSINPUTtoptextmargin\space and
+ bottom text margin to \CLASSINPUTbottomtextmargin\space via \string\CLASSINPUT.}
+\fi
+
+
+
+% default to center header and footer text in the margins
+\IEEEsetheadermargin{c}{0pt}
+\IEEEsetfootermargin{c}{0pt}
+
+% adjust header and footer positions for compsoc journals
+\ifCLASSOPTIONcompsoc
+ \ifCLASSOPTIONjournal
+ \IEEEsetheadermargin{b}{\@IEEEnormalsizeunitybaselineskip}
+ \IEEEsetfootermargin{t}{\@IEEEnormalsizeunitybaselineskip}
+ \fi
+\fi
+
+
+% V1.8a display lines per column info message on user's console
+\def\IEEEdisplayinfolinespercolumn{\@IEEEtrantmpdimenA=\textheight
+% topskip represents only one line even if > baselineskip
+\advance\@IEEEtrantmpdimenA by -1\topskip
+\@IEEEtrantmpcountA=\@IEEEtrantmpdimenA
+\@IEEEtrantmpcountB=\@IEEEtrantmpdimenA
+\divide\@IEEEtrantmpcountB by \baselineskip
+% need to add one line to include topskip (first) line
+\advance\@IEEEtrantmpcountB by 1
+% save lines per column value as text
+\edef\@IEEEnumlinespercolumninfotxt{\the\@IEEEtrantmpcountB}
+% backout topskip advance to allow direct \@IEEEtrantmpcountA comparison
+\advance\@IEEEtrantmpcountB by -1
+% restore value as text height (without topskip) rather than just as number of lines
+\multiply\@IEEEtrantmpcountB by \baselineskip
+% is the column height an integer number of lines per column?
+\ifnum\@IEEEtrantmpcountA=\@IEEEtrantmpcountB
+\edef\@IEEEnumlinespercolumnexactinfotxt{exact}
+\else
+\@IEEEtrantmpdimenA\@IEEEtrantmpcountA sp\relax
+\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpcountB sp\relax
+\edef\@IEEEnumlinespercolumnexactinfotxt{approximate, difference = \the\@IEEEtrantmpdimenA}
+\fi
+\typeout{-- Lines per column: \@IEEEnumlinespercolumninfotxt\space (\@IEEEnumlinespercolumnexactinfotxt).}}
+% delay execution till start of document to allow for user changes
+\AtBeginDocument{\IEEEdisplayinfolinespercolumn}
+
+
+
+% LIST SPACING CONTROLS
+
+% Controls the amount of EXTRA spacing
+% above and below \trivlist
+% Both \list and IED lists override this.
+% However, \trivlist will use this as will most
+% things built from \trivlist like the \center
+% environment.
+\topsep 0.5\baselineskip
+
+% Controls the additional spacing around lists preceded
+% or followed by blank lines. the IEEE does not increase
+% spacing before or after paragraphs so it is set to zero.
+% \z@ is the same as zero, but faster.
+\partopsep \z@
+
+% Controls the spacing between paragraphs in lists.
+% The IEEE does not increase spacing before or after paragraphs
+% so this is also zero.
+% With IEEEtran.cls, global changes to
+% this value DO affect lists (but not IED lists).
+\parsep \z@
+
+% Controls the extra spacing between list items.
+% The IEEE does not put extra spacing between items.
+% With IEEEtran.cls, global changes to this value DO affect
+% lists (but not IED lists).
+\itemsep \z@
+
+% \itemindent is the amount to indent the FIRST line of a list
+% item. It is auto set to zero within the \list environment. To alter
+% it, you have to do so when you call the \list.
+% However, the IEEE uses this for the theorem environment
+% There is an alternative value for this near \leftmargini below
+\itemindent -1em
+
+% \leftmargin, the spacing from the left margin of the main text to
+% the left of the main body of a list item is set by \list.
+% Hence this statement does nothing for lists.
+% But, quote and verse do use it for indention.
+\leftmargin 2em
+
+% we retain this stuff from the older IEEEtran.cls so that \list
+% will work the same way as before. However, itemize, enumerate and
+% description (IED) could care less about what these are as they
+% all are overridden.
+\leftmargini 2em
+%\itemindent 2em % Alternative values: sometimes used.
+%\leftmargini 0em
+\leftmarginii 1em
+\leftmarginiii 1.5em
+\leftmarginiv 1.5em
+\leftmarginv 1.0em
+\leftmarginvi 1.0em
+\labelsep 0.5em
+\labelwidth \z@
+
+
+% The old IEEEtran.cls behavior of \list is retained.
+% However, the new V1.3 IED list environments override all the
+% @list stuff (\@listX is called within \list for the
+% appropriate level just before the user's list_decl is called).
+% \topsep is now 2pt as the IEEE puts a little extra space around
+% lists - used by those non-IED macros that depend on \list.
+% Note that \parsep and \itemsep are not redefined as in
+% the sizexx.clo \@listX (which article.cls uses) so global changes
+% of these values DO affect \list
+%
+\def\@listi{\leftmargin\leftmargini \topsep 2pt plus 1pt minus 1pt}
+\let\@listI\@listi
+\def\@listii{\leftmargin\leftmarginii\labelwidth\leftmarginii%
+ \advance\labelwidth-\labelsep \topsep 2pt}
+\def\@listiii{\leftmargin\leftmarginiii\labelwidth\leftmarginiii%
+ \advance\labelwidth-\labelsep \topsep 2pt}
+\def\@listiv{\leftmargin\leftmarginiv\labelwidth\leftmarginiv%
+ \advance\labelwidth-\labelsep \topsep 2pt}
+\def\@listv{\leftmargin\leftmarginv\labelwidth\leftmarginv%
+ \advance\labelwidth-\labelsep \topsep 2pt}
+\def\@listvi{\leftmargin\leftmarginvi\labelwidth\leftmarginvi%
+ \advance\labelwidth-\labelsep \topsep 2pt}
+
+
+% The IEEE uses 5) not 5.
+\def\labelenumi{\theenumi)} \def\theenumi{\arabic{enumi}}
+
+% The IEEE uses a) not (a)
+\def\labelenumii{\theenumii)} \def\theenumii{\alph{enumii}}
+
+% The IEEE uses iii) not iii.
+\def\labelenumiii{\theenumiii)} \def\theenumiii{\roman{enumiii}}
+
+% The IEEE uses A) not A.
+\def\labelenumiv{\theenumiv)} \def\theenumiv{\Alph{enumiv}}
+
+% exactly the same as in article.cls
+\def\p@enumii{\theenumi}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+% itemized list label styles
+\def\labelitemi{$\scriptstyle\bullet$}
+\def\labelitemii{\textbf{--}}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+
+
+% **** V1.3 ENHANCEMENTS ****
+% Itemize, Enumerate and Description (IED) List Controls
+% ***************************
+%
+%
+% The IEEE seems to use at least two different values by
+% which ITEMIZED list labels are indented to the right
+% For The Journal of Lightwave Technology (JLT) and The Journal
+% on Selected Areas in Communications (JSAC), they tend to use
+% an indention equal to \parindent. For Transactions on Communications
+% they tend to indent ITEMIZED lists a little more--- 1.3\parindent.
+% We'll provide both values here for you so that you can choose
+% which one you like in your document using a command such as:
+% setlength{\IEEEilabelindent}{\IEEEilabelindentB}
+\newdimen\IEEEilabelindentA
+\IEEEilabelindentA \parindent
+
+\newdimen\IEEEilabelindentB
+\IEEEilabelindentB 1.3\parindent
+% However, we'll default to using \parindent
+% which makes more sense to me
+\newdimen\IEEEilabelindent
+\IEEEilabelindent \IEEEilabelindentA
+
+
+% This controls the default amount the enumerated list labels
+% are indented to the right.
+% Normally, this is the same as the paragraph indention
+\newdimen\IEEEelabelindent
+\IEEEelabelindent \parindent
+
+% This controls the default amount the description list labels
+% are indented to the right.
+% Normally, this is the same as the paragraph indention
+\newdimen\IEEEdlabelindent
+\IEEEdlabelindent \parindent
+
+% This is the value actually used within the IED lists.
+% The IED environments automatically set its value to
+% one of the three values above, so global changes do
+% not have any effect
+\newdimen\IEEElabelindent
+\IEEElabelindent \parindent
+
+% The actual amount labels will be indented is
+% \IEEElabelindent multiplied by the factor below
+% corresponding to the level of nesting depth
+% This provides a means by which the user can
+% alter the effective \IEEElabelindent for deeper
+% levels
+% There may not be such a thing as correct "standard IEEE"
+% values. What the IEEE actually does may depend on the specific
+% circumstances.
+% The first list level almost always has full indention.
+% The second levels I've seen have only 75% of the normal indentation
+% Three level or greater nestings are very rare. I am guessing
+% that they don't use any indentation.
+\def\IEEElabelindentfactori{1.0} % almost always one
+\def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases
+\def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0?
+\def\IEEElabelindentfactoriv{0.0}
+\def\IEEElabelindentfactorv{0.0}
+\def\IEEElabelindentfactorvi{0.0}
+
+% value actually used within IED lists, it is auto
+% set to one of the 6 values above
+% global changes here have no effect
+\def\IEEElabelindentfactor{1.0}
+
+% This controls the default spacing between the end of the IED
+% list labels and the list text, when normal text is used for
+% the labels.
+% compsoc uses a larger value here, but we'll set that later
+% in the class so that this code block area can be extracted
+% as-is for IEEEtrantools.sty
+\newdimen\IEEEiednormlabelsep
+\IEEEiednormlabelsep 0.6em
+
+% This controls the default spacing between the end of the IED
+% list labels and the list text, when math symbols are used for
+% the labels (nomenclature lists). The IEEE usually increases the
+% spacing in these cases
+\newdimen\IEEEiedmathlabelsep
+\IEEEiedmathlabelsep 1.2em
+
+% This controls the extra vertical separation put above and
+% below each IED list. the IEEE usually puts a little extra spacing
+% around each list. However, this spacing is barely noticeable.
+% compsoc uses a larger value here, but we'll set that later
+% in the class so that this code block area can be extracted
+% as-is for IEEEtrantools.sty
+\newskip\IEEEiedtopsep
+\IEEEiedtopsep 2pt plus 1pt minus 1pt
+
+
+% This command is executed within each IED list environment
+% at the beginning of the list. You can use this to set the
+% parameters for some/all your IED list(s) without disturbing
+% global parameters that affect things other than lists.
+% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}}
+% will alter the \labelsep for the next list(s) until
+% \IEEEiedlistdecl is redefined.
+\def\IEEEiedlistdecl{\relax}
+
+% This command provides an easy way to set \leftmargin based
+% on the \labelwidth, \labelsep and the argument \IEEElabelindent
+% Usage: \IEEEcalcleftmargin{width-to-indent-the-label}
+% output is in the \leftmargin variable, i.e., effectively:
+% \leftmargin = argument + \labelwidth + \labelsep
+% Note controlled spacing here, shield end of lines with %
+\def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}%
+\addtolength{\leftmargin}{\labelwidth}%
+\addtolength{\leftmargin}{\labelsep}}
+
+% This command provides an easy way to set \labelwidth to the
+% width of the given text. It is the same as
+% \settowidth{\labelwidth}{label-text}
+% and useful as a shorter alternative.
+% Typically used to set \labelwidth to be the width
+% of the longest label in the list
+\def\IEEEsetlabelwidth#1{\settowidth{\labelwidth}{#1}}
+
+% When this command is executed, IED lists will use the
+% IEEEiedmathlabelsep label separation rather than the normal
+% spacing. To have an effect, this command must be executed via
+% the \IEEEiedlistdecl or within the option of the IED list
+% environments.
+\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}}
+
+% A flag which controls whether the IED lists automatically
+% calculate \leftmargin from \IEEElabelindent, \labelwidth and \labelsep
+% Useful if you want to specify your own \leftmargin
+% This flag must be set (\IEEEnocalcleftmargintrue or \IEEEnocalcleftmarginfalse)
+% via the \IEEEiedlistdecl or within the option of the IED list
+% environments to have an effect.
+\newif\ifIEEEnocalcleftmargin
+\IEEEnocalcleftmarginfalse
+
+% A flag which controls whether \IEEElabelindent is multiplied by
+% the \IEEElabelindentfactor for each list level.
+% This flag must be set via the \IEEEiedlistdecl or within the option
+% of the IED list environments to have an effect.
+\newif\ifIEEEnolabelindentfactor
+\IEEEnolabelindentfactorfalse
+
+
+% internal variable to indicate type of IED label
+% justification
+% 0 - left; 1 - center; 2 - right
+\def\@IEEEiedjustify{0}
+
+
+% commands to allow the user to control IED
+% label justifications. Use these commands within
+% the IED environment option or in the \IEEEiedlistdecl
+% Note that changing the normal list justifications
+% is nonstandard and the IEEE may not like it if you do so!
+% I include these commands as they may be helpful to
+% those who are using these enhanced list controls for
+% other non-IEEE related LaTeX work.
+% itemize and enumerate automatically default to right
+% justification, description defaults to left.
+\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left
+\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center
+\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right
+
+
+
+
+% commands to save to and restore from the list parameter copies
+% this allows us to set all the list parameters within
+% the list_decl and prevent \list (and its \@list)
+% from overriding any of our parameters
+% V1.6 use \edefs instead of dimen's to conserve dimen registers
+% Note controlled spacing here, shield end of lines with %
+\def\@IEEEsavelistparams{\edef\@IEEEiedtopsep{\the\topsep}%
+\edef\@IEEEiedlabelwidth{\the\labelwidth}%
+\edef\@IEEEiedlabelsep{\the\labelsep}%
+\edef\@IEEEiedleftmargin{\the\leftmargin}%
+\edef\@IEEEiedpartopsep{\the\partopsep}%
+\edef\@IEEEiedparsep{\the\parsep}%
+\edef\@IEEEieditemsep{\the\itemsep}%
+\edef\@IEEEiedrightmargin{\the\rightmargin}%
+\edef\@IEEEiedlistparindent{\the\listparindent}%
+\edef\@IEEEieditemindent{\the\itemindent}}
+
+% Note controlled spacing here
+\def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax%
+\labelwidth\@IEEEiedlabelwidth\relax%
+\labelsep\@IEEEiedlabelsep\relax%
+\leftmargin\@IEEEiedleftmargin\relax%
+\partopsep\@IEEEiedpartopsep\relax%
+\parsep\@IEEEiedparsep\relax%
+\itemsep\@IEEEieditemsep\relax%
+\rightmargin\@IEEEiedrightmargin\relax%
+\listparindent\@IEEEiedlistparindent\relax%
+\itemindent\@IEEEieditemindent\relax}
+
+
+% v1.6b provide original LaTeX IED list environments
+% note that latex.ltx defines \itemize and \enumerate, but not \description
+% which must be created by the base classes
+% save original LaTeX itemize and enumerate
+\let\LaTeXitemize\itemize
+\let\endLaTeXitemize\enditemize
+\let\LaTeXenumerate\enumerate
+\let\endLaTeXenumerate\endenumerate
+
+% provide original LaTeX description environment from article.cls
+\newenvironment{LaTeXdescription}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+ {\endlist}
+\newcommand*\descriptionlabel[1]{\hspace\labelsep
+ \normalfont\bfseries #1}
+
+
+% override LaTeX's default IED lists
+\def\itemize{\@IEEEitemize}
+\def\enditemize{\@endIEEEitemize}
+\def\enumerate{\@IEEEenumerate}
+\def\endenumerate{\@endIEEEenumerate}
+\def\description{\@IEEEdescription}
+\def\enddescription{\@endIEEEdescription}
+
+% provide the user with aliases - may help those using packages that
+% override itemize, enumerate, or description
+\def\IEEEitemize{\@IEEEitemize}
+\def\endIEEEitemize{\@endIEEEitemize}
+\def\IEEEenumerate{\@IEEEenumerate}
+\def\endIEEEenumerate{\@endIEEEenumerate}
+\def\IEEEdescription{\@IEEEdescription}
+\def\endIEEEdescription{\@endIEEEdescription}
+
+
+% V1.6 we want to keep the IEEEtran IED list definitions as our own internal
+% commands so they are protected against redefinition
+\def\@IEEEitemize{\@ifnextchar[{\@@IEEEitemize}{\@@IEEEitemize[\relax]}}
+\def\@IEEEenumerate{\@ifnextchar[{\@@IEEEenumerate}{\@@IEEEenumerate[\relax]}}
+\def\@IEEEdescription{\@ifnextchar[{\@@IEEEdescription}{\@@IEEEdescription[\relax]}}
+\def\@endIEEEitemize{\endlist}
+\def\@endIEEEenumerate{\endlist}
+\def\@endIEEEdescription{\endlist}
+
+
+% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS
+% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS
+% IEEEtran itemized list MDS 1/2001
+% Note controlled spacing here, shield end of lines with %
+\def\@@IEEEitemize[#1]{%
+ \ifnum\@itemdepth>3\relax\@toodeep\else%
+ \ifnum\@listdepth>5\relax\@toodeep\else%
+ \advance\@itemdepth\@ne%
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ % get the IEEElabelindentfactor for this level
+ \advance\@listdepth\@ne% we need to know what the level WILL be
+ \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
+ \advance\@listdepth-\@ne% undo our increment
+ \def\@IEEEiedjustify{2}% right justified labels are default
+ % set other defaults
+ \IEEEnocalcleftmarginfalse%
+ \IEEEnolabelindentfactorfalse%
+ \topsep\IEEEiedtopsep%
+ \IEEElabelindent\IEEEilabelindent%
+ \labelsep\IEEEiednormlabelsep%
+ \partopsep 0ex%
+ \parsep 0ex%
+ \itemsep 0ex%
+ \rightmargin 0em%
+ \listparindent 0em%
+ \itemindent 0em%
+ % calculate the label width
+ % the user can override this later if
+ % they specified a \labelwidth
+ \settowidth{\labelwidth}{\csname labelitem\romannumeral\the\@itemdepth\endcsname}%
+ \@IEEEsavelistparams% save our list parameters
+ \list{\csname\@itemitem\endcsname}{%
+ \@IEEErestorelistparams% override any list{} changes
+ % to our globals
+ \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel
+ \IEEEiedlistdecl% let user alter parameters
+ #1\relax%
+ % If the user has requested not to use the
+ % IEEElabelindent factor, don't revise \IEEElabelindent
+ \ifIEEEnolabelindentfactor\relax%
+ \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent%
+ \fi%
+ % Unless the user has requested otherwise,
+ % calculate our left margin based
+ % on \IEEElabelindent, \labelwidth and
+ % \labelsep
+ \ifIEEEnocalcleftmargin\relax%
+ \else\IEEEcalcleftmargin{\IEEElabelindent}%
+ \fi}\fi\fi}%
+
+
+% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS
+% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS
+% IEEEtran enumerate list MDS 1/2001
+% Note controlled spacing here, shield end of lines with %
+\def\@@IEEEenumerate[#1]{%
+ \ifnum\@enumdepth>3\relax\@toodeep\else%
+ \ifnum\@listdepth>5\relax\@toodeep\else%
+ \advance\@enumdepth\@ne%
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ % get the IEEElabelindentfactor for this level
+ \advance\@listdepth\@ne% we need to know what the level WILL be
+ \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
+ \advance\@listdepth-\@ne% undo our increment
+ \def\@IEEEiedjustify{2}% right justified labels are default
+ % set other defaults
+ \IEEEnocalcleftmarginfalse%
+ \IEEEnolabelindentfactorfalse%
+ \topsep\IEEEiedtopsep%
+ \IEEElabelindent\IEEEelabelindent%
+ \labelsep\IEEEiednormlabelsep%
+ \partopsep 0ex%
+ \parsep 0ex%
+ \itemsep 0ex%
+ \rightmargin 0em%
+ \listparindent 0em%
+ \itemindent 0em%
+ % calculate the label width
+ % We'll set it to the width suitable for all labels using
+ % normalfont 1) to 9)
+ % The user can override this later
+ \settowidth{\labelwidth}{9)}%
+ \@IEEEsavelistparams% save our list parameters
+ \list{\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}%
+ \@IEEErestorelistparams% override any list{} changes
+ % to our globals
+ \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel
+ \IEEEiedlistdecl% let user alter parameters
+ #1\relax%
+ % If the user has requested not to use the
+ % IEEElabelindent factor, don't revise \IEEElabelindent
+ \ifIEEEnolabelindentfactor\relax%
+ \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent%
+ \fi%
+ % Unless the user has requested otherwise,
+ % calculate our left margin based
+ % on \IEEElabelindent, \labelwidth and
+ % \labelsep
+ \ifIEEEnocalcleftmargin\relax%
+ \else\IEEEcalcleftmargin{\IEEElabelindent}%
+ \fi}\fi\fi}%
+
+
+% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS
+% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS
+% IEEEtran description list MDS 1/2001
+% Note controlled spacing here, shield end of lines with %
+\def\@@IEEEdescription[#1]{%
+ \ifnum\@listdepth>5\relax\@toodeep\else%
+ % get the IEEElabelindentfactor for this level
+ \advance\@listdepth\@ne% we need to know what the level WILL be
+ \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
+ \advance\@listdepth-\@ne% undo our increment
+ \def\@IEEEiedjustify{0}% left justified labels are default
+ % set other defaults
+ \IEEEnocalcleftmarginfalse%
+ \IEEEnolabelindentfactorfalse%
+ \topsep\IEEEiedtopsep%
+ \IEEElabelindent\IEEEdlabelindent%
+ % assume normal labelsep
+ \labelsep\IEEEiednormlabelsep%
+ \partopsep 0ex%
+ \parsep 0ex%
+ \itemsep 0ex%
+ \rightmargin 0em%
+ \listparindent 0em%
+ \itemindent 0em%
+ % Bogus label width in case the user forgets
+ % to set it.
+ % TIP: If you want to see what a variable's width is you
+ % can use the TeX command \showthe\width-variable to
+ % display it on the screen during compilation
+ % (This might be helpful to know when you need to find out
+ % which label is the widest)
+ \settowidth{\labelwidth}{Hello}%
+ \@IEEEsavelistparams% save our list parameters
+ \list{}{\@IEEErestorelistparams% override any list{} changes
+ % to our globals
+ \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel
+ \IEEEiedlistdecl% let user alter parameters
+ #1\relax%
+ % If the user has requested not to use the
+ % labelindent factor, don't revise \IEEElabelindent
+ \ifIEEEnolabelindentfactor\relax%
+ \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent%
+ \fi%
+ % Unless the user has requested otherwise,
+ % calculate our left margin based
+ % on \IEEElabelindent, \labelwidth and
+ % \labelsep
+ \ifIEEEnocalcleftmargin\relax%
+ \else\IEEEcalcleftmargin{\IEEElabelindent}\relax%
+ \fi}\fi}
+
+% v1.6b we use one makelabel that does justification as needed.
+\def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax
+\makebox[\labelwidth][l]{\normalfont #1}\else
+\if\@IEEEiedjustify 1\relax
+\makebox[\labelwidth][c]{\normalfont #1}\else
+\makebox[\labelwidth][r]{\normalfont #1}\fi\fi}
+
+
+% compsoc uses a larger value for the normal labelsep
+% and also extra spacing above and below each list
+\ifCLASSOPTIONcompsoc
+ \IEEEiednormlabelsep 1.2em
+ \IEEEiedtopsep 6pt plus 3pt minus 3pt
+\fi
+
+
+% VERSE and QUOTE
+% V1.7 define environments with newenvironment
+\newenvironment{verse}{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em \listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item\relax}
+ {\endlist}
+\newenvironment{quotation}{\list{}{\listparindent 1.5em \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item\relax}
+ {\endlist}
+\newenvironment{quote}{\list{}{\rightmargin\leftmargin}\item\relax}
+ {\endlist}
+
+
+% \titlepage
+% provided only for backward compatibility. \maketitle is the correct
+% way to create the title page.
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+% standard values from article.cls
+\arraycolsep 5pt
+\arrayrulewidth .4pt
+\doublerulesep 2pt
+
+\tabcolsep 6pt
+\tabbingsep 0.5em
+
+
+%% FOOTNOTES
+%
+%\skip\footins 10pt plus 4pt minus 2pt
+% V1.6 respond to changes in font size
+% space added above the footnotes (if present)
+\skip\footins 0.9\baselineskip plus 0.4\baselineskip minus 0.2\baselineskip
+
+% V1.6, we need to make \footnotesep responsive to changes
+% in \baselineskip or strange spacings will result when in
+% draft mode. Here is a little LaTeX secret - \footnotesep
+% determines the height of an invisible strut that is placed
+% *above* the baseline of footnotes after the first. Since
+% LaTeX considers the space for characters to be 0.7\baselineskip
+% above the baseline and 0.3\baselineskip below it, we need to
+% use 0.7\baselineskip as a \footnotesep to maintain equal spacing
+% between all the lines of the footnotes. The IEEE often uses a tad
+% more, so use 0.8\baselineskip. This slightly larger value also helps
+% the text to clear the footnote marks. Note that \thanks in IEEEtran
+% uses its own value of \footnotesep which is set in \maketitle.
+{\footnotesize
+\global\footnotesep 0.8\baselineskip}
+
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt
+\fboxrule = .4pt
+% V1.6 use 1em, then use LaTeX2e's \@makefnmark
+% Note that the IEEE normally *left* aligns the footnote marks, so we don't need
+% box resizing tricks here.
+\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@makefnmark}#1}% V1.6 use 1em
+% V1.7 compsoc does not use superscipts for footnote marks
+\ifCLASSOPTIONcompsoc
+\def\@IEEEcompsocmakefnmark{\hbox{\normalfont\@thefnmark.\ }}
+\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@IEEEcompsocmakefnmark}#1}
+\fi
+
+% The IEEE does not use footnote rules
+\def\footnoterule{}
+
+% V1.7 for compsoc, the IEEE uses a footnote rule only for \thanks. We devise a "one-shot"
+% system to implement this.
+\newif\if@IEEEenableoneshotfootnoterule
+\@IEEEenableoneshotfootnoterulefalse
+\ifCLASSOPTIONcompsoc
+\def\footnoterule{\relax\if@IEEEenableoneshotfootnoterule
+\kern-5pt
+\hbox to \columnwidth{\hfill\vrule width 0.5\columnwidth height 0.4pt\hfill}
+\kern4.6pt
+\global\@IEEEenableoneshotfootnoterulefalse
+\else
+\relax
+\fi}
+\fi
+
+% V1.6 do not allow LaTeX to break a footnote across multiple pages
+\interfootnotelinepenalty=10000
+
+% V1.6 discourage breaks within equations
+% Note that amsmath normally sets this to 10000,
+% but LaTeX2e normally uses 100.
+\interdisplaylinepenalty=2500
+
+% default allows section depth up to /paragraph
+\setcounter{secnumdepth}{4}
+
+% technotes do not allow /paragraph
+\ifCLASSOPTIONtechnote
+ \setcounter{secnumdepth}{3}
+\fi
+% neither do compsoc conferences
+\@IEEEcompsocconfonly{\setcounter{secnumdepth}{3}}
+
+
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+
+% used only by IEEEtran's IEEEeqnarray as other packages may
+% have their own, different, implementations
+\newcounter{IEEEsubequation}[equation]
+
+% as shown when called by user from \ref, \label and in table of contents
+\def\theequation{\arabic{equation}} % 1
+\def\theIEEEsubequation{\theequation\alph{IEEEsubequation}} % 1a (used only by IEEEtran's IEEEeqnarray)
+\ifCLASSOPTIONcompsoc
+% compsoc is all arabic
+\def\thesection{\arabic{section}}
+\def\thesubsection{\thesection.\arabic{subsection}}
+\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
+\def\theparagraph{\thesubsubsection.\arabic{paragraph}}
+\else
+\def\thesection{\Roman{section}} % I
+% V1.7, \mbox prevents breaks around -
+\def\thesubsection{\mbox{\thesection-\Alph{subsection}}} % I-A
+% V1.7 use I-A1 format used by the IEEE rather than I-A.1
+\def\thesubsubsection{\thesubsection\arabic{subsubsection}} % I-A1
+\def\theparagraph{\thesubsubsection\alph{paragraph}} % I-A1a
+\fi
+
+% From Heiko Oberdiek. Because of the \mbox in \thesubsection, we need to
+% tell hyperref to disable the \mbox command when making PDF bookmarks.
+% This done already with hyperref.sty version 6.74o and later, but
+% it will not hurt to do it here again for users of older versions.
+\@ifundefined{pdfstringdefPreHook}{\let\pdfstringdefPreHook\@empty}{}%
+\g@addto@macro\pdfstringdefPreHook{\let\mbox\relax}
+
+
+% Main text forms (how shown in main text headings)
+% V1.6, using \thesection in \thesectiondis allows changes
+% in the former to automatically appear in the latter
+\ifCLASSOPTIONcompsoc
+ \ifCLASSOPTIONconference% compsoc conference
+ \def\thesectiondis{\thesection.}
+ \def\thesubsectiondis{\thesectiondis\arabic{subsection}.}
+ \def\thesubsubsectiondis{\thesubsectiondis\arabic{subsubsection}.}
+ \def\theparagraphdis{\thesubsubsectiondis\arabic{paragraph}.}
+ \else% compsoc not conferencs
+ \def\thesectiondis{\thesection}
+ \def\thesubsectiondis{\thesectiondis.\arabic{subsection}}
+ \def\thesubsubsectiondis{\thesubsectiondis.\arabic{subsubsection}}
+ \def\theparagraphdis{\thesubsubsectiondis.\arabic{paragraph}}
+ \fi
+\else% not compsoc
+ \def\thesectiondis{\thesection.} % I.
+ \def\thesubsectiondis{\Alph{subsection}.} % B.
+ \def\thesubsubsectiondis{\arabic{subsubsection})} % 3)
+ \def\theparagraphdis{\alph{paragraph})} % d)
+\fi
+
+% just like LaTeX2e's \@eqnnum
+\def\theequationdis{{\normalfont \normalcolor (\theequation)}}% (1)
+% IEEEsubequation used only by IEEEtran's IEEEeqnarray
+\def\theIEEEsubequationdis{{\normalfont \normalcolor (\theIEEEsubequation)}}% (1a)
+% redirect LaTeX2e's equation number display and all that depend on
+% it, through IEEEtran's \theequationdis
+\def\@eqnnum{\theequationdis}
+
+
+
+% V1.7 provide string macros as article.cls does
+\def\contentsname{Contents}
+\def\listfigurename{List of Figures}
+\def\listtablename{List of Tables}
+\def\refname{References}
+\def\indexname{Index}
+\def\figurename{Fig.}
+\def\tablename{TABLE}
+\@IEEEcompsocconfonly{\def\figurename{Figure}}
+\def\partname{Part}
+\def\appendixname{Appendix}
+\def\abstractname{Abstract}
+% IEEE specific names
+\def\IEEEkeywordsname{Index Terms}
+\def\IEEEproofname{Proof}
+
+
+% LIST OF FIGURES AND TABLES AND TABLE OF CONTENTS
+%
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg{2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+% adjusted some spacings here so that section numbers will not easily
+% collide with the section titles.
+% VIII; VIII-A; and VIII-A.1 are usually the worst offenders.
+% MDS 1/2001
+\def\tableofcontents{\section*{\contentsname}\@starttoc{toc}}
+\def\l@section#1#2{\addpenalty{\@secpenalty}\addvspace{1.0em plus 1pt}%
+ \@tempdima 2.75em \begingroup \parindent \z@ \rightskip \@pnumwidth%
+ \parfillskip-\@pnumwidth {\bfseries\leavevmode #1}\hfil\hbox to\@pnumwidth{\hss #2}\par%
+ \endgroup}
+% argument format #1:level, #2:labelindent,#3:labelsep
+\def\l@subsection{\@dottedtocline{2}{2.75em}{3.75em}}
+\def\l@subsubsection{\@dottedtocline{3}{6.5em}{4.5em}}
+% must provide \l@ defs for ALL sublevels EVEN if tocdepth
+% is such as they will not appear in the table of contents
+% these defs are how TOC knows what level these things are!
+\def\l@paragraph{\@dottedtocline{4}{6.5em}{5.5em}}
+\def\l@subparagraph{\@dottedtocline{5}{6.5em}{6.5em}}
+\def\listoffigures{\section*{\listfigurename}\@starttoc{lof}}
+\def\l@figure{\@dottedtocline{1}{0em}{2.75em}}
+\def\listoftables{\section*{\listtablename}\@starttoc{lot}}
+\let\l@table\l@figure
+
+
+% Definitions for floats
+%
+% Normal Floats
+% V1.8 floatsep et al. revised down by 0.15\baselineskip
+% to account for the sideeffects of \topskip compensation
+\floatsep 0.85\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip
+\textfloatsep 1.55\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip
+\@fptop 0pt plus 1fil
+\@fpsep 0.75\baselineskip plus 2fil
+\@fpbot 0pt plus 1fil
+\def\topfraction{0.9}
+\def\bottomfraction{0.4}
+\def\floatpagefraction{0.8}
+% V1.7, let top floats approach 90% of page
+\def\textfraction{0.1}
+
+% Double Column Floats
+\dblfloatsep 0.85\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip
+
+\dbltextfloatsep 1.55\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip
+% Note that it would be nice if the rubber here actually worked in LaTeX2e.
+% There is a long standing limitation in LaTeX, first discovered (to the best
+% of my knowledge) by Alan Jeffrey in 1992. LaTeX ignores the stretchable
+% portion of \dbltextfloatsep, and as a result, double column figures can and
+% do result in an non-integer number of lines in the main text columns with
+% underfull vbox errors as a consequence. A post to comp.text.tex
+% by Donald Arseneau confirms that this had not yet been fixed in 1998.
+% IEEEtran V1.6 will fix this problem for you in the titles, but it doesn't
+% protect you from other double floats. Happy vspace'ing.
+
+\@dblfptop 0pt plus 1fil
+\@dblfpsep 0.75\baselineskip plus 2fil
+\@dblfpbot 0pt plus 1fil
+\def\dbltopfraction{0.8}
+\def\dblfloatpagefraction{0.8}
+\setcounter{dbltopnumber}{4}
+
+\intextsep 0.85\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip
+\setcounter{topnumber}{2}
+\setcounter{bottomnumber}{2}
+\setcounter{totalnumber}{4}
+
+
+
+% article class provides these, we should too.
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+% but only \abovecaptionskip is used above figure captions and *below* table
+% captions
+\setlength\abovecaptionskip{0.5\baselineskip}
+% compsoc journals are a little more generous
+\ifCLASSOPTIONcompsoc\ifCLASSOPTIONjournal
+ \setlength\abovecaptionskip{0.75\baselineskip}
+\fi\fi
+\setlength\belowcaptionskip{0pt}
+% V1.6 create hooks in case the caption spacing ever needs to be
+% overridden by a user
+\def\@IEEEfigurecaptionsepspace{\vskip\abovecaptionskip\relax}%
+\def\@IEEEtablecaptionsepspace{\vskip\abovecaptionskip\relax}%
+
+
+% 1.6b revise caption system so that \@makecaption uses two arguments
+% as with LaTeX2e. Otherwise, there will be problems when using hyperref.
+\def\@IEEEtablestring{table}
+
+
+% V1.8 compensate for \topskip so top of top figures align with tops of the first lines of main text
+% here we calculate a space equal to the amount \topskip exceeds the main text height
+% we hook in at \@floatboxreset
+\def\@IEEEfiguretopskipspace{\ifdim\prevdepth=-1000pt\relax
+\setlength{\@IEEEtrantmpdimenA}{1\topskip}\relax
+\addtolength{\@IEEEtrantmpdimenA}{-0.7\@IEEEnormalsizeunitybaselineskip}\relax
+\vspace*{\@IEEEtrantmpdimenA}\fi}
+% V1.8 compensate for \topskip at the top of top tables so caption text is on main text baseline
+% use a strut set on the caption baseline within \@makecaption
+\def\@IEEEtabletopskipstrut{\ifdim\prevdepth=-1000pt\rule{0pt}{\topskip}\fi}
+% the \ifdim\prevdepth checks are always expected to be true for IEEE style float caption ordering
+% because top of figure content and top of captions in tables is the first thing on the vertical
+% list of these floats
+% thanks to Donald Arseneau for his 2000/11/11 post "Re: caption hacking" with info on this topic.
+
+
+\ifCLASSOPTIONcompsoc
+% V1.7 compsoc \@makecaption
+\ifCLASSOPTIONconference% compsoc conference
+\long\def\@makecaption#1#2{%
+% test if is a for a figure or table
+\ifx\@captype\@IEEEtablestring%
+% if a table, do table caption
+\footnotesize\bgroup\par\centering\@IEEEtabletopskipstrut{\normalfont\footnotesize {#1.}\nobreakspace\scshape #2}\par\addvspace{0.5\baselineskip}\egroup%
+\@IEEEtablecaptionsepspace
+% if not a table, format it as a figure
+\else
+\@IEEEfigurecaptionsepspace
+\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace #2}%
+\ifdim \wd\@tempboxa >\hsize%
+% if caption is longer than a line, let it wrap around
+\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace}%
+\parbox[t]{\hsize}{\normalfont\footnotesize \noindent\unhbox\@tempboxa#2}%
+% if caption is shorter than a line, center
+\else%
+\hbox to\hsize{\normalfont\footnotesize\hfil\box\@tempboxa\hfil}%
+\fi\fi}
+%
+\else% nonconference compsoc
+\long\def\@makecaption#1#2{%
+% test if is a for a figure or table
+\ifx\@captype\@IEEEtablestring%
+% if a table, do table caption
+\footnotesize\bgroup\par\centering\@IEEEtabletopskipstrut{\normalfont\sffamily\footnotesize #1}\\{\normalfont\sffamily\footnotesize #2}\par\addvspace{0.5\baselineskip}\egroup%
+\@IEEEtablecaptionsepspace
+% if not a table, format it as a figure
+\else
+\@IEEEfigurecaptionsepspace
+\setbox\@tempboxa\hbox{\normalfont\sffamily\footnotesize {#1.}\nobreakspace #2}%
+\ifdim \wd\@tempboxa >\hsize%
+% if caption is longer than a line, let it wrap around
+\setbox\@tempboxa\hbox{\normalfont\sffamily\footnotesize {#1.}\nobreakspace}%
+\parbox[t]{\hsize}{\normalfont\sffamily\footnotesize \noindent\unhbox\@tempboxa#2}%
+% if caption is shorter than a line, left justify
+\else%
+\hbox to\hsize{\normalfont\sffamily\footnotesize\box\@tempboxa\hfil}%
+\fi\fi}
+\fi
+%
+\else% traditional noncompsoc \@makecaption
+\long\def\@makecaption#1#2{%
+% test if is a for a figure or table
+\ifx\@captype\@IEEEtablestring%
+% if a table, do table caption
+\footnotesize\bgroup\par\centering\@IEEEtabletopskipstrut{\normalfont\footnotesize #1}\\{\normalfont\footnotesize\scshape #2}\par\addvspace{0.5\baselineskip}\egroup%
+\@IEEEtablecaptionsepspace
+% if not a table, format it as a figure
+\else
+\@IEEEfigurecaptionsepspace
+% 3/2001 use footnotesize, not small; use two nonbreaking spaces, not one
+\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace\nobreakspace #2}%
+\ifdim \wd\@tempboxa >\hsize%
+% if caption is longer than a line, let it wrap around
+\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace\nobreakspace}%
+\parbox[t]{\hsize}{\normalfont\footnotesize\noindent\unhbox\@tempboxa#2}%
+% if caption is shorter than a line, center if conference, left justify otherwise
+\else%
+\ifCLASSOPTIONconference \hbox to\hsize{\normalfont\footnotesize\hfil\box\@tempboxa\hfil}%
+\else \hbox to\hsize{\normalfont\footnotesize\box\@tempboxa\hfil}%
+\fi\fi\fi}
+\fi
+
+
+
+% V1.7 disable captions class option, do so in a way that retains operation of \label
+% within \caption
+\ifCLASSOPTIONcaptionsoff
+\long\def\@makecaption#1#2{\vspace*{2em}\footnotesize\bgroup\par\addvspace{0.5\baselineskip}\centering{\footnotesize #1}\par\addvspace{0.5\baselineskip}\egroup%
+\let\@IEEEtemporiglabeldefsave\label
+\let\@IEEEtemplabelargsave\relax
+\def\label##1{\gdef\@IEEEtemplabelargsave{##1}}%
+\setbox\@tempboxa\hbox{#2}%
+\let\label\@IEEEtemporiglabeldefsave
+\ifx\@IEEEtemplabelargsave\relax\else\label{\@IEEEtemplabelargsave}\fi}
+\fi
+
+
+% V1.7 define end environments with \def not \let so as to work OK with
+% preview-latex
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename\nobreakspace\thefigure}
+% V1.8 within figures add \@IEEEfiguretopskipspace compensation to LaTeX2e's \@floatboxreset
+\def\figure{\def\@floatboxreset{\reset@font\normalsize\@setminipage\@IEEEfiguretopskipspace}\@float{figure}}
+\def\endfigure{\end@float}
+% V1.8 also add \@IEEEfiguretopskipspace compensation to \figure*
+\@namedef{figure*}{\def\@floatboxreset{\reset@font\normalsize\@setminipage\@IEEEfiguretopskipspace}\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+
+\newcounter{table}
+\ifCLASSOPTIONcompsoc
+\def\thetable{\arabic{table}}
+\else
+\def\thetable{\@Roman\c@table}
+\fi
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename\nobreakspace\thetable}
+% V1.6 The IEEE uses 8pt text for tables
+% within tables alter LaTeX2e's \@floatboxreset to use \footnotesize
+\def\table{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@float{table}}
+\def\endtable{\end@float}
+% v1.6b double column tables need to default to footnotesize as well.
+\@namedef{table*}{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+
+
+
+%% -- Command Argument Scanning Support Functions --
+%% V1.8a
+
+% usage: \@IEEEstripouterbraces*{}
+% \@IEEEstripouterbraces fully expands its argument (which it then stores
+% in \@IEEEstripouterbracesarg) via \edef, then removes any outer enclosing
+% braces, and finally stores the result in the macro
+% \@IEEEstrippedouterbraces.
+%
+% For example:
+% \@IEEEstripouterbraces{{{{ab}c}}}
+% results in:
+%
+% \@IEEEstripouterbracesarg ==> a macro containing {{{ab}c}}
+% \@IEEEstrippedouterbraces ==> a macro containing {ab}c
+%
+% the *-star form,\@IEEEstripouterbraces*, does not expand the argument
+% contents during processing
+\def\@IEEEstripouterbraces{\@ifstar{\let\@IEEEstripouterbracesdef=\def\@@IEEEstripouterbraces}{\let\@IEEEstripouterbracesdef=\edef\@@IEEEstripouterbraces}}
+
+\def\@@IEEEstripouterbraces#1{\@IEEEstripouterbracesdef\@IEEEstripouterbracesarg{#1}\relax
+% If the macro is unchanged after being acquired as a single delimited
+% argument, we know we have one sequence of tokens without any enclosing
+% braces. Loop until this is true.
+\loop
+ \expandafter\@@@IEEEstripouterbraces\@IEEEstripouterbracesarg\@IEEEgeneralsequenceDELIMITER
+\ifx\@IEEEstrippedouterbraces\@IEEEstripouterbracesarg
+\else
+ \let\@IEEEstripouterbracesarg\@IEEEstrippedouterbraces
+\repeat}
+
+\def\@@@IEEEstripouterbraces#1\@IEEEgeneralsequenceDELIMITER{\def\@IEEEstrippedouterbraces{#1}}
+
+
+
+% usage: \@IEEEextractgroup*{}
+% \@IEEEextractgroup fully expands its argument (which it then stores in
+% \@IEEEextractgrouparg) via \edef and then assigns the first "brace group"
+% of tokens to the macro \@IEEEextractedgroup.
+% The remaining groups, if any, are stored in the macro
+% \@IEEEextractedgroupremain. If the argument does not contain the requisite
+% groups, the respective macros will be defined to be empty.
+% There is an asymmetry in that \@IEEEextractedgroup is stripped of its first
+% outer grouping while \@IEEEextractedgroupremain retains even the outer
+% grouping (if present) that originally identified it as a group.
+%
+% For example:
+% \@IEEEextractgroup{{{ab}}{c{de}}}
+% results in:
+%
+% \@IEEEextractgrouparg ==> a macro containing {{ab}}{c{de}}
+% \@IEEEextractedgroup ==> a macro containing {ab}
+% \@IEEEextractedgroupremain ==> a macro containing {c{de}}
+%
+% The *-star form, \@IEEEextractgroup*, does not expand its argument
+% contents during processing.
+\def\@IEEEextractgroup{\@ifstar{\let\@IEEEextractgroupdef=\def\@@IEEEextractgroup}{\let\@IEEEextractgroupdef=\edef\@@IEEEextractgroup}}
+
+\def\@@IEEEextractgroup#1{\@IEEEextractgroupdef\@IEEEextractgrouparg{#1}\relax
+% trap the case of an empty extracted group as this would cause problems with
+% \@IEEEextractgroupremain's argument acquisition
+\ifx\@IEEEextractgrouparg\@empty
+ \def\@IEEEextractedgroup{}\relax
+ \def\@IEEEextractedgroupremain{}\relax
+\else
+ % We have to use some dirty tricks here. We want to insert {} around
+ % whatever remains after the first group so that TeX's argument scanner
+ % will preserve any originally enclosing braces as well as provide an
+ % empty argument to acquire even if there isn't a second group.
+ % In this first of two dirty tricks, we put a } at the end of the structure
+ % we are going to extract from. The \ifnum0=`{\fi keeps TeX happy to allow
+ % what would otherwise be an unbalanced macro definition for
+ % \@@IEEEextractgroup to be acceptable to it.
+ \ifnum0=`{\fi\expandafter\@IEEEextractgroupremain\@IEEEextractgrouparg}\relax
+\fi}
+
+% In the second part of the dirty tricks, we insert a leading { right after
+% the first group is acquired, but before the remainder is. Again, the
+% \ifnum0=`}\fi keeps TeX happy during definition time, but will disappear
+% during run time.
+\def\@IEEEextractgroupremain#1{\def\@IEEEextractedgroup{#1}\expandafter\@@IEEEextractgroupremain\expandafter{\ifnum0=`}\fi}
+
+\def\@@IEEEextractgroupremain#1{\def\@IEEEextractedgroupremain{#1}}
+
+
+
+% \@IEEEextracttoken relocated at top because margin setting commands rely on it
+
+
+
+% usage: \@IEEEextracttokengroups*{}
+% \@IEEEextracttokengroups fully expands its argument (which it then stores
+% in \@IEEEextracttokengroupsarg) and then assigns the first "brace group" of
+% tokens (with the outermost braces removed) to the macro
+% \@IEEEextractedfirstgroup.
+% The meaning of the first nonbrace (but including the empty group) token
+% within this first group is assigned via \let to \@IEEEextractedfirsttoken
+% as well as stored in the macro \@IEEEextractedfirsttokenmacro. If a first
+% nonbrace token does not exist (or is an empty group), these will be \relax
+% and empty, respectively. Tokens that would otherwise be discarded during
+% the acquisition of the first token in the first group are stored in
+% \@IEEEextractedfirsttokensdiscarded, however their original relative brace
+% nesting depths are not guaranteed to be preserved.
+% The first group within this first group is stored in the macro
+% \@IEEEextractedfirstfirstgroup.
+% Likewise for the next group after the first: \@IEEEextractednextgroup,
+% \@IEEEextractednextfirstgroup, \@IEEEextractednextgroupfirsttoken,
+% \@IEEEextractednextgroupfirsttokenmacro, and
+% \@IEEEextractednextfirsttokensdiscarded.
+% All tokens/groups after the first group, including any enclosing braces,
+% are stored in the macro \@IEEEextractedafterfirstgroupremain which will
+% be empty if none exist.
+%
+% For example:
+% \@IEEEextracttokengroups{{{ab}{cd}}{{ef}g}}
+% will result in:
+%
+% \@IEEEextracttokengroupsarg ==> a macro containing {{ab}{cd}}{{ef}g}
+% \@IEEEextractedfirstgroup ==> a macro containing {ab}{cd}
+% \@IEEEextractedafterfirstgroupremain ==> a macro containing {{ef}g}
+% \@IEEEextractedfirsttoken ==> the letter a
+% \@IEEEextractedfirsttokenmacro ==> a macro containing a
+% \@IEEEextractedfirsttokensdiscarded ==> a macro containing bcd
+% \@IEEEextractedfirstfirstgroup ==> a macro containing ab
+% \@IEEEextractednextgroup ==> a macro containing {ef}g
+% \@IEEEextractednextfirsttoken ==> the letter e
+% \@IEEEextractednextfirsttokenmacro ==> a macro containing e
+% \@IEEEextractednextfirsttokensdiscarded ==> a macro containing fg
+% \@IEEEextractednextfirstgroup ==> a macro containing ef
+%
+% If given an empty argument, \@IEEEextractedfirsttoken and
+% \@IEEEextractednextfirsttoken will be set to \relax
+% and all the macros will be empty.
+% the *-star form, \@IEEEextracttokengroups*, does not expand its argument
+% contents during processing.
+%
+% Depends on: \@IEEEextractgroup, \@IEEEextracttoken
+\def\@IEEEextracttokengroups{\@ifstar{\let\@IEEEextracttokengroupsdef=\def\@@IEEEextracttokengroups}{\let\@IEEEextracttokengroupsdef=\edef\@@IEEEextracttokengroups}}
+\def\@@IEEEextracttokengroups#1{\@IEEEextracttokengroupsdef\@IEEEextracttokengroupsarg{#1}\relax
+% begin extraction, these functions are safe with empty arguments
+% first group
+\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextracttokengroupsarg}\relax
+\let\@IEEEextractedfirstgroup\@IEEEextractedgroup
+\let\@IEEEextractedafterfirstgroupremain\@IEEEextractedgroupremain
+\expandafter\@IEEEextracttoken\expandafter*\expandafter{\@IEEEextractedfirstgroup}\relax
+\let\@IEEEextractedfirsttoken\@IEEEextractedtoken
+\let\@IEEEextractedfirsttokenmacro\@IEEEextractedtokenmacro
+\let\@IEEEextractedfirsttokensdiscarded\@IEEEextractedtokensdiscarded
+% first first group
+\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractedfirstgroup}\relax
+\let\@IEEEextractedfirstfirstgroup\@IEEEextractedgroup
+% next group
+\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractedafterfirstgroupremain}\relax
+\let\@IEEEextractednextgroup\@IEEEextractedgroup
+\expandafter\@IEEEextracttoken\expandafter*\expandafter{\@IEEEextractednextgroup}\relax
+\let\@IEEEextractednextfirsttoken\@IEEEextractedtoken
+\let\@IEEEextractednextfirsttokenmacro\@IEEEextractedtokenmacro
+\let\@IEEEextractednextfirsttokensdiscarded\@IEEEextractedtokensdiscarded
+% next first group
+\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractednextgroup}\relax
+\let\@IEEEextractednextfirstgroup\@IEEEextractedgroup}
+
+
+%% -- End of Command Argument Scanning Support Functions --
+
+
+
+
+%%
+%% START OF IEEEeqnarray DEFINITIONS
+%%
+%% Inspired by the concepts, examples, and previous works of LaTeX
+%% coders and developers such as Donald Arseneau, Fred Bartlett,
+%% David Carlisle, Tony Liu, Frank Mittelbach, Piet van Oostrum,
+%% Roland Winkler and Mark Wooding.
+%% I don't make the claim that my work here is even near their calibre. ;)
+
+
+\newif\if@IEEEeqnarrayboxnojot% flag to indicate if the environment was called as the star form
+\@IEEEeqnarrayboxnojotfalse
+
+\newif\if@advanceIEEEeqncolcnt% tracks if the environment should advance the col counter
+% allows a way to make an \IEEEeqnarraybox that can be used within an \IEEEeqnarray
+% used by IEEEeqnarraymulticol so that it can work properly in both
+\@advanceIEEEeqncolcnttrue
+
+\newcount\@IEEEeqnnumcols % tracks how many IEEEeqnarray cols are defined
+\newcount\@IEEEeqncolcnt % tracks how many IEEEeqnarray cols the user actually used
+
+
+% The default math style used by the columns
+\def\IEEEeqnarraymathstyle{\displaystyle}
+% The default text style used by the columns
+% default to using the current font
+\def\IEEEeqnarraytextstyle{\relax}
+
+% like the iedlistdecl but for \IEEEeqnarray
+\def\IEEEeqnarraydecl{\relax}
+\def\IEEEeqnarrayboxdecl{\relax}
+
+
+
+% V1.8 flags to indicate that equation numbering is to persist
+\newif\if@IEEEeqnumpersist%
+\@IEEEeqnumpersistfalse
+\newif\if@IEEEsubeqnumpersist%
+\@IEEEsubeqnumpersistfalse
+%
+% V1.8 flags to indicate if (sub)equation number of last line was preadvanced
+\newif\if@IEEEeqnumpreadv%
+\@IEEEeqnumpreadvfalse
+\newif\if@IEEEsubeqnumpreadv%
+\@IEEEsubeqnumpreadvfalse
+
+\newcount\@IEEEsubeqnnumrollback% saves previous value of IEEEsubequation number in case we need to restore it
+
+% \yesnumber is the opposite of \nonumber
+% a novel concept with the same def as the equationarray package
+% However, we give IEEE versions too since some LaTeX packages such as
+% the MDWtools mathenv.sty redefine \nonumber to something else.
+% This command is intended for use in non-IEEEeqnarray math environments
+\providecommand{\yesnumber}{\global\@eqnswtrue}
+
+
+% IEEEyes/nonumber
+% V1.8 add persistant * forms
+% These commands can alter the type of equation an IEEEeqnarray line is.
+\def\IEEEyesnumber{\@ifstar{\global\@IEEEeqnumpersisttrue\global\@IEEEsubeqnumpersistfalse\@IEEEyesnumber}{\@IEEEyesnumber}}
+
+\def\@IEEEyesnumber{\global\@eqnswtrue
+\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray
+\ifnum\c@IEEEsubequation>0\relax
+ \stepcounter{equation}\setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+\fi
+% even if we reached this eqn num via a preadv, it is legit now
+\global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse
+\fi}
+
+\def\IEEEnonumber{\@ifstar{\global\@IEEEeqnumpersistfalse\global\@IEEEsubeqnumpersistfalse\global\@eqnswfalse}{\global\@eqnswfalse}}
+
+
+\def\IEEEyessubnumber{\@ifstar{\global\@IEEEsubeqnumpersisttrue\@IEEEyessubnumber}{\@IEEEyessubnumber}}
+%
+\def\@IEEEyessubnumber{\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray
+ \ifnum\c@IEEEsubequation>0\relax% if it already is a subequation, we are good to go as-is
+ \else% if we are a regular equation we have to watch out for two cases
+ \if@IEEEeqnumpreadv% if this equation is the result of a preadvance, backout and bump the sub eqnnum
+ \global\advance\c@equation\m@ne\global\c@IEEEsubequation=\@IEEEsubeqnnumrollback\addtocounter{IEEEsubequation}{1}\relax
+ \else% non-preadvanced equations just need initialization of their sub eqnnum
+ \setcounter{IEEEsubequation}{1}\relax
+ \fi
+ \fi% fi already is subequation
+ \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label
+ \global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse% no longer a preadv anymore
+ \global\@eqnswtrue
+\fi}
+
+
+\def\IEEEnosubnumber{\@ifstar{\global\@IEEEsubeqnumpersistfalse\@IEEEnosubnumber}{\@IEEEnosubnumber}}
+%
+\def\@IEEEnosubnumber{\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray
+ \if@eqnsw % we do nothing unless we know we will display because we play with the counters here
+ % if it currently is a subequation, bump up to the next equation number and turn off the subequation
+ \ifnum\c@IEEEsubequation>0\relax\addtocounter{equation}{1}\setcounter{IEEEsubequation}{0}\relax
+ \fi
+ \global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse% no longer a preadv anymore
+ \gdef\@currentlabel{\p@equation\theequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+ \fi
+\fi}
+
+
+
+% allows users to "push away" equations that get too close to the equation numbers
+\def\IEEEeqnarraynumspace{\hphantom{\ifnum\c@IEEEsubequation>0\relax\theIEEEsubequationdis\else\theequationdis\fi}}
+
+% provides a way to span multiple columns within IEEEeqnarray environments
+% will consider \if@advanceIEEEeqncolcnt before globally advancing the
+% column counter - so as to work within \IEEEeqnarraybox
+% usage: \IEEEeqnarraymulticol{number cols. to span}{col type}{cell text}
+\long\def\IEEEeqnarraymulticol#1#2#3{\multispan{#1}\relax
+% check if column is defined for the precolumn definition
+% We have to be careful here because TeX scans for & even within an \iffalse
+% where it does not expand macros. So, if we used only one \ifx and a #3
+% appeared in the false branch and the user inserted another alignment
+% structure that uses & in the \IEEEeqnarraymulticol{}, TeX will not see that
+% there is an inner alignment in the false branch yet still will see any &
+% there and will think that they apply to the outer alignment resulting in an
+% incomplete \ifx error.
+% So, here we use separate checks for the pre and post parts in order to keep
+% the #3 outside of all conditionals.
+\relax\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined\relax
+\csname @IEEEeqnarraycolPRE#2\endcsname
+\else% if not, error and use default type
+\@IEEEclspkgerror{Invalid column type "#2" in \string\IEEEeqnarraymulticol.\MessageBreak
+Using a default centering column instead}%
+{You must define IEEEeqnarray column types before use.}%
+\csname @IEEEeqnarraycolPRE@IEEEdefault\endcsname
+\fi
+% The ten \relax are to help prevent misleading error messages in case a user
+% accidently inserted a macro that tries to acquire additional arguments.
+#3\relax\relax\relax\relax\relax\relax\relax\relax\relax\relax
+% check if column is defined for the postcolumn definition
+\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined\relax
+\csname @IEEEeqnarraycolPOST#2\endcsname
+\else% if not, use the default type
+\csname @IEEEeqnarraycolPOST@IEEEdefault\endcsname
+\fi
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by #1\relax\fi}
+
+% like \omit, but maintains track of the column counter for \IEEEeqnarray
+\def\IEEEeqnarrayomit{\omit\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by 1\relax\fi}
+
+
+% provides a way to define a letter referenced column type
+% usage: \IEEEeqnarraydefcol{col. type letter/name}{pre insertion text}{post insertion text}
+\def\IEEEeqnarraydefcol#1#2#3{\expandafter\def\csname @IEEEeqnarraycolPRE#1\endcsname{#2}%
+\expandafter\def\csname @IEEEeqnarraycolPOST#1\endcsname{#3}%
+\expandafter\def\csname @IEEEeqnarraycolDEF#1\endcsname{1}}
+
+
+% provides a way to define a numerically referenced inter-column glue types
+% usage: \IEEEeqnarraydefcolsep{col. glue number}{glue definition}
+\def\IEEEeqnarraydefcolsep#1#2{\expandafter\def\csname @IEEEeqnarraycolSEP\romannumeral #1\endcsname{#2}%
+\expandafter\def\csname @IEEEeqnarraycolSEPDEF\romannumeral #1\endcsname{1}}
+
+
+\def\@IEEEeqnarraycolisdefined{1}% just a macro for 1, used for checking undefined column types
+
+
+% expands and appends the given argument to the \@IEEEtrantmptoksA token list
+% used to build up the \halign preamble
+\def\@IEEEappendtoksA#1{\edef\@@IEEEappendtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA #1}}%
+\@@IEEEappendtoksA}
+
+% also appends to \@IEEEtrantmptoksA, but does not expand the argument
+% uses \toks8 as a scratchpad register
+\def\@IEEEappendNOEXPANDtoksA#1{\toks8={#1}%
+\edef\@@IEEEappendNOEXPANDtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA\the\toks8}}%
+\@@IEEEappendNOEXPANDtoksA}
+
+% define some common column types for the user
+% math
+\IEEEeqnarraydefcol{l}{$\IEEEeqnarraymathstyle}{$\hfil}
+\IEEEeqnarraydefcol{c}{\hfil$\IEEEeqnarraymathstyle}{$\hfil}
+\IEEEeqnarraydefcol{r}{\hfil$\IEEEeqnarraymathstyle}{$}
+\IEEEeqnarraydefcol{L}{$\IEEEeqnarraymathstyle{}}{{}$\hfil}
+\IEEEeqnarraydefcol{C}{\hfil$\IEEEeqnarraymathstyle{}}{{}$\hfil}
+\IEEEeqnarraydefcol{R}{\hfil$\IEEEeqnarraymathstyle{}}{{}$}
+% text
+\IEEEeqnarraydefcol{s}{\IEEEeqnarraytextstyle}{\hfil}
+\IEEEeqnarraydefcol{t}{\hfil\IEEEeqnarraytextstyle}{\hfil}
+\IEEEeqnarraydefcol{u}{\hfil\IEEEeqnarraytextstyle}{}
+
+% vertical rules
+\IEEEeqnarraydefcol{v}{}{\vrule width\arrayrulewidth}
+\IEEEeqnarraydefcol{vv}{\vrule width\arrayrulewidth\hfil}{\hfil\vrule width\arrayrulewidth}
+\IEEEeqnarraydefcol{V}{}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth}
+\IEEEeqnarraydefcol{VV}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth\hfil}%
+{\hfil\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth}
+
+% horizontal rules
+\IEEEeqnarraydefcol{h}{}{\leaders\hrule height\arrayrulewidth\hfil}
+\IEEEeqnarraydefcol{H}{}{\leaders\vbox{\hrule width\arrayrulewidth\vskip\doublerulesep\hrule width\arrayrulewidth}\hfil}
+
+% plain
+\IEEEeqnarraydefcol{x}{}{}
+\IEEEeqnarraydefcol{X}{$}{$}
+
+% the default column type to use in the event a column type is not defined
+\IEEEeqnarraydefcol{@IEEEdefault}{\hfil$\IEEEeqnarraymathstyle}{$\hfil}
+
+
+% a zero tabskip (used for "-" col types)
+\def\@IEEEeqnarraycolSEPzero{0pt plus 0pt minus 0pt}
+% a centering tabskip (used for "+" col types)
+\def\@IEEEeqnarraycolSEPcenter{1000pt plus 0pt minus 1000pt}
+
+% top level default tabskip glues for the start, end, and inter-column
+% may be reset within environments not always at the top level, e.g., \IEEEeqnarraybox
+\edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPcenter}% default start glue
+\edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPcenter}% default end glue
+\edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue
+
+
+
+% creates a vertical rule that extends from the bottom to the top a a cell
+% Provided in case other packages redefine \vline some other way.
+% usage: \IEEEeqnarrayvrule[rule thickness]
+% If no argument is provided, \arrayrulewidth will be used for the rule thickness.
+\newcommand\IEEEeqnarrayvrule[1][\arrayrulewidth]{\vrule\@width#1\relax}
+
+% creates a blank separator row
+% usage: \IEEEeqnarrayseprow[separation length][font size commands]
+% default is \IEEEeqnarrayseprow[0.25\normalbaselineskip][\relax]
+% blank arguments inherit the default values
+% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers
+\def\IEEEeqnarrayseprow{\relax\@ifnextchar[{\@IEEEeqnarrayseprow}{\@IEEEeqnarrayseprow[0.25\normalbaselineskip]}}
+\def\@IEEEeqnarrayseprow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprow[#1]}{\@@IEEEeqnarrayseprow[#1][\relax]}}
+\def\@@IEEEeqnarrayseprow[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}%
+\ifx\@IEEEeqnarrayseprowARGONE\@empty%
+% get the skip value, based on the font commands
+% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3
+% assign within a bogus box to confine the font changes
+{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}%
+\else%
+{\setbox0=\hbox{#2\relax\global\skip5=#1}}%
+\fi%
+\@IEEEeqnarrayhoptolastcolumn\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax}
+
+% creates a blank separator row, but omits all the column templates
+% usage: \IEEEeqnarrayseprowcut[separation length][font size commands]
+% default is \IEEEeqnarrayseprowcut[0.25\normalbaselineskip][\relax]
+% blank arguments inherit the default values
+% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers
+\def\IEEEeqnarrayseprowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\@ifnextchar[{\@IEEEeqnarrayseprowcut}{\@IEEEeqnarrayseprowcut[0.25\normalbaselineskip]}}
+\def\@IEEEeqnarrayseprowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprowcut[#1]}{\@@IEEEeqnarrayseprowcut[#1][\relax]}}
+\def\@@IEEEeqnarrayseprowcut[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}%
+\ifx\@IEEEeqnarrayseprowARGONE\@empty%
+% get the skip value, based on the font commands
+% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3
+% assign within a bogus box to confine the font changes
+{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}%
+\else%
+{\setbox0=\hbox{#2\relax\global\skip5=#1}}%
+\fi%
+\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax}
+
+
+
+% draws a single rule across all the columns optional
+% argument determines the rule width, \arrayrulewidth is the default
+% updates column counter as needed and turns off struts
+% usage: \IEEEeqnarrayrulerow[rule line thickness]
+\def\IEEEeqnarrayrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\@ifnextchar[{\@IEEEeqnarrayrulerow}{\@IEEEeqnarrayrulerow[\arrayrulewidth]}}
+\def\@IEEEeqnarrayrulerow[#1]{\leaders\hrule height#1\hfil\relax% put in our rule
+% turn off any struts
+\IEEEeqnarraystrutsize{0pt}{0pt}[\relax]\relax}
+
+
+% draws a double rule by using a single rule row, a separator row, and then
+% another single rule row
+% first optional argument determines the rule thicknesses, \arrayrulewidth is the default
+% second optional argument determines the rule spacing, \doublerulesep is the default
+% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing]
+\def\IEEEeqnarraydblrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\@ifnextchar[{\@IEEEeqnarraydblrulerow}{\@IEEEeqnarraydblrulerow[\arrayrulewidth]}}
+\def\@IEEEeqnarraydblrulerow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerow[#1]}%
+{\@@IEEEeqnarraydblrulerow[#1][\doublerulesep]}}
+\def\@@IEEEeqnarraydblrulerow[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}%
+% we allow the user to say \IEEEeqnarraydblrulerow[][]
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\@IEEEeqnarrayrulerow[\arrayrulewidth]%
+\else%
+\@IEEEeqnarrayrulerow[#1]\relax%
+\fi%
+\def\@IEEEeqnarraydblrulerowARG{#2}%
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\\\IEEEeqnarrayseprow[\doublerulesep][\relax]%
+\else%
+\\\IEEEeqnarrayseprow[#2][\relax]%
+\fi%
+\\\multispan{\@IEEEeqnnumcols}%
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\def\@IEEEeqnarraydblrulerowARG{#1}%
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\@IEEEeqnarrayrulerow[\arrayrulewidth]%
+\else%
+\@IEEEeqnarrayrulerow[#1]%
+\fi%
+}
+
+% draws a double rule by using a single rule row, a separator (cutting) row, and then
+% another single rule row
+% first optional argument determines the rule thicknesses, \arrayrulewidth is the default
+% second optional argument determines the rule spacing, \doublerulesep is the default
+% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing]
+\def\IEEEeqnarraydblrulerowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\@ifnextchar[{\@IEEEeqnarraydblrulerowcut}{\@IEEEeqnarraydblrulerowcut[\arrayrulewidth]}}
+\def\@IEEEeqnarraydblrulerowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerowcut[#1]}%
+{\@@IEEEeqnarraydblrulerowcut[#1][\doublerulesep]}}
+\def\@@IEEEeqnarraydblrulerowcut[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}%
+% we allow the user to say \IEEEeqnarraydblrulerow[][]
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\@IEEEeqnarrayrulerow[\arrayrulewidth]%
+\else%
+\@IEEEeqnarrayrulerow[#1]%
+\fi%
+\def\@IEEEeqnarraydblrulerowARG{#2}%
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\\\IEEEeqnarrayseprowcut[\doublerulesep][\relax]%
+\else%
+\\\IEEEeqnarrayseprowcut[#2][\relax]%
+\fi%
+\\\multispan{\@IEEEeqnnumcols}%
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\def\@IEEEeqnarraydblrulerowARG{#1}%
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\@IEEEeqnarrayrulerow[\arrayrulewidth]%
+\else%
+\@IEEEeqnarrayrulerow[#1]%
+\fi%
+}
+
+
+
+% inserts a full row's worth of &'s
+% relies on \@IEEEeqnnumcols to provide the correct number of columns
+% uses \@IEEEtrantmptoksA, \count0 as scratch registers
+\def\@IEEEeqnarrayhoptolastcolumn{\@IEEEtrantmptoksA={}\count0=1\relax%
+\loop% add cols if the user did not use them all
+\ifnum\count0<\@IEEEeqnnumcols\relax%
+\@IEEEappendtoksA{&}%
+\advance\count0 by 1\relax% update the col count
+\repeat%
+\the\@IEEEtrantmptoksA%execute the &'s
+}
+
+
+
+\newif\if@IEEEeqnarrayISinner % flag to indicate if we are within the lines
+\@IEEEeqnarrayISinnerfalse % of an IEEEeqnarray - after the IEEEeqnarraydecl
+
+\edef\@IEEEeqnarrayTHEstrutheight{0pt} % height and depth of IEEEeqnarray struts
+\edef\@IEEEeqnarrayTHEstrutdepth{0pt}
+
+\edef\@IEEEeqnarrayTHEmasterstrutheight{0pt} % default height and depth of
+\edef\@IEEEeqnarrayTHEmasterstrutdepth{0pt} % struts within an IEEEeqnarray
+
+\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{0pt} % saved master strut height
+\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{0pt} % and depth
+
+\newif\if@IEEEeqnarrayusemasterstrut % flag to indicate that the master strut value
+\@IEEEeqnarrayusemasterstruttrue % is to be used
+
+
+
+% saves the strut height and depth of the master strut
+\def\@IEEEeqnarraymasterstrutsave{\relax%
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%
+% remove stretchability
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% save values
+\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{\the\dimen2}}
+
+% restores the strut height and depth of the master strut
+\def\@IEEEeqnarraymasterstrutrestore{\relax%
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutHSAVE\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutDSAVE\relax%
+% remove stretchability
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% restore values
+\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}}
+
+
+% globally restores the strut height and depth to the
+% master values and sets the master strut flag to true
+\def\@IEEEeqnarraystrutreset{\relax%
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%
+% remove stretchability
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% restore values
+\xdef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\xdef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\global\@IEEEeqnarrayusemasterstruttrue}
+
+
+% if the master strut is not to be used, make the current
+% values of \@IEEEeqnarrayTHEstrutheight, \@IEEEeqnarrayTHEstrutdepth
+% and the use master strut flag, global
+% this allows user strut commands issued in the last column to be carried
+% into the isolation/strut column
+\def\@IEEEeqnarrayglobalizestrutstatus{\relax%
+\if@IEEEeqnarrayusemasterstrut\else%
+\xdef\@IEEEeqnarrayTHEstrutheight{\@IEEEeqnarrayTHEstrutheight}%
+\xdef\@IEEEeqnarrayTHEstrutdepth{\@IEEEeqnarrayTHEstrutdepth}%
+\global\@IEEEeqnarrayusemasterstrutfalse%
+\fi}
+
+
+
+% usage: \IEEEeqnarraystrutsize{height}{depth}[font size commands]
+% If called outside the lines of an IEEEeqnarray, sets the height
+% and depth of both the master and local struts. If called inside
+% an IEEEeqnarray line, sets the height and depth of the local strut
+% only and sets the flag to indicate the use of the local strut
+% values. If the height or depth is left blank, 0.7\normalbaselineskip
+% and 0.3\normalbaselineskip will be used, respectively.
+% The optional argument can be used to evaluate the lengths under
+% a different font size and styles. If none is specified, the current
+% font is used.
+% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2
+\def\IEEEeqnarraystrutsize#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsize{#1}{#2}}{\@IEEEeqnarraystrutsize{#1}{#2}[\relax]}}
+\def\@IEEEeqnarraystrutsize#1#2[#3]{\def\@IEEEeqnarraystrutsizeARG{#1}%
+\ifx\@IEEEeqnarraystrutsizeARG\@empty%
+{\setbox0=\hbox{#3\relax\global\skip3=0.7\normalbaselineskip}}%
+\skip0=\skip3\relax%
+\else% arg one present
+{\setbox0=\hbox{#3\relax\global\skip3=#1\relax}}%
+\skip0=\skip3\relax%
+\fi% if null arg
+\def\@IEEEeqnarraystrutsizeARG{#2}%
+\ifx\@IEEEeqnarraystrutsizeARG\@empty%
+{\setbox0=\hbox{#3\relax\global\skip3=0.3\normalbaselineskip}}%
+\skip2=\skip3\relax%
+\else% arg two present
+{\setbox0=\hbox{#3\relax\global\skip3=#2\relax}}%
+\skip2=\skip3\relax%
+\fi% if null arg
+% remove stretchability, just to be safe
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% dimen0 = height, dimen2 = depth
+\if@IEEEeqnarrayISinner% inner does not touch master strut size
+\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\@IEEEeqnarrayusemasterstrutfalse% do not use master
+\else% outer, have to set master strut too
+\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}%
+\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\@IEEEeqnarrayusemasterstruttrue% use master strut
+\fi}
+
+
+% usage: \IEEEeqnarraystrutsizeadd{added height}{added depth}[font size commands]
+% If called outside the lines of an IEEEeqnarray, adds the given height
+% and depth to both the master and local struts.
+% If called inside an IEEEeqnarray line, adds the given height and depth
+% to the local strut only and sets the flag to indicate the use
+% of the local strut values.
+% In both cases, if a height or depth is left blank, 0pt is used instead.
+% The optional argument can be used to evaluate the lengths under
+% a different font size and styles. If none is specified, the current
+% font is used.
+% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2
+\def\IEEEeqnarraystrutsizeadd#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsizeadd{#1}{#2}}{\@IEEEeqnarraystrutsizeadd{#1}{#2}[\relax]}}
+\def\@IEEEeqnarraystrutsizeadd#1#2[#3]{\def\@IEEEeqnarraystrutsizearg{#1}%
+\ifx\@IEEEeqnarraystrutsizearg\@empty%
+\skip0=0pt\relax%
+\else% arg one present
+{\setbox0=\hbox{#3\relax\global\skip3=#1}}%
+\skip0=\skip3\relax%
+\fi% if null arg
+\def\@IEEEeqnarraystrutsizearg{#2}%
+\ifx\@IEEEeqnarraystrutsizearg\@empty%
+\skip2=0pt\relax%
+\else% arg two present
+{\setbox0=\hbox{#3\relax\global\skip3=#2}}%
+\skip2=\skip3\relax%
+\fi% if null arg
+% remove stretchability, just to be safe
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% dimen0 = height, dimen2 = depth
+\if@IEEEeqnarrayISinner% inner does not touch master strut size
+% get local strut size
+\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax%
+% add it to the user supplied values
+\advance\dimen0 by \skip0\relax%
+\advance\dimen2 by \skip2\relax%
+% update the local strut size
+\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\@IEEEeqnarrayusemasterstrutfalse% do not use master
+\else% outer, have to set master strut too
+% get master strut size
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%
+% add it to the user supplied values
+\advance\dimen0 by \skip0\relax%
+\advance\dimen2 by \skip2\relax%
+% update the local and master strut sizes
+\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}%
+\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\@IEEEeqnarrayusemasterstruttrue% use master strut
+\fi}
+
+
+% allow user a way to see the struts
+\newif\ifIEEEvisiblestruts
+\IEEEvisiblestrutsfalse
+
+% inserts an invisible strut using the master or local strut values
+% uses scratch registers \skip0, \skip2, \dimen0, \dimen2
+\def\@IEEEeqnarrayinsertstrut{\relax%
+\if@IEEEeqnarrayusemasterstrut
+% get master strut size
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%
+\else%
+% get local strut size
+\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax%
+\fi%
+% remove stretchability, probably not needed
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% dimen0 = height, dimen2 = depth
+% allow user to see struts if desired
+\ifIEEEvisiblestruts%
+\vrule width0.2pt height\dimen0 depth\dimen2\relax%
+\else%
+\vrule width0pt height\dimen0 depth\dimen2\relax\fi}
+
+
+% creates an invisible strut, useable even outside \IEEEeqnarray
+% if \IEEEvisiblestrutstrue, the strut will be visible and 0.2pt wide.
+% usage: \IEEEstrut[height][depth][font size commands]
+% default is \IEEEstrut[0.7\normalbaselineskip][0.3\normalbaselineskip][\relax]
+% blank arguments inherit the default values
+% uses \dimen0, \dimen2, \skip0, \skip2
+\def\IEEEstrut{\relax\@ifnextchar[{\@IEEEstrut}{\@IEEEstrut[0.7\normalbaselineskip]}}
+\def\@IEEEstrut[#1]{\relax\@ifnextchar[{\@@IEEEstrut[#1]}{\@@IEEEstrut[#1][0.3\normalbaselineskip]}}
+\def\@@IEEEstrut[#1][#2]{\relax\@ifnextchar[{\@@@IEEEstrut[#1][#2]}{\@@@IEEEstrut[#1][#2][\relax]}}
+\def\@@@IEEEstrut[#1][#2][#3]{\mbox{#3\relax%
+\def\@IEEEstrutARG{#1}%
+\ifx\@IEEEstrutARG\@empty%
+\skip0=0.7\normalbaselineskip\relax%
+\else%
+\skip0=#1\relax%
+\fi%
+\def\@IEEEstrutARG{#2}%
+\ifx\@IEEEstrutARG\@empty%
+\skip2=0.3\normalbaselineskip\relax%
+\else%
+\skip2=#2\relax%
+\fi%
+% remove stretchability, probably not needed
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+\ifIEEEvisiblestruts%
+\vrule width0.2pt height\dimen0 depth\dimen2\relax%
+\else%
+\vrule width0.0pt height\dimen0 depth\dimen2\relax\fi}}
+
+
+% enables strut mode by setting a default strut size and then zeroing the
+% \baselineskip, \lineskip, \lineskiplimit and \jot
+\def\IEEEeqnarraystrutmode{\IEEEeqnarraystrutsize{0.7\normalbaselineskip}{0.3\normalbaselineskip}[\relax]%
+\baselineskip=0pt\lineskip=0pt\lineskiplimit=0pt\jot=0pt}
+
+
+% equation and subequation forms to use to setup hyperref's \@currentHref
+\def\@IEEEtheHrefequation{equation.\theHequation}
+\def\@IEEEtheHrefsubequation{equation.\theHequation\alph{IEEEsubequation}}
+
+
+\def\IEEEeqnarray{\@IEEEeqnumpersisttrue\@IEEEsubeqnumpersistfalse\@IEEEeqnarray}
+\def\endIEEEeqnarray{\end@IEEEeqnarray}
+
+\@namedef{IEEEeqnarray*}{\@IEEEeqnumpersistfalse\@IEEEsubeqnumpersistfalse\@IEEEeqnarray}
+\@namedef{endIEEEeqnarray*}{\end@IEEEeqnarray}
+
+
+% \IEEEeqnarray is an enhanced \eqnarray.
+% The star form defaults to not putting equation numbers at the end of each row.
+% usage: \IEEEeqnarray[decl]{cols}
+\def\@IEEEeqnarray{\relax\@ifnextchar[{\@@IEEEeqnarray}{\@@IEEEeqnarray[\relax]}}
+% We have to be careful here to normalize catcodes just before acquiring the
+% cols as that specification may contain punctuation which could be subject
+% to document catcode changes.
+\def\@@IEEEeqnarray[#1]{\begingroup\IEEEnormalcatcodes\@@@IEEEeqnarray[#1]}
+\def\@@@IEEEeqnarray[#1]#2{\endgroup
+ % default to showing the equation number or not based on whether or not
+ % the star form was involked
+ \if@IEEEeqnumpersist\global\@eqnswtrue
+ \else% not the star form
+ \global\@eqnswfalse
+ \fi% if star form
+ % provide a basic hyperref \theHequation if this has not already been setup (hyperref not loaded, or no section counter)
+ \@ifundefined{theHequation}{\def\theHequation{\arabic{equation}}}{}\relax
+ % provide dummy hyperref commands in case hyperref is not loaded
+ \providecommand{\Hy@raisedlink}[1]{}\relax
+ \providecommand{\hyper@anchorstart}[1]{}\relax
+ \providecommand{\hyper@anchorend}{}\relax
+ \providecommand{\@currentHref}{}\relax
+ \@IEEEeqnumpreadvfalse% reset eqnpreadv flag
+ \@IEEEsubeqnumpreadvfalse% reset subeqnpreadv flag
+ \@IEEEeqnarrayISinnerfalse% not yet within the lines of the halign
+ \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default
+ \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise
+ \IEEEvisiblestrutsfalse% diagnostic mode defaults to off
+ % no extra space unless the user specifically requests it
+ \lineskip=0pt\relax
+ \lineskiplimit=0pt\relax
+ \baselineskip=\normalbaselineskip\relax%
+ \jot=\IEEEnormaljot\relax%
+ \mathsurround\z@\relax% no extra spacing around math
+ \@advanceIEEEeqncolcnttrue% advance the col counter for each col the user uses,
+ % used in \IEEEeqnarraymulticol and in the preamble build
+ %V1.8 Here we preadvance to the next equation number.
+ % If the user later wants a continued subequation, we can roll back.
+ \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation%
+ \stepcounter{equation}\@IEEEeqnumpreadvtrue% advance equation counter before first line
+ \setcounter{IEEEsubequation}{0}% no subequation yet
+ \let\@IEEEcurrentlabelsave\@currentlabel% save current label as we later change it globally
+ \let\@IEEEcurrentHrefsave\@currentHref% save current href label as we later change it globally
+ \def\@currentlabel{\p@equation\theequation}% redefine the ref label
+ \def\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+ \IEEEeqnarraydecl\relax% allow a way for the user to make global overrides
+ #1\relax% allow user to override defaults
+ \let\\\@IEEEeqnarraycr% replace newline with one that can put in eqn. numbers
+ \global\@IEEEeqncolcnt\z@% col. count = 0 for first line
+ \@IEEEbuildpreamble{#2}\relax% build the preamble and put it into \@IEEEtrantmptoksA
+ % put in the column for the equation number
+ \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first
+ \toks0={##}%
+ % advance the \@IEEEeqncolcnt for the isolation col, this helps with error checking
+ \@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}%
+ % add the isolation column
+ \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}%
+ % advance the \@IEEEeqncolcnt for the equation number col, this helps with error checking
+ \@IEEEappendtoksA{&\global\advance\@IEEEeqncolcnt by 1\relax}%
+ % add the equation number col to the preamble
+ \@IEEEappendtoksA{\tabskip\z@skip\hb@xt@\z@\bgroup\hss\the\toks0\egroup}%
+ % note \@IEEEeqnnumcols does not count the equation col or isolation col
+ % set the starting tabskip glue as determined by the preamble build
+ \tabskip=\@IEEEBPstartglue\relax
+ % begin the display alignment
+ \@IEEEeqnarrayISinnertrue% commands are now within the lines
+ $$\everycr{}\halign to\displaywidth\bgroup
+ % "exspand" the preamble
+ \span\the\@IEEEtrantmptoksA\cr}
+
+% enter isolation/strut column (or the next column if the user did not use
+% every column), record the strut status, complete the columns, do the strut if needed,
+% restore counters (to backout any equation setup for a next line that was never used)
+% to their correct values and exit
+\def\end@IEEEeqnarray{\@IEEEeqnarrayglobalizestrutstatus&\@@IEEEeqnarraycr\egroup
+\if@IEEEsubeqnumpreadv\global\advance\c@IEEEsubequation\m@ne\fi
+\if@IEEEeqnumpreadv\global\advance\c@equation\m@ne\global\c@IEEEsubequation=\@IEEEsubeqnnumrollback\fi
+\global\let\@currentlabel\@IEEEcurrentlabelsave% restore current label
+\global\let\@currentHref\@IEEEcurrentHrefsave% restore current href label
+$$\@ignoretrue}
+
+
+% IEEEeqnarray uses a modifed \\ instead of the plain \cr to
+% end rows. This allows for things like \\*[vskip amount]
+% These "cr" macros are modified versions of those for LaTeX2e's eqnarray
+% the {\ifnum0=`} braces must be kept away from the last column to avoid
+% altering spacing of its math, so we use & to advance to the next column
+% as there is an isolation/strut column after the user's columns
+\def\@IEEEeqnarraycr{\@IEEEeqnarrayglobalizestrutstatus&% save strut status and advance to next column
+ {\ifnum0=`}\fi
+ \@ifstar{%
+ \global\@eqpen\@M\@IEEEeqnarrayYCR
+ }{%
+ \global\@eqpen\interdisplaylinepenalty \@IEEEeqnarrayYCR
+ }%
+}
+
+\def\@IEEEeqnarrayYCR{\@testopt\@IEEEeqnarrayXCR\z@skip}
+
+\def\@IEEEeqnarrayXCR[#1]{%
+ \ifnum0=`{\fi}%
+ \@@IEEEeqnarraycr
+ \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}}%
+
+\def\@@IEEEeqnarraycr{\@IEEEtrantmptoksA={}% clear token register
+ \advance\@IEEEeqncolcnt by -1\relax% adjust col count because of the isolation column
+ \ifnum\@IEEEeqncolcnt>\@IEEEeqnnumcols\relax
+ \@IEEEclspkgerror{Too many columns within the IEEEeqnarray\MessageBreak
+ environment}%
+ {Use fewer \string &'s or put more columns in the IEEEeqnarray column\MessageBreak
+ specifications.}\relax%
+ \else
+ \loop% add cols if the user did not use them all
+ \ifnum\@IEEEeqncolcnt<\@IEEEeqnnumcols\relax
+ \@IEEEappendtoksA{&}%
+ \advance\@IEEEeqncolcnt by 1\relax% update the col count
+ \repeat
+ % this number of &'s will take us the the isolation column
+ \fi
+ % execute the &'s
+ \the\@IEEEtrantmptoksA%
+ % handle the strut/isolation column
+ \@IEEEeqnarrayinsertstrut% do the strut if needed
+ \@IEEEeqnarraystrutreset% reset the strut system for next line or IEEEeqnarray
+ &% and enter the equation number column
+ \if@eqnsw% only if we display something
+ \Hy@raisedlink{\hyper@anchorstart{\@currentHref}}% start a hyperref anchor
+ \global\@IEEEeqnumpreadvfalse\relax% displaying an equation number means
+ \global\@IEEEsubeqnumpreadvfalse\relax% the equation counters point to valid equations
+ % V1.8 Here we setup the counters, currentlabel and status for what would be the *next*
+ % equation line as would be the case under the current settings. However, there are two problems.
+ % One problem is that there might not ever be a next line. The second problem is that the user
+ % may later alter the meaning of a line with commands such as \IEEEyessubnumber. So, to handle
+ % these cases we have to record the current values of the (sub)equation counters and revert back
+ % to them if the next line is changed or never comes. The \if@IEEEeqnumpreadv, \if@IEEEsubeqnumpreadv
+ % and \@IEEEsubeqnnumrollback stuff tracks this.
+ % The logic to handle all this is surprisingly complex, but a nice feature of the approach here is
+ % that the equation counters and labels remain valid for what the line would be unless a
+ % \IEEEyessubnumber et al. later changes it. So, any hyperref links are always correct.
+ \ifnum\c@IEEEsubequation>0\relax% handle subequation
+ \theIEEEsubequationdis\relax
+ \if@IEEEsubeqnumpersist% setup for default type of next line
+ \stepcounter{IEEEsubequation}\global\@IEEEsubeqnumpreadvtrue\relax
+ \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label
+ \else
+ % if no subeqnum persist, go ahead and setup for a new equation number
+ \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation
+ \stepcounter{equation}\global\@IEEEeqnumpreadvtrue\relax
+ \setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+ \fi
+ \else% display a standard equation number
+ \theequationdis\relax
+ \setcounter{IEEEsubequation}{0}\relax% not really needed
+ \if@IEEEsubeqnumpersist% setup for default type of next line
+ % subequations that follow plain equations carry the same equation number e.g, 5, 5a rather than 5, 6a
+ \stepcounter{IEEEsubequation}\global\@IEEEsubeqnumpreadvtrue\relax
+ \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label
+ \else
+ % if no subeqnum persist, go ahead and setup for a new equation number
+ \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation
+ \stepcounter{equation}\global\@IEEEeqnumpreadvtrue\relax
+ \setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+ \fi
+ \fi%
+ \Hy@raisedlink{\hyper@anchorend}% end hyperref anchor
+ \fi% fi only if we display something
+ % reset the flags to indicate the default preferences of the display of equation numbers
+ \if@IEEEeqnumpersist\global\@eqnswtrue\else\global\@eqnswfalse\fi
+ \if@IEEEsubeqnumpersist\global\@eqnswtrue\fi% ditto for the subequation flag
+ % reset the number of columns the user actually used
+ \global\@IEEEeqncolcnt\z@\relax
+ % the real end of the line
+ \cr}
+
+
+
+
+
+% \IEEEeqnarraybox is like \IEEEeqnarray except the box form puts everything
+% inside a vtop, vbox, or vcenter box depending on the letter in the second
+% optional argument (t,b,c). Vbox is the default. Unlike \IEEEeqnarray,
+% equation numbers are not displayed and \IEEEeqnarraybox can be nested.
+% \IEEEeqnarrayboxm is for math mode (like \array) and does not put the vbox
+% within an hbox.
+% \IEEEeqnarrayboxt is for text mode (like \tabular) and puts the vbox within
+% a \hbox{$ $} construct.
+% \IEEEeqnarraybox will auto detect whether to use \IEEEeqnarrayboxm or
+% \IEEEeqnarrayboxt depending on the math mode.
+% The third optional argument specifies the width this box is to be set to -
+% natural width is the default.
+% The * forms do not add \jot line spacing
+% usage: \IEEEeqnarraybox[decl][pos][width]{cols}
+\def\IEEEeqnarrayboxm{\@IEEEeqnarrayboxnojotfalse\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox}
+\def\endIEEEeqnarrayboxm{\end@IEEEeqnarraybox}
+\@namedef{IEEEeqnarrayboxm*}{\@IEEEeqnarrayboxnojottrue\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox}
+\@namedef{endIEEEeqnarrayboxm*}{\end@IEEEeqnarraybox}
+
+\def\IEEEeqnarrayboxt{\@IEEEeqnarrayboxnojotfalse\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox}
+\def\endIEEEeqnarrayboxt{\end@IEEEeqnarraybox}
+\@namedef{IEEEeqnarrayboxt*}{\@IEEEeqnarrayboxnojottrue\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox}
+\@namedef{endIEEEeqnarrayboxt*}{\end@IEEEeqnarraybox}
+
+\def\IEEEeqnarraybox{\@IEEEeqnarrayboxnojotfalse\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi%
+\@IEEEeqnarraybox}
+\def\endIEEEeqnarraybox{\end@IEEEeqnarraybox}
+
+\@namedef{IEEEeqnarraybox*}{\@IEEEeqnarrayboxnojottrue\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi%
+\@IEEEeqnarraybox}
+\@namedef{endIEEEeqnarraybox*}{\end@IEEEeqnarraybox}
+
+% flag to indicate if the \IEEEeqnarraybox needs to put things into an hbox{$ $}
+% for \vcenter in non-math mode
+\newif\if@IEEEeqnarrayboxHBOXSW%
+\@IEEEeqnarrayboxHBOXSWfalse
+
+\def\@IEEEeqnarraybox{\relax\@ifnextchar[{\@@IEEEeqnarraybox}{\@@IEEEeqnarraybox[\relax]}}
+% We have to be careful here to normalize catcodes just before acquiring the
+% cols as that specification may contain punctuation which could be subject
+% to document catcode changes.
+\def\@@IEEEeqnarraybox[#1]{\relax\begingroup\IEEEnormalcatcodes\@ifnextchar[{\@@@IEEEeqnarraybox[#1]}{\@@@IEEEeqnarraybox[#1][b]}}
+\def\@@@IEEEeqnarraybox[#1][#2]{\relax\@ifnextchar[{\@@@@IEEEeqnarraybox[#1][#2]}{\@@@@IEEEeqnarraybox[#1][#2][\relax]}}
+
+% #1 = decl; #2 = t,b,c; #3 = width, #4 = col specs
+\def\@@@@IEEEeqnarraybox[#1][#2][#3]#4{\endgroup\@IEEEeqnarrayISinnerfalse % not yet within the lines of the halign
+ \@IEEEeqnarraymasterstrutsave% save current master strut values
+ \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default
+ \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise
+ \IEEEvisiblestrutsfalse% diagnostic mode defaults to off
+ % no extra space unless the user specifically requests it
+ \lineskip=0pt\relax%
+ \lineskiplimit=0pt\relax%
+ \baselineskip=\normalbaselineskip\relax%
+ \jot=\IEEEnormaljot\relax%
+ \mathsurround\z@\relax% no extra spacing around math
+ % the default end glues are zero for an \IEEEeqnarraybox
+ \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue
+ \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPzero}% default end glue
+ \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue
+ \@advanceIEEEeqncolcntfalse% do not advance the col counter for each col the user uses,
+ % used in \IEEEeqnarraymulticol and in the preamble build
+ \IEEEeqnarrayboxdecl\relax% allow a way for the user to make global overrides
+ #1\relax% allow user to override defaults
+ \let\\\@IEEEeqnarrayboxcr% replace newline with one that allows optional spacing
+ \@IEEEbuildpreamble{#4}\relax% build the preamble and put it into \@IEEEtrantmptoksA
+ % add an isolation column to the preamble to stop \\'s {} from getting into the last col
+ \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first
+ \toks0={##}%
+ % add the isolation column to the preamble
+ \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}%
+ % set the starting tabskip glue as determined by the preamble build
+ \tabskip=\@IEEEBPstartglue\relax
+ % begin the alignment
+ \everycr{}%
+ % use only the very first token to determine the positioning
+ \@IEEEextracttoken{#2}\relax
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: IEEEeqnarraybox position specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+ % \@IEEEextractedtoken has the first token, the rest are ignored
+ % if we need to put things into and hbox and go into math mode, do so now
+ \if@IEEEeqnarrayboxHBOXSW \leavevmode \hbox \bgroup $\fi%
+ % use the appropriate vbox type
+ \if\@IEEEextractedtoken t\relax\vtop\else\if\@IEEEextractedtoken c\relax%
+ \vcenter\else\vbox\fi\fi\bgroup%
+ \@IEEEeqnarrayISinnertrue% commands are now within the lines
+ \ifx#3\relax\halign\else\halign to #3\relax\fi%
+ \bgroup
+ % "exspand" the preamble
+ \span\the\@IEEEtrantmptoksA\cr}
+
+% carry strut status and enter the isolation/strut column,
+% exit from math mode if needed, and exit
+\def\end@IEEEeqnarraybox{\@IEEEeqnarrayglobalizestrutstatus% carry strut status
+&% enter isolation/strut column
+\@IEEEeqnarrayinsertstrut% do strut if needed
+\@IEEEeqnarraymasterstrutrestore% restore the previous master strut values
+% reset the strut system for next IEEEeqnarray
+% (sets local strut values back to previous master strut values)
+\@IEEEeqnarraystrutreset%
+% ensure last line, exit from halign, close vbox
+\crcr\egroup\egroup%
+% exit from math mode and close hbox if needed
+\if@IEEEeqnarrayboxHBOXSW $\egroup\fi}
+
+
+
+% IEEEeqnarraybox uses a modifed \\ instead of the plain \cr to
+% end rows. This allows for things like \\[vskip amount]
+% This "cr" macros are modified versions those for LaTeX2e's eqnarray
+% For IEEEeqnarraybox, \\* is the same as \\
+% the {\ifnum0=`} braces must be kept away from the last column to avoid
+% altering spacing of its math, so we use & to advance to the isolation/strut column
+% carry strut status into isolation/strut column
+\def\@IEEEeqnarrayboxcr{\@IEEEeqnarrayglobalizestrutstatus% carry strut status
+&% enter isolation/strut column
+\@IEEEeqnarrayinsertstrut% do strut if needed
+% reset the strut system for next line or IEEEeqnarray
+\@IEEEeqnarraystrutreset%
+{\ifnum0=`}\fi%
+\@ifstar{\@IEEEeqnarrayboxYCR}{\@IEEEeqnarrayboxYCR}}
+
+% test and setup the optional argument to \\[]
+\def\@IEEEeqnarrayboxYCR{\@testopt\@IEEEeqnarrayboxXCR\z@skip}
+
+% IEEEeqnarraybox does not automatically increase line spacing by \jot
+\def\@IEEEeqnarrayboxXCR[#1]{\ifnum0=`{\fi}%
+\cr\noalign{\if@IEEEeqnarrayboxnojot\else\vskip\jot\fi\vskip#1\relax}}
+
+
+
+% usage: \@IEEEbuildpreamble{column specifiers}
+% starts the halign preamble build
+% the assembled preamble is put in \@IEEEtrantmptoksA
+\def\@IEEEbuildpreamble#1{\@IEEEtrantmptoksA={}% clear token register
+\let\@IEEEBPcurtype=u%current column type is not yet known
+\let\@IEEEBPprevtype=s%the previous column type was the start
+\let\@IEEEBPnexttype=u%next column type is not yet known
+% ensure these are valid
+\def\@IEEEBPcurglue={0pt plus 0pt minus 0pt}%
+\def\@IEEEBPcurcolname{@IEEEdefault}% name of current column definition
+% currently acquired numerically referenced glue
+% use a name that is easier to remember
+\let\@IEEEBPcurnum=\@IEEEtrantmpcountA%
+\@IEEEBPcurnum=0%
+% tracks number of columns in the preamble
+\@IEEEeqnnumcols=0%
+% record the default end glues
+\edef\@IEEEBPstartglue{\@IEEEeqnarraycolSEPdefaultstart}%
+\edef\@IEEEBPendglue{\@IEEEeqnarraycolSEPdefaultend}%
+\edef\@IEEEedefMACRO{#1}\relax% fully expand the preamble to support macro containers
+% now parse the user's column specifications
+% \ignorespaces is used as a delimiter, need at least one trailing \relax because
+% \@@IEEEbuildpreamble looks into the future
+\expandafter\@@IEEEbuildpreamble\@IEEEedefMACRO\ignorespaces\relax\relax}
+
+
+% usage: \@@IEEEbuildpreamble{current column}{next column}
+% parses and builds the halign preamble
+\def\@@IEEEbuildpreamble#1#2{\let\@@nextIEEEbuildpreamble=\@@IEEEbuildpreamble%
+% use only the very first token to check the end
+\@IEEEextracttokengroups{#1}\relax
+\ifx\@IEEEextractedfirsttoken\ignorespaces\let\@@nextIEEEbuildpreamble=\@@IEEEfinishpreamble\else%
+% identify current and next token type
+\@IEEEgetcoltype{#1}{\@IEEEBPcurtype}{1}% current, error on invalid
+\@IEEEgetcoltype{#2}{\@IEEEBPnexttype}{0}% next, no error on invalid next
+% if curtype is a glue, get the glue def
+\if\@IEEEBPcurtype g\@IEEEgetcurglue{#1}{\@IEEEBPcurglue}\fi%
+% if curtype is a column, get the column def and set the current column name
+\if\@IEEEBPcurtype c\@IEEEgetcurcol{#1}\fi%
+% if curtype is a numeral, acquire the user defined glue
+\if\@IEEEBPcurtype n\@IEEEprocessNcol{#1}\fi%
+% process the acquired glue
+\if\@IEEEBPcurtype g\@IEEEprocessGcol\fi%
+% process the acquired col
+\if\@IEEEBPcurtype c\@IEEEprocessCcol\fi%
+% ready prevtype for next col spec.
+\let\@IEEEBPprevtype=\@IEEEBPcurtype%
+% be sure and put back the future token(s) as a group
+\fi\@@nextIEEEbuildpreamble{#2}}
+
+
+% usage: \@@IEEEfinishpreamble{discarded}
+% executed just after preamble build is completed
+% warn about zero cols, and if prevtype type = u, put in end tabskip glue
+% argument is not used
+\def\@@IEEEfinishpreamble#1{\ifnum\@IEEEeqnnumcols<1\relax
+\@IEEEclspkgerror{No column specifiers declared for IEEEeqnarray}%
+{At least one column type must be declared for each IEEEeqnarray.}%
+\fi%num cols less than 1
+%if last type undefined, set default end tabskip glue
+\if\@IEEEBPprevtype u\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue}\fi}
+
+
+% usage: \@IEEEgetcoltype{col specifier}{\output}{error more}
+% Identify and return the column specifier's type code in the given
+% \output macro:
+% n = number
+% g = glue (any other char in catagory 12)
+% c = letter
+% e = \ignorespaces (end of sequence)
+% u = undefined
+% error mode: 0 = no error message, 1 = error on invalid char
+\def\@IEEEgetcoltype#1#2#3{%
+% use only the very first token to determine the type
+\@IEEEextracttoken{#1}\relax
+% \@IEEEextractedtoken has the first token, the rest are discarded
+\let#2=u\relax% assume invalid until know otherwise
+\ifx\@IEEEextractedtoken\ignorespaces\let#2=e\else
+\ifcat\@IEEEextractedtoken\relax\else% screen out control sequences
+\if0\@IEEEextractedtoken\let#2=n\else
+\if1\@IEEEextractedtoken\let#2=n\else
+\if2\@IEEEextractedtoken\let#2=n\else
+\if3\@IEEEextractedtoken\let#2=n\else
+\if4\@IEEEextractedtoken\let#2=n\else
+\if5\@IEEEextractedtoken\let#2=n\else
+\if6\@IEEEextractedtoken\let#2=n\else
+\if7\@IEEEextractedtoken\let#2=n\else
+\if8\@IEEEextractedtoken\let#2=n\else
+\if9\@IEEEextractedtoken\let#2=n\else
+\ifcat,\@IEEEextractedtoken\let#2=g\relax
+\else\ifcat a\@IEEEextractedtoken\let#2=c\relax\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\if#2u\relax
+\if0\noexpand#3\relax\else\@IEEEclspkgerror{Invalid character in column specifications}%
+{Only letters, numerals and certain other symbols are allowed \MessageBreak
+as IEEEeqnarray column specifiers.}\fi\fi}
+
+
+% usage: \@IEEEgetcurcol{col specifier}
+% verify the letter referenced column exists
+% and return its name in \@IEEEBPcurcolname
+% if column specifier is invalid, use the default column @IEEEdefault
+\def\@IEEEgetcurcol#1{\expandafter\ifx\csname @IEEEeqnarraycolDEF#1\endcsname\@IEEEeqnarraycolisdefined%
+\def\@IEEEBPcurcolname{#1}\else% invalid column name
+\@IEEEclspkgerror{Invalid column type "#1" in column specifications.\MessageBreak
+Using a default centering column instead}%
+{You must define IEEEeqnarray column types before use.}%
+\def\@IEEEBPcurcolname{@IEEEdefault}\fi}
+
+
+% usage: \@IEEEgetcurglue{glue specifier}{\output}
+% identify the predefined (punctuation) glue value
+% and return it in the given output macro
+\def\@IEEEgetcurglue#1#2{%
+% ! = \! (neg small) -0.16667em (-3/18 em)
+% , = \, (small) 0.16667em ( 3/18 em)
+% : = \: (med) 0.22222em ( 4/18 em)
+% ; = \; (large) 0.27778em ( 5/18 em)
+% ' = \quad 1em
+% " = \qquad 2em
+% . = 0.5\arraycolsep
+% / = \arraycolsep
+% ? = 2\arraycolsep
+% * = 1fil
+% + = \@IEEEeqnarraycolSEPcenter
+% - = \@IEEEeqnarraycolSEPzero
+% Note that all em values are referenced to the math font (textfont2) fontdimen6
+% value for 1em.
+%
+% use only the very first token to determine the type
+\@IEEEextracttoken{#1}\relax
+\ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: IEEEeqnarray predefined inter-column glue type specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+\fi
+% get the math font 1em value
+% LaTeX2e's NFSS2 does not preload the fonts, but \IEEEeqnarray needs
+% to gain access to the math (\textfont2) font's spacing parameters.
+% So we create a bogus box here that uses the math font to ensure
+% that \textfont2 is loaded and ready. If this is not done,
+% the \textfont2 stuff here may not work.
+% Thanks to Bernd Raichle for his 1997 post on this topic.
+{\setbox0=\hbox{$\displaystyle\relax$}}%
+% fontdimen6 has the width of 1em (a quad).
+\@IEEEtrantmpdimenA=\fontdimen6\textfont2\relax%
+% identify the glue value based on the first token
+% we discard anything after the first
+\if!\@IEEEextractedtoken\@IEEEtrantmpdimenA=-0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if,\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if:\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.22222\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if;\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.27778\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if'\@IEEEextractedtoken\@IEEEtrantmpdimenA=1\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if"\@IEEEextractedtoken\@IEEEtrantmpdimenA=2\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if.\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.5\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if/\@IEEEextractedtoken\edef#2{\the\arraycolsep}\else
+\if?\@IEEEextractedtoken\@IEEEtrantmpdimenA=2\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if *\@IEEEextractedtoken\edef#2{0pt plus 1fil minus 0pt}\else
+\if+\@IEEEextractedtoken\edef#2{\@IEEEeqnarraycolSEPcenter}\else
+\if-\@IEEEextractedtoken\edef#2{\@IEEEeqnarraycolSEPzero}\else
+\edef#2{\@IEEEeqnarraycolSEPzero}%
+\@IEEEclspkgerror{Invalid predefined inter-column glue type "#1" in\MessageBreak
+column specifications. Using a default value of\MessageBreak
+0pt instead}%
+{Only !,:;'"./?*+ and - are valid predefined glue types in the\MessageBreak
+IEEEeqnarray column specifications.}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+
+% usage: \@IEEEprocessNcol{digit}
+% process a numerical digit from the column specification
+% and look up the corresponding user defined glue value
+% can transform current type from n to g or a as the user defined glue is acquired
+\def\@IEEEprocessNcol#1{\if\@IEEEBPprevtype g%
+\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak
+specifications. Ignoring consecutive glue specifiers\MessageBreak
+after the first}%
+{You cannot have two or more glue types next to each other\MessageBreak
+in the IEEEeqnarray column specifications.}%
+\let\@IEEEBPcurtype=a% abort this glue, future digits will be discarded
+\@IEEEBPcurnum=0\relax%
+\else% if we previously aborted a glue
+\if\@IEEEBPprevtype a\@IEEEBPcurnum=0\let\@IEEEBPcurtype=a%maintain digit abortion
+\else%acquire this number
+% save the previous type before the numerical digits started
+\if\@IEEEBPprevtype n\else\let\@IEEEBPprevsavedtype=\@IEEEBPprevtype\fi%
+\multiply\@IEEEBPcurnum by 10\relax%
+\advance\@IEEEBPcurnum by #1\relax% add in number, \relax is needed to stop TeX's number scan
+\if\@IEEEBPnexttype n\else%close acquisition
+\expandafter\ifx\csname @IEEEeqnarraycolSEPDEF\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname\@IEEEeqnarraycolisdefined%
+\edef\@IEEEBPcurglue{\csname @IEEEeqnarraycolSEP\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname}%
+\else%user glue not defined
+\@IEEEclspkgerror{Invalid user defined inter-column glue type "\number\@IEEEBPcurnum" in\MessageBreak
+column specifications. Using a default value of\MessageBreak
+0pt instead}%
+{You must define all IEEEeqnarray numerical inter-column glue types via\MessageBreak
+\string\IEEEeqnarraydefcolsep \space before they are used in column specifications.}%
+\edef\@IEEEBPcurglue{\@IEEEeqnarraycolSEPzero}%
+\fi% glue defined or not
+\let\@IEEEBPcurtype=g% change the type to reflect the acquired glue
+\let\@IEEEBPprevtype=\@IEEEBPprevsavedtype% restore the prev type before this number glue
+\@IEEEBPcurnum=0\relax%ready for next acquisition
+\fi%close acquisition, get glue
+\fi%discard or acquire number
+\fi%prevtype glue or not
+}
+
+
+% process an acquired glue
+% add any acquired column/glue pair to the preamble
+\def\@IEEEprocessGcol{\if\@IEEEBPprevtype a\let\@IEEEBPcurtype=a%maintain previous glue abortions
+\else
+% if this is the start glue, save it, but do nothing else
+% as this is not used in the preamble, but before
+\if\@IEEEBPprevtype s\edef\@IEEEBPstartglue{\@IEEEBPcurglue}%
+\else%not the start glue
+\if\@IEEEBPprevtype g%ignore if back to back glues
+\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak
+specifications. Ignoring consecutive glue specifiers\MessageBreak
+after the first}%
+{You cannot have two or more glue types next to each other\MessageBreak
+in the IEEEeqnarray column specifications.}%
+\let\@IEEEBPcurtype=a% abort this glue
+\else% not a back to back glue
+\if\@IEEEBPprevtype c\relax% if the previoustype was a col, add column/glue pair to preamble
+\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi
+\toks0={##}%
+% make preamble advance col counter if this environment needs this
+\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi
+% insert the column defintion into the preamble, being careful not to expand
+% the column definition
+\@IEEEappendtoksA{\tabskip=\@IEEEBPcurglue}%
+\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}%
+\@IEEEappendtoksA{\@IEEEBPcurcolname}%
+\@IEEEappendNOEXPANDtoksA{\endcsname}%
+\@IEEEappendtoksA{\the\toks0}%
+\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax%
+\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}%
+\@IEEEappendtoksA{\@IEEEBPcurcolname}%
+\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax%
+\relax\relax\relax\relax\relax\endgroup}%
+\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble
+\else% error: non-start glue with no pending column
+\@IEEEclspkgerror{Inter-column glue specifier without a prior column\MessageBreak
+type in the column specifications. Ignoring this glue\MessageBreak
+specifier}%
+{Except for the first and last positions, glue can be placed only\MessageBreak
+between column types.}%
+\let\@IEEEBPcurtype=a% abort this glue
+\fi% previous was a column
+\fi% back-to-back glues
+\fi% is start column glue
+\fi% prev type not a
+}
+
+
+% process an acquired letter referenced column and, if necessary, add it to the preamble
+\def\@IEEEprocessCcol{\if\@IEEEBPnexttype g\else
+\if\@IEEEBPnexttype n\else
+% we have a column followed by something other than a glue (or numeral glue)
+% so we must add this column to the preamble now
+\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi%col separator for those after the first
+\if\@IEEEBPnexttype e\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue\relax}\else%put in end glue
+\@IEEEappendtoksA{\tabskip=\@IEEEeqnarraycolSEPdefaultmid\relax}\fi% or default mid glue
+\toks0={##}%
+% make preamble advance col counter if this environment needs this
+\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi
+% insert the column definition into the preamble, being careful not to expand
+% the column definition
+\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}%
+\@IEEEappendtoksA{\@IEEEBPcurcolname}%
+\@IEEEappendNOEXPANDtoksA{\endcsname}%
+\@IEEEappendtoksA{\the\toks0}%
+\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax%
+\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}%
+\@IEEEappendtoksA{\@IEEEBPcurcolname}%
+\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax%
+\relax\relax\relax\relax\relax\endgroup}%
+\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble
+\fi%next type not numeral
+\fi%next type not glue
+}
+
+
+%%
+%% END OF IEEEeqnarray DEFINITIONS
+%%
+
+
+
+
+
+% set up the running headers and footers
+%
+% header and footer font and size specifications
+\def\@IEEEheaderstyle{\normalfont\scriptsize}
+\def\@IEEEfooterstyle{\normalfont\scriptsize}
+%
+% compsoc uses sans-serif headers and footers
+\ifCLASSOPTIONcompsoc
+ \def\@IEEEheaderstyle{\normalfont\sffamily\scriptsize}
+ \def\@IEEEfooterstyle{\normalfont\sffamily\scriptsize}
+\fi
+
+
+% standard page style, ps@headings
+\def\ps@headings{% default to standard twoside headers, no footers
+% will change later if the mode requires otherwise
+\def\@oddhead{\hbox{}\@IEEEheaderstyle\rightmark\hfil\thepage}\relax
+\def\@evenhead{\@IEEEheaderstyle\thepage\hfil\leftmark\hbox{}}\relax
+\let\@oddfoot\@empty
+\let\@evenfoot\@empty
+\ifCLASSOPTIONtechnote
+ % technote twoside
+ \def\@oddhead{\hbox{}\@IEEEheaderstyle\leftmark\hfil\thepage}\relax
+ \def\@evenhead{\@IEEEheaderstyle\thepage\hfil\leftmark\hbox{}}\relax
+\fi
+\ifCLASSOPTIONdraftcls
+ % draft footers
+ \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax
+ \def\@evenfoot{\@IEEEfooterstyle DRAFT\hfil\@date}\relax
+\fi
+% oneside
+\if@twoside\else
+ % standard one side headers
+ \def\@oddhead{\hbox{}\@IEEEheaderstyle\leftmark\hfil\thepage}\relax
+ \let\@evenhead\@empty
+ \ifCLASSOPTIONdraftcls
+ % oneside draft footers
+ \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax
+ \let\@evenfoot\@empty
+ \fi
+\fi
+% turn off headers for conferences
+\ifCLASSOPTIONconference
+ \let\@oddhead\@empty
+ \let\@evenhead\@empty
+\fi
+% turn off footers for draftclsnofoot
+\ifCLASSOPTIONdraftclsnofoot
+ \let\@oddfoot\@empty
+ \let\@evenfoot\@empty
+\fi}
+
+
+% title page style, ps@IEEEtitlepagestyle
+\def\ps@IEEEtitlepagestyle{% default title page headers, no footers
+\def\@oddhead{\hbox{}\@IEEEheaderstyle\leftmark\hfil\thepage}\relax
+\def\@evenhead{\@IEEEheaderstyle\thepage\hfil\leftmark\hbox{}}\relax
+\let\@oddfoot\@empty
+\let\@evenfoot\@empty
+% will change later if the mode requires otherwise
+\ifCLASSOPTIONdraftcls
+ % draft footers
+ \ifCLASSOPTIONdraftclsnofoot\else
+ % but only if not draftclsnofoot
+ \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax
+ \def\@evenfoot{\@IEEEfooterstyle DRAFT\hfil\@date}\relax
+ \fi
+\else
+ % all nondraft mode footers
+ \if@IEEEusingpubid
+ % for title pages that are using a pubid
+ % do not repeat pubid on the title page if using a peer review cover page
+ \ifCLASSOPTIONpeerreview\else
+ % for noncompsoc papers, the pubid uses footnotesize and
+ % is at the same vertical position as where the last baseline would normally be
+ \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax
+ \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax
+ \ifCLASSOPTIONcompsoc
+ % for compsoc papers, the pubid is at the same vertical position as the normal footer
+ \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax
+ \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax
+ \fi
+ \fi
+ \fi
+\fi
+% turn off headers for conferences
+\ifCLASSOPTIONconference
+ \let\@oddhead\@empty
+ \let\@evenhead\@empty
+\fi}
+
+
+% peer review cover page style, ps@IEEEpeerreviewcoverpagestyle
+\def\ps@IEEEpeerreviewcoverpagestyle{% default peer review cover no headers, no footers
+\let\@oddhead\@empty
+\let\@evenhead\@empty
+\let\@oddfoot\@empty
+\let\@evenfoot\@empty
+% will change later if the mode requires otherwise
+\ifCLASSOPTIONdraftcls
+ % draft footers
+ \ifCLASSOPTIONdraftclsnofoot\else
+ % but only if not draftclsnofoot
+ \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax
+ \def\@evenfoot{\@IEEEfooterstyle DRAFT\hfil\@date}\relax
+ \fi
+\else
+ % all nondraft mode footers
+ \if@IEEEusingpubid
+ % for peer review cover pages that are using a pubid
+ % for noncompsoc papers, the pubid uses footnotesize and
+ % is at the same vertical position as where the last baseline would normally be
+ \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax
+ \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax
+ \ifCLASSOPTIONcompsoc
+ % for compsoc papers, the pubid is at the same vertical position as the normal footer
+ \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax
+ \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax
+ \fi
+ \fi
+\fi}
+
+
+
+%% Defines the command for putting the header.
+%% Note that all the text is forced into uppercase, if you have some text
+%% that needs to be in lower case, for instance et. al., then either manually
+%% set \leftmark and \rightmark or use \MakeLowercase{et. al.} within the
+%% arguments to \markboth.
+%% V1.7b add \protect to work with Babel
+\def\markboth#1#2{\def\leftmark{\MakeUppercase{\protect#1}}%
+\def\rightmark{\MakeUppercase{\protect#2}}}
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+
+
+
+
+%% CITATION AND BIBLIOGRAPHY COMMANDS
+%%
+%% V1.6 no longer supports the older, nonstandard \shortcite and \citename setup stuff
+%
+%
+% Modify Latex2e \@citex to separate citations with "], ["
+\def\@citex[#1]#2{%
+ \let\@citea\@empty
+ \@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{], [}%
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}%
+ \G@refundefinedtrue
+ \@latex@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\hbox{\csname b@\@citeb\endcsname}}}}{#1}}
+
+% V1.6 we create hooks for the optional use of Donald Arseneau's
+% cite.sty package. cite.sty is "smart" and will notice that the
+% following format controls are already defined and will not
+% redefine them. The result will be the proper sorting of the
+% citation numbers and auto detection of 3 or more entry "ranges" -
+% all in IEEE style: [1], [2], [5]--[7], [12]
+% This also allows for an optional note, i.e., \cite[mynote]{..}.
+% If the \cite with note has more than one reference, the note will
+% be applied to the last of the listed references. It is generally
+% desired that if a note is given, only one reference is listed in
+% that \cite.
+% Thanks to Mr. Arseneau for providing the required format arguments
+% to produce the IEEE style.
+\def\citepunct{], [}
+\def\citedash{]--[}
+
+% V1.7 default to using same font for urls made by url.sty
+\AtBeginDocument{\csname url@samestyle\endcsname}
+
+% V1.6 class files should always provide these
+\def\newblock{\hskip .11em\@plus.33em\@minus.07em}
+\let\@openbib@code\@empty
+% V1.8b article.cls is now providing these too
+% we do not use \@mkboth, nor alter the page style
+\newenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \twocolumn[\section*{\indexname}]%
+ \parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \columnseprule \z@
+ \columnsep 35\p@
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+\newcommand\@idxitem{\par\hangindent 40\p@}
+\newcommand\subitem{\@idxitem \hspace*{20\p@}}
+\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
+\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+
+
+
+% Provide support for the control entries of IEEEtran.bst V1.00 and later.
+% V1.7 optional argument allows for a different aux file to be specified in
+% order to handle multiple bibliographies. For example, with multibib.sty:
+% \newcites{sec}{Secondary Literature}
+% \bstctlcite[@auxoutsec]{BSTcontrolhak}
+\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+\def\@bstctlcite[#1]#2{\@bsphack
+ \@for\@citeb:=#2\do{%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+ \@esphack}
+
+% \IEEEnoauxwrite{} allows for citations that do not add to or affect
+% the order of the existing citation list. Can be useful for \cite
+% within \thanks{}.
+\DeclareRobustCommand{\IEEEnoauxwrite}[1]{\relax
+\if@filesw
+\@fileswfalse
+#1\relax\relax\relax\relax\relax
+\@fileswtrue
+\else
+#1\relax\relax\relax\relax\relax
+\fi}
+
+% V1.6 provide a way for a user to execute a command just before
+% a given reference number - used to insert a \newpage to balance
+% the columns on the last page
+\edef\@IEEEtriggerrefnum{0} % the default of zero means that
+ % the command is not executed
+\def\@IEEEtriggercmd{\newpage}
+
+% allow the user to alter the triggered command
+\long\def\IEEEtriggercmd#1{\long\def\@IEEEtriggercmd{#1}}
+
+% allow user a way to specify the reference number just before the
+% command is executed
+\def\IEEEtriggeratref#1{\@IEEEtrantmpcountA=#1%
+\edef\@IEEEtriggerrefnum{\the\@IEEEtrantmpcountA}}%
+
+% trigger command at the given reference
+\def\@IEEEbibitemprefix{\@IEEEtrantmpcountA=\@IEEEtriggerrefnum\relax%
+\advance\@IEEEtrantmpcountA by -1\relax%
+\ifnum\c@enumiv=\@IEEEtrantmpcountA\relax\@IEEEtriggercmd\relax\fi}
+
+
+\def\@biblabel#1{[#1]}
+
+% compsoc journals and conferences left align the reference numbers
+\@IEEEcompsoconly{\def\@biblabel#1{[#1]\hfill}}
+
+% controls bib item spacing
+\def\IEEEbibitemsep{0pt plus .5pt}
+
+\@IEEEcompsocconfonly{\def\IEEEbibitemsep{0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}}
+
+
+\def\thebibliography#1{\section*{\refname}%
+ \addcontentsline{toc}{section}{\refname}%
+ % V1.6 add some rubber space here and provide a command trigger
+ \footnotesize\vskip 0.3\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep\relax
+ \itemsep \IEEEbibitemsep\relax
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \let\@IEEElatexbibitem\bibitem%
+ \def\bibitem{\@IEEEbibitemprefix\@IEEElatexbibitem}%
+\def\newblock{\hskip .11em plus .33em minus .07em}%
+% originally:
+% \sloppy\clubpenalty4000\widowpenalty4000%
+% by adding the \interlinepenalty here, we make it more
+% difficult, but not impossible, for LaTeX to break within a reference.
+% The IEEE almost never breaks a reference (but they do it more often with
+% technotes). You may get an underfull vbox warning around the bibliography,
+% but the final result will be much more like what the IEEE will publish.
+% MDS 11/2000
+\ifCLASSOPTIONtechnote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100%
+\else\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty500\fi%
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+
+
+
+
+% TITLE PAGE COMMANDS
+%
+%
+% \IEEEmembership is used to produce the sublargesize italic font used to indicate author
+% IEEE membership. compsoc uses a large size sans slant font
+\def\IEEEmembership#1{{\@IEEEnotcompsoconly{\sublargesize}\normalfont\@IEEEcompsoconly{\sffamily}\textit{#1}}}
+
+
+% \IEEEauthorrefmark{} produces a footnote type symbol to indicate author affiliation.
+% When given an argument of 1 to 9, \IEEEauthorrefmark{} follows the standard LaTeX footnote
+% symbol sequence convention. However, for arguments 10 and above, \IEEEauthorrefmark{}
+% reverts to using lower case roman numerals, so it cannot overflow. Do note that you
+% cannot use \footnotemark[] in place of \IEEEauthorrefmark{} within \author as the footnote
+% symbols will have been turned off to prevent \thanks from creating footnote marks.
+% \IEEEauthorrefmark{} produces a symbol that appears to LaTeX as having zero vertical
+% height - this allows for a more compact line packing, but the user must ensure that
+% the interline spacing is large enough to prevent \IEEEauthorrefmark{} from colliding
+% with the text above.
+% V1.7 make this a robust command
+% V1.8 transmag uses an arabic author affiliation symbol
+\ifCLASSOPTIONtransmag
+\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize #1}}}
+\else
+\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or%
+ \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger%
+ \or \ddagger\ddagger \else\textsuperscript{\expandafter\romannumeral#1}\fi}}}}
+\fi
+
+
+% FONT CONTROLS AND SPACINGS FOR CONFERENCE MODE AUTHOR NAME AND AFFILIATION BLOCKS
+%
+% The default font styles for the author name and affiliation blocks (confmode)
+\def\@IEEEauthorblockNstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize}
+\def\@IEEEauthorblockAstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\@IEEEcompsocconfonly{\itshape}\normalsize}
+% The default if the user does not use an author block
+\def\@IEEEauthordefaulttextstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize}
+
+% adjustment spacing from title (or special paper notice) to author name blocks (confmode)
+% can be negative
+\def\@IEEEauthorblockconfadjspace{-0.25em}
+% compsoc conferences need more space here
+\@IEEEcompsocconfonly{\def\@IEEEauthorblockconfadjspace{0.75\@IEEEnormalsizeunitybaselineskip}}
+
+% spacing between name and affiliation blocks (confmode)
+% This can be negative.
+% The IEEE doesn't want any added spacing here, but I will leave these
+% controls in place in case they ever change their mind.
+% Personally, I like 0.75ex.
+%\def\@IEEEauthorblockNtopspace{0.75ex}
+%\def\@IEEEauthorblockAtopspace{0.75ex}
+\def\@IEEEauthorblockNtopspace{0.0ex}
+\def\@IEEEauthorblockAtopspace{0.0ex}
+\ifCLASSOPTIONtransmag
+% transmag uses one line of space above first affiliation block
+\def\@IEEEauthorblockAtopspace{1\@IEEEnormalsizeunitybaselineskip}
+\fi
+
+% baseline spacing within name and affiliation blocks (confmode)
+% must be positive, spacings below certain values will make
+% the position of line of text sensitive to the contents of the
+% line above it i.e., whether or not the prior line has descenders,
+% subscripts, etc. For this reason it is a good idea to keep
+% these above 2.6ex
+\def\@IEEEauthorblockNinterlinespace{2.6ex}
+\def\@IEEEauthorblockAinterlinespace{2.75ex}
+
+% This tracks the required strut size.
+% See the \@IEEEauthorhalign command for the actual default value used.
+\def\@IEEEauthorblockXinterlinespace{2.7ex}
+
+% variables to retain font size and style across groups
+% values given here have no effect as they will be overwritten later
+\gdef\@IEEESAVESTATEfontsize{10}
+\gdef\@IEEESAVESTATEfontbaselineskip{12}
+\gdef\@IEEESAVESTATEfontencoding{OT1}
+\gdef\@IEEESAVESTATEfontfamily{ptm}
+\gdef\@IEEESAVESTATEfontseries{m}
+\gdef\@IEEESAVESTATEfontshape{n}
+
+% saves the current font attributes
+\def\@IEEEcurfontSAVE{\global\let\@IEEESAVESTATEfontsize\f@size%
+\global\let\@IEEESAVESTATEfontbaselineskip\f@baselineskip%
+\global\let\@IEEESAVESTATEfontencoding\f@encoding%
+\global\let\@IEEESAVESTATEfontfamily\f@family%
+\global\let\@IEEESAVESTATEfontseries\f@series%
+\global\let\@IEEESAVESTATEfontshape\f@shape}
+
+% restores the saved font attributes
+\def\@IEEEcurfontRESTORE{\fontsize{\@IEEESAVESTATEfontsize}{\@IEEESAVESTATEfontbaselineskip}%
+\fontencoding{\@IEEESAVESTATEfontencoding}%
+\fontfamily{\@IEEESAVESTATEfontfamily}%
+\fontseries{\@IEEESAVESTATEfontseries}%
+\fontshape{\@IEEESAVESTATEfontshape}%
+\selectfont}
+
+
+% variable to indicate if the current block is the first block in the column
+\newif\if@IEEEprevauthorblockincol \@IEEEprevauthorblockincolfalse
+
+
+% the command places a strut with height and depth = \@IEEEauthorblockXinterlinespace
+% we use this technique to have complete manual control over the spacing of the lines
+% within the halign environment.
+% We set the below baseline portion at 30%, the above
+% baseline portion at 70% of the total length.
+% Responds to changes in the document's \baselinestretch
+\def\@IEEEauthorstrutrule{\@IEEEtrantmpdimenA\@IEEEauthorblockXinterlinespace%
+\@IEEEtrantmpdimenA=\baselinestretch\@IEEEtrantmpdimenA%
+\rule[-0.3\@IEEEtrantmpdimenA]{0pt}{\@IEEEtrantmpdimenA}}
+
+
+% blocks to hold the authors' names and affilations.
+% Makes formatting easy for conferences
+%
+% use real definitions in conference mode
+% name block
+\def\IEEEauthorblockN#1{\relax\@IEEEauthorblockNstyle% set the default text style
+\gdef\@IEEEauthorblockXinterlinespace{0pt}% disable strut for spacer row
+% the \expandafter hides the \cr in conditional tex, see the array.sty docs
+% for details, probably not needed here as the \cr is in a macro
+% do a spacer row if needed
+\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockNtopspaceline\fi
+\global\@IEEEprevauthorblockincoltrue% we now have a block in this column
+%restore the correct strut value
+\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockNinterlinespace}%
+% input the author names
+#1%
+% end the row if the user did not already
+\crcr}
+% spacer row for names
+\def\@IEEEauthorblockNtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockNtopspace}}
+%
+% affiliation block
+\def\IEEEauthorblockA#1{\relax\@IEEEauthorblockAstyle% set the default text style
+\gdef\@IEEEauthorblockXinterlinespace{0pt}%disable strut for spacer row
+% the \expandafter hides the \cr in conditional tex, see the array.sty docs
+% for details, probably not needed here as the \cr is in a macro
+% do a spacer row if needed
+\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockAtopspaceline\fi
+\global\@IEEEprevauthorblockincoltrue% we now have a block in this column
+%restore the correct strut value
+\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockAinterlinespace}%
+% input the author affiliations
+#1%
+% end the row if the user did not already
+\crcr
+% V1.8 transmag does not use any additional affiliation spacing after the first author
+\ifCLASSOPTIONtransmag\gdef\@IEEEauthorblockAtopspace{0pt}\fi}
+
+% spacer row for affiliations
+\def\@IEEEauthorblockAtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockAtopspace}}
+
+
+% allow papers to compile even if author blocks are used in modes other
+% than conference or peerreviewca. For such cases, we provide dummy blocks.
+\ifCLASSOPTIONconference
+\else
+ \ifCLASSOPTIONpeerreviewca\else
+ % not conference, peerreviewca or transmag mode
+ \ifCLASSOPTIONtransmag\else
+ \def\IEEEauthorblockN#1{#1}%
+ \def\IEEEauthorblockA#1{#1}%
+ \fi
+ \fi
+\fi
+
+
+
+% we provide our own halign so as not to have to depend on tabular
+\def\@IEEEauthorhalign{\@IEEEauthordefaulttextstyle% default text style
+ \lineskip=0pt\relax% disable line spacing
+ \lineskiplimit=0pt\relax%
+ \baselineskip=0pt\relax%
+ \@IEEEcurfontSAVE% save the current font
+ \mathsurround\z@\relax% no extra spacing around math
+ \let\\\@IEEEauthorhaligncr% replace newline with halign friendly one
+ \tabskip=0pt\relax% no column spacing
+ \everycr{}% ensure no problems here
+ \@IEEEprevauthorblockincolfalse% no author blocks yet
+ \def\@IEEEauthorblockXinterlinespace{2.7ex}% default interline space
+ \vtop\bgroup%vtop box
+ \halign\bgroup&\relax\hfil\@IEEEcurfontRESTORE\relax ##\relax
+ \hfil\@IEEEcurfontSAVE\@IEEEauthorstrutrule\cr}
+
+% ensure last line, exit from halign, close vbox
+\def\end@IEEEauthorhalign{\crcr\egroup\egroup}
+
+% handle bogus star form
+\def\@IEEEauthorhaligncr{{\ifnum0=`}\fi\@ifstar{\@@IEEEauthorhaligncr}{\@@IEEEauthorhaligncr}}
+
+% test and setup the optional argument to \\[]
+\def\@@IEEEauthorhaligncr{\@testopt\@@@IEEEauthorhaligncr\z@skip}
+
+% end the line and do the optional spacer
+\def\@@@IEEEauthorhaligncr[#1]{\ifnum0=`{\fi}\cr\noalign{\vskip#1\relax}}
+
+
+
+% flag to prevent multiple \and warning messages
+\newif\if@IEEEWARNand
+\@IEEEWARNandtrue
+
+% if in conference or peerreviewca modes, we support the use of \and as \author is a
+% tabular environment, otherwise we warn the user that \and is invalid
+% outside of conference or peerreviewca modes.
+\def\and{\relax} % provide a bogus \and that we will then override
+
+\renewcommand{\and}[1][\relax]{\if@IEEEWARNand\typeout{** WARNING: \noexpand\and is valid only
+ when in conference or peerreviewca}\typeout{modes (line \the\inputlineno).}\fi\global\@IEEEWARNandfalse}
+
+\ifCLASSOPTIONconference%
+\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}%
+\fi
+\ifCLASSOPTIONpeerreviewca
+\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}%
+\fi
+% V1.8 transmag uses conference author format
+\ifCLASSOPTIONtransmag
+\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}%
+\fi
+
+% page clearing command
+% based on LaTeX2e's \cleardoublepage, but allows different page styles
+% for the inserted blank pages
+\def\@IEEEcleardoublepage#1{\clearpage\if@twoside\ifodd\c@page\else
+\hbox{}\thispagestyle{#1}\newpage\if@twocolumn\hbox{}\thispagestyle{#1}\newpage\fi\fi\fi}
+
+% V1.8b hooks to allow adjustment of space above title
+\def\IEEEtitletopspace{0.5\baselineskip}
+% an added extra amount to allow for adjustment/offset
+\def\IEEEtitletopspaceextra{0pt}
+
+% user command to invoke the title page
+\def\maketitle{\par%
+ \begingroup%
+ \normalfont%
+ \def\thefootnote{}% the \thanks{} mark type is empty
+ \def\footnotemark{}% and kill space from \thanks within author
+ \let\@makefnmark\relax% V1.7, must *really* kill footnotemark to remove all \textsuperscript spacing as well.
+ \footnotesize% equal spacing between thanks lines
+ \footnotesep 0.7\baselineskip%see global setting of \footnotesep for more info
+ % V1.7 disable \thanks note indention for compsoc
+ \@IEEEcompsoconly{\long\def\@makefntext##1{\parindent 1em\noindent\hbox{\@makefnmark}##1}}%
+ \normalsize%
+ \ifCLASSOPTIONpeerreview
+ \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext%
+ \thispagestyle{IEEEpeerreviewcoverpagestyle}\@thanks%
+ \else
+ \if@twocolumn%
+ \ifCLASSOPTIONtechnote%
+ \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext%
+ \else
+ \twocolumn[{\IEEEquantizevspace{\@maketitle}[\IEEEquantizedisabletitlecmds]{0pt}[-\topskip]{\baselineskip}{\@IEEENORMtitlevspace}{\@IEEEMINtitlevspace}\@IEEEaftertitletext}]%
+ \fi
+ \else
+ \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext%
+ \fi
+ \thispagestyle{IEEEtitlepagestyle}\@thanks%
+ \fi
+ % pullup page for pubid if used.
+ \if@IEEEusingpubid
+ \enlargethispage{-\@IEEEpubidpullup}%
+ \fi
+ \endgroup
+ \setcounter{footnote}{0}\let\maketitle\relax\let\@maketitle\relax
+ \gdef\@thanks{}%
+ % v1.6b do not clear these as we will need the title again for peer review papers
+ % \gdef\@author{}\gdef\@title{}%
+ \let\thanks\relax}
+
+
+% V1.8 parbox to format \@IEEEtitleabstractindextext
+\long\def\@IEEEtitleabstractindextextbox#1{\parbox{1\textwidth}{#1}}
+% V1.8 compsoc is partial width
+\ifCLASSOPTIONcompsoc
+% comparison with proofs suggests it's in the range of 92.1-92.3%
+\long\def\@IEEEtitleabstractindextextbox#1{\parbox{0.922\textwidth}{\@IEEEcompsocnotconfonly{\rightskip\@flushglue\leftskip\z@skip}#1}}
+\fi
+
+% formats the Title, authors names, affiliations and special paper notice
+% THIS IS A CONTROLLED SPACING COMMAND! Do not allow blank lines or unintentional
+% spaces to enter the definition - use % at the end of each line
+\def\@maketitle{\newpage
+\bgroup\par\vskip\IEEEtitletopspace\vskip\IEEEtitletopspaceextra\centering%
+\ifCLASSOPTIONtechnote% technotes, V1.8a abstract and index terms are not treated differently for compsoc technotes
+ {\bfseries\large\@IEEEcompsoconly{\Large\sffamily}\@title\par}\vskip 1.3em{\lineskip .5em\@IEEEcompsoconly{\large\sffamily}\@author
+ \@IEEEspecialpapernotice\par}\relax
+\else% not a technote
+ \vskip0.2em{\Huge\ifCLASSOPTIONtransmag\bfseries\LARGE\fi\@IEEEcompsoconly{\sffamily}\@IEEEcompsocconfonly{\normalfont\normalsize\vskip 2\@IEEEnormalsizeunitybaselineskip
+ \bfseries\Large}\@IEEEcompsocnotconfonly{\vskip 0.75\@IEEEnormalsizeunitybaselineskip}\@title\par}\relax
+ \@IEEEcompsocnotconfonly{\vskip 0.5\@IEEEnormalsizeunitybaselineskip}\vskip1.0em\par%
+ % V1.6 handle \author differently if in conference mode
+ \ifCLASSOPTIONconference%
+ {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace%
+ \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par}\relax
+ \else% peerreviewca, peerreview or journal
+ \ifCLASSOPTIONpeerreviewca
+ % peerreviewca handles author names just like conference mode
+ {\@IEEEcompsoconly{\sffamily}\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace%
+ \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par
+ {\@IEEEcompsoconly{\vskip 1.5em\relax
+ \@IEEEtitleabstractindextextbox{\@IEEEtitleabstractindextext}\par\noindent\hfill
+ \IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax
+ \else% journal, peerreview or transmag
+ \ifCLASSOPTIONtransmag
+ % transmag also handles author names just like conference mode
+ % it also uses \@IEEEtitleabstractindextex, but with one line less
+ % space above, and one more below
+ {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace%
+ \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par
+ {\vspace{0.5\baselineskip}\relax\@IEEEtitleabstractindextextbox{\@IEEEtitleabstractindextext}\vspace{-1\baselineskip}\par}}\relax
+ \else% journal or peerreview
+ {\lineskip.5em\@IEEEcompsoconly{\sffamily}\sublargesize\@author\@IEEEspecialpapernotice\par
+ {\@IEEEcompsoconly{\vskip 1.5em\relax
+ \@IEEEtitleabstractindextextbox{\@IEEEtitleabstractindextext}\par\noindent\hfill
+ \IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax
+ \fi
+ \fi
+ \fi
+\fi\par\addvspace{0.5\baselineskip}\egroup}
+
+
+% V1.7 Computer Society "diamond line" which follows index terms for nonconference papers
+% V1.8a full width diamond line for single column use
+\def\@IEEEcompsocdiamondlinei{\vrule depth 0pt height 0.5pt width 4cm\nobreak\hspace{7.5pt}\nobreak
+\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}\nobreak
+\hspace{7.5pt}\nobreak\vrule depth 0pt height 0.5pt width 4cm\relax}
+% V1.8a narrower width diamond line for double column use
+\def\@IEEEcompsocdiamondlineii{\vrule depth 0pt height 0.5pt width 2.5cm\nobreak\hspace{7.5pt}\nobreak
+\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}\nobreak
+\hspace{7.5pt}\nobreak\vrule depth 0pt height 0.5pt width 2.5cm\relax}
+% V1.8a bare core without rules to base a last resort on for very narrow linewidths
+\def\@IEEEcompsocdiamondlineiii{\mbox{}\nobreak\hspace{7.5pt}\nobreak
+\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}\nobreak
+\hspace{7.5pt}\nobreak\mbox{}\relax}
+
+% V1.8a allow \IEEEcompsocdiamondline to adjust for different linewidths.
+% Use \@IEEEcompsocdiamondlinei if its width is less than 0.66\linewidth (0.487 nominal for single column)
+% if not, fall back to \@IEEEcompsocdiamondlineii if its width is less than 0.75\linewidth (0.659 nominal for double column)
+% if all else fails, try to make a custom diamondline based on the abnormally narrow linewidth
+\def\IEEEcompsocdiamondline{\settowidth{\@IEEEtrantmpdimenA}{\@IEEEcompsocdiamondlinei}\relax
+\ifdim\@IEEEtrantmpdimenA<0.66\linewidth\relax\@IEEEcompsocdiamondlinei\relax
+\else
+\settowidth{\@IEEEtrantmpdimenA}{\@IEEEcompsocdiamondlineii}\relax
+\ifdim\@IEEEtrantmpdimenA<0.75\linewidth\relax\@IEEEcompsocdiamondlineii\relax
+\else
+\settowidth{\@IEEEtrantmpdimenA}{\@IEEEcompsocdiamondlineiii}\relax
+\@IEEEtrantmpdimenB=\linewidth\relax
+\addtolength{\@IEEEtrantmpdimenB}{-1\@IEEEtrantmpdimenA}\relax
+\vrule depth 0pt height 0.5pt width 0.33\@IEEEtrantmpdimenB\@IEEEcompsocdiamondlineiii\vrule depth 0pt height 0.5pt width 0.33\@IEEEtrantmpdimenB\relax
+\fi\fi}
+
+
+% V1.7 standard LateX2e \thanks, but with \itshape under compsoc. Also make it a \long\def
+% We also need to trigger the one-shot footnote rule
+\def\@IEEEtriggeroneshotfootnoterule{\global\@IEEEenableoneshotfootnoteruletrue}
+
+
+\long\def\thanks#1{\footnotemark
+ \protected@xdef\@thanks{\@thanks
+ \protect\footnotetext[\the\c@footnote]{\@IEEEcompsoconly{\itshape
+ \protect\@IEEEtriggeroneshotfootnoterule\relax}\ignorespaces#1}}}
+\let\@thanks\@empty
+
+
+% V1.7 allow \author to contain \par's. This is needed to allow \thanks to contain \par.
+\long\def\author#1{\gdef\@author{#1}}
+
+
+% in addition to setting up IEEEitemize, we need to remove a baselineskip space above and
+% below it because \list's \pars introduce blank lines because of the footnote struts.
+\def\@IEEEsetupcompsocitemizelist{\def\labelitemi{$\bullet$}%
+\setlength{\IEEElabelindent}{0pt}\setlength{\labelsep}{1.2em}\setlength{\parskip}{0pt}%
+\setlength{\partopsep}{0pt}\setlength{\topsep}{0.5\baselineskip}\vspace{-1\baselineskip}\relax}
+
+
+% flag for fake non-compsoc \IEEEcompsocthanksitem - prevents line break on very first item
+\newif\if@IEEEbreakcompsocthanksitem \@IEEEbreakcompsocthanksitemfalse
+
+\ifCLASSOPTIONcompsoc
+% V1.7 compsoc bullet item \thanks
+% also, we need to redefine this to destroy the argument in \IEEEquantizevspace
+\long\def\IEEEcompsocitemizethanks#1{\relax\@IEEEbreakcompsocthanksitemfalse\footnotemark
+ \protected@xdef\@thanks{\@thanks
+ \protect\footnotetext[\the\c@footnote]{\itshape\protect\@IEEEtriggeroneshotfootnoterule
+ {\let\IEEEiedlistdecl\relax\protect\begin{IEEEitemize}[\protect\@IEEEsetupcompsocitemizelist]\ignorespaces#1\relax
+ \protect\end{IEEEitemize}}\protect\vspace{-1\baselineskip}}}}
+\DeclareRobustCommand*{\IEEEcompsocthanksitem}{\item}
+\else
+% non-compsoc, allow for dual compilation via rerouting to normal \thanks
+\long\def\IEEEcompsocitemizethanks#1{\thanks{#1}}
+% redirect to "pseudo-par" \hfil\break\indent after swallowing [] from \IEEEcompsocthanksitem[]
+\DeclareRobustCommand{\IEEEcompsocthanksitem}{\@ifnextchar [{\@IEEEthanksswallowoptionalarg}%
+{\@IEEEthanksswallowoptionalarg[\relax]}}
+% be sure and break only after first item, be sure and ignore spaces after optional argument
+\def\@IEEEthanksswallowoptionalarg[#1]{\relax\if@IEEEbreakcompsocthanksitem\hfil\break
+\indent\fi\@IEEEbreakcompsocthanksitemtrue\ignorespaces}
+\fi
+
+
+% V1.6b define the \IEEEpeerreviewmaketitle as needed
+\ifCLASSOPTIONpeerreview
+\def\IEEEpeerreviewmaketitle{\@IEEEcleardoublepage{empty}%
+\ifCLASSOPTIONtwocolumn
+\twocolumn[{\IEEEquantizevspace{\@IEEEpeerreviewmaketitle}[\IEEEquantizedisabletitlecmds]{0pt}[-\topskip]{\baselineskip}{\@IEEENORMtitlevspace}{\@IEEEMINtitlevspace}}]
+\else
+\newpage\@IEEEpeerreviewmaketitle\@IEEEstatictitlevskip
+\fi
+\thispagestyle{IEEEtitlepagestyle}}
+\else
+% \IEEEpeerreviewmaketitle does nothing if peer review option has not been selected
+\def\IEEEpeerreviewmaketitle{\relax}
+\fi
+
+% peerreview formats the repeated title like the title in journal papers.
+\def\@IEEEpeerreviewmaketitle{\bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEcompsoconly{\sffamily}%
+\normalfont\normalsize\vskip0.2em{\Huge\@title\par}\vskip1.0em\par
+\par\addvspace{0.5\baselineskip}\egroup}
+
+
+
+% V1.6
+% this is a static rubber spacer between the title/authors and the main text
+% used for single column text, or when the title appears in the first column
+% of two column text (technotes).
+\def\@IEEEstatictitlevskip{{\normalfont\normalsize
+% adjust spacing to next text
+% v1.6b handle peer review papers
+\ifCLASSOPTIONpeerreview
+% for peer review papers, the same value is used for both title pages
+% regardless of the other paper modes
+ \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip
+\else
+ \ifCLASSOPTIONconference% conference
+ \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip%
+ \else%
+ \ifCLASSOPTIONtechnote% technote
+ \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip%
+ \else% journal uses more space
+ \vskip 2.5\baselineskip plus 0.75\baselineskip minus 0.375\baselineskip%
+ \fi
+ \fi
+\fi}}
+
+
+% set the nominal and minimum values for the quantized title spacer
+% the quantization algorithm will not allow the spacer size to
+% become less than \@IEEEMINtitlevspace - instead it will be lengthened
+% default to journal values
+\def\@IEEENORMtitlevspace{2.5\baselineskip}
+\def\@IEEEMINtitlevspace{2\baselineskip}
+% conferences and technotes need tighter spacing
+\ifCLASSOPTIONconference% conference
+ \def\@IEEENORMtitlevspace{1\baselineskip}
+ \def\@IEEEMINtitlevspace{0.75\baselineskip}
+\fi
+\ifCLASSOPTIONtechnote% technote
+ \def\@IEEENORMtitlevspace{1\baselineskip}
+ \def\@IEEEMINtitlevspace{0.75\baselineskip}
+\fi
+
+
+% V1.8a
+\def\IEEEquantizevspace{\begingroup\@ifstar{\@IEEEquantizevspacestarformtrue\@IEEEquantizevspace}{\@IEEEquantizevspacestarformfalse\@IEEEquantizevspace}}
+% \IEEEquantizevspace[output dimen register]{object}[object decl]
+% {top baselineskip}
+% [offset][prevdepth][lineskip limit][lineskip]
+% {unit height}{nominal vspace}{minimum vspace}
+%
+% Calculates and creates the vspace needed to make the combined height with
+% the given object an integer multiple of the given unit height. This command
+% is more general than the older \@IEEEdynamictitlevspace it replaces.
+%
+% The star form has no effect at present, but is reserved for future use.
+%
+% If the optional argument [output dimen register] is given, the calculated
+% vspace height is stored in the given output dimen (or skip) register
+% and no other action is taken, otherwise the object followed by a vspace*
+% of the appropriate height is evaluated/output.
+%
+% The optional object decl (declarations) is code that is evaluated just
+% before the object's height is evaluated. Its intented purpose is to allow
+% for the alteration or disabling of code within the object during internal
+% height evaluation (e.g., \long\def\thanks#1{\relax} ).
+% This special code is not invoked if/when the object is rendered at the end.
+%
+% The nominal vspace is the target value of the added vspace and the minimum
+% vspace is the lower allowed limit. The vspacer will be the value that achieves
+% integral overall height, in terms of the given unit height, that is closest
+% to the nominal vspace and that is not less than the specified minimum vspace.
+%
+% The line spacing algorithm of TeX is somewhat involved and requires special
+% care with regard to the first line of a vertical list (which is indicated
+% when \prevdepth is -1000pt or less). top baselineskip specifies the
+% baselineskip or topskip used prior to the object. If the height of the
+% first line of the object is greater than the given top baselineskip, then
+% the top baselineskip is subtracted from the height of the first line and
+% that difference is considered along with the rest of the object height
+% (because the object will be shifted down by an amount =
+% top line height - top baselineskip). Otherwise, the height of the first line
+% of the object is ignored as far as the calculations are concerned.
+% This algorithm is adequate for objects that appear at the top of a page
+% (e.g., titles) where \topskip spacing is used.
+%
+% However, as explained on page 78 of the TeXbook, interline spacing is more
+% complex when \baselineskip is being used (indicated by \prevdepth >
+% -1000pt). The four optional parameters offset, prevdepth, lineskip limit and
+% lineskip are assumed to be equal to be 0pt, \prevdepth, \lineskiplimit and
+% \lineskip, respectively, if they are omitted.
+%
+% The prevdepth is the depth of the line before the object, the lineskip limit
+% specifies how close the top of the object can come to the bottom of the
+% previous line before \baselineskip is ignored and \lineskip is inserted
+% between the object and the line above it. Lineskip does not come into
+% play unless the first line of the object is high enough to "get too close"
+% (as specified by lineskiplimit) to the line before it. The the prevdepth,
+% lineskip limit, and lineskip optional parameters are not needed for the
+% first object/line on a page (i.e., prevdepth <= -1000pt) where the simplier
+% \topskip spacing rules are in effect.
+%
+% Offset is a manual adjustment that is added to the height calculations of
+% object irrespective of the value of \prevdepth. It is useful when the top
+% baselineskip will result in a noninteger unit height object placement even
+% if the object itself has integral height. e.g., a footnotesize baselineskip
+% is used before the object, thus an offset of, say -3pt, can be given as a
+% correction.
+
+% Common combinations of these parameters include:
+%
+% top baselineskip: (and default values for offset, prevdepth, etc.)
+% \topskip % for objects that appear at the top of a page
+% \maxdimen % always ignore the height of the top line
+% 0pt % always consider any positive height of the top line
+%
+% for objects to appear inline in normal text:
+% top baselineskip = \baselineskip
+%
+% set prevdepth = -1000pt and top baselineskip = 0pt to consider the
+% overall height of the object without any other external skip
+% consideration
+
+\newif\if@IEEEquantizevspacestarform % flag to indicate star form
+\newif\if@IEEEquantizevspaceuseoutdimenreg % flag to indicate output dimen register is to be used
+% Use our own private registers because the object could contain a
+% structure that uses the existing tmp scratch pad registers
+\newdimen\@IEEEquantizeheightA
+\newdimen\@IEEEquantizeheightB
+\newdimen\@IEEEquantizeheightC
+\newdimen\@IEEEquantizeprevdepth % need to save this early as can change
+\newcount\@IEEEquantizemultiple
+\newbox\@IEEEquantizeboxA
+
+
+\def\@IEEEquantizevspace{\@ifnextchar [{\@IEEEquantizevspaceuseoutdimenregtrue\@@IEEEquantizevspace}{\@IEEEquantizevspaceuseoutdimenregfalse\@@IEEEquantizevspace[]}}
+
+
+\long\def\@@IEEEquantizevspace[#1]#2{\relax
+% acquire and store
+% #1 optional output dimen register
+% #2 object
+\edef\@IEEEquantizeoutdimenreg{#1}\relax
+% allow for object specifications that contain parameters
+\@IEEEtrantmptoksA={#2}\relax
+\long\edef\@IEEEquantizeobject{\the\@IEEEtrantmptoksA}\relax
+\@ifnextchar [{\@@@IEEEquantizevspace}{\@@@IEEEquantizevspace[\relax]}}
+
+\long\def\@@@IEEEquantizevspace[#1]#2{\relax
+% acquire and store
+% [#1] optional object decl, is \relax if not given by user
+% #2 top baselineskip
+% allow for object decl specifications that have parameters
+\@IEEEtrantmptoksA={#1}\relax
+\long\edef\@IEEEquantizeobjectdecl{\the\@IEEEtrantmptoksA}\relax
+\edef\@IEEEquantizetopbaselineskip{#2}\ivIEEEquantizevspace}
+
+% acquire optional argument set and store
+% [offset][prevdepth][lineskip limit][lineskip]
+\def\ivIEEEquantizevspace{\@ifnextchar [{\@vIEEEquantizevspace}{\@vIEEEquantizevspace[0pt]}}
+\def\@vIEEEquantizevspace[#1]{\edef\@IEEEquantizeoffset{#1}\@ifnextchar [{\@viIEEEquantizevspace}{\@viIEEEquantizevspace[\prevdepth]}}
+\def\@viIEEEquantizevspace[#1]{\@IEEEquantizeprevdepth=#1\relax\@ifnextchar [{\@viiIEEEquantizevspace}{\@viiIEEEquantizevspace[\lineskiplimit]}}
+\def\@viiIEEEquantizevspace[#1]{\edef\@IEEEquantizelineskiplimit{#1}\@ifnextchar [{\@viiiIEEEquantizevspace}{\@viiiIEEEquantizevspace[\lineskip]}}
+\def\@viiiIEEEquantizevspace[#1]{\edef\@IEEEquantizelineskip{#1}\@ixIEEEquantizevspace}
+
+% main routine
+\def\@ixIEEEquantizevspace#1#2#3{\relax
+\edef\@IEEEquantizeunitheight{#1}\relax
+\edef\@IEEEquantizenomvspace{#2}\relax
+\edef\@IEEEquantizeminvspace{#3}\relax
+% \@IEEEquantizeoutdimenreg
+% \@IEEEquantizeobject
+% \@IEEEquantizeobjectdecl
+% \@IEEEquantizetopbaselineskip
+% \@IEEEquantizeoffset
+% \@IEEEquantizeprevdepth
+% \@IEEEquantizelineskiplimit
+% \@IEEEquantizelineskip
+% \@IEEEquantizeunitheight
+% \@IEEEquantizenomvspace
+% \@IEEEquantizeminvspace
+% get overall height of object
+\setbox\@IEEEquantizeboxA\vbox{\begingroup\@IEEEquantizeobjectdecl\@IEEEquantizeobject\relax\endgroup}\relax
+\@IEEEquantizeheightA\ht\@IEEEquantizeboxA\relax
+% get height of first line of object
+\setbox\@IEEEquantizeboxA\vtop{\begingroup\@IEEEquantizeobjectdecl\@IEEEquantizeobject\relax\endgroup}\relax
+\@IEEEquantizeheightB\ht\@IEEEquantizeboxA\relax
+\ifdim\@IEEEquantizeprevdepth>-1000pt\relax % prevdepth > -1000pf means full baselineskip\lineskip rules in effect
+% lineskip spacing rule takes effect if height of top line > baselineskip - prevdepth - lineskiplimit,
+% otherwise the baselineskip rule is in effect and the height of the first line does not matter at all.
+\@IEEEquantizeheightC=\@IEEEquantizetopbaselineskip\relax
+\advance\@IEEEquantizeheightC-\@IEEEquantizeprevdepth\relax
+\advance\@IEEEquantizeheightC-\@IEEEquantizelineskiplimit\relax % this works even though \@IEEEquantizelineskiplimit is a macro because TeX allows --10pt notation
+\ifdim\@IEEEquantizeheightB>\@IEEEquantizeheightC\relax
+% lineskip spacing rule is in effect i.e., the object is going to be shifted down relative to the
+% baselineskip set position by its top line height (already a part of the total height) + prevdepth + lineskip - baselineskip
+\advance\@IEEEquantizeheightA\@IEEEquantizeprevdepth\relax
+\advance\@IEEEquantizeheightA\@IEEEquantizelineskip\relax
+\advance\@IEEEquantizeheightA-\@IEEEquantizetopbaselineskip\relax
+\else
+% height of first line <= \@IEEEquantizetopbaselineskip - \@IEEEquantizeprevdepth - \@IEEEquantizelineskiplimit
+% standard baselineskip rules are in effect, so don't consider height of first line
+\advance\@IEEEquantizeheightA-\@IEEEquantizeheightB\relax
+\fi
+%
+\else % prevdepth <= -1000pt, simplier \topskip type rules in effect
+\ifdim\@IEEEquantizeheightB>\@IEEEquantizetopbaselineskip
+% height of top line (already included in the total height) in excess of
+% baselineskip is the amount it will be downshifted
+\advance\@IEEEquantizeheightA-\@IEEEquantizetopbaselineskip\relax
+\else
+% height of first line is irrelevant, remove it
+\advance\@IEEEquantizeheightA-\@IEEEquantizeheightB\relax
+\fi
+\fi % prevdepth <= -1000pt
+%
+% adjust height for any manual offset
+\advance\@IEEEquantizeheightA\@IEEEquantizeoffset\relax
+% add in nominal spacer
+\advance\@IEEEquantizeheightA\@IEEEquantizenomvspace\relax
+% check for nonzero unitheight
+\@IEEEquantizeheightB=\@IEEEquantizeunitheight\relax
+\ifnum\@IEEEquantizeheightB=0\relax
+\@IEEEclspkgerror{IEEEquantizevspace unit height cannot be zero. Assuming 10pt.}%
+{Division by zero is not allowed.}
+\@IEEEquantizeheightB=10pt\relax
+\fi
+% get integer number of lines
+\@IEEEquantizemultiple=\@IEEEquantizeheightA\relax
+\divide\@IEEEquantizemultiple\@IEEEquantizeheightB\relax
+% set A to contain the excess height over the \@IEEEquantizemultiple of lines
+% A = height - multiple*unitheight
+\@IEEEquantizeheightC\@IEEEquantizeheightB\relax
+\multiply\@IEEEquantizeheightC\@IEEEquantizemultiple\relax
+\advance\@IEEEquantizeheightA-\@IEEEquantizeheightC\relax
+% set B to contain the height short of \@IEEEquantizemultiple+1 of lines
+% B = unitheight - A
+\advance\@IEEEquantizeheightB-\@IEEEquantizeheightA\relax
+% choose A or B based on which is closer
+\@IEEEquantizeheightC\@IEEEquantizenomvspace\relax
+\ifdim\@IEEEquantizeheightA<\@IEEEquantizeheightB\relax
+% C = nomvspace - A, go with lower
+\advance\@IEEEquantizeheightC-\@IEEEquantizeheightA\relax
+\else
+% C = nomvspace + B, go with upper
+\advance\@IEEEquantizeheightC\@IEEEquantizeheightB\relax
+\fi
+% if violate lower bound, use next integer bound
+\ifdim\@IEEEquantizeheightC<\@IEEEquantizeminvspace\relax
+% A + B = unitheight
+\advance\@IEEEquantizeheightC\@IEEEquantizeheightA\relax
+\advance\@IEEEquantizeheightC\@IEEEquantizeheightB\relax
+\fi
+% export object and spacer outside of group
+\global\let\@IEEEquantizeobjectout\@IEEEquantizeobject\relax
+\global\@IEEEquantizeheightC\@IEEEquantizeheightC\relax
+\endgroup
+\if@IEEEquantizevspaceuseoutdimenreg
+\@IEEEquantizeoutdimenreg=\@IEEEquantizeheightC\relax
+\else
+\@IEEEquantizeobjectout\relax
+\vskip\@IEEEquantizeheightC\relax
+\fi}
+
+
+% user command to disable all global assignments, possible use within object decl
+\def\IEEEquantizedisableglobal{\let\global\relax
+\let\gdef\def
+\let\xdef\edef}
+% user command to allow for the disabling of \thanks and other commands, possible use within object decl
+\def\IEEEquantizedisabletitlecmds{\long\def\thanks##1{\relax}\relax
+\long\def\IEEEcompsocitemizethanks##1{\relax}\def\newpage{\relax}}
+
+
+
+
+
+% V1.6
+% we allow the user access to the last part of the title area
+% useful in emergencies such as when a different spacing is needed
+% This text is NOT compensated for in the dynamic sizer.
+\let\@IEEEaftertitletext=\relax
+\long\def\IEEEaftertitletext#1{\def\@IEEEaftertitletext{#1}}
+
+
+% V1.7 provide a way for users to enter abstract and keywords
+% into the onecolumn title are. This text is compensated for
+% in the dynamic sizer.
+\let\@IEEEtitleabstractindextext=\relax
+\long\def\IEEEtitleabstractindextext#1{\def\@IEEEtitleabstractindextext{#1}}
+
+% V1.7 provide a way for users to get the \@IEEEtitleabstractindextext if
+% not in compsoc or transmag journal mode - this way abstract and keywords
+% can still be placed in their conventional position if not in those modes.
+\def\IEEEdisplaynontitleabstractindextext{%
+% display for all conference formats
+\ifCLASSOPTIONconference\@IEEEtitleabstractindextext\relax
+\else% non-conferences
+ % V1.8a display for all technotes
+ \ifCLASSOPTIONtechnote\@IEEEtitleabstractindextext\relax
+ % V1.8a add diamond line after abstract and index terms for compsoc technotes
+ \@IEEEcompsoconly{\noindent\hfill\IEEEcompsocdiamondline\hfill\hbox{}\par}\relax
+ \else % non-conferences and non-technotes
+ \ifCLASSOPTIONcompsoc% display if not compsoc and not transmag
+ \else
+ \ifCLASSOPTIONtransmag
+ \else% not compsoc journal nor transmag journal
+ \@IEEEtitleabstractindextext\relax
+ \fi
+ \fi
+ \fi
+\fi}
+
+
+% command to allow alteration of baselinestretch, but only if the current
+% baselineskip is unity. Used to tweak the compsoc abstract and keywords line spacing.
+\def\@IEEEtweakunitybaselinestretch#1{{\def\baselinestretch{1}\selectfont
+\global\@tempskipa\baselineskip}\ifnum\@tempskipa=\baselineskip%
+\def\baselinestretch{#1}\selectfont\fi\relax}
+
+
+% abstract and keywords are in \small, except
+% for 9pt docs in which they are in \footnotesize
+% Because 9pt docs use an 8pt footnotesize, \small
+% becomes a rather awkward 8.5pt
+\def\@IEEEabskeysecsize{\small}
+\ifx\CLASSOPTIONpt\@IEEEptsizenine
+ \def\@IEEEabskeysecsize{\footnotesize}
+\fi
+
+% compsoc journals use \footnotesize, compsoc conferences use normalsize
+\@IEEEcompsoconly{\def\@IEEEabskeysecsize{\footnotesize}}
+\@IEEEcompsocconfonly{\def\@IEEEabskeysecsize{\small}}
+
+
+% V1.6 have abstract and keywords strip leading spaces, pars and newlines
+% so that spacing is more tightly controlled.
+\def\abstract{\normalfont
+ \if@twocolumn
+ \@IEEEabskeysecsize\bfseries\textit{\abstractname}---\relax
+ \else
+ \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize
+ \fi\@IEEEgobbleleadPARNLSP}
+% V1.6 The IEEE wants only 1 pica from end of abstract to introduction heading when in
+% conference mode (the heading already has this much above it)
+\def\endabstract{\relax\ifCLASSOPTIONconference\vspace{0ex}\else\vspace{1.34ex}\fi\par\if@twocolumn\else\endquotation\fi
+ \normalfont\normalsize}
+
+\def\IEEEkeywords{\normalfont
+ \if@twocolumn
+ \@IEEEabskeysecsize\bfseries\textit{\IEEEkeywordsname}---\relax
+ \else
+ \bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize
+ \fi\@IEEEgobbleleadPARNLSP}
+\def\endIEEEkeywords{\relax\ifCLASSOPTIONtechnote\vspace{1.34ex}\else\vspace{0.67ex}\fi
+ \par\if@twocolumn\else\endquotation\fi%
+ \normalfont\normalsize}
+
+% V1.7 compsoc keywords index terms
+\ifCLASSOPTIONcompsoc
+ \ifCLASSOPTIONconference% compsoc conference
+\def\abstract{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\bfseries
+ \if@twocolumn
+ \@IEEEabskeysecsize\noindent\textit{\abstractname}---\relax
+ \else
+ \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize%
+ \fi\@IEEEgobbleleadPARNLSP}
+\def\IEEEkeywords{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\bfseries
+ \if@twocolumn
+ \@IEEEabskeysecsize\vskip 0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip\noindent
+ \textit{\IEEEkeywordsname}---\relax
+ \else
+ \bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize%
+ \fi\@IEEEgobbleleadPARNLSP}
+ \else% compsoc not conference
+\def\abstract{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily
+ \if@twocolumn
+ \@IEEEabskeysecsize\noindent\textbf{\abstractname}---\relax
+ \else
+ \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize%
+ \fi\@IEEEgobbleleadPARNLSP}
+\def\IEEEkeywords{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily
+ \if@twocolumn
+ \@IEEEabskeysecsize\vskip 0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip\noindent
+ \textbf{\IEEEkeywordsname}---\relax
+ \else
+ \bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize%
+ \fi\@IEEEgobbleleadPARNLSP}
+ \fi
+\fi
+
+% V1.8 transmag keywords index terms
+% no abstract name, use indentation
+\ifCLASSOPTIONtransmag
+\def\abstract{\normalfont\parindent 1em\relax
+ \if@twocolumn
+ \@IEEEabskeysecsize\bfseries\indent
+ \else
+ \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize
+ \textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize
+ \fi\@IEEEgobbleleadPARNLSP}
+
+\def\IEEEkeywords{\normalfont\parindent 1em\relax
+ \if@twocolumn
+ \@IEEEabskeysecsize\vspace{1\baselineskip}\bfseries\indent\textit{\IEEEkeywordsname}---\relax
+ \else
+ \bgroup\par\vspace{1\baselineskip}\centering\@IEEEabskeysecsize
+ \textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize
+ \fi\@IEEEgobbleleadPARNLSP}
+\fi
+
+
+
+% gobbles all leading \, \\ and \par, upon finding first token that
+% is not a \ , \\ or a \par, it ceases and returns that token
+%
+% used to strip leading \, \\ and \par from the input
+% so that such things in the beginning of an environment will not
+% affect the formatting of the text
+\long\def\@IEEEgobbleleadPARNLSP#1{\let\@IEEEswallowthistoken=0%
+\let\@IEEEgobbleleadPARNLSPtoken#1%
+\let\@IEEEgobbleleadPARtoken=\par%
+\let\@IEEEgobbleleadNLtoken=\\%
+\let\@IEEEgobbleleadSPtoken=\ %
+\def\@IEEEgobbleleadSPMACRO{\ }%
+\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadPARtoken%
+\let\@IEEEswallowthistoken=1%
+\fi%
+\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadNLtoken%
+\let\@IEEEswallowthistoken=1%
+\fi%
+\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPtoken%
+\let\@IEEEswallowthistoken=1%
+\fi%
+% a control space will come in as a macro
+% when it is the last one on a line
+\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPMACRO%
+\let\@IEEEswallowthistoken=1%
+\fi%
+% if we have to swallow this token, do so and taste the next one
+% else spit it out and stop gobbling
+\ifx\@IEEEswallowthistoken 1\let\@IEEEnextgobbleleadPARNLSP=\@IEEEgobbleleadPARNLSP\else%
+\let\@IEEEnextgobbleleadPARNLSP=#1\fi%
+\@IEEEnextgobbleleadPARNLSP}%
+
+
+
+
+% TITLING OF SECTIONS
+\def\@IEEEsectpunct{:\ \,} % Punctuation after run-in section heading (headings which are
+ % part of the paragraphs), need little bit more than a single space
+ % spacing from section number to title
+% compsoc conferences use regular period/space punctuation
+\ifCLASSOPTIONcompsoc
+\ifCLASSOPTIONconference
+\def\@IEEEsectpunct{.\ }
+\fi\fi
+
+
+\def\@seccntformat#1{\csname the#1dis\endcsname\hskip 0.5em\relax}
+
+\ifCLASSOPTIONcompsoc
+% compsoc journals need extra spacing
+\ifCLASSOPTIONconference\else
+\def\@seccntformat#1{\csname the#1dis\endcsname\hskip 1em\relax}
+\fi\fi
+
+%v1.7 put {} after #6 to allow for some types of user font control
+%and use \@@par rather than \par
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ % load section label and spacer into \@svsec
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi%
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@% tempskipa determines whether is treated as a high
+ \begingroup #6{\relax% or low level heading
+ \noindent % subsections are NOT indented
+ % print top level headings. \@svsec is label, #8 is heading title
+ % The IEEE does not block indent the section title text, it flows like normal
+ {\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\@@par}}%
+ \endgroup
+ \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else
+ \protect\numberline{\csname the#1\endcsname}\fi#7}%
+ \else % printout low level headings
+ % svsechd seems to swallow the trailing space, protect it with \mbox{}
+ % got rid of sectionmark stuff
+ \def\@svsechd{#6{\hskip #3\relax\@svsec #8\@IEEEsectpunct\mbox{}}%
+ \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else
+ \protect\numberline{\csname the#1\endcsname}\fi#7}}%
+ \fi%skip down
+ \@xsect{#5}}
+
+
+% section* handler
+%v1.7 put {} after #4 to allow for some types of user font control
+%and use \@@par rather than \par
+\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
+ \ifdim \@tempskipa>\z@
+ %\begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup
+ % The IEEE does not block indent the section title text, it flows like normal
+ \begingroup \noindent #4{\relax{\hskip #1}{\interlinepenalty \@M #5\@@par}}\endgroup
+ % svsechd swallows the trailing space, protect it with \mbox{}
+ \else \def\@svsechd{#4{\hskip #1\relax #5\@IEEEsectpunct\mbox{}}}\fi
+ \@xsect{#3}}
+
+
+%% SECTION heading spacing and font
+%%
+% arguments are: #1 - sectiontype name
+% (for \@sect) #2 - section level
+% #3 - section heading indent
+% #4 - top separation (absolute value used, neg indicates not to indent main text)
+% If negative, make stretch parts negative too!
+% #5 - (absolute value used) positive: bottom separation after heading,
+% negative: amount to indent main text after heading
+% Both #4 and #5 negative means to indent main text and use negative top separation
+% #6 - font control
+% You've got to have \normalfont\normalsize in the font specs below to prevent
+% trouble when you do something like:
+% \section{Note}{\ttfamily TT-TEXT} is known to ...
+% The IEEE sometimes REALLY stretches the area before a section
+% heading by up to about 0.5in. However, it may not be a good
+% idea to let LaTeX have quite this much rubber.
+\ifCLASSOPTIONconference%
+% The IEEE wants section heading spacing to decrease for conference mode
+\def\section{\@startsection{section}{1}{\z@}{1.5ex plus 1.5ex minus 0.5ex}%
+{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}%
+\def\subsection{\@startsection{subsection}{2}{\z@}{1.5ex plus 1.5ex minus 0.5ex}%
+{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}%
+\else % for journals
+\def\section{\@startsection{section}{1}{\z@}{3.0ex plus 1.5ex minus 1.5ex}% V1.6 3.0ex from 3.5ex
+{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}%
+\def\subsection{\@startsection{subsection}{2}{\z@}{3.5ex plus 1.5ex minus 1.5ex}%
+{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}%
+\fi
+
+% for both journals and conferences
+% decided to put in a little rubber above the section, might help somebody
+\def\subsubsection{\@startsection{subsubsection}{3}{\parindent}{0ex plus 0.1ex minus 0.1ex}%
+{0ex}{\normalfont\normalsize\itshape}}%
+\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}%
+{0ex}{\normalfont\normalsize\itshape}}%
+
+
+% compsoc
+\ifCLASSOPTIONcompsoc
+\ifCLASSOPTIONconference
+% compsoc conference
+\def\section{\@startsection{section}{1}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}%
+{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\large\bfseries}}%
+\def\subsection{\@startsection{subsection}{2}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}%
+{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\sublargesize\bfseries}}%
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}%
+{0ex}{\normalfont\normalsize\bfseries}}%
+\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}%
+{0ex}{\normalfont\normalsize}}%
+\else% compsoc journals
+% use negative top separation as compsoc journals do not indent paragraphs after section titles
+\def\section{\@startsection{section}{1}{\z@}{-3.5ex plus -2ex minus -1.5ex}%
+{0.7ex plus 1ex minus 0ex}{\normalfont\sublargesize\sffamily\bfseries\scshape}}%
+% Note that subsection and smaller may not be correct for the Computer Society,
+% I have to look up an example.
+\def\subsection{\@startsection{subsection}{2}{\z@}{-3.5ex plus -1.5ex minus -1.5ex}%
+{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\sffamily\bfseries}}%
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.5ex plus -1ex minus -1ex}%
+{0.5ex plus 0.5ex minus 0ex}{\normalfont\normalsize\sffamily\itshape}}%
+\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{-0ex plus -0.1ex minus -0.1ex}%
+{0ex}{\normalfont\normalsize}}%
+\fi\fi
+
+% transmag
+\ifCLASSOPTIONtransmag
+\def\subsection{\@startsection{subsection}{2}{0.75\parindent}{3.5ex plus 1.5ex minus 1.5ex}%
+{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}%
+\def\subsubsection{\@startsection{subsubsection}{3}{1.25\parindent}{0.1ex plus 0.1ex minus 0.1ex}%
+{0.1ex}{\normalfont\normalsize\itshape}}%
+\fi
+
+
+% V1.8a provide for a raised line Introduction section for use with Computer
+% Society papers. We have to remove any spacing glue after the section
+% heading and then remove the blank line for the new paragraph after it.
+% LaTeX's section handler alters \everypar and we need to propogate those
+% changes outside of the \parbox lest there be spacing problems at the top
+% of the next section.
+\def\IEEEraisesectionheading#1{\noindent\raisebox{1.5\baselineskip}[0pt][0pt]{\parbox[b]{\columnwidth}{#1\unskip\global\everypar=\everypar}}\vspace{-1\baselineskip}\vspace{-\parskip}\par}
+
+
+
+%% ENVIRONMENTS
+% "box" symbols at end of proofs
+\def\IEEEQEDclosed{\mbox{\rule[0pt]{1.3ex}{1.3ex}}} % for a filled box
+% V1.6 some journals use an open box instead that will just fit around a closed one
+\def\IEEEQEDopen{{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.2pt}\fbox{\rule[0pt]{0pt}{1.3ex}\rule[0pt]{1.3ex}{0pt}}}}
+\ifCLASSOPTIONcompsoc
+\def\IEEEQED{\IEEEQEDopen} % default to open for compsoc
+\else
+\def\IEEEQED{\IEEEQEDclosed} % otherwise default to closed
+\fi
+
+%V1.8 flag to indicate if QED symbol is to be shown
+\newif\if@IEEEQEDshow \@IEEEQEDshowtrue
+\def\IEEEproofindentspace{2\parindent}% V1.8 allow user to change indentation amount if desired
+% v1.7 name change to avoid namespace collision with amsthm. Also add support
+% for an optional argument.
+\def\IEEEproof{\@ifnextchar[{\@IEEEproof}{\@IEEEproof[\IEEEproofname]}}
+\def\@IEEEproof[#1]{\@IEEEQEDshowtrue\par\noindent\hspace{\IEEEproofindentspace}{\itshape #1: }}
+\def\endIEEEproof{\if@IEEEQEDshow\hspace*{\fill}\nobreakspace\IEEEQED\fi\par}
+% qedhere for equation environments, similar to AMS \qedhere
+\def\IEEEQEDhereeqn{\global\@IEEEQEDshowfalse\eqno\let\eqno\relax\let\leqno\relax
+ \let\veqno\relax\hbox{\IEEEQED}}
+% IEEE style qedhere for IEEEeqnarray and other environments
+\def\IEEEQEDhere{\global\@IEEEQEDshowfalse\IEEEQED}
+% command to disable QED at end of IEEEproof
+\def\IEEEQEDoff{\global\@IEEEQEDshowfalse}
+
+
+%\itemindent is set to \z@ by list, so define new temporary variable
+\newdimen\@IEEEtmpitemindent
+
+\ifCLASSOPTIONcompsoc
+% V1.8a compsoc uses bold theorem titles, a period instead of a colon, vertical spacing, and hanging indentation
+% V1.8 allow long theorem names to break across lines.
+% Thanks to Miquel Payaro for reporting this.
+\def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\relax
+ \topsep 0.2\@IEEEnormalsizeunitybaselineskip plus 0.26\@IEEEnormalsizeunitybaselineskip minus 0.05\@IEEEnormalsizeunitybaselineskip
+ \rmfamily\trivlist\hangindent\parindent%
+ \item[]\textit{\bfseries\noindent #1\ #2.} \itemindent\@IEEEtmpitemindent\relax}
+\def\@opargbegintheorem#1#2#3{\@IEEEtmpitemindent\itemindent\relax
+\topsep 0.2\@IEEEnormalsizeunitybaselineskip plus 0.26\@IEEEnormalsizeunitybaselineskip minus 0.05\@IEEEnormalsizeunitybaselineskip
+\rmfamily\trivlist\hangindent\parindent%
+% V1.6 The IEEE is back to using () around theorem names which are also in italics
+% Thanks to Christian Peel for reporting this.
+ \item[]\textit{\bfseries\noindent #1\ #2\ (#3).} \itemindent\@IEEEtmpitemindent\relax}
+% V1.7 remove bogus \unskip that caused equations in theorems to collide with
+% lines below.
+\def\@endtheorem{\endtrivlist\vskip 0.25\@IEEEnormalsizeunitybaselineskip plus 0.26\@IEEEnormalsizeunitybaselineskip minus 0.05\@IEEEnormalsizeunitybaselineskip}
+\else
+%
+% noncompsoc
+%
+% V1.8 allow long theorem names to break across lines.
+% Thanks to Miquel Payaro for reporting this.
+\def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\relax\topsep 0pt\rmfamily\trivlist%
+ \item[]\textit{\indent #1\ #2:} \itemindent\@IEEEtmpitemindent\relax}
+\def\@opargbegintheorem#1#2#3{\@IEEEtmpitemindent\itemindent\relax\topsep 0pt\rmfamily \trivlist%
+% V1.6 The IEEE is back to using () around theorem names which are also in italics
+% Thanks to Christian Peel for reporting this.
+ \item[]\textit{\indent #1\ #2\ (#3):} \itemindent\@IEEEtmpitemindent\relax}
+% V1.7 remove bogus \unskip that caused equations in theorems to collide with
+% lines below.
+\def\@endtheorem{\endtrivlist}
+\fi
+
+
+
+% V1.6
+% display command for the section the theorem is in - so that \thesection
+% is not used as this will be in Roman numerals when we want arabic.
+% LaTeX2e uses \def\@thmcounter#1{\noexpand\arabic{#1}} for the theorem number
+% (second part) display and \def\@thmcountersep{.} as a separator.
+% V1.7 intercept calls to the section counter and reroute to \@IEEEthmcounterinsection
+% to allow \appendix(ices} to override as needed.
+%
+% special handler for sections, allows appendix(ices) to override
+\gdef\@IEEEthmcounterinsection#1{\arabic{#1}}
+% string macro
+\edef\@IEEEstringsection{section}
+
+% redefine the #1#2[#3] form of newtheorem to use a hook to \@IEEEthmcounterinsection
+% if section in_counter is used
+\def\@xnthm#1#2[#3]{%
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {\@definecounter{#1}\@newctr{#1}[#3]%
+ \edef\@IEEEstringtmp{#3}
+ \ifx\@IEEEstringtmp\@IEEEstringsection
+ \expandafter\xdef\csname the#1\endcsname{%
+ \noexpand\@IEEEthmcounterinsection{#3}\@thmcountersep
+ \@thmcounter{#1}}%
+ \else
+ \expandafter\xdef\csname the#1\endcsname{%
+ \expandafter\noexpand\csname the#3\endcsname \@thmcountersep
+ \@thmcounter{#1}}%
+ \fi
+ \global\@namedef{#1}{\@thm{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}}}
+
+
+
+%% SET UP THE DEFAULT PAGESTYLE
+\pagestyle{headings}
+\pagenumbering{arabic}
+
+% normally the page counter starts at 1
+\setcounter{page}{1}
+% however, for peerreview the cover sheet is page 0 or page -1
+% (for duplex printing)
+\ifCLASSOPTIONpeerreview
+ \if@twoside
+ \setcounter{page}{-1}
+ \else
+ \setcounter{page}{0}
+ \fi
+\fi
+
+% standard book class behavior - let bottom line float up and down as
+% needed when single sided
+\ifCLASSOPTIONtwoside\else\raggedbottom\fi
+% if two column - turn on twocolumn, allow word spacings to stretch more and
+% enforce a rigid position for the last lines
+\ifCLASSOPTIONtwocolumn
+% the peer review option delays invoking twocolumn
+ \ifCLASSOPTIONpeerreview\else
+ \twocolumn
+ \fi
+\sloppy
+\flushbottom
+\fi
+
+
+
+
+% \APPENDIX and \APPENDICES definitions
+
+% This is the \@ifmtarg command from the LaTeX ifmtarg package
+% by Peter Wilson (CUA) and Donald Arseneau
+% \@ifmtarg is used to determine if an argument to a command
+% is present or not.
+% For instance:
+% \@ifmtarg{#1}{\typeout{empty}}{\typeout{has something}}
+% \@ifmtarg is used with our redefined \section command if
+% \appendices is invoked.
+% The command \section will behave slightly differently depending
+% on whether the user specifies a title:
+% \section{My appendix title}
+% or not:
+% \section{}
+% This way, we can eliminate the blank lines where the title
+% would be, and the unneeded : after Appendix in the table of
+% contents
+\begingroup
+\catcode`\Q=3
+\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil}
+\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4}
+\endgroup
+% end of \@ifmtarg defs
+
+
+% V1.7
+% command that allows the one time saving of the original definition
+% of section to \@IEEEappendixsavesection for \appendix or \appendices
+% we don't save \section here as it may be redefined later by other
+% packages (hyperref.sty, etc.)
+\def\@IEEEsaveoriginalsectiononce{\let\@IEEEappendixsavesection\section
+\let\@IEEEsaveoriginalsectiononce\relax}
+
+% neat trick to grab and process the argument from \section{argument}
+% we process differently if the user invoked \section{} with no
+% argument (title)
+% note we reroute the call to the old \section*
+\def\@IEEEprocessthesectionargument#1{%
+\@ifmtarg{#1}{%
+\@IEEEappendixsavesection*{\appendixname\nobreakspace\thesectiondis}%
+\addcontentsline{toc}{section}{\appendixname\nobreakspace\thesection}}{%
+\@IEEEappendixsavesection*{\appendixname\nobreakspace\thesectiondis\\* #1}%
+\addcontentsline{toc}{section}{\appendixname\nobreakspace\thesection: #1}}}
+
+% we use this if the user calls \section{} after
+% \appendix-- which has no meaning. So, we ignore the
+% command and its argument. Then, warn the user.
+\def\@IEEEdestroythesectionargument#1{\typeout{** WARNING: Ignoring useless
+\protect\section\space in Appendix (line \the\inputlineno).}}
+
+
+% remember \thesection forms will be displayed in \ref calls
+% and in the Table of Contents.
+% The \sectiondis form is used in the actual heading itself
+
+% appendix command for one single appendix
+% normally has no heading. However, if you want a
+% heading, you can do so via the optional argument:
+% \appendix[Optional Heading]
+\def\appendix{\relax}
+\renewcommand{\appendix}[1][]{\@IEEEsaveoriginalsectiononce\par
+ % v1.6 keep hyperref's identifiers unique
+ \gdef\theHsection{Appendix.A}%
+ % v1.6 adjust hyperref's string name for the section
+ \xdef\Hy@chapapp{appendix}%
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \setcounter{subsubsection}{0}%
+ \setcounter{paragraph}{0}%
+ \gdef\thesection{A}%
+ \gdef\thesectiondis{}%
+ \gdef\thesubsection{\Alph{subsection}}%
+ \gdef\@IEEEthmcounterinsection##1{A}
+ \refstepcounter{section}% update the \ref counter
+ \@ifmtarg{#1}{\@IEEEappendixsavesection*{\appendixname}%
+ \addcontentsline{toc}{section}{\appendixname}}{%
+ \@IEEEappendixsavesection*{\appendixname\nobreakspace\\* #1}%
+ \addcontentsline{toc}{section}{\appendixname: #1}}%
+ % redefine \section command for appendix
+ % leave \section* as is
+ \def\section{\@ifstar{\@IEEEappendixsavesection*}{%
+ \@IEEEdestroythesectionargument}}% throw out the argument
+ % of the normal form
+}
+
+
+
+% appendices command for multiple appendices
+% user then calls \section with an argument (possibly empty) to
+% declare the individual appendices
+\def\appendices{\@IEEEsaveoriginalsectiononce\par
+ % v1.6 keep hyperref's identifiers unique
+ \gdef\theHsection{Appendix.\Alph{section}}%
+ % v1.6 adjust hyperref's string name for the section
+ \xdef\Hy@chapapp{appendix}%
+ \setcounter{section}{-1}% we want \refstepcounter to use section 0
+ \setcounter{subsection}{0}%
+ \setcounter{subsubsection}{0}%
+ \setcounter{paragraph}{0}%
+ \ifCLASSOPTIONromanappendices%
+ \gdef\thesection{\Roman{section}}%
+ \gdef\thesectiondis{\Roman{section}}%
+ \@IEEEcompsocconfonly{\gdef\thesectiondis{\Roman{section}.}}%
+ \gdef\@IEEEthmcounterinsection##1{A\arabic{##1}}
+ \else%
+ \gdef\thesection{\Alph{section}}%
+ \gdef\thesectiondis{\Alph{section}}%
+ \@IEEEcompsocconfonly{\gdef\thesectiondis{\Alph{section}.}}%
+ \gdef\@IEEEthmcounterinsection##1{\Alph{##1}}
+ \fi%
+ \refstepcounter{section}% update the \ref counter
+ \setcounter{section}{0}% NEXT \section will be the FIRST appendix
+ % redefine \section command for appendices
+ % leave \section* as is
+ \def\section{\@ifstar{\@IEEEappendixsavesection*}{% process the *-form
+ \refstepcounter{section}% or is a new section so,
+ \@IEEEprocessthesectionargument}}% process the argument
+ % of the normal form
+}
+
+
+
+% V1.7 compoc uses nonbold drop cap and small caps word style
+\ifCLASSOPTIONcompsoc
+ \def\IEEEPARstartFONTSTYLE{\mdseries}
+ \def\IEEEPARstartWORDFONTSTYLE{\scshape}
+ \def\IEEEPARstartWORDCAPSTYLE{\relax}
+\fi
+%
+%
+% \IEEEPARstart
+% Definition for the big two line drop cap letter at the beginning of the
+% first paragraph of journal papers. The first argument is the first letter
+% of the first word, the second argument is the remaining letters of the
+% first word which will be rendered in upper case.
+% In V1.6 this has been completely rewritten to:
+%
+% 1. no longer have problems when the user begins an environment
+% within the paragraph that uses \IEEEPARstart.
+% 2. auto-detect and use the current font family
+% 3. revise handling of the space at the end of the first word so that
+% interword glue will now work as normal.
+% 4. produce correctly aligned edges for the (two) indented lines.
+%
+% We generalize things via control macros - playing with these is fun too.
+%
+% V1.7 added more control macros to make it easy for IEEEtrantools.sty users
+% to change the font style.
+%
+% the number of lines that are indented to clear it
+% may need to increase if using decenders
+\providecommand{\IEEEPARstartDROPLINES}{2}
+% minimum number of lines left on a page to allow a \@IEEEPARstart
+% Does not take into consideration rubber shrink, so it tends to
+% be overly cautious
+\providecommand{\IEEEPARstartMINPAGELINES}{2}
+% V1.7 the height of the drop cap is adjusted to match the height of this text
+% in the current font (when \IEEEPARstart is called).
+\providecommand{\IEEEPARstartHEIGHTTEXT}{T}
+% the depth the letter is lowered below the baseline
+% the height (and size) of the letter is determined by the sum
+% of this value and the height of the \IEEEPARstartHEIGHTTEXT in the current
+% font. It is a good idea to set this value in terms of the baselineskip
+% so that it can respond to changes therein.
+\providecommand{\IEEEPARstartDROPDEPTH}{1.1\baselineskip}
+% V1.7 the font the drop cap will be rendered in,
+% can take zero or one argument.
+\providecommand{\IEEEPARstartFONTSTYLE}{\bfseries}
+% V1.7 any additional, non-font related commands needed to modify
+% the drop cap letter, can take zero or one argument.
+\providecommand{\IEEEPARstartCAPSTYLE}{\MakeUppercase}
+% V1.7 the font that will be used to render the rest of the word,
+% can take zero or one argument.
+\providecommand{\IEEEPARstartWORDFONTSTYLE}{\relax}
+% V1.7 any additional, non-font related commands needed to modify
+% the rest of the word, can take zero or one argument.
+\providecommand{\IEEEPARstartWORDCAPSTYLE}{\MakeUppercase}
+% This is the horizontal separation distance from the drop letter to the main text.
+% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced
+% to the font that is active when \IEEEPARstart is called.
+\providecommand{\IEEEPARstartSEP}{0.15em}
+% V1.7 horizontal offset applied to the left of the drop cap.
+\providecommand{\IEEEPARstartHOFFSET}{0em}
+% V1.7 Italic correction command applied at the end of the drop cap.
+\providecommand{\IEEEPARstartITLCORRECT}{\/}
+
+% width of the letter output, set globally. Can be used in \IEEEPARstartSEP
+% or \IEEEPARstartHOFFSET, but not the height lengths.
+\newdimen\IEEEPARstartletwidth
+\IEEEPARstartletwidth 0pt\relax
+
+% definition of \IEEEPARstart
+% THIS IS A CONTROLLED SPACING AREA, DO NOT ALLOW SPACES WITHIN THESE LINES
+%
+% The token \@IEEEPARstartfont will be globally defined after the first use
+% of \IEEEPARstart and will be a font command which creates the big letter
+% The first argument is the first letter of the first word and the second
+% argument is the rest of the first word(s).
+\def\IEEEPARstart#1#2{\par{%
+% if this page does not have enough space, break it and lets start
+% on a new one
+\@IEEEtranneedspace{\IEEEPARstartMINPAGELINES\baselineskip}{\relax}%
+% V1.7 move this up here in case user uses \textbf for \IEEEPARstartFONTSTYLE
+% which uses command \leavevmode which causes an unwanted \indent to be issued
+\noindent
+% calculate the desired height of the big letter
+% it extends from the top of \IEEEPARstartHEIGHTTEXT in the current font
+% down to \IEEEPARstartDROPDEPTH below the current baseline
+\settoheight{\@IEEEtrantmpdimenA}{\IEEEPARstartHEIGHTTEXT}%
+\addtolength{\@IEEEtrantmpdimenA}{\IEEEPARstartDROPDEPTH}%
+% extract the name of the current font in bold
+% and place it in \@IEEEPARstartFONTNAME
+\def\@IEEEPARstartGETFIRSTWORD##1 ##2\relax{##1}%
+{\IEEEPARstartFONTSTYLE{\selectfont\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}%
+\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}}%
+% define a font based on this name with a point size equal to the desired
+% height of the drop letter
+\font\@IEEEPARstartsubfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenA\relax%
+% save this value as a counter (integer) value (sp points)
+\@IEEEtrantmpcountA=\@IEEEtrantmpdimenA%
+% now get the height of the actual letter produced by this font size
+\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\IEEEPARstartCAPSTYLE{#1}}%
+% If something bogus happens like the first argument is empty or the
+% current font is strange, do not allow a zero height.
+\ifdim\@IEEEtrantmpdimenB=0pt\relax%
+\typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}%
+\typeout{ Forcing the drop letter font size to 10pt.}%
+\@IEEEtrantmpdimenB=10pt%
+\fi%
+% and store it as a counter
+\@IEEEtrantmpcountB=\@IEEEtrantmpdimenB%
+% Since a font size doesn't exactly correspond to the height of the capital
+% letters in that font, the actual height of the letter, \@IEEEtrantmpcountB,
+% will be less than that desired, \@IEEEtrantmpcountA
+% we need to raise the font size, \@IEEEtrantmpdimenA
+% by \@IEEEtrantmpcountA / \@IEEEtrantmpcountB
+% But, TeX doesn't have floating point division, so we have to use integer
+% division. Hence the use of the counters.
+% We need to reduce the denominator so that the loss of the remainder will
+% have minimal affect on the accuracy of the result
+\divide\@IEEEtrantmpcountB by 200%
+\divide\@IEEEtrantmpcountA by \@IEEEtrantmpcountB%
+% Then reequalize things when we use TeX's ability to multiply by
+% floating point values
+\@IEEEtrantmpdimenB=0.005\@IEEEtrantmpdimenA%
+\multiply\@IEEEtrantmpdimenB by \@IEEEtrantmpcountA%
+% \@IEEEPARstartfont is globaly set to the calculated font of the big letter
+% We need to carry this out of the local calculation area to to create the
+% big letter.
+\global\font\@IEEEPARstartfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenB%
+% Now set \@IEEEtrantmpdimenA to the width of the big letter
+% We need to carry this out of the local calculation area to set the
+% hanging indent
+\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont
+\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}}}%
+% end of the isolated calculation environment
+\global\IEEEPARstartletwidth\@IEEEtrantmpdimenA\relax%
+% add in the extra clearance we want
+\advance\@IEEEtrantmpdimenA by \IEEEPARstartSEP\relax%
+% add in the optional offset
+\advance\@IEEEtrantmpdimenA by \IEEEPARstartHOFFSET\relax%
+% V1.7 don't allow negative offsets to produce negative hanging indents
+\@IEEEtrantmpdimenB\@IEEEtrantmpdimenA
+\ifnum\@IEEEtrantmpdimenB < 0 \@IEEEtrantmpdimenB 0pt\fi
+% \@IEEEtrantmpdimenA has the width of the big letter plus the
+% separation space and \@IEEEPARstartfont is the font we need to use
+% Now, we make the letter and issue the hanging indent command
+% The letter is placed in a box of zero width and height so that other
+% text won't be displaced by it.
+\hangindent\@IEEEtrantmpdimenB\hangafter=-\IEEEPARstartDROPLINES%
+\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}%
+\raisebox{-\IEEEPARstartDROPDEPTH}[0pt][0pt]{\hspace{\IEEEPARstartHOFFSET}%
+\@IEEEPARstartfont\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}%
+\hspace{\IEEEPARstartSEP}}}%
+{\IEEEPARstartWORDFONTSTYLE{\IEEEPARstartWORDCAPSTYLE{\selectfont#2}}}}
+
+
+
+
+% determines if the space remaining on a given page is equal to or greater
+% than the specified space of argument one
+% if not, execute argument two (only if the remaining space is greater than zero)
+% and issue a \newpage
+%
+% example: \@IEEEtranneedspace{2in}{\vfill}
+%
+% Does not take into consideration rubber shrinkage, so it tends to
+% be overly cautious
+% Based on an example posted by Donald Arseneau
+% Note this macro uses \@IEEEtrantmpdimenB internally for calculations,
+% so DO NOT PASS \@IEEEtrantmpdimenB to this routine
+% if you need a dimen register, import with \@IEEEtrantmpdimenA instead
+\def\@IEEEtranneedspace#1#2{\penalty-100\begingroup%shield temp variable
+\@IEEEtrantmpdimenB\pagegoal\advance\@IEEEtrantmpdimenB-\pagetotal% space left
+\ifdim #1>\@IEEEtrantmpdimenB\relax% not enough space left
+\ifdim\@IEEEtrantmpdimenB>\z@\relax #2\fi%
+\newpage%
+\fi\endgroup}
+
+
+
+% IEEEbiography ENVIRONMENT
+% Allows user to enter biography leaving place for picture (adapts to font size)
+% As of V1.5, a new optional argument allows you to have a real graphic!
+% V1.5 and later also fixes the "colliding biographies" which could happen when a
+% biography's text was shorter than the space for the photo.
+% MDS 7/2001
+% V1.6 prevent multiple biographies from making multiple TOC entries
+\newif\if@IEEEbiographyTOCentrynotmade
+\global\@IEEEbiographyTOCentrynotmadetrue
+
+% biography counter so hyperref can jump directly to the biographies
+% and not just the previous section
+\newcounter{IEEEbiography}
+\setcounter{IEEEbiography}{0}
+
+% photo area size
+\def\@IEEEBIOphotowidth{1.0in} % width of the biography photo area
+\def\@IEEEBIOphotodepth{1.25in} % depth (height) of the biography photo area
+% area cleared for photo
+\def\@IEEEBIOhangwidth{1.14in} % width cleared for the biography photo area
+\def\@IEEEBIOhangdepth{1.25in} % depth cleared for the biography photo area
+ % actual depth will be a multiple of
+ % \baselineskip, rounded up
+\def\@IEEEBIOskipN{4\baselineskip}% nominal value of the vskip above the biography
+
+\newenvironment{IEEEbiography}[2][]{\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize%
+\unitlength 1in\parskip=0pt\par\parindent 1em\interlinepenalty500%
+% we need enough space to support the hanging indent
+% the nominal value of the spacer
+% and one extra line for good measure
+\@IEEEtrantmpdimenA=\@IEEEBIOhangdepth%
+\advance\@IEEEtrantmpdimenA by \@IEEEBIOskipN%
+\advance\@IEEEtrantmpdimenA by 1\baselineskip%
+% if this page does not have enough space, break it and lets start
+% with a new one
+\@IEEEtranneedspace{\@IEEEtrantmpdimenA}{\relax}%
+% nominal spacer can strech, not shrink use 1fil so user can out stretch with \vfill
+\vskip \@IEEEBIOskipN plus 1fil minus 0\baselineskip%
+% the default box for where the photo goes
+\def\@IEEEtempbiographybox{{\setlength{\fboxsep}{0pt}\framebox{%
+\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}\centering PLACE\\ PHOTO\\ HERE \end{minipage}}}}%
+%
+% detect if the optional argument was supplied, this requires the
+% \@ifmtarg command as defined in the appendix section above
+% and if so, override the default box with what they want
+\@ifmtarg{#1}{\relax}{\def\@IEEEtempbiographybox{\mbox{\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}%
+\centering%
+#1%
+\end{minipage}}}}% end if optional argument supplied
+% Make an entry into the table of contents only if we have not done so before
+\if@IEEEbiographyTOCentrynotmade%
+% link labels to the biography counter so hyperref will jump
+% to the biography, not the previous section
+\setcounter{IEEEbiography}{-1}%
+\refstepcounter{IEEEbiography}%
+\addcontentsline{toc}{section}{Biographies}%
+\global\@IEEEbiographyTOCentrynotmadefalse%
+\fi%
+% one more biography
+\refstepcounter{IEEEbiography}%
+% Make an entry for this name into the table of contents
+\addcontentsline{toc}{subsection}{#2}%
+% V1.6 properly handle if a new paragraph should occur while the
+% hanging indent is still active. Do this by redefining \par so
+% that it will not start a new paragraph. (But it will appear to the
+% user as if it did.) Also, strip any leading pars, newlines, or spaces.
+\let\@IEEEBIOORGparCMD=\par% save the original \par command
+\edef\par{\hfil\break\indent}% the new \par will not be a "real" \par
+\settoheight{\@IEEEtrantmpdimenA}{\@IEEEtempbiographybox}% get height of biography box
+\@IEEEtrantmpdimenB=\@IEEEBIOhangdepth%
+\@IEEEtrantmpcountA=\@IEEEtrantmpdimenB% countA has the hang depth
+\divide\@IEEEtrantmpcountA by \baselineskip% calculates lines needed to produce the hang depth
+\advance\@IEEEtrantmpcountA by 1% ensure we overestimate
+% set the hanging indent
+\hangindent\@IEEEBIOhangwidth%
+\hangafter-\@IEEEtrantmpcountA%
+% reference the top of the photo area to the top of a capital T
+\settoheight{\@IEEEtrantmpdimenB}{\mbox{T}}%
+% set the photo box, give it zero width and height so as not to disturb anything
+\noindent\makebox[0pt][l]{\hspace{-\@IEEEBIOhangwidth}\raisebox{\@IEEEtrantmpdimenB}[0pt][0pt]{%
+\raisebox{-\@IEEEBIOphotodepth}[0pt][0pt]{\@IEEEtempbiographybox}}}%
+% now place the author name and begin the bio text
+\noindent\textbf{#2\ }\@IEEEgobbleleadPARNLSP}{\relax\let\par=\@IEEEBIOORGparCMD\par%
+% 7/2001 V1.5 detect when the biography text is shorter than the photo area
+% and pad the unused area - preventing a collision from the next biography entry
+% MDS
+\ifnum \prevgraf <\@IEEEtrantmpcountA\relax% detect when the biography text is shorter than the photo
+ \advance\@IEEEtrantmpcountA by -\prevgraf% calculate how many lines we need to pad
+ \advance\@IEEEtrantmpcountA by -1\relax% we compensate for the fact that we indented an extra line
+ \@IEEEtrantmpdimenA=\baselineskip% calculate the length of the padding
+ \multiply\@IEEEtrantmpdimenA by \@IEEEtrantmpcountA%
+ \noindent\rule{0pt}{\@IEEEtrantmpdimenA}% insert an invisible support strut
+\fi%
+\par\normalfont}
+
+
+
+% V1.6
+% added biography without a photo environment
+\newenvironment{IEEEbiographynophoto}[1]{%
+% Make an entry into the table of contents only if we have not done so before
+\if@IEEEbiographyTOCentrynotmade%
+% link labels to the biography counter so hyperref will jump
+% to the biography, not the previous section
+\setcounter{IEEEbiography}{-1}%
+\refstepcounter{IEEEbiography}%
+\addcontentsline{toc}{section}{Biographies}%
+\global\@IEEEbiographyTOCentrynotmadefalse%
+\fi%
+% one more biography
+\refstepcounter{IEEEbiography}%
+% Make an entry for this name into the table of contents
+\addcontentsline{toc}{subsection}{#1}%
+\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize\interlinepenalty500%
+\vskip 4\baselineskip plus 1fil minus 0\baselineskip%
+\parskip=0pt\par%
+\noindent\textbf{#1\ }\@IEEEgobbleleadPARNLSP}{\relax\par\normalfont}
+
+
+% provide the user with some old font commands
+% got this from article.cls
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
+
+
+% SPECIAL PAPER NOTICE COMMANDS
+%
+% holds the special notice text
+\def\@IEEEspecialpapernotice{\relax}
+
+% for special papers, like invited papers, the user can do:
+% \IEEEspecialpapernotice{(Invited Paper)} before \maketitle
+\def\IEEEspecialpapernotice#1{\ifCLASSOPTIONconference%
+\def\@IEEEspecialpapernotice{{\sublargesize\textit{#1}\vspace*{1em}}}%
+\else%
+\def\@IEEEspecialpapernotice{{\\*[1.5ex]\sublargesize\textit{#1}}\vspace*{-2ex}}%
+\fi}
+
+
+
+
+% PUBLISHER ID COMMANDS
+% to insert a publisher's ID footer
+% V1.6 \IEEEpubid has been changed so that the change in page size and style
+% occurs in \maketitle. \IEEEpubid must now be issued prior to \maketitle
+% use \IEEEpubidadjcol as before - in the second column of the title page
+% These changes allow \maketitle to take the reduced page height into
+% consideration when dynamically setting the space between the author
+% names and the maintext.
+%
+% the amount the main text is pulled up to make room for the
+% publisher's ID footer
+% The IEEE uses about 1.3\baselineskip for journals,
+% dynamic title spacing will clean up the fraction
+\def\@IEEEpubidpullup{1.3\baselineskip}
+\ifCLASSOPTIONtechnote
+% for technotes it must be an integer of baselineskip as there can be no
+% dynamic title spacing for two column mode technotes (the title is in the
+% in first column) and we should maintain an integer number of lines in the
+% second column
+% There are some examples (such as older issues of "Transactions on
+% Information Theory") in which the IEEE really pulls the text off the ID for
+% technotes - about 0.55in (or 4\baselineskip). We'll use 2\baselineskip
+% and call it even.
+\def\@IEEEpubidpullup{2\baselineskip}
+\fi
+
+% V1.7 compsoc does not use a pullup
+\ifCLASSOPTIONcompsoc
+\def\@IEEEpubidpullup{0pt}
+\fi
+
+% holds the ID text
+\def\@IEEEpubid{\relax}
+
+% flag so \maketitle can tell if \IEEEpubid was called
+\newif\if@IEEEusingpubid
+\global\@IEEEusingpubidfalse
+% issue this command in the page to have the ID at the bottom
+% V1.6 use before \maketitle
+\def\IEEEpubid#1{\def\@IEEEpubid{#1}\global\@IEEEusingpubidtrue}
+
+
+% command which will pull up (shorten) the column it is executed in
+% to make room for the publisher ID. Place in the second column of
+% the title page when using \IEEEpubid
+% Is smart enough not to do anything when in single column text or
+% if the user hasn't called \IEEEpubid
+% currently needed in for the second column of a page with the
+% publisher ID. If not needed in future releases, please provide this
+% command and define it as \relax for backward compatibility
+% v1.6b do not allow command to operate if the peer review option has been
+% selected because \IEEEpubidadjcol will not be on the cover page.
+% V1.7 do nothing if compsoc
+\def\IEEEpubidadjcol{\ifCLASSOPTIONcompsoc\else\ifCLASSOPTIONpeerreview\else
+\if@twocolumn\if@IEEEusingpubid\enlargethispage{-\@IEEEpubidpullup}\fi\fi\fi\fi}
+
+% Special thanks to Peter Wilson, Daniel Luecking, and the other
+% gurus at comp.text.tex, for helping me to understand how best to
+% implement the IEEEpubid command in LaTeX.
+
+
+
+%% Lockout some commands under various conditions
+
+% general purpose bit bucket
+\newsavebox{\@IEEEtranrubishbin}
+
+% flags to prevent multiple warning messages
+\newif\if@IEEEWARNthanks
+\newif\if@IEEEWARNIEEEPARstart
+\newif\if@IEEEWARNIEEEbiography
+\newif\if@IEEEWARNIEEEbiographynophoto
+\newif\if@IEEEWARNIEEEpubid
+\newif\if@IEEEWARNIEEEpubidadjcol
+\newif\if@IEEEWARNIEEEmembership
+\newif\if@IEEEWARNIEEEaftertitletext
+\@IEEEWARNthankstrue
+\@IEEEWARNIEEEPARstarttrue
+\@IEEEWARNIEEEbiographytrue
+\@IEEEWARNIEEEbiographynophototrue
+\@IEEEWARNIEEEpubidtrue
+\@IEEEWARNIEEEpubidadjcoltrue
+\@IEEEWARNIEEEmembershiptrue
+\@IEEEWARNIEEEaftertitletexttrue
+
+
+%% Lockout some commands when in various modes, but allow them to be restored if needed
+%%
+% save commands which might be locked out
+% so that the user can later restore them if needed
+\let\@IEEESAVECMDthanks\thanks
+\let\@IEEESAVECMDIEEEPARstart\IEEEPARstart
+\let\@IEEESAVECMDIEEEbiography\IEEEbiography
+\let\@IEEESAVECMDendIEEEbiography\endIEEEbiography
+\let\@IEEESAVECMDIEEEbiographynophoto\IEEEbiographynophoto
+\let\@IEEESAVECMDendIEEEbiographynophoto\endIEEEbiographynophoto
+\let\@IEEESAVECMDIEEEpubid\IEEEpubid
+\let\@IEEESAVECMDIEEEpubidadjcol\IEEEpubidadjcol
+\let\@IEEESAVECMDIEEEmembership\IEEEmembership
+\let\@IEEESAVECMDIEEEaftertitletext\IEEEaftertitletext
+
+
+% disable \IEEEPARstart when in draft mode
+% This may have originally been done because the pre-V1.6 drop letter
+% algorithm had problems with a non-unity baselinestretch
+% At any rate, it seems too formal to have a drop letter in a draft
+% paper.
+\ifCLASSOPTIONdraftcls
+\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** ATTENTION: \noexpand\IEEEPARstart
+ is disabled in draft mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse}
+\fi
+% and for technotes
+\ifCLASSOPTIONtechnote
+\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart
+ is locked out for technotes (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse}
+\fi
+
+
+% lockout unneeded commands when in conference mode
+\ifCLASSOPTIONconference
+% when locked out, \thanks, \IEEEbiography, \IEEEbiographynophoto, \IEEEpubid,
+% \IEEEmembership and \IEEEaftertitletext will all swallow their given text.
+% \IEEEPARstart will output a normal character instead
+% warn the user about these commands only once to prevent the console screen
+% from filling up with redundant messages
+\def\thanks#1{\if@IEEEWARNthanks\typeout{** WARNING: \noexpand\thanks
+ is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNthanksfalse}
+\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart
+ is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse}
+
+
+% LaTeX treats environments and commands with optional arguments differently.
+% the actual ("internal") command is stored as \\commandname
+% (accessed via \csname\string\commandname\endcsname )
+% the "external" command \commandname is a macro with code to determine
+% whether or not the optional argument is presented and to provide the
+% default if it is absent. So, in order to save and restore such a command
+% we would have to save and restore \\commandname as well. But, if LaTeX
+% ever changes the way it names the internal names, the trick would break.
+% Instead let us just define a new environment so that the internal
+% name can be left undisturbed.
+\newenvironment{@IEEEbogusbiography}[2][]{\if@IEEEWARNIEEEbiography\typeout{** WARNING: \noexpand\IEEEbiography
+ is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographyfalse%
+\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax}
+% and make biography point to our bogus biography
+\let\IEEEbiography=\@IEEEbogusbiography
+\let\endIEEEbiography=\end@IEEEbogusbiography
+
+\renewenvironment{IEEEbiographynophoto}[1]{\if@IEEEWARNIEEEbiographynophoto\typeout{** WARNING: \noexpand\IEEEbiographynophoto
+ is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographynophotofalse%
+\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax}
+
+\def\IEEEpubid#1{\if@IEEEWARNIEEEpubid\typeout{** WARNING: \noexpand\IEEEpubid
+ is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidfalse}
+\def\IEEEpubidadjcol{\if@IEEEWARNIEEEpubidadjcol\typeout{** WARNING: \noexpand\IEEEpubidadjcol
+ is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidadjcolfalse}
+\def\IEEEmembership#1{\if@IEEEWARNIEEEmembership\typeout{** WARNING: \noexpand\IEEEmembership
+ is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEmembershipfalse}
+\def\IEEEaftertitletext#1{\if@IEEEWARNIEEEaftertitletext\typeout{** WARNING: \noexpand\IEEEaftertitletext
+ is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEaftertitletextfalse}
+\fi
+
+
+% provide a way to restore the commands that are locked out
+\def\IEEEoverridecommandlockouts{%
+\typeout{** ATTENTION: Overriding command lockouts (line \the\inputlineno).}%
+\let\thanks\@IEEESAVECMDthanks%
+\let\IEEEPARstart\@IEEESAVECMDIEEEPARstart%
+\let\IEEEbiography\@IEEESAVECMDIEEEbiography%
+\let\endIEEEbiography\@IEEESAVECMDendIEEEbiography%
+\let\IEEEbiographynophoto\@IEEESAVECMDIEEEbiographynophoto%
+\let\endIEEEbiographynophoto\@IEEESAVECMDendIEEEbiographynophoto%
+\let\IEEEpubid\@IEEESAVECMDIEEEpubid%
+\let\IEEEpubidadjcol\@IEEESAVECMDIEEEpubidadjcol%
+\let\IEEEmembership\@IEEESAVECMDIEEEmembership%
+\let\IEEEaftertitletext\@IEEESAVECMDIEEEaftertitletext}
+
+
+
+% need a backslash character for typeout output
+{\catcode`\|=0 \catcode`\\=12
+|xdef|@IEEEbackslash{\}}
+
+
+% hook to allow easy disabling of all legacy warnings
+\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is deprecated (line \the\inputlineno).
+Use \@IEEEbackslash #2 instead.}}
+
+
+% provide some legacy IEEEtran commands
+\def\IEEEcompsoctitleabstractindextext{\@IEEElegacywarn{IEEEcompsoctitleabstractindextext}{IEEEtitleabstractindextext}\IEEEtitleabstractindextext}
+\def\IEEEdisplaynotcompsoctitleabstractindextext{\@IEEElegacywarn{IEEEdisplaynotcompsoctitleabstractindextext}{IEEEdisplaynontitleabstractindextext}\IEEEdisplaynontitleabstractindextext}
+% provide some legacy IEEEtran environments
+
+
+% V1.8a no more support for these legacy commands
+%\def\authorblockA{\@IEEElegacywarn{authorblockA}{IEEEauthorblockA}\IEEEauthorblockA}
+%\def\authorblockN{\@IEEElegacywarn{authorblockN}{IEEEauthorblockN}\IEEEauthorblockN}
+%\def\authorrefmark{\@IEEElegacywarn{authorrefmark}{IEEEauthorrefmark}\IEEEauthorrefmark}
+%\def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart}
+%\def\pubid{\@IEEElegacywarn{pubid}{IEEEpubid}\IEEEpubid}
+%\def\pubidadjcol{\@IEEElegacywarn{pubidadjcol}{IEEEpubidadjcol}\IEEEpubidadjcol}
+%\def\specialpapernotice{\@IEEElegacywarn{specialpapernotice}{IEEEspecialpapernotice}\IEEEspecialpapernotice}
+% and environments
+%\def\keywords{\@IEEElegacywarn{keywords}{IEEEkeywords}\IEEEkeywords}
+%\def\endkeywords{\endIEEEkeywords}
+% V1.8 no more support for legacy IED list commands
+%\let\labelindent\IEEElabelindent
+%\def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin}
+%\def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth}
+%\def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep}
+%\def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc}
+%\def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl}
+%\def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr}
+% V1.8 no more support for QED and proof stuff
+%\def\QED{\@IEEElegacywarn{QED}{IEEEQED}\IEEEQED}
+%\def\QEDclosed{\@IEEElegacywarn{QEDclosed}{IEEEQEDclosed}\IEEEQEDclosed}
+%\def\QEDopen{\@IEEElegacywarn{QEDopen}{IEEEQEDopen}\IEEEQEDopen}
+%\AtBeginDocument{\def\proof{\@IEEElegacywarn{proof}{IEEEproof}\IEEEproof}\def\endproof{\endIEEEproof}}
+% V1.8 no longer support biography or biographynophoto
+%\def\biography{\@IEEElegacywarn{biography}{IEEEbiography}\IEEEbiography}
+%\def\biographynophoto{\@IEEElegacywarn{biographynophoto}{IEEEbiographynophoto}\IEEEbiographynophoto}
+%\def\endbiography{\endIEEEbiography}
+%\def\endbiographynophoto{\endIEEEbiographynophoto}
+% V1.7 and later no longer supports \overrideIEEEmargins
+%\def\overrideIEEEmargins{%
+%\typeout{** WARNING: \string\overrideIEEEmargins \space no longer supported (line \the\inputlineno).}%
+%\typeout{** Use the \string\CLASSINPUTinnersidemargin, \string\CLASSINPUToutersidemargin \space controls instead.}}
+
+\endinput
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtran.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% That's all folks!
+
diff --git a/macros/latex/contrib/IEEEtran/IEEEtran_HOWTO.pdf b/macros/latex/contrib/IEEEtran/IEEEtran_HOWTO.pdf
new file mode 100644
index 0000000000..c8e41daaa3
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/IEEEtran_HOWTO.pdf
Binary files differ
diff --git a/macros/latex/contrib/IEEEtran/README b/macros/latex/contrib/IEEEtran/README
new file mode 100644
index 0000000000..0454aa4e97
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/README
@@ -0,0 +1,140 @@
+
+August 26, 2015
+
+
+IEEEtran is a LaTeX class for authors of the Institute of Electrical and
+Electronics Engineers (IEEE) transactions journals and conferences.
+The latest version of the IEEEtran package can be found at CTAN:
+
+http://www.ctan.org/pkg/ieeetran
+
+as well as within IEEE's site:
+
+http://www.ieee.org/
+
+For latest news, helpful tips, answers to frequently asked questions,
+beta releases and other support, visit the IEEEtran home page at my
+website:
+
+http://www.michaelshell.org/tex/ieeetran/
+
+Version 1.8b has a number of significant changes over the v1.8a release.
+For a full history of changes, please read the file changelog.txt.
+The most notable changes in this release include:
+
+ 1) Added new comsoc mode for the IEEE Communications Society.
+ This mode (at present) only invokes the use of the newtxmath math fonts.
+
+ 2) Revised IEEEeqnarray column specifications to work with active "
+ (or other punctuation catcode changes) as with babel under the
+ german or ngerman language modes.
+ Thanks to Stefan M. Moser for reporting this problem.
+
+ 3) Added \indexspace and other index related macros as newer versions of
+ article.cls now do. These macros are needed to avoid an error when
+ using the glossaries package.
+ Thanks to Sebastian Nyberg for suggesting this change.
+
+ 4) Fixed odd/even page header font bug under compsoc mode and
+ other page style code improvements.
+ Thanks to Marco Paolieri for reporting this problem.
+
+ 5) Added hooks to allow for easy control of spacing above title.
+
+ 6) Added the \IEEEnoauxwrite command.
+ Thanks to Sudarshan Mukherjee for suggesting this feature.
+
+
+NOTE: Take care not to confuse the "comsoc" and "compsoc" class
+options/modes as they are very different:
+
+comsoc ==> IEEE Communications Society
+compsoc ==> IEEE Computer Society
+
+The comsoc mode requires that an acceptable Times math font be available on
+the LaTeX system. This requirement will be enforced by IEEEtran in comsoc
+mode. Either the freely available newtxmath font by Michael Sharpe
+http://www.ctan.org/pkg/newtx
+(version 1.451, July 28, 2015 or later is recommended)
+or the commercial MathTime font (e.g., mtpro2.sty) is acceptable.
+See Section II-D (2.4) "Class Options - comsoc, compsoc, transmag" of
+the IEEEtran HOWTO for more details.
+
+
+Best wishes for all your publication endeavors,
+
+Michael Shell
+http://www.michaelshell.org/
+
+
+***************************** Subdirectories ******************************
+
+bibtex - The IEEEtran BibTeX style package.
+
+extras - Supplementary material that may be of interest.
+
+testflow - The testflow diagnostic suite for verifying PS/PDF output.
+
+tools - The IEEEtrantools.sty package which provides several commands
+ from the IEEEtran.cls file for use with other LaTeX classes.
+
+
+********************************** Files **********************************
+
+README - This file.
+
+IEEEtran.cls - The IEEEtran LaTeX class file.
+
+changelog.txt - The revision history.
+
+IEEEtran_HOWTO.pdf - The IEEEtran LaTeX class user manual.
+
+bare_conf.tex - A bare bones starter file for IEEE conference papers.
+
+bare_conf_compsoc.tex - A bare bones starter file for IEEE Computer Society
+ conference papers.
+
+bare_jrnl.tex - A bare bones starter file for IEEE journal papers.
+
+bare_jrnl_comsoc.tex - A bare bones starter file for IEEE Communications
+ Society journal papers.
+
+bare_jrnl_compsoc.tex - A bare bones starter file for IEEE Computer Society
+ journal papers.
+
+bare_jrnl_transmag.tex - A bare bones starter file for IEEE Transactions
+ on Magnetics journal papers.
+
+bare_adv.tex - A bare bones starter file showing advanced
+ techniques such as conditional compilation,
+ hyperlinks, PDF thumbnails, etc. The illustrated
+ format is for an IEEE Computer Society journal paper.
+
+***************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall the IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+
+File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex,
+ bare_conf.tex, bare_conf_compsoc.tex,
+ bare_jrnl.tex, bare_jrnl_comsoc.tex,
+ bare_jrnl_compsoc.tex, bare_jrnl_transmag.tex
+***************************************************************************
diff --git a/macros/latex/contrib/IEEEtran/bare_adv.tex b/macros/latex/contrib/IEEEtran/bare_adv.tex
new file mode 100644
index 0000000000..44b34e7c42
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bare_adv.tex
@@ -0,0 +1,943 @@
+
+%% bare_adv.tex
+%% V1.4b
+%% 2015/08/26
+%% by Michael Shell
+%% See:
+%% http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% This is a skeleton file demonstrating the advanced use of IEEEtran.cls
+%% (requires IEEEtran.cls version 1.8b or later) with an IEEE Computer
+%% Society journal paper.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and
+%% http://www.ieee.org/
+
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+% *** Authors should verify (and, if needed, correct) their LaTeX system ***
+% *** with the testflow diagnostic prior to trusting their LaTeX platform ***
+% *** with production work. The IEEE's font choices and paper sizes can ***
+% *** trigger bugs that do not appear when using other class files. *** ***
+% The testflow support page is at:
+% http://www.michaelshell.org/tex/testflow/
+
+
+% IEEEtran V1.7 and later provides for these CLASSINPUT macros to allow the
+% user to reprogram some IEEEtran.cls defaults if needed. These settings
+% override the internal defaults of IEEEtran.cls regardless of which class
+% options are used. Do not use these unless you have good reason to do so as
+% they can result in nonIEEE compliant documents. User beware. ;)
+%
+%\newcommand{\CLASSINPUTbaselinestretch}{1.0} % baselinestretch
+%\newcommand{\CLASSINPUTinnersidemargin}{1in} % inner side margin
+%\newcommand{\CLASSINPUToutersidemargin}{1in} % outer side margin
+%\newcommand{\CLASSINPUTtoptextmargin}{1in} % top text margin
+%\newcommand{\CLASSINPUTbottomtextmargin}{1in}% bottom text margin
+
+
+
+
+%
+\documentclass[10pt,journal,compsoc]{IEEEtran}
+% If IEEEtran.cls has not been installed into the LaTeX system files,
+% manually specify the path to it like:
+% \documentclass[10pt,journal,compsoc]{../sty/IEEEtran}
+
+
+% For Computer Society journals, IEEEtran defaults to the use of
+% Palatino/Palladio as is done in IEEE Computer Society journals.
+% To go back to Times Roman, you can use this code:
+%\renewcommand{\rmdefault}{ptm}\selectfont
+
+
+
+
+
+% Some very useful LaTeX packages include:
+% (uncomment the ones you want to load)
+
+
+
+% *** MISC UTILITY PACKAGES ***
+%
+%\usepackage{ifpdf}
+% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional
+% compilation based on whether the output is pdf or dvi.
+% usage:
+% \ifpdf
+% % pdf code
+% \else
+% % dvi code
+% \fi
+% The latest version of ifpdf.sty can be obtained from:
+% http://www.ctan.org/pkg/ifpdf
+% Also, note that IEEEtran.cls V1.7 and later provides a builtin
+% \ifCLASSINFOpdf conditional that works the same way.
+% When switching from latex to pdflatex and vice-versa, the compiler may
+% have to be run twice to clear warning/error messages.
+
+
+
+
+
+
+% *** CITATION PACKAGES ***
+%
+\ifCLASSOPTIONcompsoc
+ % The IEEE Computer Society needs nocompress option
+ % requires cite.sty v4.0 or later (November 2003)
+ \usepackage[nocompress]{cite}
+\else
+ % normal IEEE
+ \usepackage{cite}
+\fi
+% cite.sty was written by Donald Arseneau
+% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package
+% \cite{} output to follow that of the IEEE. Loading the cite package will
+% result in citation numbers being automatically sorted and properly
+% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using
+% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's
+% \cite will automatically add leading space, if needed. Use cite.sty's
+% noadjust option (cite.sty V3.8 and later) if you want to turn this off
+% such as if a citation ever needs to be enclosed in parenthesis.
+% cite.sty is already installed on most LaTeX systems. Be sure and use
+% version 5.0 (2009-03-20) and later if using hyperref.sty.
+% The latest version can be obtained at:
+% http://www.ctan.org/pkg/cite
+% The documentation is contained in the cite.sty file itself.
+%
+% Note that some packages require special options to format as the Computer
+% Society requires. In particular, Computer Society papers do not use
+% compressed citation ranges as is done in typical IEEE papers
+% (e.g., [1]-[4]). Instead, they list every citation separately in order
+% (e.g., [1], [2], [3], [4]). To get the latter we need to load the cite
+% package with the nocompress option which is supported by cite.sty v4.0
+% and later.
+
+
+
+
+
+% *** GRAPHICS RELATED PACKAGES ***
+%
+\ifCLASSINFOpdf
+ % \usepackage[pdftex]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../pdf/}{../jpeg/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+\else
+ % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
+ % will default to the driver specified in the system graphics.cfg if no
+ % driver is specified.
+ % \usepackage[dvips]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../eps/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.eps}
+\fi
+% graphicx was written by David Carlisle and Sebastian Rahtz. It is
+% required if you want graphics, photos, etc. graphicx.sty is already
+% installed on most LaTeX systems. The latest version and documentation
+% can be obtained at:
+% http://www.ctan.org/pkg/graphicx
+% Another good source of documentation is "Using Imported Graphics in
+% LaTeX2e" by Keith Reckdahl which can be found at:
+% http://www.ctan.org/pkg/epslatex
+%
+% latex, and pdflatex in dvi mode, support graphics in encapsulated
+% postscript (.eps) format. pdflatex in pdf mode supports graphics
+% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure
+% that all non-photo figures use a vector format (.eps, .pdf, .mps) and
+% not a bitmapped formats (.jpeg, .png). The IEEE frowns on bitmapped formats
+% which can result in "jaggedy"/blurry rendering of lines and letters as
+% well as large increases in file sizes.
+%
+% You can find documentation about the pdfTeX application at:
+% http://www.tug.org/applications/pdftex
+
+
+
+
+
+% *** MATH PACKAGES ***
+%
+%\usepackage{amsmath}
+% A popular package from the American Mathematical Society that provides
+% many useful and powerful commands for dealing with mathematics.
+%
+% Note that the amsmath package sets \interdisplaylinepenalty to 10000
+% thus preventing page breaks from occurring within multiline equations. Use:
+%\interdisplaylinepenalty=2500
+% after loading amsmath to restore such page breaks as IEEEtran.cls normally
+% does. amsmath.sty is already installed on most LaTeX systems. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/amsmath
+
+
+
+
+
+% *** SPECIALIZED LIST PACKAGES ***
+%\usepackage{acronym}
+% acronym.sty was written by Tobias Oetiker. This package provides tools for
+% managing documents with large numbers of acronyms. (You don't *have* to
+% use this package - unless you have a lot of acronyms, you may feel that
+% such package management of them is bit of an overkill.)
+% Do note that the acronym environment (which lists acronyms) will have a
+% problem when used under IEEEtran.cls because acronym.sty relies on the
+% description list environment - which IEEEtran.cls has customized for
+% producing IEEE style lists. A workaround is to declared the longest
+% label width via the IEEEtran.cls \IEEEiedlistdecl global control:
+%
+% \renewcommand{\IEEEiedlistdecl}{\IEEEsetlabelwidth{SONET}}
+% \begin{acronym}
+%
+% \end{acronym}
+% \renewcommand{\IEEEiedlistdecl}{\relax}% remember to reset \IEEEiedlistdecl
+%
+% instead of using the acronym environment's optional argument.
+% The latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/acronym
+
+
+%\usepackage{algorithmic}
+% algorithmic.sty was written by Peter Williams and Rogerio Brito.
+% This package provides an algorithmic environment fo describing algorithms.
+% You can use the algorithmic environment in-text or within a figure
+% environment to provide for a floating algorithm. Do NOT use the algorithm
+% floating environment provided by algorithm.sty (by the same authors) or
+% algorithm2e.sty (by Christophe Fiorio) as the IEEE does not use dedicated
+% algorithm float types and packages that provide these will not provide
+% correct IEEE style captions. The latest version and documentation of
+% algorithmic.sty can be obtained at:
+% http://www.ctan.org/pkg/algorithms
+% Also of interest may be the (relatively newer and more customizable)
+% algorithmicx.sty package by Szasz Janos:
+% http://www.ctan.org/pkg/algorithmicx
+
+
+
+
+% *** ALIGNMENT PACKAGES ***
+%
+%\usepackage{array}
+% Frank Mittelbach's and David Carlisle's array.sty patches and improves
+% the standard LaTeX2e array and tabular environments to provide better
+% appearance and additional user controls. As the default LaTeX2e table
+% generation code is lacking to the point of almost being broken with
+% respect to the quality of the end results, all users are strongly
+% advised to use an enhanced (at the very least that provided by array.sty)
+% set of table tools. array.sty is already installed on most systems. The
+% latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/array
+
+
+%\usepackage{mdwmath}
+%\usepackage{mdwtab}
+% Also highly recommended is Mark Wooding's extremely powerful MDW tools,
+% especially mdwmath.sty and mdwtab.sty which are used to format equations
+% and tables, respectively. The MDWtools set is already installed on most
+% LaTeX systems. The lastest version and documentation is available at:
+% http://www.ctan.org/pkg/mdwtools
+
+
+% IEEEtran contains the IEEEeqnarray family of commands that can be used to
+% generate multiline equations as well as matrices, tables, etc., of high
+% quality.
+
+
+%\usepackage{eqparbox}
+% Also of notable interest is Scott Pakin's eqparbox package for creating
+% (automatically sized) equal width boxes - aka "natural width parboxes".
+% Available at:
+% http://www.ctan.org/pkg/eqparbox
+
+
+
+
+% *** SUBFIGURE PACKAGES ***
+%\ifCLASSOPTIONcompsoc
+% \usepackage[caption=false,font=footnotesize,labelfont=sf,textfont=sf]{subfig}
+%\else
+% \usepackage[caption=false,font=footnotesize]{subfig}
+%\fi
+% subfig.sty, written by Steven Douglas Cochran, is the modern replacement
+% for subfigure.sty, the latter of which is no longer maintained and is
+% incompatible with some LaTeX packages including fixltx2e. However,
+% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty
+% which will override IEEEtran.cls' handling of captions and this will result
+% in non-IEEE style figure/table captions. To prevent this problem, be sure
+% and invoke subfig.sty's "caption=false" package option (available since
+% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls
+% handling of captions.
+% Note that the Computer Society format requires a sans serif font rather
+% than the serif font used in traditional IEEE formatting and thus the need
+% to invoke different subfig.sty package options depending on whether
+% compsoc mode has been enabled.
+%
+% The latest version and documentation of subfig.sty can be obtained at:
+% http://www.ctan.org/pkg/subfig
+
+
+
+
+% *** FLOAT PACKAGES ***
+%
+%\usepackage{fixltx2e}
+% fixltx2e, the successor to the earlier fix2col.sty, was written by
+% Frank Mittelbach and David Carlisle. This package corrects a few problems
+% in the LaTeX2e kernel, the most notable of which is that in current
+% LaTeX2e releases, the ordering of single and double column floats is not
+% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a
+% single column figure to be placed prior to an earlier double column
+% figure.
+% Be aware that LaTeX2e kernels dated 2015 and later have fixltx2e.sty's
+% corrections already built into the system in which case a warning will
+% be issued if an attempt is made to load fixltx2e.sty as it is no longer
+% needed.
+% The latest version and documentation can be found at:
+% http://www.ctan.org/pkg/fixltx2e
+
+
+%\usepackage{stfloats}
+% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e
+% the ability to do double column floats at the bottom of the page as well
+% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in
+% LaTeX2e). It also provides a command:
+%\fnbelowfloat
+% to enable the placement of footnotes below bottom floats (the standard
+% LaTeX2e kernel puts them above bottom floats). This is an invasive package
+% which rewrites many portions of the LaTeX2e float routines. It may not work
+% with other packages that modify the LaTeX2e float routines. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/stfloats
+% Do not use the stfloats baselinefloat ability as the IEEE does not allow
+% \baselineskip to stretch. Authors submitting work to the IEEE should note
+% that the IEEE rarely uses double column equations and that authors should try
+% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty
+% packages (also by Sigitas Tolusis) as the IEEE does not format its papers in
+% such ways.
+% Do not attempt to use stfloats with fixltx2e as they are incompatible.
+% Instead, use Morten Hogholm'a dblfloatfix which combines the features
+% of both fixltx2e and stfloats:
+%
+% \usepackage{dblfloatfix}
+% The latest version can be found at:
+% http://www.ctan.org/pkg/dblfloatfix
+
+
+%\ifCLASSOPTIONcaptionsoff
+% \usepackage[nomarkers]{endfloat}
+% \let\MYoriglatexcaption\caption
+% \renewcommand{\caption}[2][\relax]{\MYoriglatexcaption[#2]{#2}}
+%\fi
+% endfloat.sty was written by James Darrell McCauley, Jeff Goldberg and
+% Axel Sommerfeldt. This package may be useful when used in conjunction with
+% IEEEtran.cls' captionsoff option. Some IEEE journals/societies require that
+% submissions have lists of figures/tables at the end of the paper and that
+% figures/tables without any captions are placed on a page by themselves at
+% the end of the document. If needed, the draftcls IEEEtran class option or
+% \CLASSINPUTbaselinestretch interface can be used to increase the line
+% spacing as well. Be sure and use the nomarkers option of endfloat to
+% prevent endfloat from "marking" where the figures would have been placed
+% in the text. The two hack lines of code above are a slight modification of
+% that suggested by in the endfloat docs (section 8.4.1) to ensure that
+% the full captions always appear in the list of figures/tables - even if
+% the user used the short optional argument of \caption[]{}.
+% IEEE papers do not typically make use of \caption[]'s optional argument,
+% so this should not be an issue. A similar trick can be used to disable
+% captions of packages such as subfig.sty that lack options to turn off
+% the subcaptions:
+% For subfig.sty:
+% \let\MYorigsubfloat\subfloat
+% \renewcommand{\subfloat}[2][\relax]{\MYorigsubfloat[]{#2}}
+% However, the above trick will not work if both optional arguments of
+% the \subfloat command are used. Furthermore, there needs to be a
+% description of each subfigure *somewhere* and endfloat does not add
+% subfigure captions to its list of figures. Thus, the best approach is to
+% avoid the use of subfigure captions (many IEEE journals avoid them anyway)
+% and instead reference/explain all the subfigures within the main caption.
+% The latest version of endfloat.sty and its documentation can obtained at:
+% http://www.ctan.org/pkg/endfloat
+%
+% The IEEEtran \ifCLASSOPTIONcaptionsoff conditional can also be used
+% later in the document, say, to conditionally put the References on a
+% page by themselves.
+
+
+
+
+
+% *** PDF, URL AND HYPERLINK PACKAGES ***
+%
+%\usepackage{url}
+% url.sty was written by Donald Arseneau. It provides better support for
+% handling and breaking URLs. url.sty is already installed on most LaTeX
+% systems. The latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/url
+% Basically, \url{my_url_here}.
+
+
+% NOTE: PDF thumbnail features are not required in IEEE papers
+% and their use requires extra complexity and work.
+%\ifCLASSINFOpdf
+% \usepackage[pdftex]{thumbpdf}
+%\else
+% \usepackage[dvips]{thumbpdf}
+%\fi
+% thumbpdf.sty and its companion Perl utility were written by Heiko Oberdiek.
+% It allows the user a way to produce PDF documents that contain fancy
+% thumbnail images of each of the pages (which tools like acrobat reader can
+% utilize). This is possible even when using dvi->ps->pdf workflow if the
+% correct thumbpdf driver options are used. thumbpdf.sty incorporates the
+% file containing the PDF thumbnail information (filename.tpm is used with
+% dvips, filename.tpt is used with pdftex, where filename is the base name of
+% your tex document) into the final ps or pdf output document. An external
+% utility, the thumbpdf *Perl script* is needed to make these .tpm or .tpt
+% thumbnail files from a .ps or .pdf version of the document (which obviously
+% does not yet contain pdf thumbnails). Thus, one does a:
+%
+% thumbpdf filename.pdf
+%
+% to make a filename.tpt, and:
+%
+% thumbpdf --mode dvips filename.ps
+%
+% to make a filename.tpm which will then be loaded into the document by
+% thumbpdf.sty the NEXT time the document is compiled (by pdflatex or
+% latex->dvips->ps2pdf). Users must be careful to regenerate the .tpt and/or
+% .tpm files if the main document changes and then to recompile the
+% document to incorporate the revised thumbnails to ensure that thumbnails
+% match the actual pages. It is easy to forget to do this!
+%
+% Unix systems come with a Perl interpreter. However, MS Windows users
+% will usually have to install a Perl interpreter so that the thumbpdf
+% script can be run. The Ghostscript PS/PDF interpreter is also required.
+% See the thumbpdf docs for details. The latest version and documentation
+% can be obtained at.
+% http://www.ctan.org/pkg/thumbpdf
+
+
+% NOTE: PDF hyperlink and bookmark features are not required in IEEE
+% papers and their use requires extra complexity and work.
+% *** IF USING HYPERREF BE SURE AND CHANGE THE EXAMPLE PDF ***
+% *** TITLE/SUBJECT/AUTHOR/KEYWORDS INFO BELOW!! ***
+\newcommand\MYhyperrefoptions{bookmarks=true,bookmarksnumbered=true,
+pdfpagemode={UseOutlines},plainpages=false,pdfpagelabels=true,
+colorlinks=true,linkcolor={black},citecolor={black},urlcolor={black},
+pdftitle={Bare Demo of IEEEtran.cls for Computer Society Journals},%<!CHANGE!
+pdfsubject={Typesetting},%<!CHANGE!
+pdfauthor={Michael D. Shell},%<!CHANGE!
+pdfkeywords={Computer Society, IEEEtran, journal, LaTeX, paper,
+ template}}%<^!CHANGE!
+%\ifCLASSINFOpdf
+%\usepackage[\MYhyperrefoptions,pdftex]{hyperref}
+%\else
+%\usepackage[\MYhyperrefoptions,breaklinks=true,dvips]{hyperref}
+%\usepackage{breakurl}
+%\fi
+% One significant drawback of using hyperref under DVI output is that the
+% LaTeX compiler cannot break URLs across lines or pages as can be done
+% under pdfLaTeX's PDF output via the hyperref pdftex driver. This is
+% probably the single most important capability distinction between the
+% DVI and PDF output. Perhaps surprisingly, all the other PDF features
+% (PDF bookmarks, thumbnails, etc.) can be preserved in
+% .tex->.dvi->.ps->.pdf workflow if the respective packages/scripts are
+% loaded/invoked with the correct driver options (dvips, etc.).
+% As most IEEE papers use URLs sparingly (mainly in the references), this
+% may not be as big an issue as with other publications.
+%
+% That said, Vilar Camara Neto created his breakurl.sty package which
+% permits hyperref to easily break URLs even in dvi mode.
+% Note that breakurl, unlike most other packages, must be loaded
+% AFTER hyperref. The latest version of breakurl and its documentation can
+% be obtained at:
+% http://www.ctan.org/pkg/breakurl
+% breakurl.sty is not for use under pdflatex pdf mode.
+%
+% The advanced features offer by hyperref.sty are not required for IEEE
+% submission, so users should weigh these features against the added
+% complexity of use.
+% The package options above demonstrate how to enable PDF bookmarks
+% (a type of table of contents viewable in Acrobat Reader) as well as
+% PDF document information (title, subject, author and keywords) that is
+% viewable in Acrobat reader's Document_Properties menu. PDF document
+% information is also used extensively to automate the cataloging of PDF
+% documents. The above set of options ensures that hyperlinks will not be
+% colored in the text and thus will not be visible in the printed page,
+% but will be active on "mouse over". USING COLORS OR OTHER HIGHLIGHTING
+% OF HYPERLINKS CAN RESULT IN DOCUMENT REJECTION BY THE IEEE, especially if
+% these appear on the "printed" page. IF IN DOUBT, ASK THE RELEVANT
+% SUBMISSION EDITOR. You may need to add the option hypertexnames=false if
+% you used duplicate equation numbers, etc., but this should not be needed
+% in normal IEEE work.
+% The latest version of hyperref and its documentation can be obtained at:
+% http://www.ctan.org/pkg/hyperref
+
+
+
+
+
+% *** Do not adjust lengths that control margins, column widths, etc. ***
+% *** Do not use packages that alter fonts (such as pslatex). ***
+% There should be no need to do such things with IEEEtran.cls V1.6 and later.
+% (Unless specifically asked to do so by the journal or conference you plan
+% to submit to, of course. )
+
+
+% correct bad hyphenation here
+\hyphenation{op-tical net-works semi-conduc-tor}
+
+
+\begin{document}
+%
+% paper title
+% Titles are generally capitalized except for words such as a, an, and, as,
+% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually
+% not capitalized unless they are the first or last word of the title.
+% Linebreaks \\ can be used within to get better formatting as desired.
+% Do not put math or special symbols in the title.
+\title{Bare Advanced Demo of IEEEtran.cls for\\ IEEE Computer Society Journals}
+%
+%
+% author names and IEEE memberships
+% note positions of commas and nonbreaking spaces ( ~ ) LaTeX will not break
+% a structure at a ~ so this keeps an author's name from being broken across
+% two lines.
+% use \thanks{} to gain access to the first footnote area
+% a separate \thanks must be used for each paragraph as LaTeX2e's \thanks
+% was not built to handle multiple paragraphs
+%
+%
+%\IEEEcompsocitemizethanks is a special \thanks that produces the bulleted
+% lists the Computer Society journals use for "first footnote" author
+% affiliations. Use \IEEEcompsocthanksitem which works much like \item
+% for each affiliation group. When not in compsoc mode,
+% \IEEEcompsocitemizethanks becomes like \thanks and
+% \IEEEcompsocthanksitem becomes a line break with idention. This
+% facilitates dual compilation, although admittedly the differences in the
+% desired content of \author between the different types of papers makes a
+% one-size-fits-all approach a daunting prospect. For instance, compsoc
+% journal papers have the author affiliations above the "Manuscript
+% received ..." text while in non-compsoc journals this is reversed. Sigh.
+
+\author{Michael~Shell,~\IEEEmembership{Member,~IEEE,}
+ John~Doe,~\IEEEmembership{Fellow,~OSA,}
+ and~Jane~Doe,~\IEEEmembership{Life~Fellow,~IEEE}% <-this % stops a space
+\IEEEcompsocitemizethanks{\IEEEcompsocthanksitem M. Shell was with the Department
+of Electrical and Computer Engineering, Georgia Institute of Technology, Atlanta,
+GA, 30332.\protect\\
+% note need leading \protect in front of \\ to get a newline within \thanks as
+% \\ is fragile and will error, could use \hfil\break instead.
+E-mail: see http://www.michaelshell.org/contact.html
+\IEEEcompsocthanksitem J. Doe and J. Doe are with Anonymous University.}% <-this % stops a space
+\thanks{Manuscript received April 19, 2005; revised August 26, 2015.}}
+
+% note the % following the last \IEEEmembership and also \thanks -
+% these prevent an unwanted space from occurring between the last author name
+% and the end of the author line. i.e., if you had this:
+%
+% \author{....lastname \thanks{...} \thanks{...} }
+% ^------------^------------^----Do not want these spaces!
+%
+% a space would be appended to the last name and could cause every name on that
+% line to be shifted left slightly. This is one of those "LaTeX things". For
+% instance, "\textbf{A} \textbf{B}" will typeset as "A B" not "AB". To get
+% "AB" then you have to do: "\textbf{A}\textbf{B}"
+% \thanks is no different in this regard, so shield the last } of each \thanks
+% that ends a line with a % and do not let a space in before the next \thanks.
+% Spaces after \IEEEmembership other than the last one are OK (and needed) as
+% you are supposed to have spaces between the names. For what it is worth,
+% this is a minor point as most people would not even notice if the said evil
+% space somehow managed to creep in.
+
+
+
+% The paper headers
+\markboth{Journal of \LaTeX\ Class Files,~Vol.~14, No.~8, August~2015}%
+{Shell \MakeLowercase{\textit{et al.}}: Bare Advanced Demo of IEEEtran.cls for IEEE Computer Society Journals}
+% The only time the second header will appear is for the odd numbered pages
+% after the title page when using the twoside option.
+%
+% *** Note that you probably will NOT want to include the author's ***
+% *** name in the headers of peer review papers. ***
+% You can use \ifCLASSOPTIONpeerreview for conditional compilation here if
+% you desire.
+
+
+
+% The publisher's ID mark at the bottom of the page is less important with
+% Computer Society journal papers as those publications place the marks
+% outside of the main text columns and, therefore, unlike regular IEEE
+% journals, the available text space is not reduced by their presence.
+% If you want to put a publisher's ID mark on the page you can do it like
+% this:
+%\IEEEpubid{0000--0000/00\$00.00~\copyright~2015 IEEE}
+% or like this to get the Computer Society new two part style.
+%\IEEEpubid{\makebox[\columnwidth]{\hfill 0000--0000/00/\$00.00~\copyright~2015 IEEE}%
+%\hspace{\columnsep}\makebox[\columnwidth]{Published by the IEEE Computer Society\hfill}}
+% Remember, if you use this you must call \IEEEpubidadjcol in the second
+% column for its text to clear the IEEEpubid mark (Computer Society journal
+% papers don't need this extra clearance.)
+
+
+
+% use for special paper notices
+%\IEEEspecialpapernotice{(Invited Paper)}
+
+
+
+% for Computer Society papers, we must declare the abstract and index terms
+% PRIOR to the title within the \IEEEtitleabstractindextext IEEEtran
+% command as these need to go into the title area created by \maketitle.
+% As a general rule, do not put math, special symbols or citations
+% in the abstract or keywords.
+\IEEEtitleabstractindextext{%
+\begin{abstract}
+The abstract goes here.
+\end{abstract}
+
+% Note that keywords are not normally used for peerreview papers.
+\begin{IEEEkeywords}
+Computer Society, IEEE, IEEEtran, journal, \LaTeX, paper, template.
+\end{IEEEkeywords}}
+
+
+% make the title area
+\maketitle
+
+
+% To allow for easy dual compilation without having to reenter the
+% abstract/keywords data, the \IEEEtitleabstractindextext text will
+% not be used in maketitle, but will appear (i.e., to be "transported")
+% here as \IEEEdisplaynontitleabstractindextext when compsoc mode
+% is not selected <OR> if conference mode is selected - because compsoc
+% conference papers position the abstract like regular (non-compsoc)
+% papers do!
+\IEEEdisplaynontitleabstractindextext
+% \IEEEdisplaynontitleabstractindextext has no effect when using
+% compsoc under a non-conference mode.
+
+
+% For peer review papers, you can put extra information on the cover
+% page as needed:
+% \ifCLASSOPTIONpeerreview
+% \begin{center} \bfseries EDICS Category: 3-BBND \end{center}
+% \fi
+%
+% For peerreview papers, this IEEEtran command inserts a page break and
+% creates the second title. It will be ignored for other modes.
+\IEEEpeerreviewmaketitle
+
+
+\ifCLASSOPTIONcompsoc
+\IEEEraisesectionheading{\section{Introduction}\label{sec:introduction}}
+\else
+\section{Introduction}
+\label{sec:introduction}
+\fi
+% Computer Society journal (but not conference!) papers do something unusual
+% with the very first section heading (almost always called "Introduction").
+% They place it ABOVE the main text! IEEEtran.cls does not automatically do
+% this for you, but you can achieve this effect with the provided
+% \IEEEraisesectionheading{} command. Note the need to keep any \label that
+% is to refer to the section immediately after \section in the above as
+% \IEEEraisesectionheading puts \section within a raised box.
+
+
+
+
+% The very first letter is a 2 line initial drop letter followed
+% by the rest of the first word in caps (small caps for compsoc).
+%
+% form to use if the first word consists of a single letter:
+% \IEEEPARstart{A}{demo} file is ....
+%
+% form to use if you need the single drop letter followed by
+% normal text (unknown if ever used by the IEEE):
+% \IEEEPARstart{A}{}demo file is ....
+%
+% Some journals put the first two words in caps:
+% \IEEEPARstart{T}{his demo} file is ....
+%
+% Here we have the typical use of a "T" for an initial drop letter
+% and "HIS" in caps to complete the first word.
+\IEEEPARstart{T}{his} demo file is intended to serve as a ``starter file''
+for IEEE Computer Society journal papers produced under \LaTeX\ using
+IEEEtran.cls version 1.8b and later.
+% You must have at least 2 lines in the paragraph with the drop letter
+% (should never be an issue)
+I wish you the best of success.
+
+\hfill mds
+
+\hfill August 26, 2015
+
+\subsection{Subsection Heading Here}
+Subsection text here.
+
+% needed in second column of first page if using \IEEEpubid
+%\IEEEpubidadjcol
+
+\subsubsection{Subsubsection Heading Here}
+Subsubsection text here.
+
+
+% An example of a floating figure using the graphicx package.
+% Note that \label must occur AFTER (or within) \caption.
+% For figures, \caption should occur after the \includegraphics.
+% Note that IEEEtran v1.7 and later has special internal code that
+% is designed to preserve the operation of \label within \caption
+% even when the captionsoff option is in effect. However, because
+% of issues like this, it may be the safest practice to put all your
+% \label just after \caption rather than within \caption{}.
+%
+% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class
+% option should be used if it is desired that the figures are to be
+% displayed while in draft mode.
+%
+%\begin{figure}[!t]
+%\centering
+%\includegraphics[width=2.5in]{myfigure}
+% where an .eps filename suffix will be assumed under latex,
+% and a .pdf suffix will be assumed for pdflatex; or what has been declared
+% via \DeclareGraphicsExtensions.
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure}
+
+% Note that the IEEE typically puts floats only at the top, even when this
+% results in a large percentage of a column being occupied by floats.
+% However, the Computer Society has been known to put floats at the bottom.
+
+
+% An example of a double column floating figure using two subfigures.
+% (The subfig.sty package must be loaded for this to work.)
+% The subfigure \label commands are set within each subfloat command,
+% and the \label for the overall figure must come after \caption.
+% \hfil is used as a separator to get equal spacing.
+% Watch out that the combined width of all the subfigures on a
+% line do not exceed the text width or a line break will occur.
+%
+%\begin{figure*}[!t]
+%\centering
+%\subfloat[Case I]{\includegraphics[width=2.5in]{box}%
+%\label{fig_first_case}}
+%\hfil
+%\subfloat[Case II]{\includegraphics[width=2.5in]{box}%
+%\label{fig_second_case}}
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure*}
+%
+% Note that often IEEE papers with subfigures do not employ subfigure
+% captions (using the optional argument to \subfloat[]), but instead will
+% reference/describe all of them (a), (b), etc., within the main caption.
+% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure
+% labels, the optional argument to \subfloat must be present. If a
+% subcaption is not desired, just leave its contents blank,
+% e.g., \subfloat[].
+
+
+% An example of a floating table. Note that, for IEEE style tables, the
+% \caption command should come BEFORE the table and, given that table
+% captions serve much like titles, are usually capitalized except for words
+% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to
+% and up, which are usually not capitalized unless they are the first or
+% last word of the caption. Table text will default to \footnotesize as
+% the IEEE normally uses this smaller font for tables.
+% The \label must come after \caption as always.
+%
+%\begin{table}[!t]
+%% increase table row spacing, adjust to taste
+%\renewcommand{\arraystretch}{1.3}
+% if using array.sty, it might be a good idea to tweak the value of
+% \extrarowheight as needed to properly center the text within the cells
+%\caption{An Example of a Table}
+%\label{table_example}
+%\centering
+%% Some packages, such as MDW tools, offer better commands for making tables
+%% than the plain LaTeX2e tabular which is used here.
+%\begin{tabular}{|c||c|}
+%\hline
+%One & Two\\
+%\hline
+%Three & Four\\
+%\hline
+%\end{tabular}
+%\end{table}
+
+
+% Note that the IEEE does not put floats in the very first column
+% - or typically anywhere on the first page for that matter. Also,
+% in-text middle ("here") positioning is typically not used, but it
+% is allowed and encouraged for Computer Society conferences (but
+% not Computer Society journals). Most IEEE journals/conferences use
+% top floats exclusively.
+% Note that, LaTeX2e, unlike IEEE journals/conferences, places
+% footnotes above bottom floats. This can be corrected via the
+% \fnbelowfloat command of the stfloats package.
+
+
+
+
+\section{Conclusion}
+The conclusion goes here.
+
+
+
+
+
+% if have a single appendix:
+%\appendix[Proof of the Zonklar Equations]
+% or
+%\appendix % for no appendix heading
+% do not use \section anymore after \appendix, only \section*
+% is possibly needed
+
+% use appendices with more than one appendix
+% then use \section to start each appendix
+% you must declare a \section before using any
+% \subsection or using \label (\appendices by itself
+% starts a section numbered zero.)
+%
+
+
+\appendices
+\section{Proof of the First Zonklar Equation}
+Appendix one text goes here.
+
+% you can choose not to have a title for an appendix
+% if you want by leaving the argument blank
+\section{}
+Appendix two text goes here.
+
+
+% use section* for acknowledgment
+\ifCLASSOPTIONcompsoc
+ % The Computer Society usually uses the plural form
+ \section*{Acknowledgments}
+\else
+ % regular IEEE prefers the singular form
+ \section*{Acknowledgment}
+\fi
+
+
+The authors would like to thank...
+
+
+% Can use something like this to put references on a page
+% by themselves when using endfloat and the captionsoff option.
+\ifCLASSOPTIONcaptionsoff
+ \newpage
+\fi
+
+
+
+% trigger a \newpage just before the given reference
+% number - used to balance the columns on the last page
+% adjust value as needed - may need to be readjusted if
+% the document is modified later
+%\IEEEtriggeratref{8}
+% The "triggered" command can be changed if desired:
+%\IEEEtriggercmd{\enlargethispage{-5in}}
+
+% references section
+
+% can use a bibliography generated by BibTeX as a .bbl file
+% BibTeX documentation can be easily obtained at:
+% http://mirror.ctan.org/biblio/bibtex/contrib/doc/
+% The IEEEtran BibTeX style support page is at:
+% http://www.michaelshell.org/tex/ieeetran/bibtex/
+%\bibliographystyle{IEEEtran}
+% argument is your BibTeX string definitions and bibliography database(s)
+%\bibliography{IEEEabrv,../bib/paper}
+%
+% <OR> manually copy in the resultant .bbl file
+% set second argument of \begin to the number of references
+% (used to reserve space for the reference number labels box)
+\begin{thebibliography}{1}
+
+\bibitem{IEEEhowto:kopka}
+H.~Kopka and P.~W. Daly, \emph{A Guide to {\LaTeX}}, 3rd~ed.\hskip 1em plus
+ 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
+
+\end{thebibliography}
+
+% biography section
+%
+% If you have an EPS/PDF photo (graphicx package needed) extra braces are
+% needed around the contents of the optional argument to biography to prevent
+% the LaTeX parser from getting confused when it sees the complicated
+% \includegraphics command within an optional argument. (You could create
+% your own custom macro containing the \includegraphics command to make things
+% simpler here.)
+%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{mshell}}]{Michael Shell}
+% or if you just want to reserve a space for a photo:
+
+\begin{IEEEbiography}{Michael Shell}
+Biography text here.
+\end{IEEEbiography}
+
+% if you will not have a photo at all:
+\begin{IEEEbiographynophoto}{John Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% insert where needed to balance the two columns on the last page with
+% biographies
+%\newpage
+
+\begin{IEEEbiographynophoto}{Jane Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% You can push biographies down or up by placing
+% a \vfill before or after them. The appropriate
+% use of \vfill depends on what kind of text is
+% on the last page and whether or not the columns
+% are being equalized.
+
+%\vfill
+
+% Can be used to pull up biographies so that the bottom of the last one
+% is flush with the other column.
+%\enlargethispage{-5in}
+
+
+
+% that's all folks
+\end{document}
+
+
diff --git a/macros/latex/contrib/IEEEtran/bare_conf.tex b/macros/latex/contrib/IEEEtran/bare_conf.tex
new file mode 100644
index 0000000000..6a912c7a53
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bare_conf.tex
@@ -0,0 +1,576 @@
+
+%% bare_conf.tex
+%% V1.4b
+%% 2015/08/26
+%% by Michael Shell
+%% See:
+%% http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% This is a skeleton file demonstrating the use of IEEEtran.cls
+%% (requires IEEEtran.cls version 1.8b or later) with an IEEE
+%% conference paper.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and
+%% http://www.ieee.org/
+
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+% *** Authors should verify (and, if needed, correct) their LaTeX system ***
+% *** with the testflow diagnostic prior to trusting their LaTeX platform ***
+% *** with production work. The IEEE's font choices and paper sizes can ***
+% *** trigger bugs that do not appear when using other class files. *** ***
+% The testflow support page is at:
+% http://www.michaelshell.org/tex/testflow/
+
+
+
+\documentclass[conference]{IEEEtran}
+% Some Computer Society conferences also require the compsoc mode option,
+% but others use the standard conference format.
+%
+% If IEEEtran.cls has not been installed into the LaTeX system files,
+% manually specify the path to it like:
+% \documentclass[conference]{../sty/IEEEtran}
+
+
+
+
+
+% Some very useful LaTeX packages include:
+% (uncomment the ones you want to load)
+
+
+% *** MISC UTILITY PACKAGES ***
+%
+%\usepackage{ifpdf}
+% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional
+% compilation based on whether the output is pdf or dvi.
+% usage:
+% \ifpdf
+% % pdf code
+% \else
+% % dvi code
+% \fi
+% The latest version of ifpdf.sty can be obtained from:
+% http://www.ctan.org/pkg/ifpdf
+% Also, note that IEEEtran.cls V1.7 and later provides a builtin
+% \ifCLASSINFOpdf conditional that works the same way.
+% When switching from latex to pdflatex and vice-versa, the compiler may
+% have to be run twice to clear warning/error messages.
+
+
+
+
+
+
+% *** CITATION PACKAGES ***
+%
+%\usepackage{cite}
+% cite.sty was written by Donald Arseneau
+% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package
+% \cite{} output to follow that of the IEEE. Loading the cite package will
+% result in citation numbers being automatically sorted and properly
+% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using
+% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's
+% \cite will automatically add leading space, if needed. Use cite.sty's
+% noadjust option (cite.sty V3.8 and later) if you want to turn this off
+% such as if a citation ever needs to be enclosed in parenthesis.
+% cite.sty is already installed on most LaTeX systems. Be sure and use
+% version 5.0 (2009-03-20) and later if using hyperref.sty.
+% The latest version can be obtained at:
+% http://www.ctan.org/pkg/cite
+% The documentation is contained in the cite.sty file itself.
+
+
+
+
+
+
+% *** GRAPHICS RELATED PACKAGES ***
+%
+\ifCLASSINFOpdf
+ % \usepackage[pdftex]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../pdf/}{../jpeg/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+\else
+ % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
+ % will default to the driver specified in the system graphics.cfg if no
+ % driver is specified.
+ % \usepackage[dvips]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../eps/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.eps}
+\fi
+% graphicx was written by David Carlisle and Sebastian Rahtz. It is
+% required if you want graphics, photos, etc. graphicx.sty is already
+% installed on most LaTeX systems. The latest version and documentation
+% can be obtained at:
+% http://www.ctan.org/pkg/graphicx
+% Another good source of documentation is "Using Imported Graphics in
+% LaTeX2e" by Keith Reckdahl which can be found at:
+% http://www.ctan.org/pkg/epslatex
+%
+% latex, and pdflatex in dvi mode, support graphics in encapsulated
+% postscript (.eps) format. pdflatex in pdf mode supports graphics
+% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure
+% that all non-photo figures use a vector format (.eps, .pdf, .mps) and
+% not a bitmapped formats (.jpeg, .png). The IEEE frowns on bitmapped formats
+% which can result in "jaggedy"/blurry rendering of lines and letters as
+% well as large increases in file sizes.
+%
+% You can find documentation about the pdfTeX application at:
+% http://www.tug.org/applications/pdftex
+
+
+
+
+
+% *** MATH PACKAGES ***
+%
+%\usepackage{amsmath}
+% A popular package from the American Mathematical Society that provides
+% many useful and powerful commands for dealing with mathematics.
+%
+% Note that the amsmath package sets \interdisplaylinepenalty to 10000
+% thus preventing page breaks from occurring within multiline equations. Use:
+%\interdisplaylinepenalty=2500
+% after loading amsmath to restore such page breaks as IEEEtran.cls normally
+% does. amsmath.sty is already installed on most LaTeX systems. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/amsmath
+
+
+
+
+
+% *** SPECIALIZED LIST PACKAGES ***
+%
+%\usepackage{algorithmic}
+% algorithmic.sty was written by Peter Williams and Rogerio Brito.
+% This package provides an algorithmic environment fo describing algorithms.
+% You can use the algorithmic environment in-text or within a figure
+% environment to provide for a floating algorithm. Do NOT use the algorithm
+% floating environment provided by algorithm.sty (by the same authors) or
+% algorithm2e.sty (by Christophe Fiorio) as the IEEE does not use dedicated
+% algorithm float types and packages that provide these will not provide
+% correct IEEE style captions. The latest version and documentation of
+% algorithmic.sty can be obtained at:
+% http://www.ctan.org/pkg/algorithms
+% Also of interest may be the (relatively newer and more customizable)
+% algorithmicx.sty package by Szasz Janos:
+% http://www.ctan.org/pkg/algorithmicx
+
+
+
+
+% *** ALIGNMENT PACKAGES ***
+%
+%\usepackage{array}
+% Frank Mittelbach's and David Carlisle's array.sty patches and improves
+% the standard LaTeX2e array and tabular environments to provide better
+% appearance and additional user controls. As the default LaTeX2e table
+% generation code is lacking to the point of almost being broken with
+% respect to the quality of the end results, all users are strongly
+% advised to use an enhanced (at the very least that provided by array.sty)
+% set of table tools. array.sty is already installed on most systems. The
+% latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/array
+
+
+% IEEEtran contains the IEEEeqnarray family of commands that can be used to
+% generate multiline equations as well as matrices, tables, etc., of high
+% quality.
+
+
+
+
+% *** SUBFIGURE PACKAGES ***
+%\ifCLASSOPTIONcompsoc
+% \usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig}
+%\else
+% \usepackage[caption=false,font=footnotesize]{subfig}
+%\fi
+% subfig.sty, written by Steven Douglas Cochran, is the modern replacement
+% for subfigure.sty, the latter of which is no longer maintained and is
+% incompatible with some LaTeX packages including fixltx2e. However,
+% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty
+% which will override IEEEtran.cls' handling of captions and this will result
+% in non-IEEE style figure/table captions. To prevent this problem, be sure
+% and invoke subfig.sty's "caption=false" package option (available since
+% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls
+% handling of captions.
+% Note that the Computer Society format requires a larger sans serif font
+% than the serif footnote size font used in traditional IEEE formatting
+% and thus the need to invoke different subfig.sty package options depending
+% on whether compsoc mode has been enabled.
+%
+% The latest version and documentation of subfig.sty can be obtained at:
+% http://www.ctan.org/pkg/subfig
+
+
+
+
+% *** FLOAT PACKAGES ***
+%
+%\usepackage{fixltx2e}
+% fixltx2e, the successor to the earlier fix2col.sty, was written by
+% Frank Mittelbach and David Carlisle. This package corrects a few problems
+% in the LaTeX2e kernel, the most notable of which is that in current
+% LaTeX2e releases, the ordering of single and double column floats is not
+% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a
+% single column figure to be placed prior to an earlier double column
+% figure.
+% Be aware that LaTeX2e kernels dated 2015 and later have fixltx2e.sty's
+% corrections already built into the system in which case a warning will
+% be issued if an attempt is made to load fixltx2e.sty as it is no longer
+% needed.
+% The latest version and documentation can be found at:
+% http://www.ctan.org/pkg/fixltx2e
+
+
+%\usepackage{stfloats}
+% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e
+% the ability to do double column floats at the bottom of the page as well
+% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in
+% LaTeX2e). It also provides a command:
+%\fnbelowfloat
+% to enable the placement of footnotes below bottom floats (the standard
+% LaTeX2e kernel puts them above bottom floats). This is an invasive package
+% which rewrites many portions of the LaTeX2e float routines. It may not work
+% with other packages that modify the LaTeX2e float routines. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/stfloats
+% Do not use the stfloats baselinefloat ability as the IEEE does not allow
+% \baselineskip to stretch. Authors submitting work to the IEEE should note
+% that the IEEE rarely uses double column equations and that authors should try
+% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty
+% packages (also by Sigitas Tolusis) as the IEEE does not format its papers in
+% such ways.
+% Do not attempt to use stfloats with fixltx2e as they are incompatible.
+% Instead, use Morten Hogholm'a dblfloatfix which combines the features
+% of both fixltx2e and stfloats:
+%
+% \usepackage{dblfloatfix}
+% The latest version can be found at:
+% http://www.ctan.org/pkg/dblfloatfix
+
+
+
+
+% *** PDF, URL AND HYPERLINK PACKAGES ***
+%
+%\usepackage{url}
+% url.sty was written by Donald Arseneau. It provides better support for
+% handling and breaking URLs. url.sty is already installed on most LaTeX
+% systems. The latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/url
+% Basically, \url{my_url_here}.
+
+
+
+
+% *** Do not adjust lengths that control margins, column widths, etc. ***
+% *** Do not use packages that alter fonts (such as pslatex). ***
+% There should be no need to do such things with IEEEtran.cls V1.6 and later.
+% (Unless specifically asked to do so by the journal or conference you plan
+% to submit to, of course. )
+
+
+% correct bad hyphenation here
+\hyphenation{op-tical net-works semi-conduc-tor}
+
+
+\begin{document}
+%
+% paper title
+% Titles are generally capitalized except for words such as a, an, and, as,
+% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually
+% not capitalized unless they are the first or last word of the title.
+% Linebreaks \\ can be used within to get better formatting as desired.
+% Do not put math or special symbols in the title.
+\title{Bare Demo of IEEEtran.cls\\ for IEEE Conferences}
+
+
+% author names and affiliations
+% use a multiple column layout for up to three different
+% affiliations
+\author{\IEEEauthorblockN{Michael Shell}
+\IEEEauthorblockA{School of Electrical and\\Computer Engineering\\
+Georgia Institute of Technology\\
+Atlanta, Georgia 30332--0250\\
+Email: http://www.michaelshell.org/contact.html}
+\and
+\IEEEauthorblockN{Homer Simpson}
+\IEEEauthorblockA{Twentieth Century Fox\\
+Springfield, USA\\
+Email: homer@thesimpsons.com}
+\and
+\IEEEauthorblockN{James Kirk\\ and Montgomery Scott}
+\IEEEauthorblockA{Starfleet Academy\\
+San Francisco, California 96678--2391\\
+Telephone: (800) 555--1212\\
+Fax: (888) 555--1212}}
+
+% conference papers do not typically use \thanks and this command
+% is locked out in conference mode. If really needed, such as for
+% the acknowledgment of grants, issue a \IEEEoverridecommandlockouts
+% after \documentclass
+
+% for over three affiliations, or if they all won't fit within the width
+% of the page, use this alternative format:
+%
+%\author{\IEEEauthorblockN{Michael Shell\IEEEauthorrefmark{1},
+%Homer Simpson\IEEEauthorrefmark{2},
+%James Kirk\IEEEauthorrefmark{3},
+%Montgomery Scott\IEEEauthorrefmark{3} and
+%Eldon Tyrell\IEEEauthorrefmark{4}}
+%\IEEEauthorblockA{\IEEEauthorrefmark{1}School of Electrical and Computer Engineering\\
+%Georgia Institute of Technology,
+%Atlanta, Georgia 30332--0250\\ Email: see http://www.michaelshell.org/contact.html}
+%\IEEEauthorblockA{\IEEEauthorrefmark{2}Twentieth Century Fox, Springfield, USA\\
+%Email: homer@thesimpsons.com}
+%\IEEEauthorblockA{\IEEEauthorrefmark{3}Starfleet Academy, San Francisco, California 96678-2391\\
+%Telephone: (800) 555--1212, Fax: (888) 555--1212}
+%\IEEEauthorblockA{\IEEEauthorrefmark{4}Tyrell Inc., 123 Replicant Street, Los Angeles, California 90210--4321}}
+
+
+
+
+% use for special paper notices
+%\IEEEspecialpapernotice{(Invited Paper)}
+
+
+
+
+% make the title area
+\maketitle
+
+% As a general rule, do not put math, special symbols or citations
+% in the abstract
+\begin{abstract}
+The abstract goes here.
+\end{abstract}
+
+% no keywords
+
+
+
+
+% For peer review papers, you can put extra information on the cover
+% page as needed:
+% \ifCLASSOPTIONpeerreview
+% \begin{center} \bfseries EDICS Category: 3-BBND \end{center}
+% \fi
+%
+% For peerreview papers, this IEEEtran command inserts a page break and
+% creates the second title. It will be ignored for other modes.
+\IEEEpeerreviewmaketitle
+
+
+
+\section{Introduction}
+% no \IEEEPARstart
+This demo file is intended to serve as a ``starter file''
+for IEEE conference papers produced under \LaTeX\ using
+IEEEtran.cls version 1.8b and later.
+% You must have at least 2 lines in the paragraph with the drop letter
+% (should never be an issue)
+I wish you the best of success.
+
+\hfill mds
+
+\hfill August 26, 2015
+
+\subsection{Subsection Heading Here}
+Subsection text here.
+
+
+\subsubsection{Subsubsection Heading Here}
+Subsubsection text here.
+
+
+% An example of a floating figure using the graphicx package.
+% Note that \label must occur AFTER (or within) \caption.
+% For figures, \caption should occur after the \includegraphics.
+% Note that IEEEtran v1.7 and later has special internal code that
+% is designed to preserve the operation of \label within \caption
+% even when the captionsoff option is in effect. However, because
+% of issues like this, it may be the safest practice to put all your
+% \label just after \caption rather than within \caption{}.
+%
+% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class
+% option should be used if it is desired that the figures are to be
+% displayed while in draft mode.
+%
+%\begin{figure}[!t]
+%\centering
+%\includegraphics[width=2.5in]{myfigure}
+% where an .eps filename suffix will be assumed under latex,
+% and a .pdf suffix will be assumed for pdflatex; or what has been declared
+% via \DeclareGraphicsExtensions.
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure}
+
+% Note that the IEEE typically puts floats only at the top, even when this
+% results in a large percentage of a column being occupied by floats.
+
+
+% An example of a double column floating figure using two subfigures.
+% (The subfig.sty package must be loaded for this to work.)
+% The subfigure \label commands are set within each subfloat command,
+% and the \label for the overall figure must come after \caption.
+% \hfil is used as a separator to get equal spacing.
+% Watch out that the combined width of all the subfigures on a
+% line do not exceed the text width or a line break will occur.
+%
+%\begin{figure*}[!t]
+%\centering
+%\subfloat[Case I]{\includegraphics[width=2.5in]{box}%
+%\label{fig_first_case}}
+%\hfil
+%\subfloat[Case II]{\includegraphics[width=2.5in]{box}%
+%\label{fig_second_case}}
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure*}
+%
+% Note that often IEEE papers with subfigures do not employ subfigure
+% captions (using the optional argument to \subfloat[]), but instead will
+% reference/describe all of them (a), (b), etc., within the main caption.
+% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure
+% labels, the optional argument to \subfloat must be present. If a
+% subcaption is not desired, just leave its contents blank,
+% e.g., \subfloat[].
+
+
+% An example of a floating table. Note that, for IEEE style tables, the
+% \caption command should come BEFORE the table and, given that table
+% captions serve much like titles, are usually capitalized except for words
+% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to
+% and up, which are usually not capitalized unless they are the first or
+% last word of the caption. Table text will default to \footnotesize as
+% the IEEE normally uses this smaller font for tables.
+% The \label must come after \caption as always.
+%
+%\begin{table}[!t]
+%% increase table row spacing, adjust to taste
+%\renewcommand{\arraystretch}{1.3}
+% if using array.sty, it might be a good idea to tweak the value of
+% \extrarowheight as needed to properly center the text within the cells
+%\caption{An Example of a Table}
+%\label{table_example}
+%\centering
+%% Some packages, such as MDW tools, offer better commands for making tables
+%% than the plain LaTeX2e tabular which is used here.
+%\begin{tabular}{|c||c|}
+%\hline
+%One & Two\\
+%\hline
+%Three & Four\\
+%\hline
+%\end{tabular}
+%\end{table}
+
+
+% Note that the IEEE does not put floats in the very first column
+% - or typically anywhere on the first page for that matter. Also,
+% in-text middle ("here") positioning is typically not used, but it
+% is allowed and encouraged for Computer Society conferences (but
+% not Computer Society journals). Most IEEE journals/conferences use
+% top floats exclusively.
+% Note that, LaTeX2e, unlike IEEE journals/conferences, places
+% footnotes above bottom floats. This can be corrected via the
+% \fnbelowfloat command of the stfloats package.
+
+
+
+
+\section{Conclusion}
+The conclusion goes here.
+
+
+
+
+% conference papers do not normally have an appendix
+
+
+% use section* for acknowledgment
+\section*{Acknowledgment}
+
+
+The authors would like to thank...
+
+
+
+
+
+% trigger a \newpage just before the given reference
+% number - used to balance the columns on the last page
+% adjust value as needed - may need to be readjusted if
+% the document is modified later
+%\IEEEtriggeratref{8}
+% The "triggered" command can be changed if desired:
+%\IEEEtriggercmd{\enlargethispage{-5in}}
+
+% references section
+
+% can use a bibliography generated by BibTeX as a .bbl file
+% BibTeX documentation can be easily obtained at:
+% http://mirror.ctan.org/biblio/bibtex/contrib/doc/
+% The IEEEtran BibTeX style support page is at:
+% http://www.michaelshell.org/tex/ieeetran/bibtex/
+%\bibliographystyle{IEEEtran}
+% argument is your BibTeX string definitions and bibliography database(s)
+%\bibliography{IEEEabrv,../bib/paper}
+%
+% <OR> manually copy in the resultant .bbl file
+% set second argument of \begin to the number of references
+% (used to reserve space for the reference number labels box)
+\begin{thebibliography}{1}
+
+\bibitem{IEEEhowto:kopka}
+H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus
+ 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
+
+\end{thebibliography}
+
+
+
+
+% that's all folks
+\end{document}
+
+
diff --git a/macros/latex/contrib/IEEEtran/bare_conf_compsoc.tex b/macros/latex/contrib/IEEEtran/bare_conf_compsoc.tex
new file mode 100644
index 0000000000..8465c8b20c
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bare_conf_compsoc.tex
@@ -0,0 +1,599 @@
+
+%% bare_conf_compsoc.tex
+%% V1.4b
+%% 2015/08/26
+%% by Michael Shell
+%% See:
+%% http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% This is a skeleton file demonstrating the use of IEEEtran.cls
+%% (requires IEEEtran.cls version 1.8b or later) with an IEEE Computer
+%% Society conference paper.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and
+%% http://www.ieee.org/
+
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+% *** Authors should verify (and, if needed, correct) their LaTeX system ***
+% *** with the testflow diagnostic prior to trusting their LaTeX platform ***
+% *** with production work. The IEEE's font choices and paper sizes can ***
+% *** trigger bugs that do not appear when using other class files. *** ***
+% The testflow support page is at:
+% http://www.michaelshell.org/tex/testflow/
+
+
+
+\documentclass[conference,compsoc]{IEEEtran}
+% Some/most Computer Society conferences require the compsoc mode option,
+% but others may want the standard conference format.
+%
+% If IEEEtran.cls has not been installed into the LaTeX system files,
+% manually specify the path to it like:
+% \documentclass[conference,compsoc]{../sty/IEEEtran}
+
+
+
+
+
+% Some very useful LaTeX packages include:
+% (uncomment the ones you want to load)
+
+
+% *** MISC UTILITY PACKAGES ***
+%
+%\usepackage{ifpdf}
+% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional
+% compilation based on whether the output is pdf or dvi.
+% usage:
+% \ifpdf
+% % pdf code
+% \else
+% % dvi code
+% \fi
+% The latest version of ifpdf.sty can be obtained from:
+% http://www.ctan.org/pkg/ifpdf
+% Also, note that IEEEtran.cls V1.7 and later provides a builtin
+% \ifCLASSINFOpdf conditional that works the same way.
+% When switching from latex to pdflatex and vice-versa, the compiler may
+% have to be run twice to clear warning/error messages.
+
+
+
+
+
+
+% *** CITATION PACKAGES ***
+%
+\ifCLASSOPTIONcompsoc
+ % IEEE Computer Society needs nocompress option
+ % requires cite.sty v4.0 or later (November 2003)
+ \usepackage[nocompress]{cite}
+\else
+ % normal IEEE
+ \usepackage{cite}
+\fi
+% cite.sty was written by Donald Arseneau
+% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package
+% \cite{} output to follow that of the IEEE. Loading the cite package will
+% result in citation numbers being automatically sorted and properly
+% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using
+% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's
+% \cite will automatically add leading space, if needed. Use cite.sty's
+% noadjust option (cite.sty V3.8 and later) if you want to turn this off
+% such as if a citation ever needs to be enclosed in parenthesis.
+% cite.sty is already installed on most LaTeX systems. Be sure and use
+% version 5.0 (2009-03-20) and later if using hyperref.sty.
+% The latest version can be obtained at:
+% http://www.ctan.org/pkg/cite
+% The documentation is contained in the cite.sty file itself.
+%
+% Note that some packages require special options to format as the Computer
+% Society requires. In particular, Computer Society papers do not use
+% compressed citation ranges as is done in typical IEEE papers
+% (e.g., [1]-[4]). Instead, they list every citation separately in order
+% (e.g., [1], [2], [3], [4]). To get the latter we need to load the cite
+% package with the nocompress option which is supported by cite.sty v4.0
+% and later.
+
+
+
+
+
+% *** GRAPHICS RELATED PACKAGES ***
+%
+\ifCLASSINFOpdf
+ % \usepackage[pdftex]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../pdf/}{../jpeg/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+\else
+ % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
+ % will default to the driver specified in the system graphics.cfg if no
+ % driver is specified.
+ % \usepackage[dvips]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../eps/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.eps}
+\fi
+% graphicx was written by David Carlisle and Sebastian Rahtz. It is
+% required if you want graphics, photos, etc. graphicx.sty is already
+% installed on most LaTeX systems. The latest version and documentation
+% can be obtained at:
+% http://www.ctan.org/pkg/graphicx
+% Another good source of documentation is "Using Imported Graphics in
+% LaTeX2e" by Keith Reckdahl which can be found at:
+% http://www.ctan.org/pkg/epslatex
+%
+% latex, and pdflatex in dvi mode, support graphics in encapsulated
+% postscript (.eps) format. pdflatex in pdf mode supports graphics
+% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure
+% that all non-photo figures use a vector format (.eps, .pdf, .mps) and
+% not a bitmapped formats (.jpeg, .png). The IEEE frowns on bitmapped formats
+% which can result in "jaggedy"/blurry rendering of lines and letters as
+% well as large increases in file sizes.
+%
+% You can find documentation about the pdfTeX application at:
+% http://www.tug.org/applications/pdftex
+
+
+
+
+
+% *** MATH PACKAGES ***
+%
+%\usepackage{amsmath}
+% A popular package from the American Mathematical Society that provides
+% many useful and powerful commands for dealing with mathematics.
+%
+% Note that the amsmath package sets \interdisplaylinepenalty to 10000
+% thus preventing page breaks from occurring within multiline equations. Use:
+%\interdisplaylinepenalty=2500
+% after loading amsmath to restore such page breaks as IEEEtran.cls normally
+% does. amsmath.sty is already installed on most LaTeX systems. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/amsmath
+
+
+
+
+
+% *** SPECIALIZED LIST PACKAGES ***
+%
+%\usepackage{algorithmic}
+% algorithmic.sty was written by Peter Williams and Rogerio Brito.
+% This package provides an algorithmic environment fo describing algorithms.
+% You can use the algorithmic environment in-text or within a figure
+% environment to provide for a floating algorithm. Do NOT use the algorithm
+% floating environment provided by algorithm.sty (by the same authors) or
+% algorithm2e.sty (by Christophe Fiorio) as the IEEE does not use dedicated
+% algorithm float types and packages that provide these will not provide
+% correct IEEE style captions. The latest version and documentation of
+% algorithmic.sty can be obtained at:
+% http://www.ctan.org/pkg/algorithms
+% Also of interest may be the (relatively newer and more customizable)
+% algorithmicx.sty package by Szasz Janos:
+% http://www.ctan.org/pkg/algorithmicx
+
+
+
+
+% *** ALIGNMENT PACKAGES ***
+%
+%\usepackage{array}
+% Frank Mittelbach's and David Carlisle's array.sty patches and improves
+% the standard LaTeX2e array and tabular environments to provide better
+% appearance and additional user controls. As the default LaTeX2e table
+% generation code is lacking to the point of almost being broken with
+% respect to the quality of the end results, all users are strongly
+% advised to use an enhanced (at the very least that provided by array.sty)
+% set of table tools. array.sty is already installed on most systems. The
+% latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/array
+
+
+% IEEEtran contains the IEEEeqnarray family of commands that can be used to
+% generate multiline equations as well as matrices, tables, etc., of high
+% quality.
+
+
+
+
+% *** SUBFIGURE PACKAGES ***
+%\ifCLASSOPTIONcompsoc
+% \usepackage[caption=false,font=footnotesize,labelfont=sf,textfont=sf]{subfig}
+%\else
+% \usepackage[caption=false,font=footnotesize]{subfig}
+%\fi
+% subfig.sty, written by Steven Douglas Cochran, is the modern replacement
+% for subfigure.sty, the latter of which is no longer maintained and is
+% incompatible with some LaTeX packages including fixltx2e. However,
+% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty
+% which will override IEEEtran.cls' handling of captions and this will result
+% in non-IEEE style figure/table captions. To prevent this problem, be sure
+% and invoke subfig.sty's "caption=false" package option (available since
+% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls
+% handling of captions.
+% Note that the Computer Society format requires a sans serif font rather
+% than the serif font used in traditional IEEE formatting and thus the need
+% to invoke different subfig.sty package options depending on whether
+% compsoc mode has been enabled.
+%
+% The latest version and documentation of subfig.sty can be obtained at:
+% http://www.ctan.org/pkg/subfig
+
+
+
+
+% *** FLOAT PACKAGES ***
+%
+%\usepackage{fixltx2e}
+% fixltx2e, the successor to the earlier fix2col.sty, was written by
+% Frank Mittelbach and David Carlisle. This package corrects a few problems
+% in the LaTeX2e kernel, the most notable of which is that in current
+% LaTeX2e releases, the ordering of single and double column floats is not
+% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a
+% single column figure to be placed prior to an earlier double column
+% figure.
+% Be aware that LaTeX2e kernels dated 2015 and later have fixltx2e.sty's
+% corrections already built into the system in which case a warning will
+% be issued if an attempt is made to load fixltx2e.sty as it is no longer
+% needed.
+% The latest version and documentation can be found at:
+% http://www.ctan.org/pkg/fixltx2e
+
+
+%\usepackage{stfloats}
+% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e
+% the ability to do double column floats at the bottom of the page as well
+% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in
+% LaTeX2e). It also provides a command:
+%\fnbelowfloat
+% to enable the placement of footnotes below bottom floats (the standard
+% LaTeX2e kernel puts them above bottom floats). This is an invasive package
+% which rewrites many portions of the LaTeX2e float routines. It may not work
+% with other packages that modify the LaTeX2e float routines. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/stfloats
+% Do not use the stfloats baselinefloat ability as the IEEE does not allow
+% \baselineskip to stretch. Authors submitting work to the IEEE should note
+% that the IEEE rarely uses double column equations and that authors should try
+% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty
+% packages (also by Sigitas Tolusis) as the IEEE does not format its papers in
+% such ways.
+% Do not attempt to use stfloats with fixltx2e as they are incompatible.
+% Instead, use Morten Hogholm'a dblfloatfix which combines the features
+% of both fixltx2e and stfloats:
+%
+% \usepackage{dblfloatfix}
+% The latest version can be found at:
+% http://www.ctan.org/pkg/dblfloatfix
+
+
+
+
+% *** PDF, URL AND HYPERLINK PACKAGES ***
+%
+%\usepackage{url}
+% url.sty was written by Donald Arseneau. It provides better support for
+% handling and breaking URLs. url.sty is already installed on most LaTeX
+% systems. The latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/url
+% Basically, \url{my_url_here}.
+
+
+
+
+% *** Do not adjust lengths that control margins, column widths, etc. ***
+% *** Do not use packages that alter fonts (such as pslatex). ***
+% There should be no need to do such things with IEEEtran.cls V1.6 and later.
+% (Unless specifically asked to do so by the journal or conference you plan
+% to submit to, of course. )
+
+
+% correct bad hyphenation here
+\hyphenation{op-tical net-works semi-conduc-tor}
+
+
+\begin{document}
+%
+% paper title
+% Titles are generally capitalized except for words such as a, an, and, as,
+% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually
+% not capitalized unless they are the first or last word of the title.
+% Linebreaks \\ can be used within to get better formatting as desired.
+% Do not put math or special symbols in the title.
+\title{Bare Demo of IEEEtran.cls for\\ IEEE Computer Society Conferences}
+
+
+% author names and affiliations
+% use a multiple column layout for up to three different
+% affiliations
+\author{\IEEEauthorblockN{Michael Shell}
+\IEEEauthorblockA{School of Electrical and\\Computer Engineering\\
+Georgia Institute of Technology\\
+Atlanta, Georgia 30332--0250\\
+Email: http://www.michaelshell.org/contact.html}
+\and
+\IEEEauthorblockN{Homer Simpson}
+\IEEEauthorblockA{Twentieth Century Fox\\
+Springfield, USA\\
+Email: homer@thesimpsons.com}
+\and
+\IEEEauthorblockN{James Kirk\\ and Montgomery Scott}
+\IEEEauthorblockA{Starfleet Academy\\
+San Francisco, California 96678-2391\\
+Telephone: (800) 555--1212\\
+Fax: (888) 555--1212}}
+
+% conference papers do not typically use \thanks and this command
+% is locked out in conference mode. If really needed, such as for
+% the acknowledgment of grants, issue a \IEEEoverridecommandlockouts
+% after \documentclass
+
+% for over three affiliations, or if they all won't fit within the width
+% of the page (and note that there is less available width in this regard for
+% compsoc conferences compared to traditional conferences), use this
+% alternative format:
+%
+%\author{\IEEEauthorblockN{Michael Shell\IEEEauthorrefmark{1},
+%Homer Simpson\IEEEauthorrefmark{2},
+%James Kirk\IEEEauthorrefmark{3},
+%Montgomery Scott\IEEEauthorrefmark{3} and
+%Eldon Tyrell\IEEEauthorrefmark{4}}
+%\IEEEauthorblockA{\IEEEauthorrefmark{1}School of Electrical and Computer Engineering\\
+%Georgia Institute of Technology,
+%Atlanta, Georgia 30332--0250\\ Email: see http://www.michaelshell.org/contact.html}
+%\IEEEauthorblockA{\IEEEauthorrefmark{2}Twentieth Century Fox, Springfield, USA\\
+%Email: homer@thesimpsons.com}
+%\IEEEauthorblockA{\IEEEauthorrefmark{3}Starfleet Academy, San Francisco, California 96678-2391\\
+%Telephone: (800) 555--1212, Fax: (888) 555--1212}
+%\IEEEauthorblockA{\IEEEauthorrefmark{4}Tyrell Inc., 123 Replicant Street, Los Angeles, California 90210--4321}}
+
+
+
+
+% use for special paper notices
+%\IEEEspecialpapernotice{(Invited Paper)}
+
+
+
+
+% make the title area
+\maketitle
+
+% As a general rule, do not put math, special symbols or citations
+% in the abstract
+\begin{abstract}
+The abstract goes here.
+\end{abstract}
+
+% no keywords
+
+
+
+
+% For peer review papers, you can put extra information on the cover
+% page as needed:
+% \ifCLASSOPTIONpeerreview
+% \begin{center} \bfseries EDICS Category: 3-BBND \end{center}
+% \fi
+%
+% For peerreview papers, this IEEEtran command inserts a page break and
+% creates the second title. It will be ignored for other modes.
+\IEEEpeerreviewmaketitle
+
+
+
+\section{Introduction}
+% no \IEEEPARstart
+This demo file is intended to serve as a ``starter file''
+for IEEE Computer Society conference papers produced under \LaTeX\ using
+IEEEtran.cls version 1.8b and later.
+% You must have at least 2 lines in the paragraph with the drop letter
+% (should never be an issue)
+I wish you the best of success.
+
+\hfill mds
+
+\hfill August 26, 2015
+
+\subsection{Subsection Heading Here}
+Subsection text here.
+
+
+\subsubsection{Subsubsection Heading Here}
+Subsubsection text here.
+
+
+% An example of a floating figure using the graphicx package.
+% Note that \label must occur AFTER (or within) \caption.
+% For figures, \caption should occur after the \includegraphics.
+% Note that IEEEtran v1.7 and later has special internal code that
+% is designed to preserve the operation of \label within \caption
+% even when the captionsoff option is in effect. However, because
+% of issues like this, it may be the safest practice to put all your
+% \label just after \caption rather than within \caption{}.
+%
+% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class
+% option should be used if it is desired that the figures are to be
+% displayed while in draft mode.
+%
+%\begin{figure}[!t]
+%\centering
+%\includegraphics[width=2.5in]{myfigure}
+% where an .eps filename suffix will be assumed under latex,
+% and a .pdf suffix will be assumed for pdflatex; or what has been declared
+% via \DeclareGraphicsExtensions.
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure}
+
+% Note that the IEEE typically puts floats only at the top, even when this
+% results in a large percentage of a column being occupied by floats.
+
+
+% An example of a double column floating figure using two subfigures.
+% (The subfig.sty package must be loaded for this to work.)
+% The subfigure \label commands are set within each subfloat command,
+% and the \label for the overall figure must come after \caption.
+% \hfil is used as a separator to get equal spacing.
+% Watch out that the combined width of all the subfigures on a
+% line do not exceed the text width or a line break will occur.
+%
+%\begin{figure*}[!t]
+%\centering
+%\subfloat[Case I]{\includegraphics[width=2.5in]{box}%
+%\label{fig_first_case}}
+%\hfil
+%\subfloat[Case II]{\includegraphics[width=2.5in]{box}%
+%\label{fig_second_case}}
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure*}
+%
+% Note that often IEEE papers with subfigures do not employ subfigure
+% captions (using the optional argument to \subfloat[]), but instead will
+% reference/describe all of them (a), (b), etc., within the main caption.
+% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure
+% labels, the optional argument to \subfloat must be present. If a
+% subcaption is not desired, just leave its contents blank,
+% e.g., \subfloat[].
+
+
+% An example of a floating table. Note that, for IEEE style tables, the
+% \caption command should come BEFORE the table and, given that table
+% captions serve much like titles, are usually capitalized except for words
+% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to
+% and up, which are usually not capitalized unless they are the first or
+% last word of the caption. Table text will default to \footnotesize as
+% the IEEE normally uses this smaller font for tables.
+% The \label must come after \caption as always.
+%
+%\begin{table}[!t]
+%% increase table row spacing, adjust to taste
+%\renewcommand{\arraystretch}{1.3}
+% if using array.sty, it might be a good idea to tweak the value of
+% \extrarowheight as needed to properly center the text within the cells
+%\caption{An Example of a Table}
+%\label{table_example}
+%\centering
+%% Some packages, such as MDW tools, offer better commands for making tables
+%% than the plain LaTeX2e tabular which is used here.
+%\begin{tabular}{|c||c|}
+%\hline
+%One & Two\\
+%\hline
+%Three & Four\\
+%\hline
+%\end{tabular}
+%\end{table}
+
+
+% Note that the IEEE does not put floats in the very first column
+% - or typically anywhere on the first page for that matter. Also,
+% in-text middle ("here") positioning is typically not used, but it
+% is allowed and encouraged for Computer Society conferences (but
+% not Computer Society journals). Most IEEE journals/conferences use
+% top floats exclusively.
+% Note that, LaTeX2e, unlike IEEE journals/conferences, places
+% footnotes above bottom floats. This can be corrected via the
+% \fnbelowfloat command of the stfloats package.
+
+
+
+
+\section{Conclusion}
+The conclusion goes here.
+
+
+
+
+% conference papers do not normally have an appendix
+
+
+
+% use section* for acknowledgment
+\ifCLASSOPTIONcompsoc
+ % The Computer Society usually uses the plural form
+ \section*{Acknowledgments}
+\else
+ % regular IEEE prefers the singular form
+ \section*{Acknowledgment}
+\fi
+
+
+The authors would like to thank...
+
+
+
+
+
+% trigger a \newpage just before the given reference
+% number - used to balance the columns on the last page
+% adjust value as needed - may need to be readjusted if
+% the document is modified later
+%\IEEEtriggeratref{8}
+% The "triggered" command can be changed if desired:
+%\IEEEtriggercmd{\enlargethispage{-5in}}
+
+% references section
+
+% can use a bibliography generated by BibTeX as a .bbl file
+% BibTeX documentation can be easily obtained at:
+% http://mirror.ctan.org/biblio/bibtex/contrib/doc/
+% The IEEEtran BibTeX style support page is at:
+% http://www.michaelshell.org/tex/ieeetran/bibtex/
+%\bibliographystyle{IEEEtran}
+% argument is your BibTeX string definitions and bibliography database(s)
+%\bibliography{IEEEabrv,../bib/paper}
+%
+% <OR> manually copy in the resultant .bbl file
+% set second argument of \begin to the number of references
+% (used to reserve space for the reference number labels box)
+\begin{thebibliography}{1}
+
+\bibitem{IEEEhowto:kopka}
+H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus
+ 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
+
+\end{thebibliography}
+
+
+
+
+% that's all folks
+\end{document}
+
+
diff --git a/macros/latex/contrib/IEEEtran/bare_jrnl.tex b/macros/latex/contrib/IEEEtran/bare_jrnl.tex
new file mode 100644
index 0000000000..300ad00c0d
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bare_jrnl.tex
@@ -0,0 +1,717 @@
+
+%% bare_jrnl.tex
+%% V1.4b
+%% 2015/08/26
+%% by Michael Shell
+%% see http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% This is a skeleton file demonstrating the use of IEEEtran.cls
+%% (requires IEEEtran.cls version 1.8b or later) with an IEEE
+%% journal paper.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and
+%% http://www.ieee.org/
+
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+% *** Authors should verify (and, if needed, correct) their LaTeX system ***
+% *** with the testflow diagnostic prior to trusting their LaTeX platform ***
+% *** with production work. The IEEE's font choices and paper sizes can ***
+% *** trigger bugs that do not appear when using other class files. *** ***
+% The testflow support page is at:
+% http://www.michaelshell.org/tex/testflow/
+
+
+
+\documentclass[journal]{IEEEtran}
+%
+% If IEEEtran.cls has not been installed into the LaTeX system files,
+% manually specify the path to it like:
+% \documentclass[journal]{../sty/IEEEtran}
+
+
+
+
+
+% Some very useful LaTeX packages include:
+% (uncomment the ones you want to load)
+
+
+% *** MISC UTILITY PACKAGES ***
+%
+%\usepackage{ifpdf}
+% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional
+% compilation based on whether the output is pdf or dvi.
+% usage:
+% \ifpdf
+% % pdf code
+% \else
+% % dvi code
+% \fi
+% The latest version of ifpdf.sty can be obtained from:
+% http://www.ctan.org/pkg/ifpdf
+% Also, note that IEEEtran.cls V1.7 and later provides a builtin
+% \ifCLASSINFOpdf conditional that works the same way.
+% When switching from latex to pdflatex and vice-versa, the compiler may
+% have to be run twice to clear warning/error messages.
+
+
+
+
+
+
+% *** CITATION PACKAGES ***
+%
+%\usepackage{cite}
+% cite.sty was written by Donald Arseneau
+% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package
+% \cite{} output to follow that of the IEEE. Loading the cite package will
+% result in citation numbers being automatically sorted and properly
+% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using
+% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's
+% \cite will automatically add leading space, if needed. Use cite.sty's
+% noadjust option (cite.sty V3.8 and later) if you want to turn this off
+% such as if a citation ever needs to be enclosed in parenthesis.
+% cite.sty is already installed on most LaTeX systems. Be sure and use
+% version 5.0 (2009-03-20) and later if using hyperref.sty.
+% The latest version can be obtained at:
+% http://www.ctan.org/pkg/cite
+% The documentation is contained in the cite.sty file itself.
+
+
+
+
+
+
+% *** GRAPHICS RELATED PACKAGES ***
+%
+\ifCLASSINFOpdf
+ % \usepackage[pdftex]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../pdf/}{../jpeg/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+\else
+ % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
+ % will default to the driver specified in the system graphics.cfg if no
+ % driver is specified.
+ % \usepackage[dvips]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../eps/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.eps}
+\fi
+% graphicx was written by David Carlisle and Sebastian Rahtz. It is
+% required if you want graphics, photos, etc. graphicx.sty is already
+% installed on most LaTeX systems. The latest version and documentation
+% can be obtained at:
+% http://www.ctan.org/pkg/graphicx
+% Another good source of documentation is "Using Imported Graphics in
+% LaTeX2e" by Keith Reckdahl which can be found at:
+% http://www.ctan.org/pkg/epslatex
+%
+% latex, and pdflatex in dvi mode, support graphics in encapsulated
+% postscript (.eps) format. pdflatex in pdf mode supports graphics
+% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure
+% that all non-photo figures use a vector format (.eps, .pdf, .mps) and
+% not a bitmapped formats (.jpeg, .png). The IEEE frowns on bitmapped formats
+% which can result in "jaggedy"/blurry rendering of lines and letters as
+% well as large increases in file sizes.
+%
+% You can find documentation about the pdfTeX application at:
+% http://www.tug.org/applications/pdftex
+
+
+
+
+
+% *** MATH PACKAGES ***
+%
+%\usepackage{amsmath}
+% A popular package from the American Mathematical Society that provides
+% many useful and powerful commands for dealing with mathematics.
+%
+% Note that the amsmath package sets \interdisplaylinepenalty to 10000
+% thus preventing page breaks from occurring within multiline equations. Use:
+%\interdisplaylinepenalty=2500
+% after loading amsmath to restore such page breaks as IEEEtran.cls normally
+% does. amsmath.sty is already installed on most LaTeX systems. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/amsmath
+
+
+
+
+
+% *** SPECIALIZED LIST PACKAGES ***
+%
+%\usepackage{algorithmic}
+% algorithmic.sty was written by Peter Williams and Rogerio Brito.
+% This package provides an algorithmic environment fo describing algorithms.
+% You can use the algorithmic environment in-text or within a figure
+% environment to provide for a floating algorithm. Do NOT use the algorithm
+% floating environment provided by algorithm.sty (by the same authors) or
+% algorithm2e.sty (by Christophe Fiorio) as the IEEE does not use dedicated
+% algorithm float types and packages that provide these will not provide
+% correct IEEE style captions. The latest version and documentation of
+% algorithmic.sty can be obtained at:
+% http://www.ctan.org/pkg/algorithms
+% Also of interest may be the (relatively newer and more customizable)
+% algorithmicx.sty package by Szasz Janos:
+% http://www.ctan.org/pkg/algorithmicx
+
+
+
+
+% *** ALIGNMENT PACKAGES ***
+%
+%\usepackage{array}
+% Frank Mittelbach's and David Carlisle's array.sty patches and improves
+% the standard LaTeX2e array and tabular environments to provide better
+% appearance and additional user controls. As the default LaTeX2e table
+% generation code is lacking to the point of almost being broken with
+% respect to the quality of the end results, all users are strongly
+% advised to use an enhanced (at the very least that provided by array.sty)
+% set of table tools. array.sty is already installed on most systems. The
+% latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/array
+
+
+% IEEEtran contains the IEEEeqnarray family of commands that can be used to
+% generate multiline equations as well as matrices, tables, etc., of high
+% quality.
+
+
+
+
+% *** SUBFIGURE PACKAGES ***
+%\ifCLASSOPTIONcompsoc
+% \usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig}
+%\else
+% \usepackage[caption=false,font=footnotesize]{subfig}
+%\fi
+% subfig.sty, written by Steven Douglas Cochran, is the modern replacement
+% for subfigure.sty, the latter of which is no longer maintained and is
+% incompatible with some LaTeX packages including fixltx2e. However,
+% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty
+% which will override IEEEtran.cls' handling of captions and this will result
+% in non-IEEE style figure/table captions. To prevent this problem, be sure
+% and invoke subfig.sty's "caption=false" package option (available since
+% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls
+% handling of captions.
+% Note that the Computer Society format requires a larger sans serif font
+% than the serif footnote size font used in traditional IEEE formatting
+% and thus the need to invoke different subfig.sty package options depending
+% on whether compsoc mode has been enabled.
+%
+% The latest version and documentation of subfig.sty can be obtained at:
+% http://www.ctan.org/pkg/subfig
+
+
+
+
+% *** FLOAT PACKAGES ***
+%
+%\usepackage{fixltx2e}
+% fixltx2e, the successor to the earlier fix2col.sty, was written by
+% Frank Mittelbach and David Carlisle. This package corrects a few problems
+% in the LaTeX2e kernel, the most notable of which is that in current
+% LaTeX2e releases, the ordering of single and double column floats is not
+% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a
+% single column figure to be placed prior to an earlier double column
+% figure.
+% Be aware that LaTeX2e kernels dated 2015 and later have fixltx2e.sty's
+% corrections already built into the system in which case a warning will
+% be issued if an attempt is made to load fixltx2e.sty as it is no longer
+% needed.
+% The latest version and documentation can be found at:
+% http://www.ctan.org/pkg/fixltx2e
+
+
+%\usepackage{stfloats}
+% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e
+% the ability to do double column floats at the bottom of the page as well
+% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in
+% LaTeX2e). It also provides a command:
+%\fnbelowfloat
+% to enable the placement of footnotes below bottom floats (the standard
+% LaTeX2e kernel puts them above bottom floats). This is an invasive package
+% which rewrites many portions of the LaTeX2e float routines. It may not work
+% with other packages that modify the LaTeX2e float routines. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/stfloats
+% Do not use the stfloats baselinefloat ability as the IEEE does not allow
+% \baselineskip to stretch. Authors submitting work to the IEEE should note
+% that the IEEE rarely uses double column equations and that authors should try
+% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty
+% packages (also by Sigitas Tolusis) as the IEEE does not format its papers in
+% such ways.
+% Do not attempt to use stfloats with fixltx2e as they are incompatible.
+% Instead, use Morten Hogholm'a dblfloatfix which combines the features
+% of both fixltx2e and stfloats:
+%
+% \usepackage{dblfloatfix}
+% The latest version can be found at:
+% http://www.ctan.org/pkg/dblfloatfix
+
+
+
+
+%\ifCLASSOPTIONcaptionsoff
+% \usepackage[nomarkers]{endfloat}
+% \let\MYoriglatexcaption\caption
+% \renewcommand{\caption}[2][\relax]{\MYoriglatexcaption[#2]{#2}}
+%\fi
+% endfloat.sty was written by James Darrell McCauley, Jeff Goldberg and
+% Axel Sommerfeldt. This package may be useful when used in conjunction with
+% IEEEtran.cls' captionsoff option. Some IEEE journals/societies require that
+% submissions have lists of figures/tables at the end of the paper and that
+% figures/tables without any captions are placed on a page by themselves at
+% the end of the document. If needed, the draftcls IEEEtran class option or
+% \CLASSINPUTbaselinestretch interface can be used to increase the line
+% spacing as well. Be sure and use the nomarkers option of endfloat to
+% prevent endfloat from "marking" where the figures would have been placed
+% in the text. The two hack lines of code above are a slight modification of
+% that suggested by in the endfloat docs (section 8.4.1) to ensure that
+% the full captions always appear in the list of figures/tables - even if
+% the user used the short optional argument of \caption[]{}.
+% IEEE papers do not typically make use of \caption[]'s optional argument,
+% so this should not be an issue. A similar trick can be used to disable
+% captions of packages such as subfig.sty that lack options to turn off
+% the subcaptions:
+% For subfig.sty:
+% \let\MYorigsubfloat\subfloat
+% \renewcommand{\subfloat}[2][\relax]{\MYorigsubfloat[]{#2}}
+% However, the above trick will not work if both optional arguments of
+% the \subfloat command are used. Furthermore, there needs to be a
+% description of each subfigure *somewhere* and endfloat does not add
+% subfigure captions to its list of figures. Thus, the best approach is to
+% avoid the use of subfigure captions (many IEEE journals avoid them anyway)
+% and instead reference/explain all the subfigures within the main caption.
+% The latest version of endfloat.sty and its documentation can obtained at:
+% http://www.ctan.org/pkg/endfloat
+%
+% The IEEEtran \ifCLASSOPTIONcaptionsoff conditional can also be used
+% later in the document, say, to conditionally put the References on a
+% page by themselves.
+
+
+
+
+% *** PDF, URL AND HYPERLINK PACKAGES ***
+%
+%\usepackage{url}
+% url.sty was written by Donald Arseneau. It provides better support for
+% handling and breaking URLs. url.sty is already installed on most LaTeX
+% systems. The latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/url
+% Basically, \url{my_url_here}.
+
+
+
+
+% *** Do not adjust lengths that control margins, column widths, etc. ***
+% *** Do not use packages that alter fonts (such as pslatex). ***
+% There should be no need to do such things with IEEEtran.cls V1.6 and later.
+% (Unless specifically asked to do so by the journal or conference you plan
+% to submit to, of course. )
+
+
+% correct bad hyphenation here
+\hyphenation{op-tical net-works semi-conduc-tor}
+
+
+\begin{document}
+%
+% paper title
+% Titles are generally capitalized except for words such as a, an, and, as,
+% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually
+% not capitalized unless they are the first or last word of the title.
+% Linebreaks \\ can be used within to get better formatting as desired.
+% Do not put math or special symbols in the title.
+\title{Bare Demo of IEEEtran.cls\\ for IEEE Journals}
+%
+%
+% author names and IEEE memberships
+% note positions of commas and nonbreaking spaces ( ~ ) LaTeX will not break
+% a structure at a ~ so this keeps an author's name from being broken across
+% two lines.
+% use \thanks{} to gain access to the first footnote area
+% a separate \thanks must be used for each paragraph as LaTeX2e's \thanks
+% was not built to handle multiple paragraphs
+%
+
+\author{Michael~Shell,~\IEEEmembership{Member,~IEEE,}
+ John~Doe,~\IEEEmembership{Fellow,~OSA,}
+ and~Jane~Doe,~\IEEEmembership{Life~Fellow,~IEEE}% <-this % stops a space
+\thanks{M. Shell was with the Department
+of Electrical and Computer Engineering, Georgia Institute of Technology, Atlanta,
+GA, 30332 USA e-mail: (see http://www.michaelshell.org/contact.html).}% <-this % stops a space
+\thanks{J. Doe and J. Doe are with Anonymous University.}% <-this % stops a space
+\thanks{Manuscript received April 19, 2005; revised August 26, 2015.}}
+
+% note the % following the last \IEEEmembership and also \thanks -
+% these prevent an unwanted space from occurring between the last author name
+% and the end of the author line. i.e., if you had this:
+%
+% \author{....lastname \thanks{...} \thanks{...} }
+% ^------------^------------^----Do not want these spaces!
+%
+% a space would be appended to the last name and could cause every name on that
+% line to be shifted left slightly. This is one of those "LaTeX things". For
+% instance, "\textbf{A} \textbf{B}" will typeset as "A B" not "AB". To get
+% "AB" then you have to do: "\textbf{A}\textbf{B}"
+% \thanks is no different in this regard, so shield the last } of each \thanks
+% that ends a line with a % and do not let a space in before the next \thanks.
+% Spaces after \IEEEmembership other than the last one are OK (and needed) as
+% you are supposed to have spaces between the names. For what it is worth,
+% this is a minor point as most people would not even notice if the said evil
+% space somehow managed to creep in.
+
+
+
+% The paper headers
+\markboth{Journal of \LaTeX\ Class Files,~Vol.~14, No.~8, August~2015}%
+{Shell \MakeLowercase{\textit{et al.}}: Bare Demo of IEEEtran.cls for IEEE Journals}
+% The only time the second header will appear is for the odd numbered pages
+% after the title page when using the twoside option.
+%
+% *** Note that you probably will NOT want to include the author's ***
+% *** name in the headers of peer review papers. ***
+% You can use \ifCLASSOPTIONpeerreview for conditional compilation here if
+% you desire.
+
+
+
+
+% If you want to put a publisher's ID mark on the page you can do it like
+% this:
+%\IEEEpubid{0000--0000/00\$00.00~\copyright~2015 IEEE}
+% Remember, if you use this you must call \IEEEpubidadjcol in the second
+% column for its text to clear the IEEEpubid mark.
+
+
+
+% use for special paper notices
+%\IEEEspecialpapernotice{(Invited Paper)}
+
+
+
+
+% make the title area
+\maketitle
+
+% As a general rule, do not put math, special symbols or citations
+% in the abstract or keywords.
+\begin{abstract}
+The abstract goes here.
+\end{abstract}
+
+% Note that keywords are not normally used for peerreview papers.
+\begin{IEEEkeywords}
+IEEE, IEEEtran, journal, \LaTeX, paper, template.
+\end{IEEEkeywords}
+
+
+
+
+
+
+% For peer review papers, you can put extra information on the cover
+% page as needed:
+% \ifCLASSOPTIONpeerreview
+% \begin{center} \bfseries EDICS Category: 3-BBND \end{center}
+% \fi
+%
+% For peerreview papers, this IEEEtran command inserts a page break and
+% creates the second title. It will be ignored for other modes.
+\IEEEpeerreviewmaketitle
+
+
+
+\section{Introduction}
+% The very first letter is a 2 line initial drop letter followed
+% by the rest of the first word in caps.
+%
+% form to use if the first word consists of a single letter:
+% \IEEEPARstart{A}{demo} file is ....
+%
+% form to use if you need the single drop letter followed by
+% normal text (unknown if ever used by the IEEE):
+% \IEEEPARstart{A}{}demo file is ....
+%
+% Some journals put the first two words in caps:
+% \IEEEPARstart{T}{his demo} file is ....
+%
+% Here we have the typical use of a "T" for an initial drop letter
+% and "HIS" in caps to complete the first word.
+\IEEEPARstart{T}{his} demo file is intended to serve as a ``starter file''
+for IEEE journal papers produced under \LaTeX\ using
+IEEEtran.cls version 1.8b and later.
+% You must have at least 2 lines in the paragraph with the drop letter
+% (should never be an issue)
+I wish you the best of success.
+
+\hfill mds
+
+\hfill August 26, 2015
+
+\subsection{Subsection Heading Here}
+Subsection text here.
+
+% needed in second column of first page if using \IEEEpubid
+%\IEEEpubidadjcol
+
+\subsubsection{Subsubsection Heading Here}
+Subsubsection text here.
+
+
+% An example of a floating figure using the graphicx package.
+% Note that \label must occur AFTER (or within) \caption.
+% For figures, \caption should occur after the \includegraphics.
+% Note that IEEEtran v1.7 and later has special internal code that
+% is designed to preserve the operation of \label within \caption
+% even when the captionsoff option is in effect. However, because
+% of issues like this, it may be the safest practice to put all your
+% \label just after \caption rather than within \caption{}.
+%
+% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class
+% option should be used if it is desired that the figures are to be
+% displayed while in draft mode.
+%
+%\begin{figure}[!t]
+%\centering
+%\includegraphics[width=2.5in]{myfigure}
+% where an .eps filename suffix will be assumed under latex,
+% and a .pdf suffix will be assumed for pdflatex; or what has been declared
+% via \DeclareGraphicsExtensions.
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure}
+
+% Note that the IEEE typically puts floats only at the top, even when this
+% results in a large percentage of a column being occupied by floats.
+
+
+% An example of a double column floating figure using two subfigures.
+% (The subfig.sty package must be loaded for this to work.)
+% The subfigure \label commands are set within each subfloat command,
+% and the \label for the overall figure must come after \caption.
+% \hfil is used as a separator to get equal spacing.
+% Watch out that the combined width of all the subfigures on a
+% line do not exceed the text width or a line break will occur.
+%
+%\begin{figure*}[!t]
+%\centering
+%\subfloat[Case I]{\includegraphics[width=2.5in]{box}%
+%\label{fig_first_case}}
+%\hfil
+%\subfloat[Case II]{\includegraphics[width=2.5in]{box}%
+%\label{fig_second_case}}
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure*}
+%
+% Note that often IEEE papers with subfigures do not employ subfigure
+% captions (using the optional argument to \subfloat[]), but instead will
+% reference/describe all of them (a), (b), etc., within the main caption.
+% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure
+% labels, the optional argument to \subfloat must be present. If a
+% subcaption is not desired, just leave its contents blank,
+% e.g., \subfloat[].
+
+
+% An example of a floating table. Note that, for IEEE style tables, the
+% \caption command should come BEFORE the table and, given that table
+% captions serve much like titles, are usually capitalized except for words
+% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to
+% and up, which are usually not capitalized unless they are the first or
+% last word of the caption. Table text will default to \footnotesize as
+% the IEEE normally uses this smaller font for tables.
+% The \label must come after \caption as always.
+%
+%\begin{table}[!t]
+%% increase table row spacing, adjust to taste
+%\renewcommand{\arraystretch}{1.3}
+% if using array.sty, it might be a good idea to tweak the value of
+% \extrarowheight as needed to properly center the text within the cells
+%\caption{An Example of a Table}
+%\label{table_example}
+%\centering
+%% Some packages, such as MDW tools, offer better commands for making tables
+%% than the plain LaTeX2e tabular which is used here.
+%\begin{tabular}{|c||c|}
+%\hline
+%One & Two\\
+%\hline
+%Three & Four\\
+%\hline
+%\end{tabular}
+%\end{table}
+
+
+% Note that the IEEE does not put floats in the very first column
+% - or typically anywhere on the first page for that matter. Also,
+% in-text middle ("here") positioning is typically not used, but it
+% is allowed and encouraged for Computer Society conferences (but
+% not Computer Society journals). Most IEEE journals/conferences use
+% top floats exclusively.
+% Note that, LaTeX2e, unlike IEEE journals/conferences, places
+% footnotes above bottom floats. This can be corrected via the
+% \fnbelowfloat command of the stfloats package.
+
+
+
+
+\section{Conclusion}
+The conclusion goes here.
+
+
+
+
+
+% if have a single appendix:
+%\appendix[Proof of the Zonklar Equations]
+% or
+%\appendix % for no appendix heading
+% do not use \section anymore after \appendix, only \section*
+% is possibly needed
+
+% use appendices with more than one appendix
+% then use \section to start each appendix
+% you must declare a \section before using any
+% \subsection or using \label (\appendices by itself
+% starts a section numbered zero.)
+%
+
+
+\appendices
+\section{Proof of the First Zonklar Equation}
+Appendix one text goes here.
+
+% you can choose not to have a title for an appendix
+% if you want by leaving the argument blank
+\section{}
+Appendix two text goes here.
+
+
+% use section* for acknowledgment
+\section*{Acknowledgment}
+
+
+The authors would like to thank...
+
+
+% Can use something like this to put references on a page
+% by themselves when using endfloat and the captionsoff option.
+\ifCLASSOPTIONcaptionsoff
+ \newpage
+\fi
+
+
+
+% trigger a \newpage just before the given reference
+% number - used to balance the columns on the last page
+% adjust value as needed - may need to be readjusted if
+% the document is modified later
+%\IEEEtriggeratref{8}
+% The "triggered" command can be changed if desired:
+%\IEEEtriggercmd{\enlargethispage{-5in}}
+
+% references section
+
+% can use a bibliography generated by BibTeX as a .bbl file
+% BibTeX documentation can be easily obtained at:
+% http://mirror.ctan.org/biblio/bibtex/contrib/doc/
+% The IEEEtran BibTeX style support page is at:
+% http://www.michaelshell.org/tex/ieeetran/bibtex/
+%\bibliographystyle{IEEEtran}
+% argument is your BibTeX string definitions and bibliography database(s)
+%\bibliography{IEEEabrv,../bib/paper}
+%
+% <OR> manually copy in the resultant .bbl file
+% set second argument of \begin to the number of references
+% (used to reserve space for the reference number labels box)
+\begin{thebibliography}{1}
+
+\bibitem{IEEEhowto:kopka}
+H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus
+ 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
+
+\end{thebibliography}
+
+% biography section
+%
+% If you have an EPS/PDF photo (graphicx package needed) extra braces are
+% needed around the contents of the optional argument to biography to prevent
+% the LaTeX parser from getting confused when it sees the complicated
+% \includegraphics command within an optional argument. (You could create
+% your own custom macro containing the \includegraphics command to make things
+% simpler here.)
+%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{mshell}}]{Michael Shell}
+% or if you just want to reserve a space for a photo:
+
+\begin{IEEEbiography}{Michael Shell}
+Biography text here.
+\end{IEEEbiography}
+
+% if you will not have a photo at all:
+\begin{IEEEbiographynophoto}{John Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% insert where needed to balance the two columns on the last page with
+% biographies
+%\newpage
+
+\begin{IEEEbiographynophoto}{Jane Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% You can push biographies down or up by placing
+% a \vfill before or after them. The appropriate
+% use of \vfill depends on what kind of text is
+% on the last page and whether or not the columns
+% are being equalized.
+
+%\vfill
+
+% Can be used to pull up biographies so that the bottom of the last one
+% is flush with the other column.
+%\enlargethispage{-5in}
+
+
+
+% that's all folks
+\end{document}
+
+
diff --git a/macros/latex/contrib/IEEEtran/bare_jrnl_compsoc.tex b/macros/latex/contrib/IEEEtran/bare_jrnl_compsoc.tex
new file mode 100644
index 0000000000..9935254a95
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bare_jrnl_compsoc.tex
@@ -0,0 +1,787 @@
+
+%% bare_jrnl_compsoc.tex
+%% V1.4b
+%% 2015/08/26
+%% by Michael Shell
+%% See:
+%% http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% This is a skeleton file demonstrating the use of IEEEtran.cls
+%% (requires IEEEtran.cls version 1.8b or later) with an IEEE
+%% Computer Society journal paper.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and
+%% http://www.ieee.org/
+
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+% *** Authors should verify (and, if needed, correct) their LaTeX system ***
+% *** with the testflow diagnostic prior to trusting their LaTeX platform ***
+% *** with production work. The IEEE's font choices and paper sizes can ***
+% *** trigger bugs that do not appear when using other class files. *** ***
+% The testflow support page is at:
+% http://www.michaelshell.org/tex/testflow/
+
+
+\documentclass[10pt,journal,compsoc]{IEEEtran}
+%
+% If IEEEtran.cls has not been installed into the LaTeX system files,
+% manually specify the path to it like:
+% \documentclass[10pt,journal,compsoc]{../sty/IEEEtran}
+
+
+
+
+
+% Some very useful LaTeX packages include:
+% (uncomment the ones you want to load)
+
+
+% *** MISC UTILITY PACKAGES ***
+%
+%\usepackage{ifpdf}
+% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional
+% compilation based on whether the output is pdf or dvi.
+% usage:
+% \ifpdf
+% % pdf code
+% \else
+% % dvi code
+% \fi
+% The latest version of ifpdf.sty can be obtained from:
+% http://www.ctan.org/pkg/ifpdf
+% Also, note that IEEEtran.cls V1.7 and later provides a builtin
+% \ifCLASSINFOpdf conditional that works the same way.
+% When switching from latex to pdflatex and vice-versa, the compiler may
+% have to be run twice to clear warning/error messages.
+
+
+
+
+
+
+% *** CITATION PACKAGES ***
+%
+\ifCLASSOPTIONcompsoc
+ % IEEE Computer Society needs nocompress option
+ % requires cite.sty v4.0 or later (November 2003)
+ \usepackage[nocompress]{cite}
+\else
+ % normal IEEE
+ \usepackage{cite}
+\fi
+% cite.sty was written by Donald Arseneau
+% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package
+% \cite{} output to follow that of the IEEE. Loading the cite package will
+% result in citation numbers being automatically sorted and properly
+% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using
+% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's
+% \cite will automatically add leading space, if needed. Use cite.sty's
+% noadjust option (cite.sty V3.8 and later) if you want to turn this off
+% such as if a citation ever needs to be enclosed in parenthesis.
+% cite.sty is already installed on most LaTeX systems. Be sure and use
+% version 5.0 (2009-03-20) and later if using hyperref.sty.
+% The latest version can be obtained at:
+% http://www.ctan.org/pkg/cite
+% The documentation is contained in the cite.sty file itself.
+%
+% Note that some packages require special options to format as the Computer
+% Society requires. In particular, Computer Society papers do not use
+% compressed citation ranges as is done in typical IEEE papers
+% (e.g., [1]-[4]). Instead, they list every citation separately in order
+% (e.g., [1], [2], [3], [4]). To get the latter we need to load the cite
+% package with the nocompress option which is supported by cite.sty v4.0
+% and later. Note also the use of a CLASSOPTION conditional provided by
+% IEEEtran.cls V1.7 and later.
+
+
+
+
+
+% *** GRAPHICS RELATED PACKAGES ***
+%
+\ifCLASSINFOpdf
+ % \usepackage[pdftex]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../pdf/}{../jpeg/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+\else
+ % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
+ % will default to the driver specified in the system graphics.cfg if no
+ % driver is specified.
+ % \usepackage[dvips]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../eps/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.eps}
+\fi
+% graphicx was written by David Carlisle and Sebastian Rahtz. It is
+% required if you want graphics, photos, etc. graphicx.sty is already
+% installed on most LaTeX systems. The latest version and documentation
+% can be obtained at:
+% http://www.ctan.org/pkg/graphicx
+% Another good source of documentation is "Using Imported Graphics in
+% LaTeX2e" by Keith Reckdahl which can be found at:
+% http://www.ctan.org/pkg/epslatex
+%
+% latex, and pdflatex in dvi mode, support graphics in encapsulated
+% postscript (.eps) format. pdflatex in pdf mode supports graphics
+% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure
+% that all non-photo figures use a vector format (.eps, .pdf, .mps) and
+% not a bitmapped formats (.jpeg, .png). The IEEE frowns on bitmapped formats
+% which can result in "jaggedy"/blurry rendering of lines and letters as
+% well as large increases in file sizes.
+%
+% You can find documentation about the pdfTeX application at:
+% http://www.tug.org/applications/pdftex
+
+
+
+
+
+
+% *** MATH PACKAGES ***
+%
+%\usepackage{amsmath}
+% A popular package from the American Mathematical Society that provides
+% many useful and powerful commands for dealing with mathematics.
+%
+% Note that the amsmath package sets \interdisplaylinepenalty to 10000
+% thus preventing page breaks from occurring within multiline equations. Use:
+%\interdisplaylinepenalty=2500
+% after loading amsmath to restore such page breaks as IEEEtran.cls normally
+% does. amsmath.sty is already installed on most LaTeX systems. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/amsmath
+
+
+
+
+
+% *** SPECIALIZED LIST PACKAGES ***
+%
+%\usepackage{algorithmic}
+% algorithmic.sty was written by Peter Williams and Rogerio Brito.
+% This package provides an algorithmic environment fo describing algorithms.
+% You can use the algorithmic environment in-text or within a figure
+% environment to provide for a floating algorithm. Do NOT use the algorithm
+% floating environment provided by algorithm.sty (by the same authors) or
+% algorithm2e.sty (by Christophe Fiorio) as the IEEE does not use dedicated
+% algorithm float types and packages that provide these will not provide
+% correct IEEE style captions. The latest version and documentation of
+% algorithmic.sty can be obtained at:
+% http://www.ctan.org/pkg/algorithms
+% Also of interest may be the (relatively newer and more customizable)
+% algorithmicx.sty package by Szasz Janos:
+% http://www.ctan.org/pkg/algorithmicx
+
+
+
+
+% *** ALIGNMENT PACKAGES ***
+%
+%\usepackage{array}
+% Frank Mittelbach's and David Carlisle's array.sty patches and improves
+% the standard LaTeX2e array and tabular environments to provide better
+% appearance and additional user controls. As the default LaTeX2e table
+% generation code is lacking to the point of almost being broken with
+% respect to the quality of the end results, all users are strongly
+% advised to use an enhanced (at the very least that provided by array.sty)
+% set of table tools. array.sty is already installed on most systems. The
+% latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/array
+
+
+% IEEEtran contains the IEEEeqnarray family of commands that can be used to
+% generate multiline equations as well as matrices, tables, etc., of high
+% quality.
+
+
+
+
+% *** SUBFIGURE PACKAGES ***
+%\ifCLASSOPTIONcompsoc
+% \usepackage[caption=false,font=footnotesize,labelfont=sf,textfont=sf]{subfig}
+%\else
+% \usepackage[caption=false,font=footnotesize]{subfig}
+%\fi
+% subfig.sty, written by Steven Douglas Cochran, is the modern replacement
+% for subfigure.sty, the latter of which is no longer maintained and is
+% incompatible with some LaTeX packages including fixltx2e. However,
+% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty
+% which will override IEEEtran.cls' handling of captions and this will result
+% in non-IEEE style figure/table captions. To prevent this problem, be sure
+% and invoke subfig.sty's "caption=false" package option (available since
+% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls
+% handling of captions.
+% Note that the Computer Society format requires a sans serif font rather
+% than the serif font used in traditional IEEE formatting and thus the need
+% to invoke different subfig.sty package options depending on whether
+% compsoc mode has been enabled.
+%
+% The latest version and documentation of subfig.sty can be obtained at:
+% http://www.ctan.org/pkg/subfig
+
+
+
+
+% *** FLOAT PACKAGES ***
+%
+%\usepackage{fixltx2e}
+% fixltx2e, the successor to the earlier fix2col.sty, was written by
+% Frank Mittelbach and David Carlisle. This package corrects a few problems
+% in the LaTeX2e kernel, the most notable of which is that in current
+% LaTeX2e releases, the ordering of single and double column floats is not
+% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a
+% single column figure to be placed prior to an earlier double column
+% figure.
+% Be aware that LaTeX2e kernels dated 2015 and later have fixltx2e.sty's
+% corrections already built into the system in which case a warning will
+% be issued if an attempt is made to load fixltx2e.sty as it is no longer
+% needed.
+% The latest version and documentation can be found at:
+% http://www.ctan.org/pkg/fixltx2e
+
+
+%\usepackage{stfloats}
+% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e
+% the ability to do double column floats at the bottom of the page as well
+% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in
+% LaTeX2e). It also provides a command:
+%\fnbelowfloat
+% to enable the placement of footnotes below bottom floats (the standard
+% LaTeX2e kernel puts them above bottom floats). This is an invasive package
+% which rewrites many portions of the LaTeX2e float routines. It may not work
+% with other packages that modify the LaTeX2e float routines. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/stfloats
+% Do not use the stfloats baselinefloat ability as the IEEE does not allow
+% \baselineskip to stretch. Authors submitting work to the IEEE should note
+% that the IEEE rarely uses double column equations and that authors should try
+% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty
+% packages (also by Sigitas Tolusis) as the IEEE does not format its papers in
+% such ways.
+% Do not attempt to use stfloats with fixltx2e as they are incompatible.
+% Instead, use Morten Hogholm'a dblfloatfix which combines the features
+% of both fixltx2e and stfloats:
+%
+% \usepackage{dblfloatfix}
+% The latest version can be found at:
+% http://www.ctan.org/pkg/dblfloatfix
+
+
+
+
+%\ifCLASSOPTIONcaptionsoff
+% \usepackage[nomarkers]{endfloat}
+% \let\MYoriglatexcaption\caption
+% \renewcommand{\caption}[2][\relax]{\MYoriglatexcaption[#2]{#2}}
+%\fi
+% endfloat.sty was written by James Darrell McCauley, Jeff Goldberg and
+% Axel Sommerfeldt. This package may be useful when used in conjunction with
+% IEEEtran.cls' captionsoff option. Some IEEE journals/societies require that
+% submissions have lists of figures/tables at the end of the paper and that
+% figures/tables without any captions are placed on a page by themselves at
+% the end of the document. If needed, the draftcls IEEEtran class option or
+% \CLASSINPUTbaselinestretch interface can be used to increase the line
+% spacing as well. Be sure and use the nomarkers option of endfloat to
+% prevent endfloat from "marking" where the figures would have been placed
+% in the text. The two hack lines of code above are a slight modification of
+% that suggested by in the endfloat docs (section 8.4.1) to ensure that
+% the full captions always appear in the list of figures/tables - even if
+% the user used the short optional argument of \caption[]{}.
+% IEEE papers do not typically make use of \caption[]'s optional argument,
+% so this should not be an issue. A similar trick can be used to disable
+% captions of packages such as subfig.sty that lack options to turn off
+% the subcaptions:
+% For subfig.sty:
+% \let\MYorigsubfloat\subfloat
+% \renewcommand{\subfloat}[2][\relax]{\MYorigsubfloat[]{#2}}
+% However, the above trick will not work if both optional arguments of
+% the \subfloat command are used. Furthermore, there needs to be a
+% description of each subfigure *somewhere* and endfloat does not add
+% subfigure captions to its list of figures. Thus, the best approach is to
+% avoid the use of subfigure captions (many IEEE journals avoid them anyway)
+% and instead reference/explain all the subfigures within the main caption.
+% The latest version of endfloat.sty and its documentation can obtained at:
+% http://www.ctan.org/pkg/endfloat
+%
+% The IEEEtran \ifCLASSOPTIONcaptionsoff conditional can also be used
+% later in the document, say, to conditionally put the References on a
+% page by themselves.
+
+
+
+
+% *** PDF, URL AND HYPERLINK PACKAGES ***
+%
+%\usepackage{url}
+% url.sty was written by Donald Arseneau. It provides better support for
+% handling and breaking URLs. url.sty is already installed on most LaTeX
+% systems. The latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/url
+% Basically, \url{my_url_here}.
+
+
+
+
+
+% *** Do not adjust lengths that control margins, column widths, etc. ***
+% *** Do not use packages that alter fonts (such as pslatex). ***
+% There should be no need to do such things with IEEEtran.cls V1.6 and later.
+% (Unless specifically asked to do so by the journal or conference you plan
+% to submit to, of course. )
+
+
+% correct bad hyphenation here
+\hyphenation{op-tical net-works semi-conduc-tor}
+
+
+\begin{document}
+%
+% paper title
+% Titles are generally capitalized except for words such as a, an, and, as,
+% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually
+% not capitalized unless they are the first or last word of the title.
+% Linebreaks \\ can be used within to get better formatting as desired.
+% Do not put math or special symbols in the title.
+\title{Bare Demo of IEEEtran.cls for\\ IEEE Computer Society Journals}
+%
+%
+% author names and IEEE memberships
+% note positions of commas and nonbreaking spaces ( ~ ) LaTeX will not break
+% a structure at a ~ so this keeps an author's name from being broken across
+% two lines.
+% use \thanks{} to gain access to the first footnote area
+% a separate \thanks must be used for each paragraph as LaTeX2e's \thanks
+% was not built to handle multiple paragraphs
+%
+%
+%\IEEEcompsocitemizethanks is a special \thanks that produces the bulleted
+% lists the Computer Society journals use for "first footnote" author
+% affiliations. Use \IEEEcompsocthanksitem which works much like \item
+% for each affiliation group. When not in compsoc mode,
+% \IEEEcompsocitemizethanks becomes like \thanks and
+% \IEEEcompsocthanksitem becomes a line break with idention. This
+% facilitates dual compilation, although admittedly the differences in the
+% desired content of \author between the different types of papers makes a
+% one-size-fits-all approach a daunting prospect. For instance, compsoc
+% journal papers have the author affiliations above the "Manuscript
+% received ..." text while in non-compsoc journals this is reversed. Sigh.
+
+\author{Michael~Shell,~\IEEEmembership{Member,~IEEE,}
+ John~Doe,~\IEEEmembership{Fellow,~OSA,}
+ and~Jane~Doe,~\IEEEmembership{Life~Fellow,~IEEE}% <-this % stops a space
+\IEEEcompsocitemizethanks{\IEEEcompsocthanksitem M. Shell was with the Department
+of Electrical and Computer Engineering, Georgia Institute of Technology, Atlanta,
+GA, 30332.\protect\\
+% note need leading \protect in front of \\ to get a newline within \thanks as
+% \\ is fragile and will error, could use \hfil\break instead.
+E-mail: see http://www.michaelshell.org/contact.html
+\IEEEcompsocthanksitem J. Doe and J. Doe are with Anonymous University.}% <-this % stops an unwanted space
+\thanks{Manuscript received April 19, 2005; revised August 26, 2015.}}
+
+% note the % following the last \IEEEmembership and also \thanks -
+% these prevent an unwanted space from occurring between the last author name
+% and the end of the author line. i.e., if you had this:
+%
+% \author{....lastname \thanks{...} \thanks{...} }
+% ^------------^------------^----Do not want these spaces!
+%
+% a space would be appended to the last name and could cause every name on that
+% line to be shifted left slightly. This is one of those "LaTeX things". For
+% instance, "\textbf{A} \textbf{B}" will typeset as "A B" not "AB". To get
+% "AB" then you have to do: "\textbf{A}\textbf{B}"
+% \thanks is no different in this regard, so shield the last } of each \thanks
+% that ends a line with a % and do not let a space in before the next \thanks.
+% Spaces after \IEEEmembership other than the last one are OK (and needed) as
+% you are supposed to have spaces between the names. For what it is worth,
+% this is a minor point as most people would not even notice if the said evil
+% space somehow managed to creep in.
+
+
+
+% The paper headers
+\markboth{Journal of \LaTeX\ Class Files,~Vol.~14, No.~8, August~2015}%
+{Shell \MakeLowercase{\textit{et al.}}: Bare Demo of IEEEtran.cls for Computer Society Journals}
+% The only time the second header will appear is for the odd numbered pages
+% after the title page when using the twoside option.
+%
+% *** Note that you probably will NOT want to include the author's ***
+% *** name in the headers of peer review papers. ***
+% You can use \ifCLASSOPTIONpeerreview for conditional compilation here if
+% you desire.
+
+
+
+% The publisher's ID mark at the bottom of the page is less important with
+% Computer Society journal papers as those publications place the marks
+% outside of the main text columns and, therefore, unlike regular IEEE
+% journals, the available text space is not reduced by their presence.
+% If you want to put a publisher's ID mark on the page you can do it like
+% this:
+%\IEEEpubid{0000--0000/00\$00.00~\copyright~2015 IEEE}
+% or like this to get the Computer Society new two part style.
+%\IEEEpubid{\makebox[\columnwidth]{\hfill 0000--0000/00/\$00.00~\copyright~2015 IEEE}%
+%\hspace{\columnsep}\makebox[\columnwidth]{Published by the IEEE Computer Society\hfill}}
+% Remember, if you use this you must call \IEEEpubidadjcol in the second
+% column for its text to clear the IEEEpubid mark (Computer Society jorunal
+% papers don't need this extra clearance.)
+
+
+
+% use for special paper notices
+%\IEEEspecialpapernotice{(Invited Paper)}
+
+
+
+% for Computer Society papers, we must declare the abstract and index terms
+% PRIOR to the title within the \IEEEtitleabstractindextext IEEEtran
+% command as these need to go into the title area created by \maketitle.
+% As a general rule, do not put math, special symbols or citations
+% in the abstract or keywords.
+\IEEEtitleabstractindextext{%
+\begin{abstract}
+The abstract goes here.
+\end{abstract}
+
+% Note that keywords are not normally used for peerreview papers.
+\begin{IEEEkeywords}
+Computer Society, IEEE, IEEEtran, journal, \LaTeX, paper, template.
+\end{IEEEkeywords}}
+
+
+% make the title area
+\maketitle
+
+
+% To allow for easy dual compilation without having to reenter the
+% abstract/keywords data, the \IEEEtitleabstractindextext text will
+% not be used in maketitle, but will appear (i.e., to be "transported")
+% here as \IEEEdisplaynontitleabstractindextext when the compsoc
+% or transmag modes are not selected <OR> if conference mode is selected
+% - because all conference papers position the abstract like regular
+% papers do.
+\IEEEdisplaynontitleabstractindextext
+% \IEEEdisplaynontitleabstractindextext has no effect when using
+% compsoc or transmag under a non-conference mode.
+
+
+
+% For peer review papers, you can put extra information on the cover
+% page as needed:
+% \ifCLASSOPTIONpeerreview
+% \begin{center} \bfseries EDICS Category: 3-BBND \end{center}
+% \fi
+%
+% For peerreview papers, this IEEEtran command inserts a page break and
+% creates the second title. It will be ignored for other modes.
+\IEEEpeerreviewmaketitle
+
+
+
+\IEEEraisesectionheading{\section{Introduction}\label{sec:introduction}}
+% Computer Society journal (but not conference!) papers do something unusual
+% with the very first section heading (almost always called "Introduction").
+% They place it ABOVE the main text! IEEEtran.cls does not automatically do
+% this for you, but you can achieve this effect with the provided
+% \IEEEraisesectionheading{} command. Note the need to keep any \label that
+% is to refer to the section immediately after \section in the above as
+% \IEEEraisesectionheading puts \section within a raised box.
+
+
+
+
+% The very first letter is a 2 line initial drop letter followed
+% by the rest of the first word in caps (small caps for compsoc).
+%
+% form to use if the first word consists of a single letter:
+% \IEEEPARstart{A}{demo} file is ....
+%
+% form to use if you need the single drop letter followed by
+% normal text (unknown if ever used by the IEEE):
+% \IEEEPARstart{A}{}demo file is ....
+%
+% Some journals put the first two words in caps:
+% \IEEEPARstart{T}{his demo} file is ....
+%
+% Here we have the typical use of a "T" for an initial drop letter
+% and "HIS" in caps to complete the first word.
+\IEEEPARstart{T}{his} demo file is intended to serve as a ``starter file''
+for IEEE Computer Society journal papers produced under \LaTeX\ using
+IEEEtran.cls version 1.8b and later.
+% You must have at least 2 lines in the paragraph with the drop letter
+% (should never be an issue)
+I wish you the best of success.
+
+\hfill mds
+
+\hfill August 26, 2015
+
+\subsection{Subsection Heading Here}
+Subsection text here.
+
+% needed in second column of first page if using \IEEEpubid
+%\IEEEpubidadjcol
+
+\subsubsection{Subsubsection Heading Here}
+Subsubsection text here.
+
+
+% An example of a floating figure using the graphicx package.
+% Note that \label must occur AFTER (or within) \caption.
+% For figures, \caption should occur after the \includegraphics.
+% Note that IEEEtran v1.7 and later has special internal code that
+% is designed to preserve the operation of \label within \caption
+% even when the captionsoff option is in effect. However, because
+% of issues like this, it may be the safest practice to put all your
+% \label just after \caption rather than within \caption{}.
+%
+% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class
+% option should be used if it is desired that the figures are to be
+% displayed while in draft mode.
+%
+%\begin{figure}[!t]
+%\centering
+%\includegraphics[width=2.5in]{myfigure}
+% where an .eps filename suffix will be assumed under latex,
+% and a .pdf suffix will be assumed for pdflatex; or what has been declared
+% via \DeclareGraphicsExtensions.
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure}
+
+% Note that the IEEE typically puts floats only at the top, even when this
+% results in a large percentage of a column being occupied by floats.
+% However, the Computer Society has been known to put floats at the bottom.
+
+
+% An example of a double column floating figure using two subfigures.
+% (The subfig.sty package must be loaded for this to work.)
+% The subfigure \label commands are set within each subfloat command,
+% and the \label for the overall figure must come after \caption.
+% \hfil is used as a separator to get equal spacing.
+% Watch out that the combined width of all the subfigures on a
+% line do not exceed the text width or a line break will occur.
+%
+%\begin{figure*}[!t]
+%\centering
+%\subfloat[Case I]{\includegraphics[width=2.5in]{box}%
+%\label{fig_first_case}}
+%\hfil
+%\subfloat[Case II]{\includegraphics[width=2.5in]{box}%
+%\label{fig_second_case}}
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure*}
+%
+% Note that often IEEE papers with subfigures do not employ subfigure
+% captions (using the optional argument to \subfloat[]), but instead will
+% reference/describe all of them (a), (b), etc., within the main caption.
+% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure
+% labels, the optional argument to \subfloat must be present. If a
+% subcaption is not desired, just leave its contents blank,
+% e.g., \subfloat[].
+
+
+% An example of a floating table. Note that, for IEEE style tables, the
+% \caption command should come BEFORE the table and, given that table
+% captions serve much like titles, are usually capitalized except for words
+% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to
+% and up, which are usually not capitalized unless they are the first or
+% last word of the caption. Table text will default to \footnotesize as
+% the IEEE normally uses this smaller font for tables.
+% The \label must come after \caption as always.
+%
+%\begin{table}[!t]
+%% increase table row spacing, adjust to taste
+%\renewcommand{\arraystretch}{1.3}
+% if using array.sty, it might be a good idea to tweak the value of
+% \extrarowheight as needed to properly center the text within the cells
+%\caption{An Example of a Table}
+%\label{table_example}
+%\centering
+%% Some packages, such as MDW tools, offer better commands for making tables
+%% than the plain LaTeX2e tabular which is used here.
+%\begin{tabular}{|c||c|}
+%\hline
+%One & Two\\
+%\hline
+%Three & Four\\
+%\hline
+%\end{tabular}
+%\end{table}
+
+
+% Note that the IEEE does not put floats in the very first column
+% - or typically anywhere on the first page for that matter. Also,
+% in-text middle ("here") positioning is typically not used, but it
+% is allowed and encouraged for Computer Society conferences (but
+% not Computer Society journals). Most IEEE journals/conferences use
+% top floats exclusively.
+% Note that, LaTeX2e, unlike IEEE journals/conferences, places
+% footnotes above bottom floats. This can be corrected via the
+% \fnbelowfloat command of the stfloats package.
+
+
+
+
+\section{Conclusion}
+The conclusion goes here.
+
+
+
+
+
+% if have a single appendix:
+%\appendix[Proof of the Zonklar Equations]
+% or
+%\appendix % for no appendix heading
+% do not use \section anymore after \appendix, only \section*
+% is possibly needed
+
+% use appendices with more than one appendix
+% then use \section to start each appendix
+% you must declare a \section before using any
+% \subsection or using \label (\appendices by itself
+% starts a section numbered zero.)
+%
+
+
+\appendices
+\section{Proof of the First Zonklar Equation}
+Appendix one text goes here.
+
+% you can choose not to have a title for an appendix
+% if you want by leaving the argument blank
+\section{}
+Appendix two text goes here.
+
+
+% use section* for acknowledgment
+\ifCLASSOPTIONcompsoc
+ % The Computer Society usually uses the plural form
+ \section*{Acknowledgments}
+\else
+ % regular IEEE prefers the singular form
+ \section*{Acknowledgment}
+\fi
+
+
+The authors would like to thank...
+
+
+% Can use something like this to put references on a page
+% by themselves when using endfloat and the captionsoff option.
+\ifCLASSOPTIONcaptionsoff
+ \newpage
+\fi
+
+
+
+% trigger a \newpage just before the given reference
+% number - used to balance the columns on the last page
+% adjust value as needed - may need to be readjusted if
+% the document is modified later
+%\IEEEtriggeratref{8}
+% The "triggered" command can be changed if desired:
+%\IEEEtriggercmd{\enlargethispage{-5in}}
+
+% references section
+
+% can use a bibliography generated by BibTeX as a .bbl file
+% BibTeX documentation can be easily obtained at:
+% http://mirror.ctan.org/biblio/bibtex/contrib/doc/
+% The IEEEtran BibTeX style support page is at:
+% http://www.michaelshell.org/tex/ieeetran/bibtex/
+%\bibliographystyle{IEEEtran}
+% argument is your BibTeX string definitions and bibliography database(s)
+%\bibliography{IEEEabrv,../bib/paper}
+%
+% <OR> manually copy in the resultant .bbl file
+% set second argument of \begin to the number of references
+% (used to reserve space for the reference number labels box)
+\begin{thebibliography}{1}
+
+\bibitem{IEEEhowto:kopka}
+H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus
+ 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
+
+\end{thebibliography}
+
+% biography section
+%
+% If you have an EPS/PDF photo (graphicx package needed) extra braces are
+% needed around the contents of the optional argument to biography to prevent
+% the LaTeX parser from getting confused when it sees the complicated
+% \includegraphics command within an optional argument. (You could create
+% your own custom macro containing the \includegraphics command to make things
+% simpler here.)
+%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{mshell}}]{Michael Shell}
+% or if you just want to reserve a space for a photo:
+
+\begin{IEEEbiography}{Michael Shell}
+Biography text here.
+\end{IEEEbiography}
+
+% if you will not have a photo at all:
+\begin{IEEEbiographynophoto}{John Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% insert where needed to balance the two columns on the last page with
+% biographies
+%\newpage
+
+\begin{IEEEbiographynophoto}{Jane Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% You can push biographies down or up by placing
+% a \vfill before or after them. The appropriate
+% use of \vfill depends on what kind of text is
+% on the last page and whether or not the columns
+% are being equalized.
+
+%\vfill
+
+% Can be used to pull up biographies so that the bottom of the last one
+% is flush with the other column.
+%\enlargethispage{-5in}
+
+
+
+% that's all folks
+\end{document}
+
+
diff --git a/macros/latex/contrib/IEEEtran/bare_jrnl_comsoc.tex b/macros/latex/contrib/IEEEtran/bare_jrnl_comsoc.tex
new file mode 100644
index 0000000000..4ff578399f
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bare_jrnl_comsoc.tex
@@ -0,0 +1,744 @@
+
+%% bare_jrnl_comsoc.tex
+%% V1.4b
+%% 2015/08/26
+%% by Michael Shell
+%% see http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% This is a skeleton file demonstrating the use of IEEEtran.cls
+%% (requires IEEEtran.cls version 1.8b or later) with an IEEE
+%% Communications Society journal paper.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and
+%% http://www.ieee.org/
+
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+% *** Authors should verify (and, if needed, correct) their LaTeX system ***
+% *** with the testflow diagnostic prior to trusting their LaTeX platform ***
+% *** with production work. The IEEE's font choices and paper sizes can ***
+% *** trigger bugs that do not appear when using other class files. *** ***
+% The testflow support page is at:
+% http://www.michaelshell.org/tex/testflow/
+
+
+
+\documentclass[journal,comsoc]{IEEEtran}
+%
+% If IEEEtran.cls has not been installed into the LaTeX system files,
+% manually specify the path to it like:
+% \documentclass[journal,comsoc]{../sty/IEEEtran}
+
+
+\usepackage[T1]{fontenc}% optional T1 font encoding
+
+
+% Some very useful LaTeX packages include:
+% (uncomment the ones you want to load)
+
+
+% *** MISC UTILITY PACKAGES ***
+%
+%\usepackage{ifpdf}
+% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional
+% compilation based on whether the output is pdf or dvi.
+% usage:
+% \ifpdf
+% % pdf code
+% \else
+% % dvi code
+% \fi
+% The latest version of ifpdf.sty can be obtained from:
+% http://www.ctan.org/pkg/ifpdf
+% Also, note that IEEEtran.cls V1.7 and later provides a builtin
+% \ifCLASSINFOpdf conditional that works the same way.
+% When switching from latex to pdflatex and vice-versa, the compiler may
+% have to be run twice to clear warning/error messages.
+
+
+
+
+
+
+% *** CITATION PACKAGES ***
+%
+%\usepackage{cite}
+% cite.sty was written by Donald Arseneau
+% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package
+% \cite{} output to follow that of the IEEE. Loading the cite package will
+% result in citation numbers being automatically sorted and properly
+% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using
+% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's
+% \cite will automatically add leading space, if needed. Use cite.sty's
+% noadjust option (cite.sty V3.8 and later) if you want to turn this off
+% such as if a citation ever needs to be enclosed in parenthesis.
+% cite.sty is already installed on most LaTeX systems. Be sure and use
+% version 5.0 (2009-03-20) and later if using hyperref.sty.
+% The latest version can be obtained at:
+% http://www.ctan.org/pkg/cite
+% The documentation is contained in the cite.sty file itself.
+
+
+
+
+
+
+% *** GRAPHICS RELATED PACKAGES ***
+%
+\ifCLASSINFOpdf
+ % \usepackage[pdftex]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../pdf/}{../jpeg/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+\else
+ % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
+ % will default to the driver specified in the system graphics.cfg if no
+ % driver is specified.
+ % \usepackage[dvips]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../eps/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.eps}
+\fi
+% graphicx was written by David Carlisle and Sebastian Rahtz. It is
+% required if you want graphics, photos, etc. graphicx.sty is already
+% installed on most LaTeX systems. The latest version and documentation
+% can be obtained at:
+% http://www.ctan.org/pkg/graphicx
+% Another good source of documentation is "Using Imported Graphics in
+% LaTeX2e" by Keith Reckdahl which can be found at:
+% http://www.ctan.org/pkg/epslatex
+%
+% latex, and pdflatex in dvi mode, support graphics in encapsulated
+% postscript (.eps) format. pdflatex in pdf mode supports graphics
+% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure
+% that all non-photo figures use a vector format (.eps, .pdf, .mps) and
+% not a bitmapped formats (.jpeg, .png). The IEEE frowns on bitmapped formats
+% which can result in "jaggedy"/blurry rendering of lines and letters as
+% well as large increases in file sizes.
+%
+% You can find documentation about the pdfTeX application at:
+% http://www.tug.org/applications/pdftex
+
+
+
+
+
+% *** MATH PACKAGES ***
+%
+\usepackage{amsmath}
+% A popular package from the American Mathematical Society that provides
+% many useful and powerful commands for dealing with mathematics.
+% Do NOT use the amsbsy package under comsoc mode as that feature is
+% already built into the Times Math font (newtxmath, mathtime, etc.).
+%
+% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000
+% thus preventing page breaks from occurring within multiline equations. Use:
+\interdisplaylinepenalty=2500
+% after loading amsmath to restore such page breaks as IEEEtran.cls normally
+% does. amsmath.sty is already installed on most LaTeX systems. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/amsmath
+
+
+% Select a Times math font under comsoc mode or else one will automatically
+% be selected for you at the document start. This is required as Communications
+% Society journals use a Times, not Computer Modern, math font.
+\usepackage[cmintegrals]{newtxmath}
+% The freely available newtxmath package was written by Michael Sharpe and
+% provides a feature rich Times math font. The cmintegrals option, which is
+% the default under IEEEtran, is needed to get the correct style integral
+% symbols used in Communications Society journals. Version 1.451, July 28,
+% 2015 or later is recommended. Also, do *not* load the newtxtext.sty package
+% as doing so would alter the main text font.
+% http://www.ctan.org/pkg/newtx
+%
+% Alternatively, you can use the MathTime commercial fonts if you have them
+% installed on your system:
+%\usepackage{mtpro2}
+%\usepackage{mt11p}
+%\usepackage{mathtime}
+
+
+%\usepackage{bm}
+% The bm.sty package was written by David Carlisle and Frank Mittelbach.
+% This package provides a \bm{} to produce bold math symbols.
+% http://www.ctan.org/pkg/bm
+
+
+
+
+
+% *** SPECIALIZED LIST PACKAGES ***
+%
+%\usepackage{algorithmic}
+% algorithmic.sty was written by Peter Williams and Rogerio Brito.
+% This package provides an algorithmic environment fo describing algorithms.
+% You can use the algorithmic environment in-text or within a figure
+% environment to provide for a floating algorithm. Do NOT use the algorithm
+% floating environment provided by algorithm.sty (by the same authors) or
+% algorithm2e.sty (by Christophe Fiorio) as the IEEE does not use dedicated
+% algorithm float types and packages that provide these will not provide
+% correct IEEE style captions. The latest version and documentation of
+% algorithmic.sty can be obtained at:
+% http://www.ctan.org/pkg/algorithms
+% Also of interest may be the (relatively newer and more customizable)
+% algorithmicx.sty package by Szasz Janos:
+% http://www.ctan.org/pkg/algorithmicx
+
+
+
+
+% *** ALIGNMENT PACKAGES ***
+%
+%\usepackage{array}
+% Frank Mittelbach's and David Carlisle's array.sty patches and improves
+% the standard LaTeX2e array and tabular environments to provide better
+% appearance and additional user controls. As the default LaTeX2e table
+% generation code is lacking to the point of almost being broken with
+% respect to the quality of the end results, all users are strongly
+% advised to use an enhanced (at the very least that provided by array.sty)
+% set of table tools. array.sty is already installed on most systems. The
+% latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/array
+
+
+% IEEEtran contains the IEEEeqnarray family of commands that can be used to
+% generate multiline equations as well as matrices, tables, etc., of high
+% quality.
+
+
+
+
+% *** SUBFIGURE PACKAGES ***
+%\ifCLASSOPTIONcompsoc
+% \usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig}
+%\else
+% \usepackage[caption=false,font=footnotesize]{subfig}
+%\fi
+% subfig.sty, written by Steven Douglas Cochran, is the modern replacement
+% for subfigure.sty, the latter of which is no longer maintained and is
+% incompatible with some LaTeX packages including fixltx2e. However,
+% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty
+% which will override IEEEtran.cls' handling of captions and this will result
+% in non-IEEE style figure/table captions. To prevent this problem, be sure
+% and invoke subfig.sty's "caption=false" package option (available since
+% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls
+% handling of captions.
+% Note that the Computer Society format requires a larger sans serif font
+% than the serif footnote size font used in traditional IEEE formatting
+% and thus the need to invoke different subfig.sty package options depending
+% on whether compsoc mode has been enabled.
+%
+% The latest version and documentation of subfig.sty can be obtained at:
+% http://www.ctan.org/pkg/subfig
+
+
+
+
+% *** FLOAT PACKAGES ***
+%
+%\usepackage{fixltx2e}
+% fixltx2e, the successor to the earlier fix2col.sty, was written by
+% Frank Mittelbach and David Carlisle. This package corrects a few problems
+% in the LaTeX2e kernel, the most notable of which is that in current
+% LaTeX2e releases, the ordering of single and double column floats is not
+% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a
+% single column figure to be placed prior to an earlier double column
+% figure.
+% Be aware that LaTeX2e kernels dated 2015 and later have fixltx2e.sty's
+% corrections already built into the system in which case a warning will
+% be issued if an attempt is made to load fixltx2e.sty as it is no longer
+% needed.
+% The latest version and documentation can be found at:
+% http://www.ctan.org/pkg/fixltx2e
+
+
+%\usepackage{stfloats}
+% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e
+% the ability to do double column floats at the bottom of the page as well
+% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in
+% LaTeX2e). It also provides a command:
+%\fnbelowfloat
+% to enable the placement of footnotes below bottom floats (the standard
+% LaTeX2e kernel puts them above bottom floats). This is an invasive package
+% which rewrites many portions of the LaTeX2e float routines. It may not work
+% with other packages that modify the LaTeX2e float routines. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/stfloats
+% Do not use the stfloats baselinefloat ability as the IEEE does not allow
+% \baselineskip to stretch. Authors submitting work to the IEEE should note
+% that the IEEE rarely uses double column equations and that authors should try
+% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty
+% packages (also by Sigitas Tolusis) as the IEEE does not format its papers in
+% such ways.
+% Do not attempt to use stfloats with fixltx2e as they are incompatible.
+% Instead, use Morten Hogholm'a dblfloatfix which combines the features
+% of both fixltx2e and stfloats:
+%
+% \usepackage{dblfloatfix}
+% The latest version can be found at:
+% http://www.ctan.org/pkg/dblfloatfix
+
+
+
+
+%\ifCLASSOPTIONcaptionsoff
+% \usepackage[nomarkers]{endfloat}
+% \let\MYoriglatexcaption\caption
+% \renewcommand{\caption}[2][\relax]{\MYoriglatexcaption[#2]{#2}}
+%\fi
+% endfloat.sty was written by James Darrell McCauley, Jeff Goldberg and
+% Axel Sommerfeldt. This package may be useful when used in conjunction with
+% IEEEtran.cls' captionsoff option. Some IEEE journals/societies require that
+% submissions have lists of figures/tables at the end of the paper and that
+% figures/tables without any captions are placed on a page by themselves at
+% the end of the document. If needed, the draftcls IEEEtran class option or
+% \CLASSINPUTbaselinestretch interface can be used to increase the line
+% spacing as well. Be sure and use the nomarkers option of endfloat to
+% prevent endfloat from "marking" where the figures would have been placed
+% in the text. The two hack lines of code above are a slight modification of
+% that suggested by in the endfloat docs (section 8.4.1) to ensure that
+% the full captions always appear in the list of figures/tables - even if
+% the user used the short optional argument of \caption[]{}.
+% IEEE papers do not typically make use of \caption[]'s optional argument,
+% so this should not be an issue. A similar trick can be used to disable
+% captions of packages such as subfig.sty that lack options to turn off
+% the subcaptions:
+% For subfig.sty:
+% \let\MYorigsubfloat\subfloat
+% \renewcommand{\subfloat}[2][\relax]{\MYorigsubfloat[]{#2}}
+% However, the above trick will not work if both optional arguments of
+% the \subfloat command are used. Furthermore, there needs to be a
+% description of each subfigure *somewhere* and endfloat does not add
+% subfigure captions to its list of figures. Thus, the best approach is to
+% avoid the use of subfigure captions (many IEEE journals avoid them anyway)
+% and instead reference/explain all the subfigures within the main caption.
+% The latest version of endfloat.sty and its documentation can obtained at:
+% http://www.ctan.org/pkg/endfloat
+%
+% The IEEEtran \ifCLASSOPTIONcaptionsoff conditional can also be used
+% later in the document, say, to conditionally put the References on a
+% page by themselves.
+
+
+
+
+% *** PDF, URL AND HYPERLINK PACKAGES ***
+%
+%\usepackage{url}
+% url.sty was written by Donald Arseneau. It provides better support for
+% handling and breaking URLs. url.sty is already installed on most LaTeX
+% systems. The latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/url
+% Basically, \url{my_url_here}.
+
+
+
+
+% *** Do not adjust lengths that control margins, column widths, etc. ***
+% *** Do not use packages that alter fonts (such as pslatex). ***
+% There should be no need to do such things with IEEEtran.cls V1.6 and later.
+% (Unless specifically asked to do so by the journal or conference you plan
+% to submit to, of course. )
+
+
+% correct bad hyphenation here
+\hyphenation{op-tical net-works semi-conduc-tor}
+
+
+\begin{document}
+%
+% paper title
+% Titles are generally capitalized except for words such as a, an, and, as,
+% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually
+% not capitalized unless they are the first or last word of the title.
+% Linebreaks \\ can be used within to get better formatting as desired.
+% Do not put math or special symbols in the title.
+\title{Bare Demo of IEEEtran.cls for\\ IEEE Communications Society Journals}
+%
+%
+% author names and IEEE memberships
+% note positions of commas and nonbreaking spaces ( ~ ) LaTeX will not break
+% a structure at a ~ so this keeps an author's name from being broken across
+% two lines.
+% use \thanks{} to gain access to the first footnote area
+% a separate \thanks must be used for each paragraph as LaTeX2e's \thanks
+% was not built to handle multiple paragraphs
+%
+
+\author{Michael~Shell,~\IEEEmembership{Member,~IEEE,}
+ John~Doe,~\IEEEmembership{Fellow,~OSA,}
+ and~Jane~Doe,~\IEEEmembership{Life~Fellow,~IEEE}% <-this % stops a space
+\thanks{M. Shell was with the Department
+of Electrical and Computer Engineering, Georgia Institute of Technology, Atlanta,
+GA, 30332 USA e-mail: (see http://www.michaelshell.org/contact.html).}% <-this % stops a space
+\thanks{J. Doe and J. Doe are with Anonymous University.}% <-this % stops a space
+\thanks{Manuscript received April 19, 2005; revised August 26, 2015.}}
+
+% note the % following the last \IEEEmembership and also \thanks -
+% these prevent an unwanted space from occurring between the last author name
+% and the end of the author line. i.e., if you had this:
+%
+% \author{....lastname \thanks{...} \thanks{...} }
+% ^------------^------------^----Do not want these spaces!
+%
+% a space would be appended to the last name and could cause every name on that
+% line to be shifted left slightly. This is one of those "LaTeX things". For
+% instance, "\textbf{A} \textbf{B}" will typeset as "A B" not "AB". To get
+% "AB" then you have to do: "\textbf{A}\textbf{B}"
+% \thanks is no different in this regard, so shield the last } of each \thanks
+% that ends a line with a % and do not let a space in before the next \thanks.
+% Spaces after \IEEEmembership other than the last one are OK (and needed) as
+% you are supposed to have spaces between the names. For what it is worth,
+% this is a minor point as most people would not even notice if the said evil
+% space somehow managed to creep in.
+
+
+
+% The paper headers
+\markboth{Journal of \LaTeX\ Class Files,~Vol.~14, No.~8, August~2015}%
+{Shell \MakeLowercase{\textit{et al.}}: Bare Demo of IEEEtran.cls for IEEE Communications Society Journals}
+% The only time the second header will appear is for the odd numbered pages
+% after the title page when using the twoside option.
+%
+% *** Note that you probably will NOT want to include the author's ***
+% *** name in the headers of peer review papers. ***
+% You can use \ifCLASSOPTIONpeerreview for conditional compilation here if
+% you desire.
+
+
+
+
+% If you want to put a publisher's ID mark on the page you can do it like
+% this:
+%\IEEEpubid{0000--0000/00\$00.00~\copyright~2015 IEEE}
+% Remember, if you use this you must call \IEEEpubidadjcol in the second
+% column for its text to clear the IEEEpubid mark.
+
+
+
+% use for special paper notices
+%\IEEEspecialpapernotice{(Invited Paper)}
+
+
+
+
+% make the title area
+\maketitle
+
+% As a general rule, do not put math, special symbols or citations
+% in the abstract or keywords.
+\begin{abstract}
+The abstract goes here.
+\end{abstract}
+
+% Note that keywords are not normally used for peerreview papers.
+\begin{IEEEkeywords}
+Communications Society, IEEE, IEEEtran, journal, \LaTeX, paper, template.
+\end{IEEEkeywords}
+
+
+
+
+
+
+% For peer review papers, you can put extra information on the cover
+% page as needed:
+% \ifCLASSOPTIONpeerreview
+% \begin{center} \bfseries EDICS Category: 3-BBND \end{center}
+% \fi
+%
+% For peerreview papers, this IEEEtran command inserts a page break and
+% creates the second title. It will be ignored for other modes.
+\IEEEpeerreviewmaketitle
+
+
+
+\section{Introduction}
+% The very first letter is a 2 line initial drop letter followed
+% by the rest of the first word in caps.
+%
+% form to use if the first word consists of a single letter:
+% \IEEEPARstart{A}{demo} file is ....
+%
+% form to use if you need the single drop letter followed by
+% normal text (unknown if ever used by the IEEE):
+% \IEEEPARstart{A}{}demo file is ....
+%
+% Some journals put the first two words in caps:
+% \IEEEPARstart{T}{his demo} file is ....
+%
+% Here we have the typical use of a "T" for an initial drop letter
+% and "HIS" in caps to complete the first word.
+\IEEEPARstart{T}{his} demo file is intended to serve as a ``starter file''
+for IEEE Communications Society journal papers produced under \LaTeX\ using
+IEEEtran.cls version 1.8b and later.
+% You must have at least 2 lines in the paragraph with the drop letter
+% (should never be an issue)
+I wish you the best of success.
+
+\hfill mds
+
+\hfill August 26, 2015
+
+\subsection{Subsection Heading Here}
+Subsection text here.
+
+% needed in second column of first page if using \IEEEpubid
+%\IEEEpubidadjcol
+
+\subsubsection{Subsubsection Heading Here}
+Subsubsection text here.
+
+
+% An example of a floating figure using the graphicx package.
+% Note that \label must occur AFTER (or within) \caption.
+% For figures, \caption should occur after the \includegraphics.
+% Note that IEEEtran v1.7 and later has special internal code that
+% is designed to preserve the operation of \label within \caption
+% even when the captionsoff option is in effect. However, because
+% of issues like this, it may be the safest practice to put all your
+% \label just after \caption rather than within \caption{}.
+%
+% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class
+% option should be used if it is desired that the figures are to be
+% displayed while in draft mode.
+%
+%\begin{figure}[!t]
+%\centering
+%\includegraphics[width=2.5in]{myfigure}
+% where an .eps filename suffix will be assumed under latex,
+% and a .pdf suffix will be assumed for pdflatex; or what has been declared
+% via \DeclareGraphicsExtensions.
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure}
+
+% Note that the IEEE typically puts floats only at the top, even when this
+% results in a large percentage of a column being occupied by floats.
+
+
+% An example of a double column floating figure using two subfigures.
+% (The subfig.sty package must be loaded for this to work.)
+% The subfigure \label commands are set within each subfloat command,
+% and the \label for the overall figure must come after \caption.
+% \hfil is used as a separator to get equal spacing.
+% Watch out that the combined width of all the subfigures on a
+% line do not exceed the text width or a line break will occur.
+%
+%\begin{figure*}[!t]
+%\centering
+%\subfloat[Case I]{\includegraphics[width=2.5in]{box}%
+%\label{fig_first_case}}
+%\hfil
+%\subfloat[Case II]{\includegraphics[width=2.5in]{box}%
+%\label{fig_second_case}}
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure*}
+%
+% Note that often IEEE papers with subfigures do not employ subfigure
+% captions (using the optional argument to \subfloat[]), but instead will
+% reference/describe all of them (a), (b), etc., within the main caption.
+% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure
+% labels, the optional argument to \subfloat must be present. If a
+% subcaption is not desired, just leave its contents blank,
+% e.g., \subfloat[].
+
+
+% An example of a floating table. Note that, for IEEE style tables, the
+% \caption command should come BEFORE the table and, given that table
+% captions serve much like titles, are usually capitalized except for words
+% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to
+% and up, which are usually not capitalized unless they are the first or
+% last word of the caption. Table text will default to \footnotesize as
+% the IEEE normally uses this smaller font for tables.
+% The \label must come after \caption as always.
+%
+%\begin{table}[!t]
+%% increase table row spacing, adjust to taste
+%\renewcommand{\arraystretch}{1.3}
+% if using array.sty, it might be a good idea to tweak the value of
+% \extrarowheight as needed to properly center the text within the cells
+%\caption{An Example of a Table}
+%\label{table_example}
+%\centering
+%% Some packages, such as MDW tools, offer better commands for making tables
+%% than the plain LaTeX2e tabular which is used here.
+%\begin{tabular}{|c||c|}
+%\hline
+%One & Two\\
+%\hline
+%Three & Four\\
+%\hline
+%\end{tabular}
+%\end{table}
+
+
+% Note that the IEEE does not put floats in the very first column
+% - or typically anywhere on the first page for that matter. Also,
+% in-text middle ("here") positioning is typically not used, but it
+% is allowed and encouraged for Computer Society conferences (but
+% not Computer Society journals). Most IEEE journals/conferences use
+% top floats exclusively.
+% Note that, LaTeX2e, unlike IEEE journals/conferences, places
+% footnotes above bottom floats. This can be corrected via the
+% \fnbelowfloat command of the stfloats package.
+
+
+
+
+\section{Conclusion}
+The conclusion goes here.
+
+
+
+
+
+% if have a single appendix:
+%\appendix[Proof of the Zonklar Equations]
+% or
+%\appendix % for no appendix heading
+% do not use \section anymore after \appendix, only \section*
+% is possibly needed
+
+% use appendices with more than one appendix
+% then use \section to start each appendix
+% you must declare a \section before using any
+% \subsection or using \label (\appendices by itself
+% starts a section numbered zero.)
+%
+
+
+\appendices
+\section{Proof of the First Zonklar Equation}
+Appendix one text goes here.
+
+% you can choose not to have a title for an appendix
+% if you want by leaving the argument blank
+\section{}
+Appendix two text goes here.
+
+
+% use section* for acknowledgment
+\section*{Acknowledgment}
+
+
+The authors would like to thank...
+
+
+% Can use something like this to put references on a page
+% by themselves when using endfloat and the captionsoff option.
+\ifCLASSOPTIONcaptionsoff
+ \newpage
+\fi
+
+
+
+% trigger a \newpage just before the given reference
+% number - used to balance the columns on the last page
+% adjust value as needed - may need to be readjusted if
+% the document is modified later
+%\IEEEtriggeratref{8}
+% The "triggered" command can be changed if desired:
+%\IEEEtriggercmd{\enlargethispage{-5in}}
+
+% references section
+
+% can use a bibliography generated by BibTeX as a .bbl file
+% BibTeX documentation can be easily obtained at:
+% http://mirror.ctan.org/biblio/bibtex/contrib/doc/
+% The IEEEtran BibTeX style support page is at:
+% http://www.michaelshell.org/tex/ieeetran/bibtex/
+%\bibliographystyle{IEEEtran}
+% argument is your BibTeX string definitions and bibliography database(s)
+%\bibliography{IEEEabrv,../bib/paper}
+%
+% <OR> manually copy in the resultant .bbl file
+% set second argument of \begin to the number of references
+% (used to reserve space for the reference number labels box)
+\begin{thebibliography}{1}
+
+\bibitem{IEEEhowto:kopka}
+H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus
+ 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
+
+\end{thebibliography}
+
+% biography section
+%
+% If you have an EPS/PDF photo (graphicx package needed) extra braces are
+% needed around the contents of the optional argument to biography to prevent
+% the LaTeX parser from getting confused when it sees the complicated
+% \includegraphics command within an optional argument. (You could create
+% your own custom macro containing the \includegraphics command to make things
+% simpler here.)
+%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{mshell}}]{Michael Shell}
+% or if you just want to reserve a space for a photo:
+
+\begin{IEEEbiography}{Michael Shell}
+Biography text here.
+\end{IEEEbiography}
+
+% if you will not have a photo at all:
+\begin{IEEEbiographynophoto}{John Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% insert where needed to balance the two columns on the last page with
+% biographies
+%\newpage
+
+\begin{IEEEbiographynophoto}{Jane Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% You can push biographies down or up by placing
+% a \vfill before or after them. The appropriate
+% use of \vfill depends on what kind of text is
+% on the last page and whether or not the columns
+% are being equalized.
+
+%\vfill
+
+% Can be used to pull up biographies so that the bottom of the last one
+% is flush with the other column.
+%\enlargethispage{-5in}
+
+
+
+% that's all folks
+\end{document}
+
+
diff --git a/macros/latex/contrib/IEEEtran/bare_jrnl_transmag.tex b/macros/latex/contrib/IEEEtran/bare_jrnl_transmag.tex
new file mode 100644
index 0000000000..dfe99aed3e
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bare_jrnl_transmag.tex
@@ -0,0 +1,714 @@
+
+%% bare_jrnl_transmag.tex
+%% V1.4b
+%% 2015/08/26
+%% by Michael Shell
+%% see http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% This is a skeleton file demonstrating the use of IEEEtran.cls
+%% (requires IEEEtran.cls version 1.8b or later) with an IEEE
+%% Transactions on Magnetics journal paper.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and
+%% http://www.ieee.org/
+
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+% *** Authors should verify (and, if needed, correct) their LaTeX system ***
+% *** with the testflow diagnostic prior to trusting their LaTeX platform ***
+% *** with production work. The IEEE's font choices and paper sizes can ***
+% *** trigger bugs that do not appear when using other class files. *** ***
+% The testflow support page is at:
+% http://www.michaelshell.org/tex/testflow/
+
+
+
+\documentclass[journal,transmag]{IEEEtran}
+%
+% If IEEEtran.cls has not been installed into the LaTeX system files,
+% manually specify the path to it like:
+% \documentclass[journal]{../sty/IEEEtran}
+
+
+
+
+
+% Some very useful LaTeX packages include:
+% (uncomment the ones you want to load)
+
+
+% *** MISC UTILITY PACKAGES ***
+%
+%\usepackage{ifpdf}
+% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional
+% compilation based on whether the output is pdf or dvi.
+% usage:
+% \ifpdf
+% % pdf code
+% \else
+% % dvi code
+% \fi
+% The latest version of ifpdf.sty can be obtained from:
+% http://www.ctan.org/pkg/ifpdf
+% Also, note that IEEEtran.cls V1.7 and later provides a builtin
+% \ifCLASSINFOpdf conditional that works the same way.
+% When switching from latex to pdflatex and vice-versa, the compiler may
+% have to be run twice to clear warning/error messages.
+
+
+
+
+
+
+% *** CITATION PACKAGES ***
+%
+%\usepackage{cite}
+% cite.sty was written by Donald Arseneau
+% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package
+% \cite{} output to follow that of the IEEE. Loading the cite package will
+% result in citation numbers being automatically sorted and properly
+% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using
+% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's
+% \cite will automatically add leading space, if needed. Use cite.sty's
+% noadjust option (cite.sty V3.8 and later) if you want to turn this off
+% such as if a citation ever needs to be enclosed in parenthesis.
+% cite.sty is already installed on most LaTeX systems. Be sure and use
+% version 5.0 (2009-03-20) and later if using hyperref.sty.
+% The latest version can be obtained at:
+% http://www.ctan.org/pkg/cite
+% The documentation is contained in the cite.sty file itself.
+
+
+
+
+
+
+% *** GRAPHICS RELATED PACKAGES ***
+%
+\ifCLASSINFOpdf
+ % \usepackage[pdftex]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../pdf/}{../jpeg/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+\else
+ % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
+ % will default to the driver specified in the system graphics.cfg if no
+ % driver is specified.
+ % \usepackage[dvips]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../eps/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.eps}
+\fi
+% graphicx was written by David Carlisle and Sebastian Rahtz. It is
+% required if you want graphics, photos, etc. graphicx.sty is already
+% installed on most LaTeX systems. The latest version and documentation
+% can be obtained at:
+% http://www.ctan.org/pkg/graphicx
+% Another good source of documentation is "Using Imported Graphics in
+% LaTeX2e" by Keith Reckdahl which can be found at:
+% http://www.ctan.org/pkg/epslatex
+%
+% latex, and pdflatex in dvi mode, support graphics in encapsulated
+% postscript (.eps) format. pdflatex in pdf mode supports graphics
+% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure
+% that all non-photo figures use a vector format (.eps, .pdf, .mps) and
+% not a bitmapped formats (.jpeg, .png). The IEEE frowns on bitmapped formats
+% which can result in "jaggedy"/blurry rendering of lines and letters as
+% well as large increases in file sizes.
+%
+% You can find documentation about the pdfTeX application at:
+% http://www.tug.org/applications/pdftex
+
+
+
+
+% *** MATH PACKAGES ***
+%
+%\usepackage{amsmath}
+% A popular package from the American Mathematical Society that provides
+% many useful and powerful commands for dealing with mathematics.
+%
+% Note that the amsmath package sets \interdisplaylinepenalty to 10000
+% thus preventing page breaks from occurring within multiline equations. Use:
+%\interdisplaylinepenalty=2500
+% after loading amsmath to restore such page breaks as IEEEtran.cls normally
+% does. amsmath.sty is already installed on most LaTeX systems. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/amsmath
+
+
+
+
+
+% *** SPECIALIZED LIST PACKAGES ***
+%
+%\usepackage{algorithmic}
+% algorithmic.sty was written by Peter Williams and Rogerio Brito.
+% This package provides an algorithmic environment fo describing algorithms.
+% You can use the algorithmic environment in-text or within a figure
+% environment to provide for a floating algorithm. Do NOT use the algorithm
+% floating environment provided by algorithm.sty (by the same authors) or
+% algorithm2e.sty (by Christophe Fiorio) as the IEEE does not use dedicated
+% algorithm float types and packages that provide these will not provide
+% correct IEEE style captions. The latest version and documentation of
+% algorithmic.sty can be obtained at:
+% http://www.ctan.org/pkg/algorithms
+% Also of interest may be the (relatively newer and more customizable)
+% algorithmicx.sty package by Szasz Janos:
+% http://www.ctan.org/pkg/algorithmicx
+
+
+
+
+% *** ALIGNMENT PACKAGES ***
+%
+%\usepackage{array}
+% Frank Mittelbach's and David Carlisle's array.sty patches and improves
+% the standard LaTeX2e array and tabular environments to provide better
+% appearance and additional user controls. As the default LaTeX2e table
+% generation code is lacking to the point of almost being broken with
+% respect to the quality of the end results, all users are strongly
+% advised to use an enhanced (at the very least that provided by array.sty)
+% set of table tools. array.sty is already installed on most systems. The
+% latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/array
+
+
+% IEEEtran contains the IEEEeqnarray family of commands that can be used to
+% generate multiline equations as well as matrices, tables, etc., of high
+% quality.
+
+
+
+
+% *** SUBFIGURE PACKAGES ***
+%\ifCLASSOPTIONcompsoc
+% \usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig}
+%\else
+% \usepackage[caption=false,font=footnotesize]{subfig}
+%\fi
+% subfig.sty, written by Steven Douglas Cochran, is the modern replacement
+% for subfigure.sty, the latter of which is no longer maintained and is
+% incompatible with some LaTeX packages including fixltx2e. However,
+% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty
+% which will override IEEEtran.cls' handling of captions and this will result
+% in non-IEEE style figure/table captions. To prevent this problem, be sure
+% and invoke subfig.sty's "caption=false" package option (available since
+% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls
+% handling of captions.
+% Note that the Computer Society format requires a larger sans serif font
+% than the serif footnote size font used in traditional IEEE formatting
+% and thus the need to invoke different subfig.sty package options depending
+% on whether compsoc mode has been enabled.
+%
+% The latest version and documentation of subfig.sty can be obtained at:
+% http://www.ctan.org/pkg/subfig
+
+
+
+% *** FLOAT PACKAGES ***
+%
+%\usepackage{fixltx2e}
+% fixltx2e, the successor to the earlier fix2col.sty, was written by
+% Frank Mittelbach and David Carlisle. This package corrects a few problems
+% in the LaTeX2e kernel, the most notable of which is that in current
+% LaTeX2e releases, the ordering of single and double column floats is not
+% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a
+% single column figure to be placed prior to an earlier double column
+% figure.
+% Be aware that LaTeX2e kernels dated 2015 and later have fixltx2e.sty's
+% corrections already built into the system in which case a warning will
+% be issued if an attempt is made to load fixltx2e.sty as it is no longer
+% needed.
+% The latest version and documentation can be found at:
+% http://www.ctan.org/pkg/fixltx2e
+
+
+%\usepackage{stfloats}
+% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e
+% the ability to do double column floats at the bottom of the page as well
+% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in
+% LaTeX2e). It also provides a command:
+%\fnbelowfloat
+% to enable the placement of footnotes below bottom floats (the standard
+% LaTeX2e kernel puts them above bottom floats). This is an invasive package
+% which rewrites many portions of the LaTeX2e float routines. It may not work
+% with other packages that modify the LaTeX2e float routines. The latest
+% version and documentation can be obtained at:
+% http://www.ctan.org/pkg/stfloats
+% Do not use the stfloats baselinefloat ability as the IEEE does not allow
+% \baselineskip to stretch. Authors submitting work to the IEEE should note
+% that the IEEE rarely uses double column equations and that authors should try
+% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty
+% packages (also by Sigitas Tolusis) as the IEEE does not format its papers in
+% such ways.
+% Do not attempt to use stfloats with fixltx2e as they are incompatible.
+% Instead, use Morten Hogholm'a dblfloatfix which combines the features
+% of both fixltx2e and stfloats:
+%
+% \usepackage{dblfloatfix}
+% The latest version can be found at:
+% http://www.ctan.org/pkg/dblfloatfix
+
+
+
+
+%\ifCLASSOPTIONcaptionsoff
+% \usepackage[nomarkers]{endfloat}
+% \let\MYoriglatexcaption\caption
+% \renewcommand{\caption}[2][\relax]{\MYoriglatexcaption[#2]{#2}}
+%\fi
+% endfloat.sty was written by James Darrell McCauley, Jeff Goldberg and
+% Axel Sommerfeldt. This package may be useful when used in conjunction with
+% IEEEtran.cls' captionsoff option. Some IEEE journals/societies require that
+% submissions have lists of figures/tables at the end of the paper and that
+% figures/tables without any captions are placed on a page by themselves at
+% the end of the document. If needed, the draftcls IEEEtran class option or
+% \CLASSINPUTbaselinestretch interface can be used to increase the line
+% spacing as well. Be sure and use the nomarkers option of endfloat to
+% prevent endfloat from "marking" where the figures would have been placed
+% in the text. The two hack lines of code above are a slight modification of
+% that suggested by in the endfloat docs (section 8.4.1) to ensure that
+% the full captions always appear in the list of figures/tables - even if
+% the user used the short optional argument of \caption[]{}.
+% IEEE papers do not typically make use of \caption[]'s optional argument,
+% so this should not be an issue. A similar trick can be used to disable
+% captions of packages such as subfig.sty that lack options to turn off
+% the subcaptions:
+% For subfig.sty:
+% \let\MYorigsubfloat\subfloat
+% \renewcommand{\subfloat}[2][\relax]{\MYorigsubfloat[]{#2}}
+% However, the above trick will not work if both optional arguments of
+% the \subfloat command are used. Furthermore, there needs to be a
+% description of each subfigure *somewhere* and endfloat does not add
+% subfigure captions to its list of figures. Thus, the best approach is to
+% avoid the use of subfigure captions (many IEEE journals avoid them anyway)
+% and instead reference/explain all the subfigures within the main caption.
+% The latest version of endfloat.sty and its documentation can obtained at:
+% http://www.ctan.org/pkg/endfloat
+%
+% The IEEEtran \ifCLASSOPTIONcaptionsoff conditional can also be used
+% later in the document, say, to conditionally put the References on a
+% page by themselves.
+
+
+
+
+% *** PDF, URL AND HYPERLINK PACKAGES ***
+%
+%\usepackage{url}
+% url.sty was written by Donald Arseneau. It provides better support for
+% handling and breaking URLs. url.sty is already installed on most LaTeX
+% systems. The latest version and documentation can be obtained at:
+% http://www.ctan.org/pkg/url
+% Basically, \url{my_url_here}.
+
+
+
+
+% *** Do not adjust lengths that control margins, column widths, etc. ***
+% *** Do not use packages that alter fonts (such as pslatex). ***
+% There should be no need to do such things with IEEEtran.cls V1.6 and later.
+% (Unless specifically asked to do so by the journal or conference you plan
+% to submit to, of course. )
+
+
+% correct bad hyphenation here
+\hyphenation{op-tical net-works semi-conduc-tor}
+
+
+\begin{document}
+%
+% paper title
+% Titles are generally capitalized except for words such as a, an, and, as,
+% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually
+% not capitalized unless they are the first or last word of the title.
+% Linebreaks \\ can be used within to get better formatting as desired.
+% Do not put math or special symbols in the title.
+\title{Bare Demo of IEEEtran.cls for\\ IEEE \textsc{Transactions on Magnetics}}
+
+
+
+% author names and affiliations
+% transmag papers use the long conference author name format.
+
+\author{\IEEEauthorblockN{Michael Shell\IEEEauthorrefmark{1},
+Homer Simpson\IEEEauthorrefmark{2},
+James Kirk\IEEEauthorrefmark{3},
+Montgomery Scott\IEEEauthorrefmark{3}, and
+Eldon Tyrell\IEEEauthorrefmark{4},~\IEEEmembership{Fellow,~IEEE}}
+\IEEEauthorblockA{\IEEEauthorrefmark{1}School of Electrical and Computer Engineering,
+Georgia Institute of Technology, Atlanta, GA 30332 USA}
+\IEEEauthorblockA{\IEEEauthorrefmark{2}Twentieth Century Fox, Springfield, USA}
+\IEEEauthorblockA{\IEEEauthorrefmark{3}Starfleet Academy, San Francisco, CA 96678 USA}
+\IEEEauthorblockA{\IEEEauthorrefmark{4}Tyrell Inc., 123 Replicant Street, Los Angeles, CA 90210 USA}% <-this % stops an unwanted space
+\thanks{Manuscript received December 1, 2012; revised August 26, 2015.
+Corresponding author: M. Shell (email: http://www.michaelshell.org/contact.html).}}
+
+
+
+% The paper headers
+\markboth{Journal of \LaTeX\ Class Files,~Vol.~14, No.~8, August~2015}%
+{Shell \MakeLowercase{\textit{et al.}}: Bare Demo of IEEEtran.cls for IEEE Transactions on Magnetics Journals}
+% The only time the second header will appear is for the odd numbered pages
+% after the title page when using the twoside option.
+%
+% *** Note that you probably will NOT want to include the author's ***
+% *** name in the headers of peer review papers. ***
+% You can use \ifCLASSOPTIONpeerreview for conditional compilation here if
+% you desire.
+
+
+
+
+% If you want to put a publisher's ID mark on the page you can do it like
+% this:
+%\IEEEpubid{0000--0000/00\$00.00~\copyright~2015 IEEE}
+% Remember, if you use this you must call \IEEEpubidadjcol in the second
+% column for its text to clear the IEEEpubid mark.
+
+
+
+% use for special paper notices
+%\IEEEspecialpapernotice{(Invited Paper)}
+
+
+% for Transactions on Magnetics papers, we must declare the abstract and
+% index terms PRIOR to the title within the \IEEEtitleabstractindextext
+% IEEEtran command as these need to go into the title area created by
+% \maketitle.
+% As a general rule, do not put math, special symbols or citations
+% in the abstract or keywords.
+\IEEEtitleabstractindextext{%
+\begin{abstract}
+The abstract goes here.
+\end{abstract}
+
+% Note that keywords are not normally used for peerreview papers.
+\begin{IEEEkeywords}
+IEEE, IEEEtran, IEEE Transactions on Magnetics, journal, \LaTeX, magnetics, paper, template.
+\end{IEEEkeywords}}
+
+
+
+% make the title area
+\maketitle
+
+
+% To allow for easy dual compilation without having to reenter the
+% abstract/keywords data, the \IEEEtitleabstractindextext text will
+% not be used in maketitle, but will appear (i.e., to be "transported")
+% here as \IEEEdisplaynontitleabstractindextext when the compsoc
+% or transmag modes are not selected <OR> if conference mode is selected
+% - because all conference papers position the abstract like regular
+% papers do.
+\IEEEdisplaynontitleabstractindextext
+% \IEEEdisplaynontitleabstractindextext has no effect when using
+% compsoc or transmag under a non-conference mode.
+
+
+
+
+
+
+
+% For peer review papers, you can put extra information on the cover
+% page as needed:
+% \ifCLASSOPTIONpeerreview
+% \begin{center} \bfseries EDICS Category: 3-BBND \end{center}
+% \fi
+%
+% For peerreview papers, this IEEEtran command inserts a page break and
+% creates the second title. It will be ignored for other modes.
+\IEEEpeerreviewmaketitle
+
+
+
+\section{Introduction}
+% The very first letter is a 2 line initial drop letter followed
+% by the rest of the first word in caps.
+%
+% form to use if the first word consists of a single letter:
+% \IEEEPARstart{A}{demo} file is ....
+%
+% form to use if you need the single drop letter followed by
+% normal text (unknown if ever used by the IEEE):
+% \IEEEPARstart{A}{}demo file is ....
+%
+% Some journals put the first two words in caps:
+% \IEEEPARstart{T}{his demo} file is ....
+%
+% Here we have the typical use of a "T" for an initial drop letter
+% and "HIS" in caps to complete the first word.
+\IEEEPARstart{T}{his} demo file is intended to serve as a ``starter file''
+for IEEE \textsc{Transactions on Magnetics} journal papers produced under \LaTeX\ using
+IEEEtran.cls version 1.8b and later.
+% You must have at least 2 lines in the paragraph with the drop letter
+% (should never be an issue)
+I wish you the best of success.
+
+\hfill mds
+
+\hfill August 26, 2015
+
+\subsection{Subsection Heading Here}
+Subsection text here.
+
+% needed in second column of first page if using \IEEEpubid
+%\IEEEpubidadjcol
+
+\subsubsection{Subsubsection Heading Here}
+Subsubsection text here.
+
+
+% An example of a floating figure using the graphicx package.
+% Note that \label must occur AFTER (or within) \caption.
+% For figures, \caption should occur after the \includegraphics.
+% Note that IEEEtran v1.7 and later has special internal code that
+% is designed to preserve the operation of \label within \caption
+% even when the captionsoff option is in effect. However, because
+% of issues like this, it may be the safest practice to put all your
+% \label just after \caption rather than within \caption{}.
+%
+% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class
+% option should be used if it is desired that the figures are to be
+% displayed while in draft mode.
+%
+%\begin{figure}[!t]
+%\centering
+%\includegraphics[width=2.5in]{myfigure}
+% where an .eps filename suffix will be assumed under latex,
+% and a .pdf suffix will be assumed for pdflatex; or what has been declared
+% via \DeclareGraphicsExtensions.
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure}
+
+% Note that the IEEE typically puts floats only at the top, even when this
+% results in a large percentage of a column being occupied by floats.
+
+
+% An example of a double column floating figure using two subfigures.
+% (The subfig.sty package must be loaded for this to work.)
+% The subfigure \label commands are set within each subfloat command,
+% and the \label for the overall figure must come after \caption.
+% \hfil is used as a separator to get equal spacing.
+% Watch out that the combined width of all the subfigures on a
+% line do not exceed the text width or a line break will occur.
+%
+%\begin{figure*}[!t]
+%\centering
+%\subfloat[Case I]{\includegraphics[width=2.5in]{box}%
+%\label{fig_first_case}}
+%\hfil
+%\subfloat[Case II]{\includegraphics[width=2.5in]{box}%
+%\label{fig_second_case}}
+%\caption{Simulation results for the network.}
+%\label{fig_sim}
+%\end{figure*}
+%
+% Note that often IEEE papers with subfigures do not employ subfigure
+% captions (using the optional argument to \subfloat[]), but instead will
+% reference/describe all of them (a), (b), etc., within the main caption.
+% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure
+% labels, the optional argument to \subfloat must be present. If a
+% subcaption is not desired, just leave its contents blank,
+% e.g., \subfloat[].
+
+
+% An example of a floating table. Note that, for IEEE style tables, the
+% \caption command should come BEFORE the table and, given that table
+% captions serve much like titles, are usually capitalized except for words
+% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to
+% and up, which are usually not capitalized unless they are the first or
+% last word of the caption. Table text will default to \footnotesize as
+% the IEEE normally uses this smaller font for tables.
+% The \label must come after \caption as always.
+%
+%\begin{table}[!t]
+%% increase table row spacing, adjust to taste
+%\renewcommand{\arraystretch}{1.3}
+% if using array.sty, it might be a good idea to tweak the value of
+% \extrarowheight as needed to properly center the text within the cells
+%\caption{An Example of a Table}
+%\label{table_example}
+%\centering
+%% Some packages, such as MDW tools, offer better commands for making tables
+%% than the plain LaTeX2e tabular which is used here.
+%\begin{tabular}{|c||c|}
+%\hline
+%One & Two\\
+%\hline
+%Three & Four\\
+%\hline
+%\end{tabular}
+%\end{table}
+
+
+% Note that the IEEE does not put floats in the very first column
+% - or typically anywhere on the first page for that matter. Also,
+% in-text middle ("here") positioning is typically not used, but it
+% is allowed and encouraged for Computer Society conferences (but
+% not Computer Society journals). Most IEEE journals/conferences use
+% top floats exclusively.
+% Note that, LaTeX2e, unlike IEEE journals/conferences, places
+% footnotes above bottom floats. This can be corrected via the
+% \fnbelowfloat command of the stfloats package.
+
+
+
+
+\section{Conclusion}
+The conclusion goes here.
+
+
+
+
+
+% if have a single appendix:
+%\appendix[Proof of the Zonklar Equations]
+% or
+%\appendix % for no appendix heading
+% do not use \section anymore after \appendix, only \section*
+% is possibly needed
+
+% use appendices with more than one appendix
+% then use \section to start each appendix
+% you must declare a \section before using any
+% \subsection or using \label (\appendices by itself
+% starts a section numbered zero.)
+%
+
+
+\appendices
+\section{Proof of the First Zonklar Equation}
+Appendix one text goes here.
+
+% you can choose not to have a title for an appendix
+% if you want by leaving the argument blank
+\section{}
+Appendix two text goes here.
+
+
+% use section* for acknowledgment
+\section*{Acknowledgment}
+
+
+The authors would like to thank...
+
+
+% Can use something like this to put references on a page
+% by themselves when using endfloat and the captionsoff option.
+\ifCLASSOPTIONcaptionsoff
+ \newpage
+\fi
+
+
+
+% trigger a \newpage just before the given reference
+% number - used to balance the columns on the last page
+% adjust value as needed - may need to be readjusted if
+% the document is modified later
+%\IEEEtriggeratref{8}
+% The "triggered" command can be changed if desired:
+%\IEEEtriggercmd{\enlargethispage{-5in}}
+
+% references section
+
+% can use a bibliography generated by BibTeX as a .bbl file
+% BibTeX documentation can be easily obtained at:
+% http://mirror.ctan.org/biblio/bibtex/contrib/doc/
+% The IEEEtran BibTeX style support page is at:
+% http://www.michaelshell.org/tex/ieeetran/bibtex/
+%\bibliographystyle{IEEEtran}
+% argument is your BibTeX string definitions and bibliography database(s)
+%\bibliography{IEEEabrv,../bib/paper}
+%
+% <OR> manually copy in the resultant .bbl file
+% set second argument of \begin to the number of references
+% (used to reserve space for the reference number labels box)
+\begin{thebibliography}{1}
+
+\bibitem{IEEEhowto:kopka}
+H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus
+ 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
+
+\end{thebibliography}
+
+% biography section
+%
+% If you have an EPS/PDF photo (graphicx package needed) extra braces are
+% needed around the contents of the optional argument to biography to prevent
+% the LaTeX parser from getting confused when it sees the complicated
+% \includegraphics command within an optional argument. (You could create
+% your own custom macro containing the \includegraphics command to make things
+% simpler here.)
+%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{mshell}}]{Michael Shell}
+% or if you just want to reserve a space for a photo:
+
+\begin{IEEEbiography}{Michael Shell}
+Biography text here.
+\end{IEEEbiography}
+
+% if you will not have a photo at all:
+\begin{IEEEbiographynophoto}{John Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% insert where needed to balance the two columns on the last page with
+% biographies
+%\newpage
+
+\begin{IEEEbiographynophoto}{Jane Doe}
+Biography text here.
+\end{IEEEbiographynophoto}
+
+% You can push biographies down or up by placing
+% a \vfill before or after them. The appropriate
+% use of \vfill depends on what kind of text is
+% on the last page and whether or not the columns
+% are being equalized.
+
+%\vfill
+
+% Can be used to pull up biographies so that the bottom of the last one
+% is flush with the other column.
+%\enlargethispage{-5in}
+
+
+
+% that's all folks
+\end{document}
+
+
diff --git a/macros/latex/contrib/IEEEtran/bibtex/IEEEabrv.bib b/macros/latex/contrib/IEEEtran/bibtex/IEEEabrv.bib
new file mode 100644
index 0000000000..bcaccfc145
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/IEEEabrv.bib
@@ -0,0 +1,489 @@
+
+IEEEabrv.bib
+V1.14 (2015/08/26)
+Copyright (c) 2002-2015 by Michael Shell
+See: http://www.michaelshell.org/
+for current contact information.
+
+BibTeX bibliography string definitions of the ABBREVIATED titles of
+IEEE journals and magazines and online publications.
+
+This file is designed for bibliography styles that require
+abbreviated titles and is not for use in bibliographies that
+require full-length titles.
+
+Support sites:
+http://www.michaelshell.org/tex/ieeetran/
+http://www.ctan.org/pkg/ieeetran
+and/or
+http://www.ieee.org/
+
+Special thanks to Laura Hyslop, Ken Rawson, Kevin Lisankie and
+Mona Mittra of the IEEE for their help in obtaining the information needed
+to compile this file. Also, Volker Kuhlmann, Moritz Borgmann,
+Yannick Berker, Nicolás Barabino, Chuanren Wu and Santiago Cogollos Borras
+kindly provided some corrections and additions.
+
+
+*************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall the IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+*************************************************************************
+
+
+USAGE:
+
+\bibliographystyle{mybstfile}
+\bibliography{IEEEabrv,mybibfile}
+
+where the IEEE titles in the .bib database entries use the strings
+defined here. e.g.,
+
+
+ journal = IEEE_J_AC,
+
+
+to yield "{IEEE} Trans. Automat. Contr."
+
+
+The IEEE uses abbreviated journal titles in their bibliographies -
+this file is suitable for work that is to be submitted to the IEEE.
+
+For work that requires full-length titles, you should use the full
+titles provided in the companion file, IEEEfull.bib.
+
+
+** NOTES **
+
+ 1. Journals have been grouped according to subject in order to make it
+ easier to locate and extract the definitions for related journals -
+ as most works use references that are confined to a single topic.
+ Magazines are listed in straight alphabetical order.
+
+ 2. String names are closely based on IEEE's own internal acronyms.
+
+ 3. Older, out-of-print IEEE titles are included (but not including titles
+ dating prior to the IEEE's formation from the IRE and AIEE in 1963).
+
+ 4. Abbreviations comply with the official specifications of the IEEE.
+
+
+
+
+
+
+IEEE Journals
+
+
+aerospace and military
+@STRING{IEEE_J_ANNE = "{IEEE} Trans. Aeronaut. Navig. Electron."}
+@STRING{IEEE_J_AES = "{IEEE} Trans. Aerosp. Electron. Syst."}
+@STRING{IEEE_J_ANE = "{IEEE} Trans. Aerosp. Navig. Electron."}
+@STRING{IEEE_J_AS = "{IEEE} Trans. Aerosp."}
+@STRING{IEEE_J_AIRE = "{IEEE} Trans. Airborne Electron."}
+@STRING{IEEE_J_MIL = "{IEEE} Trans. Mil. Electron."}
+
+
+
+autos, transportation and vehicles (non-aerospace)
+@STRING{IEEE_J_ITS = "{IEEE} Trans. Intell. Transp. Syst."}
+@STRING{IEEE_J_IV = "{IEEE} Trans. Intell. Veh."}
+@STRING{IEEE_J_TTE = "{IEEE} Trans. Transport. Electrific."}
+@STRING{IEEE_J_VC = "{IEEE} Trans. Veh. Commun."}
+@STRING{IEEE_J_VT = "{IEEE} Trans. Veh. Technol."}
+
+
+
+circuits, signals, systems, audio and controls
+@STRING{IEEE_J_STSP = "{IEEE} J. Sel. Topics Signal Process."}
+@STRING{IEEE_J_SPL = "{IEEE} Signal Process. Lett."}
+@STRING{IEEE_J_SYST = "{IEEE} Syst. J."}
+@STRING{IEEE_J_ASSP = "{IEEE} Trans. Acoust., Speech, Signal Process."}
+@STRING{IEEE_J_AU = "{IEEE} Trans. Audio"}
+@STRING{IEEE_J_AUEA = "{IEEE} Trans. Audio Electroacoust."}
+in 2014 ASL became ASLP
+@STRING{IEEE_J_ASLP = "{IEEE/ACM} Trans. Audio, Speech, Language Process."}
+@STRING{IEEE_J_ASL = "{IEEE} Audio, Speech, Language Process."}
+@STRING{IEEE_J_AC = "{IEEE} Trans. Autom. Control"}
+@STRING{IEEE_J_CAS = "{IEEE} Trans. Circuits Syst."}
+@STRING{IEEE_J_CASVT = "{IEEE} Trans. Circuits Syst. Video Technol."}
+@STRING{IEEE_J_CASI = "{IEEE} Trans. Circuits Syst. {I}"}
+@STRING{IEEE_J_CASII = "{IEEE} Trans. Circuits Syst. {II}"}
+in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively
+@STRING{IEEE_J_CASI_RP = "{IEEE} Trans. Circuits Syst. {I}"}
+@STRING{IEEE_J_CASII_EB = "{IEEE} Trans. Circuits Syst. {II}"}
+@STRING{IEEE_J_CT = "{IEEE} Trans. Circuit Theory"}
+@STRING{IEEE_J_CST = "{IEEE} Trans. Control Syst. Technol."}
+@STRING{IEEE_J_ETCAS = "{IEEE} Trans. Emerg. Sel. Topics Circuits Syst."}
+@STRING{IEEE_J_SP = "{IEEE} Trans. Signal Process."}
+@STRING{IEEE_J_SU = "{IEEE} Trans. Sonics Ultrason."}
+@STRING{IEEE_J_SAP = "{IEEE} Trans. Speech Audio Process."}
+@STRING{IEEE_J_UE = "{IEEE} Trans. Ultrason. Eng."}
+@STRING{IEEE_J_UFFC = "{IEEE} Trans. Ultrason., Ferroelectr., Freq. Control"}
+
+
+
+communications
+@STRING{IEEE_J_COML = "{IEEE} Commun. Lett."}
+@STRING{IEEE_J_JSAC = "{IEEE} J. Sel. Areas Commun."}
+@STRING{IEEE_J_COM = "{IEEE} Trans. Commun."}
+@STRING{IEEE_J_COMT = "{IEEE} Trans. Commun. Technol."}
+@STRING{IEEE_J_WCOM = "{IEEE} Trans. Wireless Commun."}
+@STRING{IEEE_J_WCOML = "{IEEE} Wireless Commun. Lett."}
+
+
+
+components, packaging and manufacturing
+@STRING{IEEE_J_ADVP = "{IEEE} Trans. Adv. Packag."}
+@STRING{IEEE_J_CHMT = "{IEEE} Trans. Compon., Hybrids, Manuf. Technol."}
+in 2011 CAPT became CPMT
+@STRING{IEEE_J_CPMT = "{IEEE} Trans. Compon. Packag. Manuf. Technol."}
+@STRING{IEEE_J_CPMTA = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {A}"}
+@STRING{IEEE_J_CPMTB = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {B}"}
+@STRING{IEEE_J_CPMTC = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {C}"}
+@STRING{IEEE_J_CAPTS = "{IEEE} Trans. Compon. Packag. Technol."}
+@STRING{IEEE_J_CAPT = "{IEEE} Trans. Compon. Packag. Technol."}
+@STRING{IEEE_J_CPART = "{IEEE} Trans. Compon. Parts"}
+@STRING{IEEE_J_EPM = "{IEEE} Trans. Electron. Packag. Manuf."}
+@STRING{IEEE_J_MFT = "{IEEE} Trans. Manuf. Technol."}
+@STRING{IEEE_J_PHP = "{IEEE} Trans. Parts, Hybrids, Packag."}
+@STRING{IEEE_J_PMP = "{IEEE} Trans. Parts, Mater., Packag."}
+
+
+
+CAD
+@STRING{IEEE_J_TCAD = "{IEEE} J. Technol. Comput. Aided Design"}
+@STRING{IEEE_J_CAD = "{IEEE} Trans. Comput.-Aided Design Integr. Circuits Syst."}
+
+
+
+coding, data, information, knowledge
+@STRING{IEEE_J_BD = "{IEEE} Trans. Big Data"}
+@STRING{IEEE_J_IFS = "{IEEE} Trans. Inf. Forensics Security"}
+@STRING{IEEE_J_IT = "{IEEE} Trans. Inf. Theory"}
+@STRING{IEEE_J_KDE = "{IEEE} Trans. Knowl. Data Eng."}
+
+
+
+computers, computation, networking and software
+@STRING{IEEE_J_CAL = "{IEEE} Comput. Archit. Lett."}
+@STRING{IEEE_J_ES = "{IEEE} Embedded Syst. Lett."}
+@STRING{IEEE_J_IOT = "{IEEE} Internet Things J."}
+@STRING{IEEE_J_XCDC = "{IEEE} J. Explor. Solid-State Computat. Devices Circuits"}
+@STRING{IEEE_J_MMCT = "{IEEE} J. Multiscale and Multiphys. Comput. Techn."}
+@STRING{IEEE_J_SUSC = "{IEEE} Sustain. Comput."}
+@STRING{IEEE_J_CC = "{IEEE} Trans. on Cloud Comput."}
+@STRING{IEEE_J_CSS = "{IEEE} Trans. Comput. Social Syst."}
+@STRING{IEEE_J_C = "{IEEE} Trans. Comput."}
+@STRING{IEEE_J_CNS = "{IEEE} Trans. Control Netw. Syst."}
+@STRING{IEEE_J_DSC = "{IEEE} Trans. Depend. Sec. Comput."}
+@STRING{IEEE_J_ECOMP = "{IEEE} Trans. Electron. Comput."}
+@STRING{IEEE_J_ETC = "{IEEE} Trans. Emerg. Topics Comput."}
+@STRING{IEEE_J_EVC = "{IEEE} Trans. Evol. Comput."}
+@STRING{IEEE_J_FUZZ = "{IEEE} Trans. Fuzzy Syst."}
+@STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."}
+@STRING{IEEE_J_MSCS = "{IEEE} Trans. Multi-Scale Comput. Syst."}
+@STRING{IEEE_J_NET = "{IEEE/ACM} Trans. Netw."}
+@STRING{IEEE_J_NSE = "{IEEE} Trans. Netw. Sci. Eng."}
+@STRING{IEEE_J_NSM = "{IEEE} Trans. Netw. Service Manag."}
+@STRING{IEEE_J_NN = "{IEEE} Trans. Neural Netw."}
+in 2012 NN became NNLS
+@STRING{IEEE_J_NNLS = "{IEEE} Trans. Neural Netw. Learn. Syst."}
+@STRING{IEEE_J_PDS = "{IEEE} Trans. Parallel Distrib. Syst."}
+@STRING{IEEE_J_SC = "{IEEE} Trans. Serv. Comput."}
+@STRING{IEEE_J_SIPN = "{IEEE} Trans. Signal Inf. Process. Netw."}
+@STRING{IEEE_J_SE = "{IEEE} Trans. Softw. Eng."}
+
+
+
+computer graphics, imaging, and multimedia
+@STRING{IEEE_J_JDT = "{IEEE/OSA} J. Display Technol."}
+@STRING{IEEE_J_IP = "{IEEE} Trans. Image Process."}
+@STRING{IEEE_J_MM = "{IEEE} Trans. Multimedia"}
+@STRING{IEEE_J_VCG = "{IEEE} Trans. Vis. Comput. Graphics"}
+
+
+
+cybernetics, ergonomics, robots, man-machine, artificial intelligence and automation
+@STRING{IEEE_J_JAS = "{IEEE/CAA} J. Autom. Sinica"}
+@STRING{IEEE_J_JRA = "{IEEE} J. Robot. Autom."}
+@STRING{IEEE_J_AFFC = "{IEEE} Trans. Affect. Comput."}
+@STRING{IEEE_J_ASE = "{IEEE} Trans. Autom. Sci. Eng."}
+@STRING{IEEE_J_AMD = "{IEEE} Trans. Auton. Mental Develop."}
+@STRING{IEEE_J_CCN = "{IEEE} Trans. on Cogn. Commun. Netw."}
+in 2015 AMD became CDS
+@STRING{IEEE_J_CDS = "{IEEE} Trans. Cogn. Develop. Syst."}
+@STRING{IEEE_J_CIAIG = "{IEEE} Trans. Comput. Intell. {AI} in Games"}
+in 2013 SMCB became CYB
+@STRING{IEEE_J_CYB = "{IEEE} Trans. Cybern."}
+@STRING{IEEE_J_H = "{IEEE} Trans. Haptics"}
+@STRING{IEEE_J_HFE = "{IEEE} Trans. Hum. Factors Electron."}
+in 2013 SMCC became HMS
+@STRING{IEEE_J_HMS = "{IEEE} Trans. Human-Mach. Syst."}
+@STRING{IEEE_J_MMS = "{IEEE} Trans. Man-Mach. Syst."}
+@STRING{IEEE_J_PAMI = "{IEEE} Trans. Pattern Anal. Mach. Intell."}
+in 1989 JRA became RA
+in August 2004, RA split into ASE and RO
+@STRING{IEEE_J_RA = "{IEEE} Trans. Robot. Autom."}
+@STRING{IEEE_J_RAL = "{IEEE} Robot. Autom. Lett."}
+@STRING{IEEE_J_RO = "{IEEE} Trans. Robot."}
+@STRING{IEEE_J_SMC = "{IEEE} Trans. Syst., Man, Cybern."}
+@STRING{IEEE_J_SMCA = "{IEEE} Trans. Syst., Man, Cybern. {A}"}
+@STRING{IEEE_J_SMCB = "{IEEE} Trans. Syst., Man, Cybern. {B}"}
+@STRING{IEEE_J_SMCC = "{IEEE} Trans. Syst., Man, Cybern. {C}"}
+in 2012 SMCA became SMCS
+@STRING{IEEE_J_SMCS = "{IEEE} Trans. Syst., Man, Cybern., Syst."}
+@STRING{IEEE_J_SSC = "{IEEE} Trans. Syst. Sci. Cybern."}
+
+
+
+earth, wind, fire and water
+@STRING{IEEE_J_GRSL = "{IEEE} Geosci. Remote Sens. Lett."}
+@STRING{IEEE_J_GE = "{IEEE} Trans. Geosci. Electron."}
+@STRING{IEEE_J_GRS = "{IEEE} Trans. Geosci. Remote Sens."}
+@STRING{IEEE_J_OE = "{IEEE} J. Ocean. Eng."}
+@STRING{IEEE_J_STARS = "{IEEE} J. Sel. Topics Appl. Earth Observ. Remote Sens."}
+
+
+
+education, engineering, history, IEEE, professional
+@STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."}
+@STRING{IEEE_J_PROC = "Proc. {IEEE}"}
+@STRING{IEEE_J_RITA = "{IEEE} Revista Iberoamericana de Technolog{\'{i}}as del Aprendizaje"}
+@STRING{IEEE_J_EDU = "{IEEE} Trans. Educ."}
+@STRING{IEEE_J_EM = "{IEEE} Trans. Eng. Manag."}
+@STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"}
+@STRING{IEEE_J_LT = "{IEEE} Trans. Learn. Technol."}
+@STRING{IEEE_J_PC = "{IEEE} Trans. Prof. Commun."}
+
+
+
+electromagnetics, antennas, EMI, magnetics and microwave
+@STRING{IEEE_J_AWPL = "{IEEE} Antennas Wireless Propag. Lett."}
+@STRING{IEEE_J_MAGL = "{IEEE} Magn. Lett."}
+@STRING{IEEE_J_MGWL = "{IEEE} Microw. Guided Wave Lett."}
+@STRING{IEEE_J_MWCL = "{IEEE} Microw. Wireless Compon. Lett."}
+@STRING{IEEE_J_RFIC = "{IEEE} {RFIC} J."}
+@STRING{IEEE_J_RFID = "{IEEE} {RFID} J."}
+@STRING{IEEE_J_AP = "{IEEE} Trans. Antennas Propag."}
+@STRING{IEEE_J_EMC = "{IEEE} Trans. Electromagn. Compat."}
+@STRING{IEEE_J_MAG = "{IEEE} Trans. Magn."}
+@STRING{IEEE_J_MTT = "{IEEE} Trans. Microw. Theory Techn."}
+@STRING{IEEE_J_RFI = "{IEEE} Trans. Radio Freq. Interference"}
+@STRING{IEEE_J_TTHZ = "{IEEE} Trans. {THz} Sci. Technol."}
+@STRING{IEEE_J_TJMJ = "{IEEE} Transl. J. Magn. Jpn."}
+
+
+
+energy, power and conversion
+@STRING{IEEE_J_PHOT = "{IEEE} J. Photovolt."}
+@STRING{IEEE_J_PEL = "{IEEE} Power Electron. Lett."}
+@STRING{IEEE_J_PETS = "{IEEE} Power Energy Technol. Syst. J."}
+@STRING{IEEE_J_ESTPE = "{IEEE} Trans. Emerg. Sel. Topics Power Electron."}
+@STRING{IEEE_J_EC = "{IEEE} Trans. Energy Convers."}
+@STRING{IEEE_J_PWRAS = "{IEEE} Trans. Power App. Syst."}
+@STRING{IEEE_J_PWRD = "{IEEE} Trans. Power Del."}
+@STRING{IEEE_J_PWRE = "{IEEE} Trans. Power Electron."}
+@STRING{IEEE_J_PWRS = "{IEEE} Trans. Power Syst."}
+@STRING{IEEE_J_SG = "{IEEE} Trans. Smart Grid"}
+@STRING{IEEE_J_STE = "{IEEE} Trans. Sustain. Energy"}
+
+
+
+industrial, commercial and consumer
+@STRING{IEEE_J_PSE = "{IEEE} J. Product Safety Eng."}
+@STRING{IEEE_J_APPIND = "{IEEE} Trans. Appl. Ind."}
+@STRING{IEEE_J_BC = "{IEEE} Trans. Broadcast."}
+@STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"}
+@STRING{IEEE_J_CE = "{IEEE} Trans. Consum. Electron."}
+@STRING{IEEE_J_IE = "{IEEE} Trans. Ind. Electron."}
+@STRING{IEEE_J_IECI = "{IEEE} Trans. Ind. Electron. Contr. Instrum."}
+@STRING{IEEE_J_IA = "{IEEE} Trans. Ind. Appl."}
+@STRING{IEEE_J_IGA = "{IEEE} Trans. Ind. Gen. Appl."}
+@STRING{IEEE_J_IINF = "{IEEE} Trans. Ind. Informat."}
+
+
+
+instrumentation and measurement
+@STRING{IEEE_J_IM = "{IEEE} Trans. Instrum. Meas."}
+
+
+
+insulation and materials
+@STRING{IEEE_J_JEM = "{IEEE/TMS} J. Electron. Mater."}
+@STRING{IEEE_J_DEI = "{IEEE} Trans. Dielectr. Electr. Insul."}
+@STRING{IEEE_J_EI = "{IEEE} Trans. Electr. Insul."}
+
+
+
+mechanical
+@STRING{IEEE_J_MEMS = "J. Microelectromech. Syst."}
+in 2014 MEMS became MEMSI
+@STRING{IEEE_J_MEMSI = "J. Microelectromech. Syst."}
+@STRING{IEEE_J_MECH = "{IEEE/ASME} Trans. Mechatronics"}
+
+
+
+medical and biological
+@STRING{IEEE_J_BHI = "{IEEE} J. Biomed. Health Inform."}
+@STRING{IEEE_J_TEHM = "{IEEE} J. Transl. Eng. Health Med."}
+@STRING{IEEE_J_LS = "{IEEE} Life Sci. Lett."}
+@STRING{IEEE_J_RBME = "{IEEE} Rev. Biomed. Eng."}
+@STRING{IEEE_J_BCAS = "{IEEE} Trans. Biomed. Circuits Syst."}
+@STRING{IEEE_J_BMELC = "{IEEE} Trans. Bio-Med. Electron."}
+B-ME later dropped the hyphen and became the BME
+@STRING{IEEE_J_BME = "{IEEE} Trans. Biomed. Eng."}
+@STRING{IEEE_J_B-ME = "{IEEE} Trans. Bio-Med. Eng."}
+@STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biol. Bioinformatics"}
+@STRING{IEEE_J_ITBM = "{IEEE} Trans. Inf. Technol. Biomed."}
+@STRING{IEEE_J_ME = "{IEEE} Trans. Med. Electron."}
+@STRING{IEEE_J_MI = "{IEEE} Trans. Med. Imag."}
+@STRING{IEEE_J_MBSC = "{IEEE} Trans. Mol. Biol. Multi-Scale Commun."}
+@STRING{IEEE_J_NB = "{IEEE} Trans. Nanobiosci."}
+@STRING{IEEE_J_NSRE = "{IEEE} Trans. Neural Syst. Rehabil. Eng."}
+@STRING{IEEE_J_RE = "{IEEE} Trans. Rehabil. Eng."}
+
+
+
+optics, lightwave and photonics
+@STRING{IEEE_J_JLT = "J. Lightw. Technol."}
+@STRING{IEEE_J_OCN = "{IEEE} J. Opt. Commun. Netw."}
+@STRING{IEEE_J_PJ = "{IEEE} Photon. J."}
+@STRING{IEEE_J_PTL = "{IEEE} Photon. Technol. Lett."}
+
+
+
+physics, electrons, nanotechnology, nuclear and quantum electronics
+@STRING{IEEE_J_EDL = "{IEEE} Electron Device Lett."}
+@STRING{IEEE_J_EDS = "{IEEE} J. Electron Devices Soc."}
+@STRING{IEEE_J_JQE = "{IEEE} J. Quantum Electron."}
+@STRING{IEEE_J_JSTQE = "{IEEE} J. Sel. Topics Quantum Electron."}
+@STRING{IEEE_J_ENANO = "{IEEE} Nanotechnol. Express"}
+@STRING{IEEE_J_ED = "{IEEE} Trans. Electron Devices"}
+@STRING{IEEE_J_NANO = "{IEEE} Trans. Nanotechnol."}
+@STRING{IEEE_J_NS = "{IEEE} Trans. Nucl. Sci."}
+@STRING{IEEE_J_PS = "{IEEE} Trans. Plasma Sci."}
+
+
+
+reliability
+@STRING{IEEE_J_DMR = "{IEEE} Trans. Device Mater. Rel."}
+@STRING{IEEE_J_R = "{IEEE} Trans. Rel."}
+
+
+
+semiconductors, superconductors, electrochemical and solid state
+@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochem. Solid-State Lett."}
+@STRING{IEEE_J_JSSC = "{IEEE} J. Solid-State Circuits"}
+@STRING{IEEE_J_ASC = "{IEEE} Trans. Appl. Supercond."}
+@STRING{IEEE_J_SM = "{IEEE} Trans. Semicond. Manuf."}
+
+
+
+sensors
+@STRING{IEEE_J_SENSOR = "{IEEE} Sensors J."}
+
+
+
+VLSI
+@STRING{IEEE_J_VLSI = "{IEEE} Trans. {VLSI} Syst."}
+
+
+
+
+
+
+IEEE Magazines and Online Publications
+
+
+@STRING{IEEE_O_ACC = "{IEEE} Access"}
+@STRING{IEEE_M_AES = "{IEEE} Aerosp. Electron. Syst. Mag."}
+@STRING{IEEE_M_HIST = "{IEEE} Ann. Hist. Comput."}
+@STRING{IEEE_M_AP = "{IEEE} Antennas Propag. Mag."}
+@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Mag."}
+@STRING{IEEE_M_CHINAC = "China Commun."}
+@STRING{IEEE_M_CD = "{IEEE} Circuits Devices Mag."}
+@STRING{IEEE_M_CAS = "{IEEE} Circuits Syst. Mag."}
+@STRING{IEEE_M_COM = "{IEEE} Commun. Mag."}
+@STRING{IEEE_M_COMSOC = "{IEEE} Commun. Soc. Mag."}
+@STRING{IEEE_O_CSTO = "{IEEE} Commun. Surveys Tuts."}
+@STRING{IEEE_M_CIM = "{IEEE} Comput. Intell. Mag."}
+CSEM changed to CSE in 1999
+@STRING{IEEE_M_CSE = "{IEEE} Comput. Sci. Eng."}
+@STRING{IEEE_M_CSEM = "{IEEE} Comput. Sci. Eng. Mag."}
+@STRING{IEEE_M_C = "Computer"}
+@STRING{IEEE_M_CAP = "{IEEE} Comput. Appl. Power"}
+@STRING{IEEE_M_CGA = "{IEEE} Comput. Graph. Appl."}
+@STRING{IEEE_M_CONC = "{IEEE} Concurrency"}
+@STRING{IEEE_M_CS = "{IEEE} Control Syst. Mag."}
+in 2012 DTC became DT
+@STRING{IEEE_M_DT = "{IEEE} Des. Test"}
+@STRING{IEEE_M_DTC = "{IEEE} Des. Test. Comput."}
+@STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"}
+@STRING{IEEE_M_EI = "{IEEE} Electr. Insul. Mag."}
+@STRING{IEEE_M_ETF = "{IEEE} Electrific. Mag."}
+@STRING{IEEE_M_EMC = "{IEEE} Electromagn. Compat."}
+@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnol. Rev."}
+@STRING{IEEE_M_EMR = "{IEEE} Eng. Manag. Rev."}
+@STRING{IEEE_M_EMB = "{IEEE} Eng. Med. Biol. Mag."}
+@STRING{IEEE_M_EXP = "{IEEE} Expert"}
+@STRING{IEEE_M_GRS = "{IEEE} Geosci. Remote Sens. Mag."}
+@STRING{IEEE_M_IA = "{IEEE} Ind. Appl. Mag."}
+@STRING{IEEE_M_IE = "{IEEE} Ind. Electron. Mag."}
+@STRING{IEEE_M_IM = "{IEEE} Instrum. Meas. Mag."}
+@STRING{IEEE_M_IS = "{IEEE} Intell. Syst."}
+@STRING{IEEE_M_ITS = "{IEEE} Intell. Transp. Syst. Mag."}
+@STRING{IEEE_M_IC = "{IEEE} Internet Comput."}
+@STRING{IEEE_M_ITP = "{IEEE} {IT} Prof."}
+@STRING{IEEE_M_MICRO = "{IEEE} Micro"}
+@STRING{IEEE_M_MW = "{IEEE} Microw. Mag."}
+@STRING{IEEE_M_MM = "{IEEE} Multimedia"}
+@STRING{IEEE_M_NANO = "{IEEE} Nanotechnol. Mag."}
+@STRING{IEEE_M_NET = "{IEEE} Netw."}
+IEEE's editorial manual lists "Pers. Commun.",
+but "Personal Commun. Mag." seems to be what is used in the journals
+@STRING{IEEE_M_PCOM = "{IEEE} Personal Commun. Mag."}
+@STRING{IEEE_M_PVC = "{IEEE} Pervasive Comput."}
+@STRING{IEEE_M_POT = "{IEEE} Potentials"}
+@STRING{IEEE_M_PEL = "{IEEE} Power Electron. Mag."}
+CAP and PER merged to form PE in 2003
+@STRING{IEEE_M_PE = "{IEEE} Power Energy Mag."}
+@STRING{IEEE_M_PER = "{IEEE} Power Eng. Rev."}
+@STRING{IEEE_M_PULSE = "{IEEE} Pulse"}
+@STRING{IEEE_M_RA = "{IEEE} Robot. Autom. Mag."}
+@STRING{IEEE_M_SAP = "{IEEE} Security Privacy"}
+@STRING{IEEE_M_SP = "{IEEE} Signal Process. Mag."}
+@STRING{IEEE_M_S = "{IEEE} Softw."}
+@STRING{IEEE_M_SSC = "{IEEE} Solid-State Circuits Mag."}
+@STRING{IEEE_M_SPECT = "{IEEE} Spectr."}
+@STRING{IEEE_M_SMC = "{IEEE} Syst., Man, Cybern. Mag."}
+@STRING{IEEE_M_TS = "{IEEE} Technol. Soc. Mag."}
+@STRING{IEEE_M_VT = "{IEEE} Veh. Technol. Mag."}
+@STRING{IEEE_M_WC = "{IEEE} Wireless Commun."}
+@STRING{IEEE_M_TODAY = "Today's Engineer"}
+
+
+
+
+
+--
+EOF
diff --git a/macros/latex/contrib/IEEEtran/bibtex/IEEEexample.bib b/macros/latex/contrib/IEEEtran/bibtex/IEEEexample.bib
new file mode 100644
index 0000000000..8dbc1075ad
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/IEEEexample.bib
@@ -0,0 +1,1203 @@
+
+IEEEexample.bib
+V1.14 (2015/08/26)
+Copyright (c) 2002-2015 by Michael Shell
+See: http://www.michaelshell.org/
+for current contact information.
+
+This is an example BibTeX database for the official IEEEtran.bst
+BibTeX style file.
+
+Some entries call strings that are defined in the IEEEabrv.bib file.
+Therefore, IEEEabrv.bib should be loaded prior to this file.
+Usage:
+
+\bibliographystyle{./IEEEtran}
+\bibliography{./IEEEabrv,./IEEEexample}
+
+
+Support sites:
+http://www.michaelshell.org/tex/ieeetran/
+http://www.ctan.org/pkg/ieeetran
+and/or
+http://www.ieee.org/
+
+*************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall the IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+*************************************************************************
+
+
+Note that, because the example references were taken from actual IEEE
+publications, these examples do not always contain the full amount
+of information that may be desirable (for use with other BibTeX styles).
+In particular, full names (not abbreviated with initials) should be
+entered whenever possible as some (non-IEEE) bibliography styles use
+full names. IEEEtran.bst will automatically abbreviate when it encounters
+full names.
+
+
+
+
+references for the IEEEtran.bst documentation
+IEEEtran homepage
+@electronic{IEEEhowto:IEEEtranpage,
+ author = "Michael Shell",
+ title = "{IEEE}tran Homepage",
+ url = "http://www.michaelshell.org/tex/ieeetran/",
+ year = "2015"
+}
+
+
+the distribution site for IEEEtran.bst
+@electronic{IEEEexample:shellCTANpage,
+ author = "Michael Shell",
+ title = "{IEEE}tran Webpage on {CTAN}",
+ url = "http://www.ctan.org/pkg/ieeetran",
+ year = "2015"
+}
+
+
+the IEEE website
+sort key is needed for sorting styles
+@electronic{IEEEexample:IEEEwebsite,
+ title = "The {IEEE} Website",
+ url = "http://www.ieee.org/",
+ year = "2015",
+ key = "IEEE"
+}
+
+
+The BibTeX user's guide.
+The filename could have been put in the URL instead. But, there might
+be other interesting things for the user in the same directory - and
+the filename might change before the directory that contains it.
+@electronic{IEEEexample:bibtexuser,
+ author = "Oren Patashnik",
+ title = "{{\BibTeX}}ing",
+ howpublished = "{btxdoc.pdf}",
+ url = "http://www.ctan.org/pkg/bibtex",
+ month = nov,
+ year = "2010"
+}
+
+
+The BibTeX style designer's guide.
+@electronic{IEEEexample:bibtexdesign,
+ author = "Oren Patashnik",
+ title = "Designing {{\BibTeX}} Styles",
+ howpublished = "{btxhak.pdf}",
+ url = "http://www.ctan.org/pkg/bibtex",
+ month = nov,
+ year = "2010"
+}
+
+
+A comprehensive BibTeX tutorial.
+@electronic{IEEEexample:tamethebeast,
+ author = "Nicolas Markey",
+ title = "Tame the BeaST --- The B to X of {{\BibTeX}}",
+ url = "http://www.ctan.org/pkg/tamethebeast",
+ month = oct,
+ year = "2009"
+}
+
+
+The BibTeX Tips and FAQ guide.
+@electronic{IEEEexample:bibtexFAQ,
+ author = "David Hoadley and Michael Shell",
+ title = "{{\BibTeX}} Tips and {FAQ}",
+ howpublished = "{btxFAQ.pdf}",
+ url = "http://mirror.ctan.org/biblio/bibtex/contrib/doc/btxFAQ.pdf",
+ month = jan,
+ year = "2007"
+}
+
+
+The TeX FAQ
+@electronic{IEEEexample:texfaq,
+ author = "Robin Fairbairns",
+ title = "The {{\TeX}} {FAQ}",
+ url = "http://www.tex.ac.uk/",
+ month = jun,
+ year = "2014"
+}
+
+
+A BibTeX Guide via Examples.
+@electronic{IEEEexample:bibtexguide,
+ author = "Ki-Joo Kim",
+ title = "A {{\BibTeX}} Guide via Examples",
+ howpublished = "{bibtex\_guide.pdf}",
+ url = "http://www.geocities.ws/kijoo2000/",
+ month = nov,
+ year = "2005"
+}
+
+
+TeX User Group Bibliography Archive
+@electronic{IEEEexample:beebe_archive,
+ author = "Nelson H. F. Beebe",
+ title = "{{\TeX}} User Group Bibliography Archive",
+ url = "http://www.math.utah.edu/pub/tex/bib/index-table.html",
+ month = dec,
+ year = "2010"
+}
+
+
+@electronic{IEEEexample:natbib,
+ author = "Patrick W. Daly and Arthur Ogawa",
+ title = "The natbib package",
+ url = "http://www.ctan.org/pkg/natbib",
+ month = sep,
+ year = "2010"
+}
+
+
+@electronic{IEEEexample:urlsty,
+ author = "Donald Arseneau",
+ title = "The url package",
+ url = "http://www.ctan.org/pkg/url",
+ month = dec,
+ year = "2013"
+}
+
+
+@electronic{IEEEexample:hyperref,
+ author = "Sebastian Rahtz and Heiko Oberdiek",
+ title = "The hyperref package",
+ url = "http://www.ctan.org/pkg/hyperref",
+ month = nov,
+ year = "2012"
+}
+
+
+@electronic{IEEEexample:breakurl,
+ author = "Vilar da Camara Neto",
+ title = "The breakurl package",
+ url = "http://www.ctan.org/pkg/breakurl",
+ month = apr,
+ year = "2013",
+}
+
+
+@electronic{IEEEexample:babel,
+ author = "Johannes L. Braams and Javier Bezos",
+ title = "The {Babel} package",
+ url = "http://www.ctan.org/pkg/babel",
+ month = sep,
+ year = "2014"
+}
+
+
+@electronic{IEEEexample:multibib,
+ author = "Thorsten Hansen",
+ title = "The multibib package",
+ url = "http://www.ctan.org/pkg/multibib",
+ month = dec,
+ year = "2008"
+}
+
+
+@electronic{IEEEexample:biblatex,
+ author = "Philipp Lehman and Philip Kime",
+ title = "The biblatex package",
+ url = "http://www.ctan.org/pkg/biblatex",
+ month = apr,
+ year = "2015"
+}
+
+
+
+
+The three most common and typical types of references used in
+IEEE publications:
+
+an article in a journal
+Note the use of the IEEE_J_EDL string, defined in the IEEEabrv.bib file,
+for the journal name. IEEEtran.bst defines the BibTeX standard three
+letter month codes per IEEE style.
+From the June 2002 issue of "IEEE Transactions on Electron Devices",
+page 996, reference #16.
+@article{IEEEexample:article_typical,
+ author = "S. Zhang and C. Zhu and J. K. O. Sin and P. K. T. Mok",
+ title = "A Novel Ultrathin Elevated Channel Low-temperature
+ Poly-{Si} {TFT}",
+ journal = IEEE_J_EDL,
+ volume = "20",
+ month = nov,
+ year = "1999",
+ pages = "569-571"
+}
+
+
+journal article using et al.
+The (five) authors are actually: F. Delorme, S. Slempkes, G. Alibert,
+B. Rose, J. Brandon
+The month (July) was not given here.
+From the September 1998 issue of "IEEE Journal on Selected Areas in
+Communications", page 1257, reference #28.
+@article{IEEEexample:articleetal,
+ author = "F. Delorme and others",
+ title = "Butt-jointed {DBR} Laser With 15 {nm} Tunability Grown
+ in Three {MOVPE} Steps",
+ journal = "Electron. Lett.",
+ volume = "31",
+ number = "15",
+ year = "1995",
+ pages = "1244-1245"
+}
+
+
+a paper in a conference proceedings
+"conference" can be used as an alias for "inproceedings"
+From the June 2002 issue of "Journal of Microelectromechanical Systems",
+page 205, reference #16.
+@inproceedings{IEEEexample:conf_typical,
+ author = "R. K. Gupta and S. D. Senturia",
+ title = "Pull-in Time Dynamics as a Measure of Absolute Pressure",
+ booktitle = "Proc. {IEEE} International Workshop on
+ Microelectromechanical Systems ({MEMS}'97)",
+ address = "Nagoya, Japan",
+ month = jan,
+ year = "1997",
+ pages = "290-294"
+}
+
+
+a book
+From the May 2002 issue of "IEEE Transactions on Magnetics",
+page 1466, reference #4.
+@book{IEEEexample:book_typical,
+ author = "B. D. Cullity",
+ title = "Introduction to Magnetic Materials",
+ publisher = "Addison-Wesley",
+ address = "Reading, MA",
+ year = "1972"
+}
+
+
+
+
+Other examples
+
+journal article with large page numbers, the IEEE will divide numbers 5 digits
+or longer into groups of three with small spaces between them. Page ranges
+can be separated via either "-" or "--", IEEEtran.bst will automatically
+convert the separator dash(es) to "--".
+Authors and/or the IEEE do not always provide/use the journal number, but it
+was used in this case. IEEEtran.bst can be configured to ignore journal
+numbers if desired.
+From the August 2000 issue of "IEEE Photonics Technology Letters",
+page 1039, reference #11.
+@article{IEEEexample:articlelargepages,
+ author = "A. Castaldini and A. Cavallini and B. Fraboni
+ and P. Fernandez and J. Piqueras",
+ title = "Midgap Traps Related to Compensation Processes in
+ {CdTe} Alloys",
+ journal = "Phys. Rev. B.",
+ volume = "56",
+ number = "23",
+ year = "1997",
+ pages = "14897-14900"
+}
+
+
+journal article with dual months
+use the BibTeX "#" concatenation operator
+From the March 2002 issue of "IEEE Transactions on Mechatronics",
+page 21, reference #8.
+@article{IEEEexample:articledualmonths,
+ author = "Y. Okada and K. Dejima and T. Ohishi",
+ title = "Analysis and Comparison of {PM} Synchronous Motor and
+ Induction Motor Type Magnetic Bearings",
+ journal = IEEE_J_IA,
+ volume = "31",
+ month = sep # "/" # oct,
+ year = "1995",
+ pages = "1047-1053"
+}
+
+
+journal article to be published as a misc entry type
+date information like month and year is optional
+However, the article form like that below may be a better approach.
+From the May 2002 issue of "IEEE Journal of Selected Areas in
+Communication", page 725, reference #3.
+@misc{IEEEexample:TBPmisc,
+ author = "M. Coates and A. Hero and R. Nowak and B. Yu",
+ title = "Internet Tomography",
+ howpublished = IEEE_M_SP,
+ month = may,
+ year = "2002",
+ note = "to be published"
+}
+
+
+journal article to be published as an article entry type
+year is required, so if absent, use the year field to hold
+the "submitted for publication" in order to avoid a warning for
+the missing year field.
+From the June 2002 issue of "IEEE Transactions on Information Theory",
+page 1461, reference #21.
+@article{IEEEexample:TBParticle,
+ author = "N. Kahale and R. Urbanke",
+ title = "On the Minimum Distance of Parallel and Serially
+ Concatenated Codes",
+ journal = IEEE_J_IT,
+ year = "submitted for publication"
+}
+
+
+
+
+
+book with editor and no author
+From the June 2002 issue of "IEEE Transactions on Information Theory",
+page 1725, reference #1.
+@book{IEEEexample:bookwitheditor,
+ editor = "J. C. Candy and G. C. Temes",
+ title = "Oversampling Delta-Sigma Data Converters Theory,
+ Design and Simulation",
+ publisher = "{IEEE} Press.",
+ address = "New York",
+ year = "1992"
+}
+
+
+book with edition, author and editor
+Note that the standard BibTeX styles do not support book entries with both
+author and editor fields, but IEEEtran.bst does.
+The standard BibTeX way of specifying the edition is to use capitalized
+ordinal words such as "First", "Second", etc. Most .bst files can convert
+up to about "Fifth" into the format needed. IEEEtran.bst can convert up
+to "Tenth" to the "Arabic ordinal" form the IEEE uses (e.g., "10th"). For
+editions over the tenth, it is best to use the "Arabic ordinal" form for
+IEEE related work (e.g., "101st")
+Note how "Jr." has to be entered.
+From the May 2002 issue of "Journal of Lightwave Technology", page 856,
+reference #17.
+@book{IEEEexample:book,
+ author = "S. M. Metev and V. P. Veiko",
+ editor = "Osgood, Jr., R. M.",
+ title = "Laser Assisted Microtechnology",
+ edition = "Second",
+ publisher = "Springer-Verlag",
+ address = "Berlin, Germany",
+ year = "1998"
+}
+
+
+book with series and volume
+From the January 2000 issue of "IEEE Transactions on Communications",
+page 11, reference #31.
+@book{IEEEexample:bookwithseriesvolume,
+ editor = "J. Breckling",
+ title = "The Analysis of Directional Time Series: Applications to
+ Wind Speed and Direction",
+ series = "Lecture Notes in Statistics",
+ publisher = "Springer",
+ address = "Berlin, Germany",
+ year = "1989",
+ volume = "61"
+}
+
+
+inbook with chapter number. The pages field could also have been given.
+The chapter number could be changed to something else such as a section
+number via the type field: type = "sec.".
+From the May 2002 issue of "IEEE Transactions on Circuits and Systems---I:
+Fundamental Applications and Theory", page 638, reference #22.
+@inbook{IEEEexample:inbook,
+ author = "H. E. Rose",
+ title = "A Course in Number Theory",
+ publisher = "Oxford Univ. Press",
+ address = "New York, NY",
+ year = "1988",
+ chapter = "3"
+}
+
+
+inbook with pages and note. The language field is not set to Russian
+because the title is presented here in its translated, English, form.
+From the May 2002 issue of "IEEE Transactions on Magnetics", page 1533,
+reference #5.
+@inbook{IEEEexample:inbookpagesnote,
+ author = "B. K. Bul",
+ title = "Theory Principles and Design of Magnetic Circuits",
+ publisher = "Energia Press",
+ address = "Moscow",
+ year = "1964",
+ pages = "464",
+ note = "(in Russian)"
+}
+
+
+
+
+
+incollection with author and editor
+From the May 2002 issue of "Journal of Lightwave Technology",
+page 807, reference #7.
+@incollection{IEEEexample:incollection,
+ author = "W. V. Sorin",
+ editor = "D. Derickson",
+ title = "Optical Reflectometry for Component Characterization",
+ booktitle = "Fiber Optic Test and Measurement",
+ publisher = "Prentice-Hall",
+ address = "Englewood Cliffs, NJ",
+ year = "1998"
+}
+
+
+incollection with series
+From the April 2000 issue of "IEEE Transactions on Communication",
+page 609, reference #3.
+@incollection{IEEEexample:incollectionwithseries,
+ author = "J. B. Anderson and K. Tepe",
+ title = "Properties of the Tailbiting {BCJR} Decoder",
+ booktitle = "Codes, Systems and Graphical Models",
+ series = "{IMA} Volumes in Mathematics and Its Applications",
+ publisher = "Springer-Verlag",
+ address = "New York",
+ year = "2000"
+
+}
+
+
+incollection with author, editor, chapter and pages
+From the January 2000 issue of "IEEE Transactions on Communications",
+page 16, reference #9.
+@incollection{IEEEexample:incollection_chpp,
+ author = "P. Hedelin and P. Knagenhjelm and M. Skoglund",
+ editor = "W. B. Kleijn and K. K. Paliwal",
+ title = "Theory for Transmission of Vector Quantization Data",
+ booktitle = "Speech Coding and Synthesis",
+ publisher = "Elsevier Science",
+ address = "Amsterdam, The Netherlands",
+ year = "1995",
+ chapter = "10",
+ pages = "347-396"
+}
+
+
+incollection with a large number of authors, some authors/journals will
+use et al. for so many names. IEEEtran.bst can be configured to do this
+if desired, or "R. M. A. Dawson and others" can be used instead.
+Note that the IEEE may not include the publisher for incollection entries -
+IEEEtran.bst will not issue a warning if the publisher is missing for
+incollections - but other .bst files often will.
+From the June 2002 issue of "IEEE Transactions on Electron Devices",
+page 996, reference #12.
+@incollection{IEEEexample:incollectionmanyauthors,
+ author = "R. M. A. Dawson and Z. Shen and D. A. Furst and
+ S. Connor and J. Hsu and M. G. Kane and R. G. Stewart and
+ A. Ipri and C. N. King and P. J. Green and R. T. Flegal
+ and S. Pearson and W. A. Barrow and E. Dickey and K. Ping
+ and C. W. Tang and S. Van. Slyke and
+ F. Chen and J. Shi and J. C. Sturm and M. H. Lu",
+ title = "Design of an Improved Pixel for a Polysilicon
+ Active-Matrix Organic {LED} Display",
+ booktitle = "{SID} Tech. Dig.",
+ volume = "29",
+ year = "1998",
+ pages = "11-14"
+}
+
+
+
+
+
+A Motorola data book as a manual
+It is somewhat unusual to include the data book part number.
+in the title. It might be more correct to put this information
+in the howpublished field instead.
+From the December 2000 issue of "IEEE Transactions on Communications",
+page 1986, reference #10.
+@manual{IEEEexample:motmanual,
+ title = "{FLEXChip} Signal Processor ({MC68175/D})",
+ organization = "Motorola",
+ year = "1996"
+}
+
+
+same reference, but using IEEEtran's howpublished extension
+@manual{IEEEexample:motmanualhowpub,
+ title = "{FLEXChip} Signal Processor",
+ howpublished = "{MC68175/D}",
+ organization = "Motorola",
+ year = "1996"
+}
+
+
+
+
+conference paper with an address and days. Some journals capitalize the
+letters in "Globecom", this one did not.
+From the May 2002 issue of "IEEE Transactions on Communications",
+page 697, reference #12.
+@inproceedings{IEEEexample:confwithadddays,
+ author = "M. S. Yee and L. Hanzo",
+ title = "Radial Basis Function Decision Feedback Equaliser
+ Assisted Burst-by-burst Adaptive Modulation",
+ booktitle = "Proc. {IEEE} Globecom '99",
+ address = "Rio de Janeiro, Brazil",
+ month = dec # " 5--9,",
+ year = "1999",
+ pages = "2183-2187"
+}
+
+
+conference paper with volume number. A conference proceedings with a vol
+number is a little uncommon, note that the vol number is placed
+before the address in the formatted bibliography entry
+From the April 2002 issue of "IEEE/ACM Transactions on Networking",
+page 181, reference #26.
+@inproceedings{IEEEexample:confwithvolume,
+ author = "M. Yajnik and S. B. Moon and J. Kurose and D. Towsley",
+ title = "Measurement and Modeling of the Temporal Dependence in
+ Packet Loss",
+ booktitle = "Proc. {IEEE} {INFOCOM}'99",
+ volume = "1",
+ address = "New York, NY",
+ month = mar,
+ year = "1999",
+ pages = "345-352"
+}
+
+
+conference paper with a paper number, the type field can be used to
+override the word "paper", e.g., type = "postdeadline paper". A type
+can be given even without a paper field.
+Also, IEEEtran.bst can be configured to ignore paper numbers and types.
+From the May 2002 issue of "Journal of Lightwave Technology",
+page 807, reference #4.
+@inproceedings{IEEEexample:confwithpaper,
+ author = "M. Wegmuller and J. P. von der Weid and P. Oberson
+ and N. Gisin",
+ title = "High Resolution Fiber Distributed Measurements With
+ Coherent {OFDR}",
+ booktitle = "Proc. {ECOC}'00",
+ year = "2000",
+ paper = "11.3.4",
+ pages = "109"
+}
+
+
+conference paper with a postdeadline type paper, the paper field is
+optional.
+From the August 2000 issue of "IEEE Photonics Technology Letters",
+page 1087, reference #12.
+@inproceedings{IEEEexample:confwithpapertype,
+ author = "B. Mikkelsen and G. Raybon and R.-J. Essiambre and
+ K. Dreyer and Y. Su. and L. E. Nelson and J. E. Johnson
+ and G. Shtengel and A. Bond and D. G. Moodie and
+ A. D. Ellis",
+ title = "160 {Gbit/s} Single-channel Transmission Over 300 km
+ Nonzero-dispersion Fiber With Semiconductor Based
+ Transmitter and Demultiplexer",
+ booktitle = "Proc. {ECOC}'99",
+ year = "1999",
+ paper = "2-3",
+ type = "postdeadline paper",
+ pages = "28-29"
+}
+
+
+presented at a conference
+intype overrides the default "in" and causes the booktitle not to be
+emphasized (rendered in italics).
+From the February 2002 issue of "IEEE/ACM Transactions on Networking",
+page 163, reference #6.
+@inproceedings{IEEEexample:presentedatconf,
+ author = "S. G. Finn and M. M{\'e}dard and R. A. Barry",
+ title = "A Novel Approach to Automatic Protection Switching
+ Using Trees",
+ intype = "presented at the",
+ booktitle = "Proc. Int. Conf. Commun.",
+ year = "1997"
+}
+
+
+
+
+
+master's thesis, often the University name will be abbreviated and the
+state or country will be included in the address. The type field can
+used to override the default type "Master's thesis"
+From the June 2002 issue of "IEEE Transactions on Microelectromechanical
+Systems", page 186, reference #11.
+@mastersthesis{IEEEexample:masters,
+ author = "Nin C. Loh",
+ title = "High-Resolution Micromachined Interferometric
+ Accelerometer",
+ school = "Massachusetts Institute of Technology",
+ address = "Cambridge",
+ year = "1992"
+}
+
+
+master's thesis with a type field
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 391, reference #12.
+@mastersthesis{IEEEexample:masterstype,
+ author = "A. Karnik",
+ title = "Performance of {TCP} Congestion Control with Rate
+ Feedback: {TCP/ABR} and Rate Adaptive {TCP/IP}",
+ school = "Indian Institute of Science",
+ type = "M. Eng. thesis",
+ address = "Bangalore, India",
+ month = jan,
+ year = "1999"
+}
+
+
+
+
+
+Ph.D. dissertation with a URL field, the university is abbreviated
+From the October 2001 issue of "IEEE/ACM Transactions on Networking",
+page 590, reference #11.
+@phdthesis{IEEEexample:phdurl,
+ author = "Q. Li",
+ title = "Delay Characterization and Performance Control of
+ Wide-area Networks",
+ school = "Univ. of Delaware",
+ address = "Newark",
+ month = may,
+ year = "2000",
+ url = "http://www.ece.udel.edu/~qli"
+}
+
+
+
+
+
+technical report
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 490, reference #15.
+@techreport{IEEEexample:techrep,
+ author = "R. Jain and K. K. Ramakrishnan and D. M. Chiu",
+ title = "Congestion Avoidance in Computer Networks with a
+ Connectionless Network Layer",
+ institution = "Digital Equipment Corporation",
+ address = "MA",
+ number = "DEC-TR-506",
+ month = aug,
+ year = "1987"
+}
+
+
+technical report with type
+for those times when "Tech. Rep." needs to be modified
+From the February 2001 issue of "IEEE/ACM Transactions on Networking",
+page 46, reference #8.
+@techreport{IEEEexample:techreptype,
+ author = "J. Padhye and V. Firoiu and D. Towsley",
+ title = "A Stochastic Model of {TCP} {R}eno Congestion Avoidance
+ and Control",
+ institution = "Univ. of Massachusetts",
+ address = "Amherst, MA",
+ type = "CMPSCI Tech. Rep.",
+ number = "99-02",
+ year = "1999"
+}
+
+
+technical report with type
+for those times when "Tech. Rep." needs to be modified
+This reference did not have an address.
+From the January 2000 issue of "IEEE Transactions on Communications",
+page 117, reference #6.
+@techreport{IEEEexample:techreptypeii,
+ author = "D. Middleton and A. D. Spaulding",
+ title = "A Tutorial Review of Elements of Weak Signal Detection
+ in Non-{G}aussian {EMI} Environments",
+ institution = "National Telecommunications and Information
+ Administration ({NTIA}), U.S. Dept. of Commerce",
+ type = "NTIA Report",
+ number = "86-194",
+ month = may,
+ year = "1986"
+}
+
+
+technical report, standards revision/change submission report
+From the June 2004 issue of "IEEE Journal of Selected Areas in Communications",
+page 928, reference #9.
+Note that some journals do not abbreviate the task group: "TGe" => "Task Group E"
+@techreport{IEEEexample:techrepstdsub,
+ author = "S. Kandala",
+ title = "Changes to {A}nnex {D}",
+ institution = "{IEEE} 802.11 {TGe}",
+ number = "02/680r0",
+ month = oct,
+ year = "2002"
+}
+
+
+
+
+an unpublished work
+for unpublished types, the note field is required. The IEEE usually
+just uses the word "unpublished" for the note.
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 391, reference #16.
+@unpublished{IEEEexample:unpublished,
+ author = "T. J. Ott and N. Aggarwal",
+ title = "{TCP} over {ATM}: {ABR} or {UBR}",
+ note = "Unpublished"
+}
+
+
+
+
+
+electronic with a howpublished information field
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 391, reference #7.
+@electronic{IEEEexample:electronhowinfo,
+ author = "V. Jacobson",
+ title = "Modified {TCP} Congestion Avoidance Algorithm",
+ howpublished = "end2end-interest mailing list",
+ url = "ftp://ftp.isi.edu/end2end/end2end-interest-1990.mail",
+ month = apr,
+ year = "1990"
+}
+
+
+electronic with a howpublished information field
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 418, reference #31.
+@electronic{IEEEexample:electronhowinfo2,
+ author = "V. Valloppillil and K. W. Ross",
+ title = "Cache Array Routing Protocol v1.1",
+ howpublished = "Internet draft",
+ url = "http://ds1.internic.net/internet-drafts/draft-vinod-carp-v1-03.txt",
+ year = "1998"
+}
+
+
+electronic with an organization and address
+From the February 2002 issue of "IEEE/ACM Transactions on Networking",
+page 114, reference #15.
+@electronic{IEEEexample:electronorgadd,
+ author = "D. H. Lorenz and A. Orda",
+ title = "Optimal Partition of {QoS} Requirements on Unicast
+ Paths and Multicast Trees",
+ organization = "Dept. Elect. Eng., Technion",
+ address = "Haifa, Israel",
+ url = "ftp://ftp.technion.ac.il/pub/supported/ee/Network/lor.mopq98.ps",
+ month = jul,
+ year = "1998"
+}
+
+
+
+
+
+U.S. patent
+Use the type field to override the patent type. e.g.,
+type = "Patent Application"
+The address is that of the assignee. Note that the IEEE does not
+display the assignee, the address, and only displays one date.
+(if year is not present, the filed dates are used.) However, this
+information should be entered as other BibTeX styles may use it.
+alternatively, nationality could be entered as "U.S."
+From the April 2000 issue of "IEEE Transactions on Communications",
+page 542, reference #6.
+@patent{IEEEexample:uspat,
+ author = "Ronald E. Sorace and Victor S. Reinhardt and
+ Steven A. Vaughn",
+ assignee = "Hughes Aircraft Company",
+ address = "Los Angeles, CA",
+ title = "High-Speed Digital-to-{RF} Converter",
+ nationality = "United States",
+ number = "5668842",
+ dayfiled = "28",
+ monthfiled = feb,
+ yearfiled = "1995",
+ day = "16",
+ month = sep,
+ year = "1997"
+}
+
+
+Japanese Patent
+From the April 2000 issue of "IEEE Transactions on Communications",
+page 556, reference #6.
+@patent{IEEEexample:jppat,
+ author = "U. Hideki",
+ title = "Quadrature Modulation Circuit",
+ nationality = "Japanese",
+ number = "152932/92",
+ day = "20",
+ month = may,
+ year = "1992"
+}
+
+
+French Patent request
+The language field must be entered in lower case
+as this is the option name Babel uses. The nationality field needs to be
+capitalized. Because this is a patent request, the date filed fields are
+used while the date fields are left empty/missing. In other countries,
+the words "Patent Application", etc. are used instead.
+From the April 2000 issue of "IEEE Transactions on Communications",
+page 556, reference #9.
+@patent{IEEEexample:frenchpatreq,
+ author = "F. Kowalik and M. Isard",
+ title = "Estimateur d'un D{\'e}faut de Fonctionnement
+ d'un Modulateur en Quadrature et {\'E}tage de Modulation
+ l'Utilisant",
+ language = "french",
+ nationality = "French",
+ type = "Patent Request",
+ number = "9500261",
+ dayfiled = "11",
+ monthfiled = jan,
+ yearfiled = "1995"
+}
+
+
+
+
+
+a periodical
+From the April 2001 issue of "IEEE/ACM Transactions on Networking",
+page 160, reference #1.
+sort key is needed for sorting styles
+@periodical{IEEEexample:periodical,
+ title = IEEE_M_PCOM # ", Special Issue on Wireless {ATM}",
+ volume = "3",
+ month = aug,
+ year = "1996",
+ key = "IEEE"
+}
+
+
+
+
+
+a standard
+The IEEE does not use the address for standards, but it is good
+to provide one for BibTeX styles that use it.
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 451, reference #2.
+@standard{IEEEexample:standard,
+ title = "Wireless {LAN} Medium Access Control {(MAC)} and
+ Physical Layer {(PHY)} Specification",
+ organization = "IEEE",
+ address = "Piscataway, NJ",
+ number = "802.11",
+ year = "1997"
+}
+
+
+standard with type and revision, the type overrides the word standard
+(or std.). Here a standard number is not available and a revision number
+is used.
+From the August 2000 issue of "IEEE Photonics Technology Letters",
+page 1048, reference #13.
+@standard{IEEEexample:standardproposed,
+ title = "Fiber Channel Physical Interface ({FC-PI})",
+ institution = "NCITS",
+ address = "Washington, DC",
+ type = "Working Draft Proposed Standard",
+ revision = "5.2",
+ year = "1999"
+}
+
+
+standard draft as a misc with author
+From the May 2002 issue of "IEEE Journal of Selected Areas in
+Communication", page 725, reference #16.
+@misc{IEEEexample:draftasmisc,
+ author = "I. Widjaja and A. Elwalid",
+ title = "{MATE}: {MPLS} Adaptive Traffic Engineering",
+ howpublished = "IETF Draft",
+ year = "1999"
+}
+
+
+
+
+
+misc for a techreport like reference
+techreport is not perfectly suitable because this entry lacks
+an institution field
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 490, reference #22.
+@misc{IEEEexample:miscforum,
+ author = "L. Roberts",
+ title = "Enhanced Proportional Rate Control Algorithm {PRCA}",
+ howpublished = "{ATM} Forum Contribution 94-0735R1",
+ month = aug,
+ year = "1994"
+}
+
+
+misc for a white paper
+From the August 2001 issue of "IEEE/ACM Transactions on Networking",
+page 478, reference #4 - Note that the reference there (improperly?)
+used the author field for "Cisco".
+@misc{IEEEexample:whitepaper,
+ title = "Advanced {QoS} Services for the Intelligent Internet",
+ howpublished = "White Paper",
+ organization = "Cisco",
+ month = may,
+ year = "1997"
+}
+
+
+misc for a data sheet
+From the November 2000 issue of "IEEE Photonics Technology Letters",
+page 1551, reference #6.
+@misc{IEEEexample:datasheet,
+ title = "{PDCA12-70} Data Sheet",
+ organization = "Opto Speed SA",
+ address = "Mezzovico, Switzerland"
+}
+
+
+
+
+
+Other unusual references
+
+a private communication as a misc entry type
+sometimes the designation "personal communication" is used instead
+From the June 2002 issue of "IEEE Transactions on Information Theory",
+page 1725, reference #16.
+@misc{IEEEexample:private,
+ author = "S. Konyagin",
+ howpublished = "private communication",
+ year = "1998"
+}
+
+
+an internet request for comments (RFC) as a misc entry type
+It would also be nice to add a URL to these types of things.
+RFCs can also be handled as electronic references.
+From the April 2002 issue of "IEEE/ACM Transactions on Networking",
+page 181, reference #14.
+@misc{IEEEexample:miscrfc,
+ author = "K. K. Ramakrishnan and S. Floyd",
+ title = "A Proposal to Add Explicit Congestion
+ Notification ({ECN}) to {IP}",
+ howpublished = "RFC 2481",
+ month = jan,
+ year = "1999"
+}
+
+
+a software package as a manual
+From the June 2002 issue of "IEEE/ASME Journal of Microelectromechanical
+Systems", page 205, reference #20.
+Sometimes they put the version/release information in the title.
+@manual{IEEEexample:softmanual,
+ title = "SaberDesigner Reference Manual",
+ organization = "Analogy, Inc.",
+ address = "Beaverton, OR",
+ year = "1998",
+ note = "Release 4.3"
+}
+
+
+a software package as an electronic reference
+From the February 2003 issue of "IEEE/ACM Transactions on Networking",
+page 46, reference #24. If there is no author or organization, a sorting
+key is required for sorting styles. It might be a good idea to include
+month and year fields as well.
+@electronic{IEEEexample:softonline,
+ title = "Ucb/lbnl/vint Network Simulator---ns (Version 2)",
+ url = "http://www-mash.cs.berkeley.edu/ns/",
+ key = "ns"
+}
+
+
+misc for a German regulation
+In German, the first letters of nouns are capitalized, so we do so here.
+From the June 2002 issue of "IEEE Journal in Selected Areas in
+Communication", page 892, reference #9.
+@misc{IEEEexample:miscgermanreg,
+ title = "{M}essung von {S}t{\"o}rfeldern an {A}nlagen
+ und {L}eitungen der {T}elekommunikation im
+ {F}requenzbereich 9 {kHz} bis 3 {GHz}",
+ language = "german",
+ howpublished = "{M}e{\ss}vorschrift {R}eg {TP} {MV} 05",
+ organization = "Regulierungsbeh{\"o}rde f{\"u}r {T}elekommunikation und
+ {P}ost ({R}eg {TP})"
+}
+
+
+
+Ways to handle things like CCSDS's Blue Books
+journal article with a URL. However, this is not a very good approach
+because the Blue Books are not really journals and the author field has
+to be abused.
+From the June 2002 issue of "IEEE Transactions on Information Theory",
+page 1461, reference #7.
+@article{IEEEexample:bluebookarticle,
+ author = "{Consulative Committee for Space Data Systems (CCSDS)}",
+ title = "Telemetry Channel Coding",
+ journal = "Blue Book",
+ number = "4",
+ year = "1999",
+ url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf"
+}
+
+
+CCSDS's Blue Book handled as a book
+However, it is not a good idea to have to use the author field for
+an organization (done here because the book entry type requires an
+author field).
+@book{IEEEexample:bluebookbook,
+ author = "{Consulative Committee for Space Data Systems (CCSDS)}",
+ title = "Telemetry Channel Coding",
+ series = "Blue Book",
+ number = "4",
+ publisher = "{CCSDS}",
+ address = "Newport Beach, {CA}",
+ year = "1999",
+ url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf"
+}
+
+
+CCSDS's Blue Book handled as a manual
+This is a much better approach, but uses the howpublished field.
+@manual{IEEEexample:bluebookmanual,
+ title = "Telemetry Channel Coding",
+ howpublished = "ser. Blue Book, No. 4",
+ organization = "Consulative Committee for Space Data Systems (CCSDS)",
+ address = "Newport Beach, CA",
+ year = "1999",
+ url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf"
+}
+
+
+
+CCSDS's Blue Book handled as a standard
+Probably the best approach for this particular case because the work
+is standard related. Note that the IEEE does not display the address for
+standards.
+@standard{IEEEexample:bluebookstandard,
+ title = "Telemetry Channel Coding",
+ howpublished = "ser. Blue Book, No. 4",
+ organization = "Consulative Committee for Space Data Systems (CCSDS)",
+ address = "Newport Beach, CA",
+ type = "Recommendation for Space Data System Standard",
+ number = "101.0-B-4",
+ month = May,
+ year = "1999",
+ url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf"
+}
+
+
+
+
+
+
+
+
+An example of a IEEEtran control entry which can change some IEEEtran.bst
+settings. An entry like this must be cited via \bstctlcite{} command
+before the first real \cite{}. The same entry key cannot be called twice
+(just like multiple \cite{} of the same entry key place only one entry
+in the bibliography.)
+The available control fields are:
+
+CTLuse_article_number
+"no" turns off the display of the number for articles.
+"yes" enables
+
+CTLuse_paper
+"no" turns off the display of the paper and type fields in inproceedings.
+"yes" enables
+
+CTLuse_url
+"no" turns off the display of the url field.
+"yes" enables
+
+CTLuse_forced_etal
+"no" turns off the forced use of "et al."
+"yes" enables
+
+CTLmax_names_forced_etal
+The maximum number of names that can be present beyond which an "et al."
+usage is forced. Be sure that CTLnames_show_etal (below)
+is not greater than this value!
+
+CTLnames_show_etal
+The number of names that will be shown with a forced "et al.".
+Must be less than or equal to CTLmax_names_forced_etal
+
+CTLuse_alt_spacing
+"no" turns off the alternate interword spacing for entries with URLs.
+"yes" enables
+Will not have any effect (is disabled) if the display of urls is disabled.
+
+CTLalt_stretch_factor
+If alternate interword spacing for entries with URLs is enabled, this is
+the interword spacing stretch factor that will be used. For example, the
+default "4" here means that the interword spacing in entries with URLs can
+stretch to four times normal. Does not have to be an integer.
+
+CTLdash_repeated_names
+"no" turns off the "dashification" of repeated (i.e., identical to those
+of the previous entry) names. The IEEE normally does this.
+"yes" enables
+
+CTLname_format_string
+The name format control string as explained in the BibTeX style hacking
+guide.
+IEEE style "{f.~}{vv~}{ll}{, jj}" is the default,
+
+CTLname_latex_cmd
+A LaTeX command that each name will be fed to (e.g., "\textsc").
+Leave empty if no special font is desired for the names.
+The default is empty.
+
+CTLname_url_prefix
+The prefix text used before URLs (if they are enabled).
+The default is "[Online]. Available:" A space will be inserted after this
+text. If this space is not wanted, just use \relax at the end of the
+prefix text.
+
+
+Those fields that are not to be changed can be left out.
+@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
+ CTLuse_article_number = "yes",
+ CTLuse_paper = "yes",
+ CTLuse_url = "yes",
+ CTLuse_forced_etal = "no",
+ CTLmax_names_forced_etal = "10",
+ CTLnames_show_etal = "1",
+ CTLuse_alt_spacing = "yes",
+ CTLalt_stretch_factor = "4",
+ CTLdash_repeated_names = "yes",
+ CTLname_format_string = "{f.~}{vv~}{ll}{, jj}",
+ CTLname_latex_cmd = "",
+ CTLname_url_prefix = "[Online]. Available:"
+}
+
+
diff --git a/macros/latex/contrib/IEEEtran/bibtex/IEEEfull.bib b/macros/latex/contrib/IEEEtran/bibtex/IEEEfull.bib
new file mode 100644
index 0000000000..ce6cc107f1
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/IEEEfull.bib
@@ -0,0 +1,486 @@
+
+IEEEfull.bib
+V1.14 (2015/08/28)
+Copyright (c) 2002-2015 by Michael Shell
+See: http://www.michaelshell.org/
+for current contact information.
+
+BibTeX bibliography string definitions of the FULL titles of
+IEEE journals and magazines and online publications.
+
+This file is designed for bibliography styles that require
+full-length titles and is not for use in bibliographies that
+abbreviate titles.
+
+Support sites:
+http://www.michaelshell.org/tex/ieeetran/
+http://www.ctan.org/pkg/ieeetran
+and/or
+http://www.ieee.org/
+
+Special thanks to Laura Hyslop, Ken Rawson, Kevin Lisankie and
+Mona Mittra of the IEEE for their help in obtaining the information needed
+to compile this file. Also, Volker Kuhlmann, Moritz Borgmann,
+Yannick Berker, Nicolás Barabino, Chuanren Wu and Santiago Cogollos Borras
+kindly provided some corrections and additions.
+
+
+*************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall the IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+*************************************************************************
+
+
+USAGE:
+
+\bibliographystyle{mybstfile}
+\bibliography{IEEEfull,mybibfile}
+
+where the IEEE titles in the .bib database entries use the strings
+defined here. e.g.,
+
+
+ journal = IEEE_J_AC,
+
+
+to yield "{IEEE} Transactions on Automatic Control"
+
+
+WARNING: The IEEE uses abbreviated journal titles in their bibliographies!
+Because this file provides the full titles, you should NOT use this file
+for work that is to be submitted to the IEEE.
+
+For IEEE work, you should use the abbreviated titles provided in the
+companion file, IEEEabrv.bib.
+
+
+** NOTES **
+
+ 1. Journals have been grouped according to subject in order to make it
+ easier to locate and extract the definitions for related journals -
+ as most works use references that are confined to a single topic.
+ Magazines are listed in straight alphabetical order.
+
+ 2. String names are closely based on IEEE's own internal acronyms.
+
+ 3. Older, out-of-print IEEE titles are included (but not including titles
+ dating prior to the IEEE's formation from the IRE and AIEE in 1963).
+
+
+
+
+
+
+IEEE Journals
+
+
+aerospace and military
+@STRING{IEEE_J_ANNE = "{IEEE} Transactions on Aeronautical and Navigational Electronics"}
+@STRING{IEEE_J_AES = "{IEEE} Transactions on Aerospace and Electronic Systems"}
+@STRING{IEEE_J_ANE = "{IEEE} Transactions on Aerospace and Navigational Electronics"}
+@STRING{IEEE_J_AS = "{IEEE} Transactions on Aerospace"}
+@STRING{IEEE_J_AIRE = "{IEEE} Transactions on Airborne Electronics"}
+@STRING{IEEE_J_MIL = "{IEEE} Transactions on Military Electronics"}
+
+
+
+autos, transportation and vehicles (non-aerospace)
+@STRING{IEEE_J_ITS = "{IEEE} Transactions on Intelligent Transportation Systems"}
+@STRING{IEEE_J_IV = "{IEEE} Transactions on Intelligent Vehicles"}
+@STRING{IEEE_J_TTE = "{IEEE} Transactions on Transportation Electrification"}
+@STRING{IEEE_J_VC = "{IEEE} Transactions on Vehicular Communications"}
+@STRING{IEEE_J_VT = "{IEEE} Transactions on Vehicular Technology"}
+
+
+
+circuits, signals, systems, audio and controls
+@STRING{IEEE_J_STSP = "{IEEE} Journal of Selected Topics in Signal Processing"}
+@STRING{IEEE_J_SPL = "{IEEE} Signal Processing Letters"}
+@STRING{IEEE_J_SYST = "{IEEE} Systems Journal"}
+@STRING{IEEE_J_ASSP = "{IEEE} Transactions on Acoustics, Speech, and Signal Processing"}
+@STRING{IEEE_J_AU = "{IEEE} Transactions on Audio"}
+@STRING{IEEE_J_AUEA = "{IEEE} Transactions on Audio and Electroacoustics"}
+in 2014 ASL became ASLP
+@STRING{IEEE_J_ASLP = "{IEEE/ACM} Transactions on Audio, Speech, and Language Processing"}
+@STRING{IEEE_J_ASL = "{IEEE} Transactions on Audio, Speech, and Language Processing"}
+@STRING{IEEE_J_AC = "{IEEE} Transactions on Automatic Control"}
+@STRING{IEEE_J_CAS = "{IEEE} Transactions on Circuits and Systems"}
+@STRING{IEEE_J_CASVT = "{IEEE} Transactions on Circuits and Systems for Video Technology"}
+@STRING{IEEE_J_CASI = "{IEEE} Transactions on Circuits and Systems---Part {I}: Fundamental Theory and Applications"}
+@STRING{IEEE_J_CASII = "{IEEE} Transactions on Circuits and Systems---Part {II}: Analog and Digital Signal Processing"}
+in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively
+@STRING{IEEE_J_CASI_RP = "{IEEE} Transactions on Circuits and Systems---Part {I}: Regular Papers"}
+@STRING{IEEE_J_CASII_EB = "{IEEE} Transactions on Circuits and Systems---Part {II}: Express Briefs"}
+@STRING{IEEE_J_CT = "{IEEE} Transactions on Circuit Theory"}
+@STRING{IEEE_J_CST = "{IEEE} Transactions on Control Systems Technology"}
+@STRING{IEEE_J_ETCAS = "{IEEE} Transactions on Emerging and Selected Topics in Circuits and Systems"}
+@STRING{IEEE_J_SP = "{IEEE} Transactions on Signal Processing"}
+@STRING{IEEE_J_SU = "{IEEE} Transactions on Sonics and Ultrasonics"}
+@STRING{IEEE_J_SAP = "{IEEE} Transactions on Speech and Audio Processing"}
+@STRING{IEEE_J_UE = "{IEEE} Transactions on Ultrasonics Engineering"}
+@STRING{IEEE_J_UFFC = "{IEEE} Transactions on Ultrasonics, Ferroelectrics, and Frequency Control"}
+
+
+
+communications
+@STRING{IEEE_J_COML = "{IEEE} Communications Letters"}
+@STRING{IEEE_J_JSAC = "{IEEE} Journal on Selected Areas in Communications"}
+@STRING{IEEE_J_COM = "{IEEE} Transactions on Communications"}
+@STRING{IEEE_J_COMT = "{IEEE} Transactions on Communication Technology"}
+@STRING{IEEE_J_WCOM = "{IEEE} Transactions on Wireless Communications"}
+@STRING{IEEE_J_WCOML = "{IEEE} Wireless Communications Letters"}
+
+
+
+components, packaging and manufacturing
+@STRING{IEEE_J_ADVP = "{IEEE} Transactions on Advanced Packaging"}
+@STRING{IEEE_J_CHMT = "{IEEE} Transactions on Components, Hybrids and Manufacturing Technology"}
+in 2011 CAPT became CPMT
+@STRING{IEEE_J_CPMT = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology"}
+@STRING{IEEE_J_CPMTA = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {A}"}
+@STRING{IEEE_J_CPMTB = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {B}: Advanced Packaging"}
+@STRING{IEEE_J_CPMTC = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {C}: Manufacturing"}
+@STRING{IEEE_J_CAPTS = "{IEEE} Transactions on Components and Packaging Technologies"}
+@STRING{IEEE_J_CAPT = "{IEEE} Transactions on Components and Packaging Technology"}
+@STRING{IEEE_J_CPART = "{IEEE} Transactions on Component Parts"}
+@STRING{IEEE_J_EPM = "{IEEE} Transactions on Electronics Packaging Manufacturing"}
+@STRING{IEEE_J_MFT = "{IEEE} Transactions on Manufacturing Technology"}
+@STRING{IEEE_J_PHP = "{IEEE} Transactions on Parts, Hybrids and Packaging"}
+@STRING{IEEE_J_PMP = "{IEEE} Transactions on Parts, Materials and Packaging"}
+
+
+
+CAD
+@STRING{IEEE_J_TCAD = "{IEEE} Journal on Technology in Computer Aided Design"}
+@STRING{IEEE_J_CAD = "{IEEE} Transactions on Computer-Aided Design of Integrated Circuits and Systems"}
+
+
+
+coding, data, information, knowledge
+@STRING{IEEE_J_BD = "{IEEE} Transactions on Big Data"}
+@STRING{IEEE_J_IFS = "{IEEE} Transactions on Information Forensics and Security"}
+@STRING{IEEE_J_IT = "{IEEE} Transactions on Information Theory"}
+@STRING{IEEE_J_KDE = "{IEEE} Transactions on Knowledge and Data Engineering"}
+
+
+
+computers, computation, networking and software
+@STRING{IEEE_J_CAL = "{IEEE} Computer Architecture Letters"}
+@STRING{IEEE_J_ES = "{IEEE} Embedded Systems Letters"}
+@STRING{IEEE_J_IOT = "{IEEE} Internet of Things Journal"}
+@STRING{IEEE_J_XCDC = "{IEEE} Journal on Exploratory Solid-State Computational Devices and Circuits"}
+@STRING{IEEE_J_MMCT = "{IEEE} Journal on Multiscale and Multiphysics Computational Techniques"}
+@STRING{IEEE_J_SUSC = "{IEEE} Sustainable Computing"}
+@STRING{IEEE_J_CC = "{IEEE} Transactions on Cloud Computing"}
+@STRING{IEEE_J_CSS = "{IEEE} Transactions on Computational Social Systems"}
+@STRING{IEEE_J_C = "{IEEE} Transactions on Computers"}
+@STRING{IEEE_J_CNS = "{IEEE} Transactions on Control of Network Systems"}
+@STRING{IEEE_J_DSC = "{IEEE} Transactions on Dependable and Secure Computing"}
+@STRING{IEEE_J_ECOMP = "{IEEE} Transactions on Electronic Computers"}
+@STRING{IEEE_J_ETC = "{IEEE} Transactions on Emerging Topics in Computing"}
+@STRING{IEEE_J_EVC = "{IEEE} Transactions on Evolutionary Computation"}
+@STRING{IEEE_J_FUZZ = "{IEEE} Transactions on Fuzzy Systems"}
+@STRING{IEEE_J_MC = "{IEEE} Transactions on Mobile Computing"}
+@STRING{IEEE_J_MSCS = "{IEEE} Transactions on Multi-Scale Computing Systems"}
+@STRING{IEEE_J_NET = "{IEEE/ACM} Transactions on Networking"}
+@STRING{IEEE_J_NSE = "{IEEE} Transactions on Network Science and Engineering"}
+@STRING{IEEE_J_NSM = "{IEEE} Transactions on Network and Service Management"}
+@STRING{IEEE_J_NN = "{IEEE} Transactions on Neural Networks"}
+in 2012 NN became NNLS
+@STRING{IEEE_J_NNLS = "{IEEE} Transactions on Neural Networks and Learning Systems"}
+@STRING{IEEE_J_PDS = "{IEEE} Transactions on Parallel and Distributed Systems"}
+@STRING{IEEE_J_SC = "{IEEE} Transactions on Services Computing"}
+@STRING{IEEE_J_SIPN = "{IEEE} Transactions on Signal and Information Processing over Networks"}
+@STRING{IEEE_J_SE = "{IEEE} Transactions on Software Engineering"}
+
+
+
+computer graphics, imaging, and multimedia
+@STRING{IEEE_J_JDT = "{IEEE/OSA} Journal of Display Technology"}
+@STRING{IEEE_J_IP = "{IEEE} Transactions on Image Processing"}
+@STRING{IEEE_J_MM = "{IEEE} Transactions on Multimedia"}
+@STRING{IEEE_J_VCG = "{IEEE} Transactions on Visualization and Computer Graphics"}
+
+
+
+cybernetics, ergonomics, robots, man-machine, artificial intelligence and automation
+@STRING{IEEE_J_JAS = "{IEEE/CAA} Journal of Automatica Sinica"}
+@STRING{IEEE_J_JRA = "{IEEE} Journal of Robotics and Automation"}
+@STRING{IEEE_J_AFFC = "{IEEE} Transactions on Affective Computing"}
+@STRING{IEEE_J_ASE = "{IEEE} Transactions on Automation Science and Engineering"}
+@STRING{IEEE_J_AMD = "{IEEE} Transactions on Autonomous Mental Development"}
+@STRING{IEEE_J_CCN = "{IEEE} Transactions on Cognitive Communications and Networking"}
+in 2015 AMD became CDS
+@STRING{IEEE_J_CDS = "{IEEE} Transactions on Cognitive and Developmental Systems"}
+@STRING{IEEE_J_CIAIG = "{IEEE} Transactions on Computational Intelligence and {AI} in Games"}
+in 2013 SMCB became CYB
+@STRING{IEEE_J_CYB = "{IEEE} Transactions on Cybernetics"}
+@STRING{IEEE_J_H = "{IEEE} Transactions on Haptics"}
+@STRING{IEEE_J_HFE = "{IEEE} Transactions on Human Factors in Electronics"}
+in 2013 SMCC became HMS
+@STRING{IEEE_J_HMS = "{IEEE} Transactions on Human-Machine Systems"}
+@STRING{IEEE_J_MMS = "{IEEE} Transactions on Man-Machine Systems"}
+@STRING{IEEE_J_PAMI = "{IEEE} Transactions on Pattern Analysis and Machine Intelligence"}
+in 1989 JRA became RA
+in August 2004, RA split into ASE and RO
+@STRING{IEEE_J_RA = "{IEEE} Transactions on Robotics and Automation"}
+@STRING{IEEE_J_RAL = "{IEEE} Robotics and Automation Letters"}
+@STRING{IEEE_J_RO = "{IEEE} Transactions on Robotics"}
+@STRING{IEEE_J_SMC = "{IEEE} Transactions on Systems, Man, and Cybernetics"}
+@STRING{IEEE_J_SMCA = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {A}: Systems and Humans"}
+@STRING{IEEE_J_SMCB = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {B}: Cybernetics"}
+@STRING{IEEE_J_SMCC = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {C}: Applications and Reviews"}
+in 2012 SMCA became SMCS
+@STRING{IEEE_J_SMCS = "{IEEE} Transactions on Systems, Man, and Cybernetics: Systems"}
+@STRING{IEEE_J_SSC = "{IEEE} Transactions on Systems Science and Cybernetics"}
+
+
+
+earth, wind, fire and water
+@STRING{IEEE_J_GRSL = "{IEEE} Geoscience and Remote Sensing Letters"}
+@STRING{IEEE_J_GE = "{IEEE} Transactions on Geoscience Electronics"}
+@STRING{IEEE_J_GRS = "{IEEE} Transactions on Geoscience and Remote Sensing"}
+@STRING{IEEE_J_OE = "{IEEE} Journal of Oceanic Engineering"}
+@STRING{IEEE_J_STARS = "{IEEE} Journal of Selected Topics in Applied Earth Observations and Remote Sensing"}
+
+
+
+education, engineering, history, IEEE, professional
+@STRING{IEEE_J_CJECE = "Canadian Journal of Electrical and Computer Engineering"}
+@STRING{IEEE_J_PROC = "Proceedings of the {IEEE}"}
+@STRING{IEEE_J_RITA = "{IEEE} Revista Iberoamericana de Technolog{\'{i}}as del Aprendizaje"}
+@STRING{IEEE_J_EDU = "{IEEE} Transactions on Education"}
+@STRING{IEEE_J_EM = "{IEEE} Transactions on Engineering Management"}
+@STRING{IEEE_J_EWS = "{IEEE} Transactions on Engineering Writing and Speech"}
+@STRING{IEEE_J_LT = "{IEEE} Transactions on Learning Technologies"}
+@STRING{IEEE_J_PC = "{IEEE} Transactions on Professional Communication"}
+
+
+
+electromagnetics, antennas, EMI, magnetics and microwave
+@STRING{IEEE_J_AWPL = "{IEEE} Antennas and Wireless Propagation Letters"}
+@STRING{IEEE_J_MAGL = "{IEEE} Magnetics Letters"}
+@STRING{IEEE_J_MGWL = "{IEEE} Microwave and Guided Wave Letters"}
+@STRING{IEEE_J_MWCL = "{IEEE} Microwave and Wireless Components Letters"}
+@STRING{IEEE_J_RFIC = "{IEEE} {RFIC} Journal"}
+@STRING{IEEE_J_RFID = "{IEEE} {RFID} Journal"}
+@STRING{IEEE_J_AP = "{IEEE} Transactions on Antennas and Propagation"}
+@STRING{IEEE_J_EMC = "{IEEE} Transactions on Electromagnetic Compatibility"}
+@STRING{IEEE_J_MAG = "{IEEE} Transactions on Magnetics"}
+@STRING{IEEE_J_MTT = "{IEEE} Transactions on Microwave Theory and Techniques"}
+@STRING{IEEE_J_RFI = "{IEEE} Transactions on Radio Frequency Interference"}
+@STRING{IEEE_J_TTHZ = "{IEEE} Transactions on Terahertz Science and Technology"}
+@STRING{IEEE_J_TJMJ = "{IEEE} Translation Journal on Magnetics in Japan"}
+
+
+
+energy, power and conversion
+@STRING{IEEE_J_PHOT = "{IEEE} Journal of Photovoltaics"}
+@STRING{IEEE_J_PEL = "{IEEE} Power Electronics Letters"}
+@STRING{IEEE_J_PETS = "{IEEE} Power and Energy Technology Systems Journal"}
+@STRING{IEEE_J_ESTPE = "{IEEE} Transactions on Emerging and Selected Topics in Power Electronics"}
+@STRING{IEEE_J_EC = "{IEEE} Transactions on Energy Conversion"}
+@STRING{IEEE_J_PWRAS = "{IEEE} Transactions on Power Apparatus and Systems"}
+@STRING{IEEE_J_PWRD = "{IEEE} Transactions on Power Delivery"}
+@STRING{IEEE_J_PWRE = "{IEEE} Transactions on Power Electronics"}
+@STRING{IEEE_J_PWRS = "{IEEE} Transactions on Power Systems"}
+@STRING{IEEE_J_SG = "{IEEE} Transactions on Smart Grid"}
+@STRING{IEEE_J_STE = "{IEEE} Transactions on Sustainable Energy"}
+
+
+
+industrial, commercial and consumer
+@STRING{IEEE_J_PSE = "{IEEE} Journal of Product Safety Engineering"}
+@STRING{IEEE_J_APPIND = "{IEEE} Transactions on Applications and Industry"}
+@STRING{IEEE_J_BC = "{IEEE} Transactions on Broadcasting"}
+@STRING{IEEE_J_BCTV = "{IEEE} Transactions on Broadcast and Television Receivers"}
+@STRING{IEEE_J_CE = "{IEEE} Transactions on Consumer Electronics"}
+@STRING{IEEE_J_IE = "{IEEE} Transactions on Industrial Electronics"}
+@STRING{IEEE_J_IECI = "{IEEE} Transactions on Industrial Electronics and Control Instrumentation"}
+@STRING{IEEE_J_IA = "{IEEE} Transactions on Industry Applications"}
+@STRING{IEEE_J_IGA = "{IEEE} Transactions on Industry and General Applications"}
+@STRING{IEEE_J_IINF = "{IEEE} Transactions on Industrial Informatics"}
+
+
+
+instrumentation and measurement
+@STRING{IEEE_J_IM = "{IEEE} Transactions on Instrumentation and Measurement"}
+
+
+
+insulation and materials
+@STRING{IEEE_J_JEM = "{IEEE/TMS} Journal of Electronic Materials"}
+@STRING{IEEE_J_DEI = "{IEEE} Transactions on Dielectrics and Electrical Insulation"}
+@STRING{IEEE_J_EI = "{IEEE} Transactions on Electrical Insulation"}
+
+
+
+mechanical
+@STRING{IEEE_J_MEMS = "{IEEE/ASME} Journal of Microelectromechanical Systems"}
+in 2014 MEMS became MEMSI
+@STRING{IEEE_J_MEMSI = "{IEEE} Journal of Microelectromechanical Systems"}
+@STRING{IEEE_J_MECH = "{IEEE/ASME} Transactions on Mechatronics"}
+
+
+
+medical and biological
+@STRING{IEEE_J_BHI = "{IEEE} Journal of Biomedical and Health Informatics"}
+@STRING{IEEE_J_TEHM = "{IEEE} Journal of Translational Engineering in Health and Medicine"}
+@STRING{IEEE_J_LS = "{IEEE} Life Sciences Letters"}
+@STRING{IEEE_J_RBME = "{IEEE} Reviews in Biomedical Engineering"}
+@STRING{IEEE_J_BCAS = "{IEEE} Transactions on Biomedical Circuits and Systems"}
+@STRING{IEEE_J_BMELC = "{IEEE} Transactions on Bio-Medical Electronics"}
+B-ME later dropped the hyphen and became the BME
+@STRING{IEEE_J_BME = "{IEEE} Transactions on Biomedical Engineering"}
+@STRING{IEEE_J_B-ME = "{IEEE} Transactions on Bio-Medical Engineering"}
+@STRING{IEEE_J_CBB = "{IEEE/ACM} Transactions on Computational Biology and Bioinformatics"}
+@STRING{IEEE_J_ITBM = "{IEEE} Transactions on Information Technology in Biomedicine"}
+@STRING{IEEE_J_ME = "{IEEE} Transactions on Medical Electronics"}
+@STRING{IEEE_J_MI = "{IEEE} Transactions on Medical Imaging"}
+@STRING{IEEE_J_MBSC = "{IEEE} Transactions on Molecular, Biological and Multi-Scale Communications"}
+@STRING{IEEE_J_NB = "{IEEE} Transactions on NanoBioscience"}
+@STRING{IEEE_J_NSRE = "{IEEE} Transactions on Neural Systems and Rehabilitation Engineering"}
+@STRING{IEEE_J_RE = "{IEEE} Transactions on Rehabilitation Engineering"}
+
+
+
+optics, lightwave and photonics
+@STRING{IEEE_J_JLT = "{IEEE/OSA} Journal of Lightwave Technology"}
+@STRING{IEEE_J_OCN = "{IEEE} Journal of Optical Communications and Networking"}
+@STRING{IEEE_J_PJ = "{IEEE} Photonics Journal"}
+@STRING{IEEE_J_PTL = "{IEEE} Photonics Technology Letters"}
+
+
+
+physics, electrons, nanotechnology, nuclear and quantum electronics
+@STRING{IEEE_J_EDL = "{IEEE} Electron Device Letters"}
+@STRING{IEEE_J_EDS = "{IEEE} Journal of Electron Devices Society"}
+@STRING{IEEE_J_JQE = "{IEEE} Journal of Quantum Electronics"}
+@STRING{IEEE_J_JSTQE = "{IEEE} Journal of Selected Topics in Quantum Electronics"}
+@STRING{IEEE_J_ENANO = "{IEEE} Nanotechnology Express"}
+@STRING{IEEE_J_ED = "{IEEE} Transactions on Electron Devices"}
+@STRING{IEEE_J_NANO = "{IEEE} Transactions on Nanotechnology"}
+@STRING{IEEE_J_NS = "{IEEE} Transactions on Nuclear Science"}
+@STRING{IEEE_J_PS = "{IEEE} Transactions on Plasma Science"}
+
+
+
+reliability
+@STRING{IEEE_J_DMR = "{IEEE} Transactions on Device and Materials Reliability"}
+@STRING{IEEE_J_R = "{IEEE} Transactions on Reliability"}
+
+
+
+semiconductors, superconductors, electrochemical and solid state
+@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochemical and Solid-State Letters"}
+@STRING{IEEE_J_JSSC = "{IEEE} Journal of Solid-State Circuits"}
+@STRING{IEEE_J_ASC = "{IEEE} Transactions on Applied Superconductivity"}
+@STRING{IEEE_J_SM = "{IEEE} Transactions on Semiconductor Manufacturing"}
+
+
+
+sensors
+@STRING{IEEE_J_SENSOR = "{IEEE} Sensors Journal"}
+
+
+
+VLSI
+@STRING{IEEE_J_VLSI = "{IEEE} Transactions on Very Large Scale Integration ({VLSI}) Systems"}
+
+
+
+
+
+
+IEEE Magazines and Online Publications
+
+
+@STRING{IEEE_O_ACC = "{IEEE} Access"}
+@STRING{IEEE_M_AES = "{IEEE} Aerospace and Electronics Systems Magazine"}
+@STRING{IEEE_M_HIST = "{IEEE} Annals of the History of Computing"}
+@STRING{IEEE_M_AP = "{IEEE} Antennas and Propagation Magazine"}
+@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Magazine"}
+@STRING{IEEE_M_CHINAC = "China Communications Magazine"}
+@STRING{IEEE_M_CD = "{IEEE} Circuits and Devices Magazine"}
+@STRING{IEEE_M_CAS = "{IEEE} Circuits and Systems Magazine"}
+@STRING{IEEE_M_COM = "{IEEE} Communications Magazine"}
+@STRING{IEEE_M_COMSOC = "{IEEE} Communications Society Magazine"}
+@STRING{IEEE_O_CSTO = "{IEEE} Communications Surveys and Tutorials"}
+@STRING{IEEE_M_CIM = "{IEEE} Computational Intelligence Magazine"}
+CSEM changed to CSE in 1999
+@STRING{IEEE_M_CSE = "{IEEE} Computing in Science and Engineering"}
+@STRING{IEEE_M_CSEM = "{IEEE} Computational Science and Engineering Magazine"}
+@STRING{IEEE_M_C = "Computer"}
+@STRING{IEEE_M_CAP = "{IEEE} Computer Applications in Power"}
+@STRING{IEEE_M_CGA = "{IEEE} Computer Graphics and Applications"}
+@STRING{IEEE_M_CONC = "{IEEE} Concurrency"}
+@STRING{IEEE_M_CS = "{IEEE} Control Systems Magazine"}
+in 2012 DTC became DT
+@STRING{IEEE_M_DT = "{IEEE} Design \&\ Test"}
+@STRING{IEEE_M_DTC = "{IEEE} Design and Test of Computers"}
+@STRING{IEEE_O_DSO = "{IEEE} Distributed Systems Online"}
+@STRING{IEEE_M_EI = "{IEEE} Electrical Insulation Magazine"}
+@STRING{IEEE_M_ETF = "{IEEE} Electrification Magazine"}
+@STRING{IEEE_M_EMC = "{IEEE} Electromagnetic Compatibility Magazine"}
+@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnology Review"}
+@STRING{IEEE_M_EMR = "{IEEE} Engineering Management Review"}
+@STRING{IEEE_M_EMB = "{IEEE} Engineering in Medicine and Biology Magazine"}
+@STRING{IEEE_M_EXP = "{IEEE} Expert"}
+@STRING{IEEE_M_GRS = "{IEEE} Geoscience and Remote Sensing Magazine"}
+@STRING{IEEE_M_IA = "{IEEE} Industry Applications Magazine"}
+@STRING{IEEE_M_IE = "{IEEE} Industrial Electronics Magazine"}
+@STRING{IEEE_M_IM = "{IEEE} Instrumentation and Measurement Magazine"}
+@STRING{IEEE_M_IS = "{IEEE} Intelligent Systems"}
+@STRING{IEEE_M_ITS = "{IEEE} Intelligent Transportation Systems Magazine"}
+@STRING{IEEE_M_IC = "{IEEE} Internet Computing"}
+@STRING{IEEE_M_ITP = "{IEEE} {IT} Professional"}
+@STRING{IEEE_M_MICRO = "{IEEE} Micro"}
+@STRING{IEEE_M_MW = "{IEEE} Microwave Magazine"}
+@STRING{IEEE_M_MM = "{IEEE} Multimedia"}
+@STRING{IEEE_M_NANO = "{IEEE} Nanotechnology Magazine"}
+@STRING{IEEE_M_NET = "{IEEE} Network"}
+@STRING{IEEE_M_PCOM = "{IEEE} Personal Communications Magazine"}
+@STRING{IEEE_M_PVC = "{IEEE} Pervasive Computing"}
+@STRING{IEEE_M_POT = "{IEEE} Potentials"}
+@STRING{IEEE_M_PEL = "{IEEE} Power Electronics Magazine"}
+CAP and PER merged to form PE in 2003
+@STRING{IEEE_M_PE = "{IEEE} Power and Energy Magazine"}
+@STRING{IEEE_M_PER = "{IEEE} Power Engineering Review"}
+@STRING{IEEE_M_PULSE = "{IEEE} Pulse"}
+@STRING{IEEE_M_RA = "{IEEE} Robotics and Automation Magazine"}
+@STRING{IEEE_M_SAP = "{IEEE} Security and Privacy"}
+@STRING{IEEE_M_SP = "{IEEE} Signal Processing Magazine"}
+@STRING{IEEE_M_S = "{IEEE} Software"}
+@STRING{IEEE_M_SSC = "{IEEE} Solid-State Circuits Magazine"}
+@STRING{IEEE_M_SPECT = "{IEEE} Spectrum"}
+@STRING{IEEE_M_SMC = "{IEEE} Systems, Man, and Cybernetics Magazine"}
+@STRING{IEEE_M_TS = "{IEEE} Technology and Society Magazine"}
+@STRING{IEEE_M_VT = "{IEEE} Vehicular Technology Magazine"}
+@STRING{IEEE_M_WC = "{IEEE} Wireless Communications"}
+@STRING{IEEE_M_TODAY = "Today's Engineer"}
+
+
+
+
+
+--
+EOF
diff --git a/macros/latex/contrib/IEEEtran/bibtex/IEEEtran.bst b/macros/latex/contrib/IEEEtran/bibtex/IEEEtran.bst
new file mode 100644
index 0000000000..f9c03d79f4
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/IEEEtran.bst
@@ -0,0 +1,2409 @@
+%%
+%% IEEEtran.bst
+%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted)
+%% Version 1.14 (2015/08/26)
+%%
+%% Copyright (c) 2003-2015 Michael Shell
+%%
+%% Original starting code base and algorithms obtained from the output of
+%% Patrick W. Daly's makebst package as well as from prior versions of
+%% IEEE BibTeX styles:
+%%
+%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
+%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and/or
+%% http://www.ieee.org/
+%%
+%% For use with BibTeX version 0.99a or later
+%%
+%% This is a numerical citation style.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are the defaults for the user adjustable controls. The values used
+% here can be overridden by the user via IEEEtranBSTCTL entry type.
+
+% NOTE: The recommended LaTeX command to invoke a control entry type is:
+%
+%\makeatletter
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
+% \edef\@citeb{\expandafter\@firstofone\@citeb}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+% \@esphack}
+%\makeatother
+%
+% It is called at the start of the document, before the first \cite, like:
+% \bstctlcite{IEEEexample:BSTcontrol}
+%
+% IEEEtran.cls V1.6 and later does provide this command.
+
+
+
+% #0 turns off the display of the number for articles.
+% #1 enables
+FUNCTION {default.is.use.number.for.article} { #1 }
+
+
+% #0 turns off the display of the paper and type fields in @inproceedings.
+% #1 enables
+FUNCTION {default.is.use.paper} { #1 }
+
+
+% #0 turns off the display of urls
+% #1 enables
+FUNCTION {default.is.use.url} { #1 }
+
+
+% #0 turns off the forced use of "et al."
+% #1 enables
+FUNCTION {default.is.forced.et.al} { #0 }
+
+
+% The maximum number of names that can be present beyond which an "et al."
+% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
+% is not greater than this value!
+% Note: There are many instances of references in IEEE journals which have
+% a very large number of authors as well as instances in which "et al." is
+% used profusely.
+FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
+
+
+% The number of names that will be shown with a forced "et al.".
+% Must be less than or equal to max.num.names.before.forced.et.al
+FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
+
+
+% #0 turns off the alternate interword spacing for entries with URLs.
+% #1 enables
+FUNCTION {default.is.use.alt.interword.spacing} { #1 }
+
+
+% If alternate interword spacing for entries with URLs is enabled, this is
+% the interword spacing stretch factor that will be used. For example, the
+% default "4" here means that the interword spacing in entries with URLs can
+% stretch to four times normal. Does not have to be an integer. Note that
+% the value specified here can be overridden by the user in their LaTeX
+% code via a command such as:
+% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
+% that via the IEEEtranBSTCTL entry type.
+FUNCTION {default.ALTinterwordstretchfactor} { "4" }
+
+
+% #0 turns off the "dashification" of repeated (i.e., identical to those
+% of the previous entry) names. The IEEE normally does this.
+% #1 enables
+FUNCTION {default.is.dash.repeated.names} { #1 }
+
+
+% The default name format control string.
+FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
+
+
+% The default LaTeX font command for the names.
+FUNCTION {default.name.latex.cmd}{ "" }
+
+
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
+% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
+
+% #0 turns off the terminal startup banner/completed message so as to
+% operate more quietly.
+% #1 enables
+FUNCTION {is.print.banners.to.terminal} { #1 }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FILE VERSION AND BANNER %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION{bst.file.version} { "1.14" }
+FUNCTION{bst.file.date} { "2015/08/26" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
+
+FUNCTION {banner.message}
+{ is.print.banners.to.terminal
+ { "-- IEEEtran.bst version" " " * bst.file.version *
+ " (" * bst.file.date * ") " * "by Michael Shell." *
+ top$
+ "-- " bst.file.website *
+ top$
+ "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {completed.message}
+{ is.print.banners.to.terminal
+ { ""
+ top$
+ "Done."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING CONSTANTS %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {bbl.and}{ "and" }
+FUNCTION {bbl.etal}{ "et~al." }
+FUNCTION {bbl.editors}{ "eds." }
+FUNCTION {bbl.editor}{ "ed." }
+FUNCTION {bbl.edition}{ "ed." }
+FUNCTION {bbl.volume}{ "vol." }
+FUNCTION {bbl.of}{ "of" }
+FUNCTION {bbl.number}{ "no." }
+FUNCTION {bbl.in}{ "in" }
+FUNCTION {bbl.pages}{ "pp." }
+FUNCTION {bbl.page}{ "p." }
+FUNCTION {bbl.chapter}{ "ch." }
+FUNCTION {bbl.paper}{ "paper" }
+FUNCTION {bbl.part}{ "pt." }
+FUNCTION {bbl.patent}{ "Patent" }
+FUNCTION {bbl.patentUS}{ "U.S." }
+FUNCTION {bbl.revision}{ "Rev." }
+FUNCTION {bbl.series}{ "ser." }
+FUNCTION {bbl.standard}{ "Std." }
+FUNCTION {bbl.techrep}{ "Tech. Rep." }
+FUNCTION {bbl.mthesis}{ "Master's thesis" }
+FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
+FUNCTION {bbl.st}{ "st" }
+FUNCTION {bbl.nd}{ "nd" }
+FUNCTION {bbl.rd}{ "rd" }
+FUNCTION {bbl.th}{ "th" }
+
+
+% This is the LaTeX spacer that is used when a larger than normal space
+% is called for (such as just before the address:publisher).
+FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
+
+% The LaTeX code for dashes that are used to represent repeated names.
+% Note: Some older IEEE journals used something like
+% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
+% the baseline. However, the IEEE now uses a thinner, above baseline,
+% six dash long sequence.
+FUNCTION {repeated.name.dashes} { "------" }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PREDEFINED STRING MACROS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sep."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% ENTRY FIELDS %%
+%%%%%%%%%%%%%%%%%%
+
+ENTRY
+ { address
+ assignee
+ author
+ booktitle
+ chapter
+ day
+ dayfiled
+ edition
+ editor
+ howpublished
+ institution
+ intype
+ journal
+ key
+ language
+ month
+ monthfiled
+ nationality
+ note
+ number
+ organization
+ pages
+ paper
+ publisher
+ school
+ series
+ revision
+ title
+ type
+ url
+ volume
+ year
+ yearfiled
+ CTLuse_article_number
+ CTLuse_paper
+ CTLuse_url
+ CTLuse_forced_etal
+ CTLmax_names_forced_etal
+ CTLnames_show_etal
+ CTLuse_alt_spacing
+ CTLalt_stretch_factor
+ CTLdash_repeated_names
+ CTLname_format_string
+ CTLname_latex_cmd
+ CTLname_url_prefix
+ }
+ {}
+ { label }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% INTEGER VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+INTEGERS { prev.status.punct this.status.punct punct.std
+ punct.no punct.comma punct.period
+ prev.status.space this.status.space space.std
+ space.no space.normal space.large
+ prev.status.quote this.status.quote quote.std
+ quote.no quote.close
+ prev.status.nline this.status.nline nline.std
+ nline.no nline.newblock
+ status.cap cap.std
+ cap.no cap.yes}
+
+INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
+
+INTEGERS { is.use.number.for.article
+ is.use.paper
+ is.use.url
+ is.forced.et.al
+ max.num.names.before.forced.et.al
+ num.names.shown.with.forced.et.al
+ is.use.alt.interword.spacing
+ is.dash.repeated.names}
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+STRINGS { bibinfo
+ longest.label
+ oldname
+ s
+ t
+ ALTinterwordstretchfactor
+ name.format.string
+ name.latex.cmd
+ name.url.prefix}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOW LEVEL FUNCTIONS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.controls}
+{ default.is.use.number.for.article 'is.use.number.for.article :=
+ default.is.use.paper 'is.use.paper :=
+ default.is.use.url 'is.use.url :=
+ default.is.forced.et.al 'is.forced.et.al :=
+ default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
+ default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
+ default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
+ default.is.dash.repeated.names 'is.dash.repeated.names :=
+ default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
+ default.name.format.string 'name.format.string :=
+ default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
+}
+
+
+% This IEEEtran.bst features a very powerful and flexible mechanism for
+% controlling the capitalization, punctuation, spacing, quotation, and
+% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
+% or use the newline/newblock feature, but it has been implemented for
+% possible future use.) The output states of IEEEtran.bst consist of
+% multiple independent attributes and, as such, can be thought of as being
+% vectors, rather than the simple scalar values ("before.all",
+% "mid.sentence", etc.) used in most other .bst files.
+%
+% The more flexible and complex design used here was motivated in part by
+% the IEEE's rather unusual bibliography style. For example, the IEEE ends the
+% previous field item with a period and large space prior to the publisher
+% address; the @electronic entry types use periods as inter-item punctuation
+% rather than the commas used by the other entry types; and URLs are never
+% followed by periods even though they are the last item in the entry.
+% Although it is possible to accommodate these features with the conventional
+% output state system, the seemingly endless exceptions make for convoluted,
+% unreliable and difficult to maintain code.
+%
+% IEEEtran.bst's output state system can be easily understood via a simple
+% illustration of two most recently formatted entry fields (on the stack):
+%
+% CURRENT_ITEM
+% "PREVIOUS_ITEM
+%
+% which, in this example, is to eventually appear in the bibliography as:
+%
+% "PREVIOUS_ITEM," CURRENT_ITEM
+%
+% It is the job of the output routine to take the previous item off of the
+% stack (while leaving the current item at the top of the stack), apply its
+% trailing punctuation (including closing quote marks) and spacing, and then
+% to write the result to BibTeX's output buffer:
+%
+% "PREVIOUS_ITEM,"
+%
+% Punctuation (and spacing) between items is often determined by both of the
+% items rather than just the first one. The presence of quotation marks
+% further complicates the situation because, in standard English, trailing
+% punctuation marks are supposed to be contained within the quotes.
+%
+% IEEEtran.bst maintains two output state (aka "status") vectors which
+% correspond to the previous and current (aka "this") items. Each vector
+% consists of several independent attributes which track punctuation,
+% spacing, quotation, and newlines. Capitalization status is handled by a
+% separate scalar because the format routines, not the output routine,
+% handle capitalization and, therefore, there is no need to maintain the
+% capitalization attribute for both the "previous" and "this" items.
+%
+% When a format routine adds a new item, it copies the current output status
+% vector to the previous output status vector and (usually) resets the
+% current (this) output status vector to a "standard status" vector. Using a
+% "standard status" vector in this way allows us to redefine what we mean by
+% "standard status" at the start of each entry handler and reuse the same
+% format routines under the various inter-item separation schemes. For
+% example, the standard status vector for the @book entry type may use
+% commas for item separators, while the @electronic type may use periods,
+% yet both entry handlers exploit many of the exact same format routines.
+%
+% Because format routines have write access to the output status vector of
+% the previous item, they can override the punctuation choices of the
+% previous format routine! Therefore, it becomes trivial to implement rules
+% such as "Always use a period and a large space before the publisher." By
+% pushing the generation of the closing quote mark to the output routine, we
+% avoid all the problems caused by having to close a quote before having all
+% the information required to determine what the punctuation should be.
+%
+% The IEEEtran.bst output state system can easily be expanded if needed.
+% For instance, it is easy to add a "space.tie" attribute value if the
+% bibliography rules mandate that two items have to be joined with an
+% unbreakable space.
+
+FUNCTION {initialize.status.constants}
+{ #0 'punct.no :=
+ #1 'punct.comma :=
+ #2 'punct.period :=
+ #0 'space.no :=
+ #1 'space.normal :=
+ #2 'space.large :=
+ #0 'quote.no :=
+ #1 'quote.close :=
+ #0 'cap.no :=
+ #1 'cap.yes :=
+ #0 'nline.no :=
+ #1 'nline.newblock :=
+}
+
+FUNCTION {std.status.using.comma}
+{ punct.comma 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.no 'cap.std :=
+}
+
+FUNCTION {std.status.using.period}
+{ punct.period 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.yes 'cap.std :=
+}
+
+FUNCTION {initialize.prev.this.status}
+{ punct.no 'prev.status.punct :=
+ space.no 'prev.status.space :=
+ quote.no 'prev.status.quote :=
+ nline.no 'prev.status.nline :=
+ punct.no 'this.status.punct :=
+ space.no 'this.status.space :=
+ quote.no 'this.status.quote :=
+ nline.no 'this.status.nline :=
+ cap.yes 'status.cap :=
+}
+
+FUNCTION {this.status.std}
+{ punct.std 'this.status.punct :=
+ space.std 'this.status.space :=
+ quote.std 'this.status.quote :=
+ nline.std 'this.status.nline :=
+}
+
+FUNCTION {cap.status.std}{ cap.std 'status.cap := }
+
+FUNCTION {this.to.prev.status}
+{ this.status.punct 'prev.status.punct :=
+ this.status.space 'prev.status.space :=
+ this.status.quote 'prev.status.quote :=
+ this.status.nline 'prev.status.nline :=
+}
+
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ { skip$ }
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ { skip$ }
+ if$
+}
+
+
+% convert the strings "yes" or "no" to #1 or #0 respectively
+FUNCTION {yes.no.to.int}
+{ "l" change.case$ duplicate$
+ "yes" =
+ { pop$ #1 }
+ { duplicate$ "no" =
+ { pop$ #0 }
+ { "unknown boolean " quote$ * swap$ * quote$ *
+ " in " * cite$ * warning$
+ #0
+ }
+ if$
+ }
+ if$
+}
+
+
+% pushes true if the single char string on the stack is in the
+% range of "0" to "9"
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+% multiplies the integer on the stack by a factor of 10
+FUNCTION {bump.int.mag}
+{ #0 'multiresult :=
+ { duplicate$ #0 > }
+ { #1 -
+ multiresult #10 +
+ 'multiresult :=
+ }
+ while$
+pop$
+multiresult
+}
+
+% converts a single character string on the stack to an integer
+FUNCTION {char.to.integer}
+{ duplicate$
+ is.num
+ { chr.to.int$ "0" chr.to.int$ - }
+ {"noninteger character " quote$ * swap$ * quote$ *
+ " in integer field of " * cite$ * warning$
+ #0
+ }
+ if$
+}
+
+% converts a string on the stack to an integer
+FUNCTION {string.to.integer}
+{ duplicate$ text.length$ 'namesleft :=
+ #1 'nameptr :=
+ #0 'numnames :=
+ { nameptr namesleft > not }
+ { duplicate$ nameptr #1 substring$
+ char.to.integer numnames bump.int.mag +
+ 'numnames :=
+ nameptr #1 +
+ 'nameptr :=
+ }
+ while$
+pop$
+numnames
+}
+
+
+
+
+% The output routines write out the *next* to the top (previous) item on the
+% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
+% the output status for the top two items on the stack, these output
+% routines have to consider the previous output status (which corresponds to
+% the item that is being output). Full independent control of punctuation,
+% closing quote marks, spacing, and newblock is provided.
+%
+% "output.nonnull" does not check for the presence of a previous empty
+% item.
+%
+% "output" does check for the presence of a previous empty item and will
+% remove an empty item rather than outputing it.
+%
+% "output.warn" is like "output", but will issue a warning if it detects
+% an empty item.
+
+FUNCTION {output.nonnull}
+{ swap$
+ prev.status.punct punct.comma =
+ { "," * }
+ { skip$ }
+ if$
+ prev.status.punct punct.period =
+ { add.period$ }
+ { skip$ }
+ if$
+ prev.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+ prev.status.space space.normal =
+ { " " * }
+ { skip$ }
+ if$
+ prev.status.space space.large =
+ { large.space * }
+ { skip$ }
+ if$
+ write$
+ prev.status.nline nline.newblock =
+ { newline$ "\newblock " write$ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.warn}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+% "fin.entry" is the output routine that handles the last item of the entry
+% (which will be on the top of the stack when "fin.entry" is called).
+
+FUNCTION {fin.entry}
+{ this.status.punct punct.no =
+ { skip$ }
+ { add.period$ }
+ if$
+ this.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+write$
+newline$
+}
+
+
+FUNCTION {is.last.char.not.punct}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {is.multiple.pages}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {do.name.latex.cmd}
+{ name.latex.cmd
+ empty$
+ { skip$ }
+ { name.latex.cmd "{" * swap$ * "}" * }
+ if$
+}
+
+% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
+% invokes the TeX hyphenation patterns without the need of the Babel
+% package. Babel does a lot more than switch hyphenation patterns and
+% its loading can cause unintended effects in many class files (such as
+% IEEEtran.cls).
+FUNCTION {select.language}
+{ duplicate$ empty$ 'pop$
+ { language empty$ 'skip$
+ { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {space.word}{ " " swap$ * " " * }
+
+
+% Field Conditioners, Converters, Checkers and External Interfaces
+
+FUNCTION {empty.field.to.null.string}
+{ duplicate$ empty$
+ { pop$ "" }
+ { skip$ }
+ if$
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ { pop$ }
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {empty.entry.warn}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$ url empty$
+ and and and and and and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+
+% The bibinfo system provides a way for the electronic parsing/acquisition
+% of a bibliography's contents as is done by ReVTeX. For example, a field
+% could be entered into the bibliography as:
+% \bibinfo{volume}{2}
+% Only the "2" would show up in the document, but the LaTeX \bibinfo command
+% could do additional things with the information. IEEEtran.bst does provide
+% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
+% currently not used as the bogus bibinfo functions defined here output the
+% entry values directly without the \bibinfo wrapper. The bibinfo functions
+% themselves (and the calls to them) are retained for possible future use.
+%
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+
+FUNCTION {bibinfo.check}
+{ swap$ duplicate$ missing$
+ { pop$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ pop$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {bibinfo.warn}
+{ swap$ duplicate$ missing$
+ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ "empty " swap$ * " in " * cite$ * warning$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+
+% The IEEE separates large numbers with more than 4 digits into groups of
+% three. The IEEE uses a small space to separate these number groups.
+% Typical applications include patent and page numbers.
+
+% number of consecutive digits required to trigger the group separation.
+FUNCTION {large.number.trigger}{ #5 }
+
+% For numbers longer than the trigger, this is the blocksize of the groups.
+% The blocksize must be less than the trigger threshold, and 2 * blocksize
+% must be greater than the trigger threshold (can't do more than one
+% separation on the initial trigger).
+FUNCTION {large.number.blocksize}{ #3 }
+
+% What is actually inserted between the number groups.
+FUNCTION {large.number.separator}{ "\," }
+
+% So as to save on integer variables by reusing existing ones, numnames
+% holds the current number of consecutive digits read and nameptr holds
+% the number that will trigger an inserted space.
+FUNCTION {large.number.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { numnames #1 + 'numnames := }
+ { #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames nameptr =
+ { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
+ nameptr large.number.blocksize - #1 + global.max$ substring$
+ large.number.separator swap$ * *
+ nameptr large.number.blocksize - 'numnames :=
+ large.number.blocksize #1 + 'nameptr :=
+ }
+ { skip$ }
+ if$
+ }
+ while$
+}
+
+% Converts all single dashes "-" to double dashes "--".
+FUNCTION {n.dashify}
+{ large.number.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+
+% This function detects entries with names that are identical to that of
+% the previous entry and replaces the repeated names with dashes (if the
+% "is.dash.repeated.names" user control is nonzero).
+FUNCTION {name.or.dash}
+{ 's :=
+ oldname empty$
+ { s 'oldname := s }
+ { s oldname =
+ { is.dash.repeated.names
+ { repeated.name.dashes }
+ { s 'oldname := s }
+ if$
+ }
+ { s 'oldname := s }
+ if$
+ }
+ if$
+}
+
+% Converts the number string on the top of the stack to
+% "numerical ordinal form" (e.g., "7" to "7th"). There is
+% no artificial limit to the upper bound of the numbers as the
+% two least significant digits determine the ordinal form.
+FUNCTION {num.to.ordinal}
+{ duplicate$ #-2 #1 substring$ "1" =
+ { bbl.th * }
+ { duplicate$ #-1 #1 substring$ "1" =
+ { bbl.st * }
+ { duplicate$ #-1 #1 substring$ "2" =
+ { bbl.nd * }
+ { duplicate$ #-1 #1 substring$ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% If the string on the top of the stack begins with a number,
+% (e.g., 11th) then replace the string with the leading number
+% it contains. Otherwise retain the string as-is. s holds the
+% extracted number, t holds the part of the string that remains
+% to be scanned.
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+% Converts the word number string on the top of the stack to
+% Arabic string form. Will be successful up to "tenth".
+FUNCTION {word.to.num}
+{ duplicate$ "l" change.case$ 's :=
+ s "first" =
+ { pop$ "1" }
+ { skip$ }
+ if$
+ s "second" =
+ { pop$ "2" }
+ { skip$ }
+ if$
+ s "third" =
+ { pop$ "3" }
+ { skip$ }
+ if$
+ s "fourth" =
+ { pop$ "4" }
+ { skip$ }
+ if$
+ s "fifth" =
+ { pop$ "5" }
+ { skip$ }
+ if$
+ s "sixth" =
+ { pop$ "6" }
+ { skip$ }
+ if$
+ s "seventh" =
+ { pop$ "7" }
+ { skip$ }
+ if$
+ s "eighth" =
+ { pop$ "8" }
+ { skip$ }
+ if$
+ s "ninth" =
+ { pop$ "9" }
+ { skip$ }
+ if$
+ s "tenth" =
+ { pop$ "10" }
+ { skip$ }
+ if$
+}
+
+
+% Converts the string on the top of the stack to numerical
+% ordinal (e.g., "11th") form.
+FUNCTION {convert.edition}
+{ duplicate$ empty$ 'skip$
+ { duplicate$ #1 #1 substring$ is.num
+ { extract.num
+ num.to.ordinal
+ }
+ { word.to.num
+ duplicate$ #1 #1 substring$ is.num
+ { num.to.ordinal }
+ { "edition ordinal word " quote$ * edition * quote$ *
+ " may be too high (or improper) for conversion" * " in " * cite$ * warning$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LATEX BIBLIOGRAPHY CODE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {start.entry}
+{ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ initialize.prev.this.status
+}
+
+% Here we write out all the LaTeX code that we will need. The most involved
+% code sequences are those that control the alternate interword spacing and
+% foreign language hyphenation patterns. The heavy use of \providecommand
+% gives users a way to override the defaults. Special thanks to Javier Bezos,
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
+% the other gurus on comp.text.tex for their help and advice on the topic of
+% \selectlanguage, Babel and BibTeX.
+FUNCTION {begin.bib}
+{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ preamble$ empty$ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" *
+ write$ newline$
+ "\providecommand{\url}[1]{#1}"
+ write$ newline$
+ "\csname url@samestyle\endcsname"
+ write$ newline$
+ "\providecommand{\newblock}{\relax}"
+ write$ newline$
+ "\providecommand{\bibinfo}[2]{#2}"
+ write$ newline$
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
+ write$ newline$
+ "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
+ write$ newline$
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
+ write$ newline$
+ "\expandafter\ifx\csname l@#1\endcsname\relax"
+ write$ newline$
+ "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%"
+ write$ newline$
+ "\typeout{** loaded for the language `#1'. Using the pattern for}%"
+ write$ newline$
+ "\typeout{** the default language instead.}%"
+ write$ newline$
+ "\else"
+ write$ newline$
+ "\language=\csname l@#1\endcsname"
+ write$ newline$
+ "\fi"
+ write$ newline$
+ "#2}}"
+ write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$ "\end{thebibliography}" write$ newline$ }
+
+FUNCTION {if.url.alt.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {if.url.std.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% LONGEST LABEL PASS %%
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #1 'number.label :=
+ #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ { skip$ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%% FORMAT HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%%
+
+%% Lower Level Formats (used by higher level formats)
+
+FUNCTION {format.address.org.or.pub.date}
+{ 't :=
+ ""
+ year empty$
+ { "empty year in " cite$ * warning$ }
+ { skip$ }
+ if$
+ address empty$ t empty$ and
+ year empty$ and month empty$ and
+ { skip$ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ address "address" bibinfo.check *
+ t empty$
+ { skip$ }
+ { punct.period 'prev.status.punct :=
+ space.large 'prev.status.space :=
+ address empty$
+ { skip$ }
+ { ": " * }
+ if$
+ t *
+ }
+ if$
+ year empty$ month empty$ and
+ { skip$ }
+ { t empty$ address empty$ and
+ { skip$ }
+ { ", " * }
+ if$
+ month empty$
+ { year empty$
+ { skip$ }
+ { year "year" bibinfo.check * }
+ if$
+ }
+ { month "month" bibinfo.check *
+ year empty$
+ { skip$ }
+ { " " * year "year" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ this.to.prev.status
+ this.status.std
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ name.format.string
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ { nameptr num.names.shown.with.forced.et.al #1 + =
+ numnames max.num.names.before.forced.et.al >
+ is.forced.et.al and and
+ { "others" 't :=
+ #1 'namesleft :=
+ }
+ { skip$ }
+ if$
+ namesleft #1 >
+ { ", " * t do.name.latex.cmd * }
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
+ bbl.and
+ space.word * t do.name.latex.cmd *
+ }
+ if$
+ }
+ if$
+ }
+ { t do.name.latex.cmd }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ cap.status.std
+ } if$
+}
+
+
+
+
+%% Higher Level Formats
+
+%% addresses/locations
+
+FUNCTION {format.address}
+{ address duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% author/editor names
+
+FUNCTION {format.authors}{ author "author" format.names }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ { ", " *
+ get.bbl.editor
+ capitalize
+ *
+ }
+ if$
+}
+
+
+
+%% date
+
+FUNCTION {format.date}
+{
+ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "there's a month but no year in " cite$ * warning$ }
+ if$
+ *
+ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ swap$ 'skip$
+ {
+ swap$
+ " " * swap$
+ }
+ if$
+ *
+ }
+ if$
+}
+
+FUNCTION {format.date.electronic}
+{ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$
+ { pop$ }
+ { "there's a month but no year in " cite$ * warning$
+ pop$ ")" * "(" swap$ *
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+ }
+ { swap$
+ { swap$ pop$ ")" * "(" swap$ * }
+ { "(" swap$ * ", " * swap$ * ")" * }
+ if$
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% edition/title
+
+% Note: The IEEE considers the edition to be closely associated with
+% the title of a book. So, in IEEEtran.bst the edition is normally handled
+% within the formatting of the title. The format.edition function is
+% retained here for possible future use.
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$ change.case$
+ "edition" bibinfo.check
+ "~" * bbl.edition *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of a conference proceedings.
+% Here we use the "intype" field to provide the user a way to
+% override the word "in" (e.g., with things like "presented at")
+% Use of intype stops the emphasis of the booktitle to indicate that
+% we no longer mean the written conference proceedings, but the
+% conference itself.
+FUNCTION {format.in.booktitle}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ intype missing$
+ { emphasize
+ bbl.in " " *
+ }
+ { intype " " * }
+ if$
+ swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of collection.
+% Here the "intype" field is not supported, but "edition" is.
+FUNCTION {format.in.booktitle.edition}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ "l" change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ bbl.in " " * swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { quote.close 'this.status.quote :=
+ is.last.char.not.punct
+ { punct.std 'this.status.punct := }
+ { punct.no 'this.status.punct := }
+ if$
+ select.language
+ "``" swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title.electronic}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$
+ { skip$ }
+ { select.language }
+ if$
+}
+
+FUNCTION {format.book.title.edition}
+{ title "title" bibinfo.check
+ duplicate$ empty$
+ { "empty title in " cite$ * warning$ }
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$
+ change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.book.title}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% journal
+
+FUNCTION {format.journal}
+{ journal duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% how published
+
+FUNCTION {format.howpublished}
+{ howpublished duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% institutions/organization/publishers/school
+
+FUNCTION {format.institution}
+{ institution duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.organization}
+{ organization duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.address.publisher.date}
+{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
+
+FUNCTION {format.address.publisher.date.nowarn}
+{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.address.organization.date}
+{ organization "organization" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.school}
+{ school duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% volume/number/series/chapter/pages
+
+FUNCTION {format.volume}
+{ volume empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ bbl.volume
+ status.cap
+ { capitalize }
+ { skip$ }
+ if$
+ swap$ tie.or.space.prefix
+ "volume" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number}
+{ number empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ status.cap
+ { bbl.number capitalize }
+ { bbl.number }
+ if$
+ swap$ tie.or.space.prefix
+ "number" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number.if.use.for.article}
+{ is.use.number.for.article
+ { format.number }
+ { "" }
+ if$
+}
+
+% The IEEE does not seem to tie the series so closely with the volume
+% and number as is done in other bibliography styles. Instead the
+% series is treated somewhat like an extension of the title.
+FUNCTION {format.series}
+{ series empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.series " " *
+ series "series" bibinfo.check *
+ cap.status.std
+ }
+ if$
+}
+
+
+FUNCTION {format.chapter}
+{ chapter empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+% The intended use of format.paper is for paper numbers of inproceedings.
+% The paper type can be overridden via the type field.
+% We allow the type to be displayed even if the paper number is absent
+% for things like "postdeadline paper"
+FUNCTION {format.paper}
+{ is.use.paper
+ { paper empty$
+ { type empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type "type" bibinfo.check
+ cap.status.std
+ }
+ if$
+ }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.paper }
+ { type "type" bibinfo.check }
+ if$
+ " " * paper
+ "paper" bibinfo.check
+ *
+ cap.status.std
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ duplicate$ is.multiple.pages
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% technical report number
+
+FUNCTION {format.tech.report.number}
+{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
+ type duplicate$ empty$
+ { pop$
+ bbl.techrep
+ }
+ { skip$ }
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+
+
+
+%% note
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ punct.period 'this.status.punct :=
+ note #1 #1 substring$
+ duplicate$ "{" =
+ { skip$ }
+ { status.cap
+ { "u" }
+ { "l" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% patent
+
+FUNCTION {format.patent.date}
+{ this.to.prev.status
+ this.status.std
+ year empty$
+ { monthfiled duplicate$ empty$
+ { "monthfiled" bibinfo.check pop$ "" }
+ { "monthfiled" bibinfo.check }
+ if$
+ dayfiled duplicate$ empty$
+ { "dayfiled" bibinfo.check pop$ "" * }
+ { "dayfiled" bibinfo.check
+ monthfiled empty$
+ { "dayfiled without a monthfiled in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ yearfiled empty$
+ { "no year or yearfiled in " cite$ * warning$ }
+ { yearfiled "yearfiled" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ }
+ { month duplicate$ empty$
+ { "month" bibinfo.check pop$ "" }
+ { "month" bibinfo.check }
+ if$
+ day duplicate$ empty$
+ { "day" bibinfo.check pop$ "" * }
+ { "day" bibinfo.check
+ month empty$
+ { "day without a month in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ year "year" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.patent.nationality.type.number}
+{ this.to.prev.status
+ this.status.std
+ nationality duplicate$ empty$
+ { "nationality" bibinfo.warn pop$ "" }
+ { "nationality" bibinfo.check
+ duplicate$ "l" change.case$ "united states" =
+ { pop$ bbl.patentUS }
+ { skip$ }
+ if$
+ " " *
+ }
+ if$
+ type empty$
+ { bbl.patent "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.warn pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+
+
+%% standard
+
+FUNCTION {format.organization.institution.standard.type.number}
+{ this.to.prev.status
+ this.status.std
+ organization duplicate$ empty$
+ { pop$
+ institution duplicate$ empty$
+ { "institution" bibinfo.warn }
+ { "institution" bibinfo.warn " " * }
+ if$
+ }
+ { "organization" bibinfo.warn " " * }
+ if$
+ type empty$
+ { bbl.standard "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.check pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.revision}
+{ revision empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.revision
+ revision tie.or.space.prefix
+ "revision" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+%% thesis
+
+FUNCTION {format.master.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.mthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+FUNCTION {format.phd.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.phdthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+
+
+%% URL
+
+FUNCTION {format.url}
+{ is.use.url
+ { url empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ cap.yes 'status.cap :=
+ name.url.prefix " " *
+ "\url{" * url * "}" *
+ punct.no 'this.status.punct :=
+ punct.period 'prev.status.punct :=
+ space.normal 'this.status.space :=
+ space.normal 'prev.status.space :=
+ quote.no 'this.status.quote :=
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% ENTRY HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%
+
+
+% Note: In many journals, the IEEE (or the authors) tend not to show the number
+% for articles, so the display of the number is controlled here by the
+% switch "is.use.number.for.article"
+FUNCTION {article}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.journal "journal" bibinfo.check "journal" output.warn
+ format.volume output
+ format.number.if.use.for.article output
+ format.pages output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {book}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ author empty$
+ { skip$ }
+ { format.editors output }
+ if$
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {booklet}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {electronic}
+{ std.status.using.period
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.date.electronic output
+ format.article.title.electronic output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inbook}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {incollection}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle.edition "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.address.publisher.date.nowarn output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inproceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.paper output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {manual}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title.edition "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {mastersthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.master.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {misc}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.pages output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {patent}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.patent.nationality.type.number output
+ format.patent.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {periodical}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ format.organization "organization" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {phdthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.phd.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {proceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {standard}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization.institution.standard.type.number output
+ format.revision output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {techreport}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.institution "institution" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.tech.report.number output.nonnull
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {unpublished}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.date output
+ format.note "note" output.warn
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+
+% The special entry type which provides the user interface to the
+% BST controls
+FUNCTION {IEEEtranBSTCTL}
+{ is.print.banners.to.terminal
+ { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
+ top$
+ }
+ { skip$ }
+ if$
+ CTLuse_article_number
+ empty$
+ { skip$ }
+ { CTLuse_article_number
+ yes.no.to.int
+ 'is.use.number.for.article :=
+ }
+ if$
+ CTLuse_paper
+ empty$
+ { skip$ }
+ { CTLuse_paper
+ yes.no.to.int
+ 'is.use.paper :=
+ }
+ if$
+ CTLuse_url
+ empty$
+ { skip$ }
+ { CTLuse_url
+ yes.no.to.int
+ 'is.use.url :=
+ }
+ if$
+ CTLuse_forced_etal
+ empty$
+ { skip$ }
+ { CTLuse_forced_etal
+ yes.no.to.int
+ 'is.forced.et.al :=
+ }
+ if$
+ CTLmax_names_forced_etal
+ empty$
+ { skip$ }
+ { CTLmax_names_forced_etal
+ string.to.integer
+ 'max.num.names.before.forced.et.al :=
+ }
+ if$
+ CTLnames_show_etal
+ empty$
+ { skip$ }
+ { CTLnames_show_etal
+ string.to.integer
+ 'num.names.shown.with.forced.et.al :=
+ }
+ if$
+ CTLuse_alt_spacing
+ empty$
+ { skip$ }
+ { CTLuse_alt_spacing
+ yes.no.to.int
+ 'is.use.alt.interword.spacing :=
+ }
+ if$
+ CTLalt_stretch_factor
+ empty$
+ { skip$ }
+ { CTLalt_stretch_factor
+ 'ALTinterwordstretchfactor :=
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ }
+ if$
+ CTLdash_repeated_names
+ empty$
+ { skip$ }
+ { CTLdash_repeated_names
+ yes.no.to.int
+ 'is.dash.repeated.names :=
+ }
+ if$
+ CTLname_format_string
+ empty$
+ { skip$ }
+ { CTLname_format_string
+ 'name.format.string :=
+ }
+ if$
+ CTLname_latex_cmd
+ empty$
+ { skip$ }
+ { CTLname_latex_cmd
+ 'name.latex.cmd :=
+ }
+ if$
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
+ num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
+ { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
+ max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
+ }
+ { skip$ }
+ if$
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+%% ENTRY ALIASES %%
+%%%%%%%%%%%%%%%%%%%
+FUNCTION {conference}{inproceedings}
+FUNCTION {online}{electronic}
+FUNCTION {internet}{electronic}
+FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
+FUNCTION {default.type}{misc}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% MAIN PROGRAM %%
+%%%%%%%%%%%%%%%%%%
+
+READ
+
+EXECUTE {initialize.controls}
+EXECUTE {initialize.status.constants}
+EXECUTE {banner.message}
+
+EXECUTE {initialize.longest.label}
+ITERATE {longest.label.pass}
+
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
+EXECUTE{completed.message}
+
+
+%% That's all folks, mds.
diff --git a/macros/latex/contrib/IEEEtran/bibtex/IEEEtranN.bst b/macros/latex/contrib/IEEEtran/bibtex/IEEEtranN.bst
new file mode 100644
index 0000000000..7204eafcdc
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/IEEEtranN.bst
@@ -0,0 +1,2735 @@
+%%
+%% IEEEtranN.bst
+%% BibTeX Bibliography Style file
+%% Natbib version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
+%% Version 1.14 (2015/08/26)
+%%
+%% Copyright (c) 2003-2015 Michael Shell
+%%
+%% Original starting code base and algorithms obtained from the output of
+%% Patrick W. Daly's makebst package as well as from prior versions of
+%% IEEE BibTeX styles:
+%%
+%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
+%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
+%%
+%% Added sorting and natbib code is from Patrick W Daly's unsrtnat.bst
+%%
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and/or
+%% http://www.ieee.org/
+%%
+%% For use with BibTeX version 0.99a or later
+%%
+%% This is a natbib compatible citation style.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are the defaults for the user adjustable controls. The values used
+% here can be overridden by the user via IEEEtranBSTCTL entry type.
+
+% NOTE: The recommended LaTeX command to invoke a control entry type is:
+%
+%\makeatletter
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
+% \edef\@citeb{\expandafter\@firstofone\@citeb}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+% \@esphack}
+%\makeatother
+%
+% It is called at the start of the document, before the first \cite, like:
+% \bstctlcite{IEEEexample:BSTcontrol}
+%
+% IEEEtran.cls V1.6 and later does provide this command.
+
+
+
+% #0 turns off the display of the number for articles.
+% #1 enables
+FUNCTION {default.is.use.number.for.article} { #1 }
+
+
+% #0 turns off the display of the paper and type fields in @inproceedings.
+% #1 enables
+FUNCTION {default.is.use.paper} { #1 }
+
+
+% #0 turns off the display of urls
+% #1 enables
+FUNCTION {default.is.use.url} { #1 }
+
+
+% #0 turns off the forced use of "et al."
+% #1 enables
+FUNCTION {default.is.forced.et.al} { #0 }
+
+
+% The maximum number of names that can be present beyond which an "et al."
+% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
+% is not greater than this value!
+% Note: There are many instances of references in IEEE journals which have
+% a very large number of authors as well as instances in which "et al." is
+% used profusely.
+FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
+
+
+% The number of names that will be shown with a forced "et al.".
+% Must be less than or equal to max.num.names.before.forced.et.al
+FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
+
+
+% #0 turns off the alternate interword spacing for entries with URLs.
+% #1 enables
+FUNCTION {default.is.use.alt.interword.spacing} { #1 }
+
+
+% If alternate interword spacing for entries with URLs is enabled, this is
+% the interword spacing stretch factor that will be used. For example, the
+% default "4" here means that the interword spacing in entries with URLs can
+% stretch to four times normal. Does not have to be an integer. Note that
+% the value specified here can be overridden by the user in their LaTeX
+% code via a command such as:
+% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
+% that via the IEEEtranBSTCTL entry type.
+FUNCTION {default.ALTinterwordstretchfactor} { "4" }
+
+
+% #0 turns off the "dashification" of repeated (i.e., identical to those
+% of the previous entry) names. The IEEE normally does this.
+% #1 enables
+FUNCTION {default.is.dash.repeated.names} { #1 }
+
+
+% The default name format control string.
+FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
+
+
+% The default LaTeX font command for the names.
+FUNCTION {default.name.latex.cmd}{ "" }
+
+
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
+% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
+
+% #0 turns off the terminal startup banner/completed message so as to
+% operate more quietly.
+% #1 enables
+FUNCTION {is.print.banners.to.terminal} { #1 }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FILE VERSION AND BANNER %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION{bst.file.version} { "1.14" }
+FUNCTION{bst.file.date} { "2015/08/26" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
+
+FUNCTION {banner.message}
+{ is.print.banners.to.terminal
+ { "-- IEEEtranN.bst version" " " * bst.file.version *
+ " (" * bst.file.date * ") " * "by Michael Shell." *
+ top$
+ "-- " bst.file.website *
+ top$
+ "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
+ top$
+ "** Natbib version - not for normal IEEE work."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {completed.message}
+{ is.print.banners.to.terminal
+ { ""
+ top$
+ "Done."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING CONSTANTS %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {bbl.and}{ "and" }
+FUNCTION {bbl.etal}{ "et~al." }
+FUNCTION {bbl.editors}{ "eds." }
+FUNCTION {bbl.editor}{ "ed." }
+FUNCTION {bbl.edition}{ "ed." }
+FUNCTION {bbl.volume}{ "vol." }
+FUNCTION {bbl.of}{ "of" }
+FUNCTION {bbl.number}{ "no." }
+FUNCTION {bbl.in}{ "in" }
+FUNCTION {bbl.pages}{ "pp." }
+FUNCTION {bbl.page}{ "p." }
+FUNCTION {bbl.chapter}{ "ch." }
+FUNCTION {bbl.paper}{ "paper" }
+FUNCTION {bbl.part}{ "pt." }
+FUNCTION {bbl.patent}{ "Patent" }
+FUNCTION {bbl.patentUS}{ "U.S." }
+FUNCTION {bbl.revision}{ "Rev." }
+FUNCTION {bbl.series}{ "ser." }
+FUNCTION {bbl.standard}{ "Std." }
+FUNCTION {bbl.techrep}{ "Tech. Rep." }
+FUNCTION {bbl.the}{ "The" }
+FUNCTION {bbl.mthesis}{ "Master's thesis" }
+FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
+FUNCTION {bbl.st}{ "st" }
+FUNCTION {bbl.nd}{ "nd" }
+FUNCTION {bbl.rd}{ "rd" }
+FUNCTION {bbl.th}{ "th" }
+
+
+% This is the LaTeX spacer that is used when a larger than normal space
+% is called for (such as just before the address:publisher).
+FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
+
+% The LaTeX code for dashes that are used to represent repeated names.
+% Note: Some older IEEE journals used something like
+% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
+% the baseline. However, the IEEE now uses a thinner, above baseline,
+% six dash long sequence.
+FUNCTION {repeated.name.dashes} { "------" }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PREDEFINED STRING MACROS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sep."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% ENTRY FIELDS %%
+%%%%%%%%%%%%%%%%%%
+
+ENTRY
+ { address
+ assignee
+ author
+ booktitle
+ chapter
+ day
+ dayfiled
+ edition
+ editor
+ howpublished
+ institution
+ intype
+ journal
+ key
+ language
+ month
+ monthfiled
+ nationality
+ note
+ number
+ organization
+ pages
+ paper
+ publisher
+ school
+ series
+ revision
+ title
+ type
+ url
+ volume
+ year
+ yearfiled
+ CTLuse_article_number
+ CTLuse_paper
+ CTLuse_url
+ CTLuse_forced_etal
+ CTLmax_names_forced_etal
+ CTLnames_show_etal
+ CTLuse_alt_spacing
+ CTLalt_stretch_factor
+ CTLdash_repeated_names
+ CTLname_format_string
+ CTLname_latex_cmd
+ CTLname_url_prefix
+ }
+ {}
+ { label extra.label sort.label short.list}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% INTEGER VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+INTEGERS { prev.status.punct this.status.punct punct.std
+ punct.no punct.comma punct.period
+ prev.status.space this.status.space space.std
+ space.no space.normal space.large
+ prev.status.quote this.status.quote quote.std
+ quote.no quote.close
+ prev.status.nline this.status.nline nline.std
+ nline.no nline.newblock
+ status.cap cap.std
+ cap.no cap.yes}
+
+INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
+
+INTEGERS { is.use.number.for.article
+ is.use.paper
+ is.use.url
+ is.forced.et.al
+ max.num.names.before.forced.et.al
+ num.names.shown.with.forced.et.al
+ is.use.alt.interword.spacing
+ is.dash.repeated.names}
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+STRINGS { bibinfo
+ longest.label
+ oldname
+ s
+ t
+ ALTinterwordstretchfactor
+ name.format.string
+ name.latex.cmd
+ name.url.prefix}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOW LEVEL FUNCTIONS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.controls}
+{ default.is.use.number.for.article 'is.use.number.for.article :=
+ default.is.use.paper 'is.use.paper :=
+ default.is.use.url 'is.use.url :=
+ default.is.forced.et.al 'is.forced.et.al :=
+ default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
+ default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
+ default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
+ default.is.dash.repeated.names 'is.dash.repeated.names :=
+ default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
+ default.name.format.string 'name.format.string :=
+ default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
+}
+
+
+% This IEEEtran.bst features a very powerful and flexible mechanism for
+% controlling the capitalization, punctuation, spacing, quotation, and
+% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
+% or use the newline/newblock feature, but it has been implemented for
+% possible future use.) The output states of IEEEtran.bst consist of
+% multiple independent attributes and, as such, can be thought of as being
+% vectors, rather than the simple scalar values ("before.all",
+% "mid.sentence", etc.) used in most other .bst files.
+%
+% The more flexible and complex design used here was motivated in part by
+% the IEEE's rather unusual bibliography style. For example, the IEEE ends the
+% previous field item with a period and large space prior to the publisher
+% address; the @electronic entry types use periods as inter-item punctuation
+% rather than the commas used by the other entry types; and URLs are never
+% followed by periods even though they are the last item in the entry.
+% Although it is possible to accommodate these features with the conventional
+% output state system, the seemingly endless exceptions make for convoluted,
+% unreliable and difficult to maintain code.
+%
+% IEEEtran.bst's output state system can be easily understood via a simple
+% illustration of two most recently formatted entry fields (on the stack):
+%
+% CURRENT_ITEM
+% "PREVIOUS_ITEM
+%
+% which, in this example, is to eventually appear in the bibliography as:
+%
+% "PREVIOUS_ITEM," CURRENT_ITEM
+%
+% It is the job of the output routine to take the previous item off of the
+% stack (while leaving the current item at the top of the stack), apply its
+% trailing punctuation (including closing quote marks) and spacing, and then
+% to write the result to BibTeX's output buffer:
+%
+% "PREVIOUS_ITEM,"
+%
+% Punctuation (and spacing) between items is often determined by both of the
+% items rather than just the first one. The presence of quotation marks
+% further complicates the situation because, in standard English, trailing
+% punctuation marks are supposed to be contained within the quotes.
+%
+% IEEEtran.bst maintains two output state (aka "status") vectors which
+% correspond to the previous and current (aka "this") items. Each vector
+% consists of several independent attributes which track punctuation,
+% spacing, quotation, and newlines. Capitalization status is handled by a
+% separate scalar because the format routines, not the output routine,
+% handle capitalization and, therefore, there is no need to maintain the
+% capitalization attribute for both the "previous" and "this" items.
+%
+% When a format routine adds a new item, it copies the current output status
+% vector to the previous output status vector and (usually) resets the
+% current (this) output status vector to a "standard status" vector. Using a
+% "standard status" vector in this way allows us to redefine what we mean by
+% "standard status" at the start of each entry handler and reuse the same
+% format routines under the various inter-item separation schemes. For
+% example, the standard status vector for the @book entry type may use
+% commas for item separators, while the @electronic type may use periods,
+% yet both entry handlers exploit many of the exact same format routines.
+%
+% Because format routines have write access to the output status vector of
+% the previous item, they can override the punctuation choices of the
+% previous format routine! Therefore, it becomes trivial to implement rules
+% such as "Always use a period and a large space before the publisher." By
+% pushing the generation of the closing quote mark to the output routine, we
+% avoid all the problems caused by having to close a quote before having all
+% the information required to determine what the punctuation should be.
+%
+% The IEEEtran.bst output state system can easily be expanded if needed.
+% For instance, it is easy to add a "space.tie" attribute value if the
+% bibliography rules mandate that two items have to be joined with an
+% unbreakable space.
+
+FUNCTION {initialize.status.constants}
+{ #0 'punct.no :=
+ #1 'punct.comma :=
+ #2 'punct.period :=
+ #0 'space.no :=
+ #1 'space.normal :=
+ #2 'space.large :=
+ #0 'quote.no :=
+ #1 'quote.close :=
+ #0 'cap.no :=
+ #1 'cap.yes :=
+ #0 'nline.no :=
+ #1 'nline.newblock :=
+}
+
+FUNCTION {std.status.using.comma}
+{ punct.comma 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.no 'cap.std :=
+}
+
+FUNCTION {std.status.using.period}
+{ punct.period 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.yes 'cap.std :=
+}
+
+FUNCTION {initialize.prev.this.status}
+{ punct.no 'prev.status.punct :=
+ space.no 'prev.status.space :=
+ quote.no 'prev.status.quote :=
+ nline.no 'prev.status.nline :=
+ punct.no 'this.status.punct :=
+ space.no 'this.status.space :=
+ quote.no 'this.status.quote :=
+ nline.no 'this.status.nline :=
+ cap.yes 'status.cap :=
+}
+
+FUNCTION {this.status.std}
+{ punct.std 'this.status.punct :=
+ space.std 'this.status.space :=
+ quote.std 'this.status.quote :=
+ nline.std 'this.status.nline :=
+}
+
+FUNCTION {cap.status.std}{ cap.std 'status.cap := }
+
+FUNCTION {this.to.prev.status}
+{ this.status.punct 'prev.status.punct :=
+ this.status.space 'prev.status.space :=
+ this.status.quote 'prev.status.quote :=
+ this.status.nline 'prev.status.nline :=
+}
+
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ { skip$ }
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ { skip$ }
+ if$
+}
+
+
+% convert the strings "yes" or "no" to #1 or #0 respectively
+FUNCTION {yes.no.to.int}
+{ "l" change.case$ duplicate$
+ "yes" =
+ { pop$ #1 }
+ { duplicate$ "no" =
+ { pop$ #0 }
+ { "unknown boolean " quote$ * swap$ * quote$ *
+ " in " * cite$ * warning$
+ #0
+ }
+ if$
+ }
+ if$
+}
+
+
+% pushes true if the single char string on the stack is in the
+% range of "0" to "9"
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+% multiplies the integer on the stack by a factor of 10
+FUNCTION {bump.int.mag}
+{ #0 'multiresult :=
+ { duplicate$ #0 > }
+ { #1 -
+ multiresult #10 +
+ 'multiresult :=
+ }
+ while$
+pop$
+multiresult
+}
+
+% converts a single character string on the stack to an integer
+FUNCTION {char.to.integer}
+{ duplicate$
+ is.num
+ { chr.to.int$ "0" chr.to.int$ - }
+ {"noninteger character " quote$ * swap$ * quote$ *
+ " in integer field of " * cite$ * warning$
+ #0
+ }
+ if$
+}
+
+% converts a string on the stack to an integer
+FUNCTION {string.to.integer}
+{ duplicate$ text.length$ 'namesleft :=
+ #1 'nameptr :=
+ #0 'numnames :=
+ { nameptr namesleft > not }
+ { duplicate$ nameptr #1 substring$
+ char.to.integer numnames bump.int.mag +
+ 'numnames :=
+ nameptr #1 +
+ 'nameptr :=
+ }
+ while$
+pop$
+numnames
+}
+
+
+
+
+% The output routines write out the *next* to the top (previous) item on the
+% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
+% the output status for the top two items on the stack, these output
+% routines have to consider the previous output status (which corresponds to
+% the item that is being output). Full independent control of punctuation,
+% closing quote marks, spacing, and newblock is provided.
+%
+% "output.nonnull" does not check for the presence of a previous empty
+% item.
+%
+% "output" does check for the presence of a previous empty item and will
+% remove an empty item rather than outputing it.
+%
+% "output.warn" is like "output", but will issue a warning if it detects
+% an empty item.
+
+FUNCTION {output.nonnull}
+{ swap$
+ prev.status.punct punct.comma =
+ { "," * }
+ { skip$ }
+ if$
+ prev.status.punct punct.period =
+ { add.period$ }
+ { skip$ }
+ if$
+ prev.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+ prev.status.space space.normal =
+ { " " * }
+ { skip$ }
+ if$
+ prev.status.space space.large =
+ { large.space * }
+ { skip$ }
+ if$
+ write$
+ prev.status.nline nline.newblock =
+ { newline$ "\newblock " write$ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.warn}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+% "fin.entry" is the output routine that handles the last item of the entry
+% (which will be on the top of the stack when "fin.entry" is called).
+
+FUNCTION {fin.entry}
+{ this.status.punct punct.no =
+ { skip$ }
+ { add.period$ }
+ if$
+ this.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+write$
+newline$
+}
+
+
+FUNCTION {is.last.char.not.punct}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {is.multiple.pages}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {do.name.latex.cmd}
+{ name.latex.cmd
+ empty$
+ { skip$ }
+ { name.latex.cmd "{" * swap$ * "}" * }
+ if$
+}
+
+% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
+% invokes the TeX hyphenation patterns without the need of the Babel
+% package. Babel does a lot more than switch hyphenation patterns and
+% its loading can cause unintended effects in many class files (such as
+% IEEEtran.cls).
+FUNCTION {select.language}
+{ duplicate$ empty$ 'pop$
+ { language empty$ 'skip$
+ { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {space.word}{ " " swap$ * " " * }
+
+
+% Field Conditioners, Converters, Checkers and External Interfaces
+
+FUNCTION {empty.field.to.null.string}
+{ duplicate$ empty$
+ { pop$ "" }
+ { skip$ }
+ if$
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ { pop$ }
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {empty.entry.warn}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$ url empty$
+ and and and and and and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+
+% The bibinfo system provides a way for the electronic parsing/acquisition
+% of a bibliography's contents as is done by ReVTeX. For example, a field
+% could be entered into the bibliography as:
+% \bibinfo{volume}{2}
+% Only the "2" would show up in the document, but the LaTeX \bibinfo command
+% could do additional things with the information. IEEEtran.bst does provide
+% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
+% currently not used as the bogus bibinfo functions defined here output the
+% entry values directly without the \bibinfo wrapper. The bibinfo functions
+% themselves (and the calls to them) are retained for possible future use.
+%
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+
+FUNCTION {bibinfo.check}
+{ swap$ duplicate$ missing$
+ { pop$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ pop$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {bibinfo.warn}
+{ swap$ duplicate$ missing$
+ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ "empty " swap$ * " in " * cite$ * warning$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+
+% The IEEE separates large numbers with more than 4 digits into groups of
+% three. The IEEE uses a small space to separate these number groups.
+% Typical applications include patent and page numbers.
+
+% number of consecutive digits required to trigger the group separation.
+FUNCTION {large.number.trigger}{ #5 }
+
+% For numbers longer than the trigger, this is the blocksize of the groups.
+% The blocksize must be less than the trigger threshold, and 2 * blocksize
+% must be greater than the trigger threshold (can't do more than one
+% separation on the initial trigger).
+FUNCTION {large.number.blocksize}{ #3 }
+
+% What is actually inserted between the number groups.
+FUNCTION {large.number.separator}{ "\," }
+
+% So as to save on integer variables by reusing existing ones, numnames
+% holds the current number of consecutive digits read and nameptr holds
+% the number that will trigger an inserted space.
+FUNCTION {large.number.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { numnames #1 + 'numnames := }
+ { #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames nameptr =
+ { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
+ nameptr large.number.blocksize - #1 + global.max$ substring$
+ large.number.separator swap$ * *
+ nameptr large.number.blocksize - 'numnames :=
+ large.number.blocksize #1 + 'nameptr :=
+ }
+ { skip$ }
+ if$
+ }
+ while$
+}
+
+% Converts all single dashes "-" to double dashes "--".
+FUNCTION {n.dashify}
+{ large.number.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+
+% This function detects entries with names that are identical to that of
+% the previous entry and replaces the repeated names with dashes (if the
+% "is.dash.repeated.names" user control is nonzero).
+FUNCTION {name.or.dash}
+{ 's :=
+ oldname empty$
+ { s 'oldname := s }
+ { s oldname =
+ { is.dash.repeated.names
+ { repeated.name.dashes }
+ { s 'oldname := s }
+ if$
+ }
+ { s 'oldname := s }
+ if$
+ }
+ if$
+}
+
+% Converts the number string on the top of the stack to
+% "numerical ordinal form" (e.g., "7" to "7th"). There is
+% no artificial limit to the upper bound of the numbers as the
+% two least significant digits determine the ordinal form.
+FUNCTION {num.to.ordinal}
+{ duplicate$ #-2 #1 substring$ "1" =
+ { bbl.th * }
+ { duplicate$ #-1 #1 substring$ "1" =
+ { bbl.st * }
+ { duplicate$ #-1 #1 substring$ "2" =
+ { bbl.nd * }
+ { duplicate$ #-1 #1 substring$ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% If the string on the top of the stack begins with a number,
+% (e.g., 11th) then replace the string with the leading number
+% it contains. Otherwise retain the string as-is. s holds the
+% extracted number, t holds the part of the string that remains
+% to be scanned.
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+% Converts the word number string on the top of the stack to
+% Arabic string form. Will be successful up to "tenth".
+FUNCTION {word.to.num}
+{ duplicate$ "l" change.case$ 's :=
+ s "first" =
+ { pop$ "1" }
+ { skip$ }
+ if$
+ s "second" =
+ { pop$ "2" }
+ { skip$ }
+ if$
+ s "third" =
+ { pop$ "3" }
+ { skip$ }
+ if$
+ s "fourth" =
+ { pop$ "4" }
+ { skip$ }
+ if$
+ s "fifth" =
+ { pop$ "5" }
+ { skip$ }
+ if$
+ s "sixth" =
+ { pop$ "6" }
+ { skip$ }
+ if$
+ s "seventh" =
+ { pop$ "7" }
+ { skip$ }
+ if$
+ s "eighth" =
+ { pop$ "8" }
+ { skip$ }
+ if$
+ s "ninth" =
+ { pop$ "9" }
+ { skip$ }
+ if$
+ s "tenth" =
+ { pop$ "10" }
+ { skip$ }
+ if$
+}
+
+
+% Converts the string on the top of the stack to numerical
+% ordinal (e.g., "11th") form.
+FUNCTION {convert.edition}
+{ duplicate$ empty$ 'skip$
+ { duplicate$ #1 #1 substring$ is.num
+ { extract.num
+ num.to.ordinal
+ }
+ { word.to.num
+ duplicate$ #1 #1 substring$ is.num
+ { num.to.ordinal }
+ { "edition ordinal word " quote$ * edition * quote$ *
+ " may be too high (or improper) for conversion" * " in " * cite$ * warning$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LATEX BIBLIOGRAPHY CODE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% from plainnat.bst
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " " bbl.etal * * }
+ { " " bbl.and * " " * * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.full }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.full }
+ { author.full }
+ if$
+ }
+ if$
+}
+% END from plainnat.bst
+
+FUNCTION {start.entry}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ initialize.prev.this.status
+}
+
+% Here we write out all the LaTeX code that we will need. The most involved
+% code sequences are those that control the alternate interword spacing and
+% foreign language hyphenation patterns. The heavy use of \providecommand
+% gives users a way to override the defaults. Special thanks to Javier Bezos,
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
+% the other gurus on comp.text.tex for their help and advice on the topic of
+% \selectlanguage, Babel and BibTeX.
+FUNCTION {begin.bib}
+{ "% Generated by IEEEtranN.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ preamble$ empty$ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{#1}"
+ write$ newline$
+ "\csname url@samestyle\endcsname"
+ write$ newline$
+ "\providecommand{\newblock}{\relax}"
+ write$ newline$
+ "\providecommand{\bibinfo}[2]{#2}"
+ write$ newline$
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
+ write$ newline$
+ "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
+ write$ newline$
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
+ write$ newline$
+ "\expandafter\ifx\csname l@#1\endcsname\relax"
+ write$ newline$
+ "\typeout{** WARNING: IEEEtranN.bst: No hyphenation pattern has been}%"
+ write$ newline$
+ "\typeout{** loaded for the language `#1'. Using the pattern for}%"
+ write$ newline$
+ "\typeout{** the default language instead.}%"
+ write$ newline$
+ "\else"
+ write$ newline$
+ "\language=\csname l@#1\endcsname"
+ write$ newline$
+ "\fi"
+ write$ newline$
+ "#2}}"
+ write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$ "\end{thebibliography}" write$ newline$ }
+
+FUNCTION {if.url.alt.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {if.url.std.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%% FORMAT HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%%
+
+%% Lower Level Formats (used by higher level formats)
+
+FUNCTION {format.address.org.or.pub.date}
+{ 't :=
+ ""
+ year empty$
+ { "empty year in " cite$ * warning$ }
+ { skip$ }
+ if$
+ address empty$ t empty$ and
+ year empty$ and month empty$ and
+ { skip$ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ address "address" bibinfo.check *
+ t empty$
+ { skip$ }
+ { punct.period 'prev.status.punct :=
+ space.large 'prev.status.space :=
+ address empty$
+ { skip$ }
+ { ": " * }
+ if$
+ t *
+ }
+ if$
+ year empty$ month empty$ and
+ { skip$ }
+ { t empty$ address empty$ and
+ { skip$ }
+ { ", " * }
+ if$
+ month empty$
+ { year empty$
+ { skip$ }
+ { year "year" bibinfo.check * }
+ if$
+ }
+ { month "month" bibinfo.check *
+ year empty$
+ { skip$ }
+ { " " * year "year" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ this.to.prev.status
+ this.status.std
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ name.format.string
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ { nameptr num.names.shown.with.forced.et.al #1 + =
+ numnames max.num.names.before.forced.et.al >
+ is.forced.et.al and and
+ { "others" 't :=
+ #1 'namesleft :=
+ }
+ { skip$ }
+ if$
+ namesleft #1 >
+ { ", " * t do.name.latex.cmd * }
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
+ bbl.and
+ space.word * t do.name.latex.cmd *
+ }
+ if$
+ }
+ if$
+ }
+ { t do.name.latex.cmd }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ cap.status.std
+ } if$
+}
+
+
+
+
+%% Higher Level Formats
+
+%% addresses/locations
+
+FUNCTION {format.address}
+{ address duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% author/editor names
+
+FUNCTION {format.authors}{ author "author" format.names }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ { ", " *
+ get.bbl.editor
+ capitalize
+ *
+ }
+ if$
+}
+
+
+
+%% date
+
+FUNCTION {format.date}
+{
+ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "there's a month but no year in " cite$ * warning$ }
+ if$
+ *
+ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ swap$ 'skip$
+ {
+ swap$
+ " " * swap$
+ }
+ if$
+ *
+ }
+ if$
+}
+
+FUNCTION {format.date.electronic}
+{ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$
+ { pop$ }
+ { "there's a month but no year in " cite$ * warning$
+ pop$ ")" * "(" swap$ *
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+ }
+ { swap$
+ { swap$ pop$ ")" * "(" swap$ * }
+ { "(" swap$ * ", " * swap$ * ")" * }
+ if$
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% edition/title
+
+% Note: The IEEE considers the edition to be closely associated with
+% the title of a book. So, in IEEEtran.bst the edition is normally handled
+% within the formatting of the title. The format.edition function is
+% retained here for possible future use.
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$ change.case$
+ "edition" bibinfo.check
+ "~" * bbl.edition *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of a conference proceedings.
+% Here we use the "intype" field to provide the user a way to
+% override the word "in" (e.g., with things like "presented at")
+% Use of intype stops the emphasis of the booktitle to indicate that
+% we no longer mean the written conference proceedings, but the
+% conference itself.
+FUNCTION {format.in.booktitle}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ intype missing$
+ { emphasize
+ bbl.in " " *
+ }
+ { intype " " * }
+ if$
+ swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of collection.
+% Here the "intype" field is not supported, but "edition" is.
+FUNCTION {format.in.booktitle.edition}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ "l" change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ bbl.in " " * swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { quote.close 'this.status.quote :=
+ is.last.char.not.punct
+ { punct.std 'this.status.punct := }
+ { punct.no 'this.status.punct := }
+ if$
+ select.language
+ "``" swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title.electronic}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$
+ { skip$ }
+ { select.language }
+ if$
+}
+
+FUNCTION {format.book.title.edition}
+{ title "title" bibinfo.check
+ duplicate$ empty$
+ { "empty title in " cite$ * warning$ }
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$
+ change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.book.title}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% journal
+
+FUNCTION {format.journal}
+{ journal duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% how published
+
+FUNCTION {format.howpublished}
+{ howpublished duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% institutions/organization/publishers/school
+
+FUNCTION {format.institution}
+{ institution duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.organization}
+{ organization duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.address.publisher.date}
+{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
+
+FUNCTION {format.address.publisher.date.nowarn}
+{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.address.organization.date}
+{ organization "organization" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.school}
+{ school duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% volume/number/series/chapter/pages
+
+FUNCTION {format.volume}
+{ volume empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ bbl.volume
+ status.cap
+ { capitalize }
+ { skip$ }
+ if$
+ swap$ tie.or.space.prefix
+ "volume" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number}
+{ number empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ status.cap
+ { bbl.number capitalize }
+ { bbl.number }
+ if$
+ swap$ tie.or.space.prefix
+ "number" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number.if.use.for.article}
+{ is.use.number.for.article
+ { format.number }
+ { "" }
+ if$
+}
+
+% The IEEE does not seem to tie the series so closely with the volume
+% and number as is done in other bibliography styles. Instead the
+% series is treated somewhat like an extension of the title.
+FUNCTION {format.series}
+{ series empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.series " " *
+ series "series" bibinfo.check *
+ cap.status.std
+ }
+ if$
+}
+
+
+FUNCTION {format.chapter}
+{ chapter empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+% The intended use of format.paper is for paper numbers of inproceedings.
+% The paper type can be overridden via the type field.
+% We allow the type to be displayed even if the paper number is absent
+% for things like "postdeadline paper"
+FUNCTION {format.paper}
+{ is.use.paper
+ { paper empty$
+ { type empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type "type" bibinfo.check
+ cap.status.std
+ }
+ if$
+ }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.paper }
+ { type "type" bibinfo.check }
+ if$
+ " " * paper
+ "paper" bibinfo.check
+ *
+ cap.status.std
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ duplicate$ is.multiple.pages
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% technical report number
+
+FUNCTION {format.tech.report.number}
+{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
+ type duplicate$ empty$
+ { pop$
+ bbl.techrep
+ }
+ { skip$ }
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+
+
+
+%% note
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ punct.period 'this.status.punct :=
+ note #1 #1 substring$
+ duplicate$ "{" =
+ { skip$ }
+ { status.cap
+ { "u" }
+ { "l" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% patent
+
+FUNCTION {format.patent.date}
+{ this.to.prev.status
+ this.status.std
+ year empty$
+ { monthfiled duplicate$ empty$
+ { "monthfiled" bibinfo.check pop$ "" }
+ { "monthfiled" bibinfo.check }
+ if$
+ dayfiled duplicate$ empty$
+ { "dayfiled" bibinfo.check pop$ "" * }
+ { "dayfiled" bibinfo.check
+ monthfiled empty$
+ { "dayfiled without a monthfiled in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ yearfiled empty$
+ { "no year or yearfiled in " cite$ * warning$ }
+ { yearfiled "yearfiled" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ }
+ { month duplicate$ empty$
+ { "month" bibinfo.check pop$ "" }
+ { "month" bibinfo.check }
+ if$
+ day duplicate$ empty$
+ { "day" bibinfo.check pop$ "" * }
+ { "day" bibinfo.check
+ month empty$
+ { "day without a month in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ year "year" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.patent.nationality.type.number}
+{ this.to.prev.status
+ this.status.std
+ nationality duplicate$ empty$
+ { "nationality" bibinfo.warn pop$ "" }
+ { "nationality" bibinfo.check
+ duplicate$ "l" change.case$ "united states" =
+ { pop$ bbl.patentUS }
+ { skip$ }
+ if$
+ " " *
+ }
+ if$
+ type empty$
+ { bbl.patent "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.warn pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+
+
+%% standard
+
+FUNCTION {format.organization.institution.standard.type.number}
+{ this.to.prev.status
+ this.status.std
+ organization duplicate$ empty$
+ { pop$
+ institution duplicate$ empty$
+ { "institution" bibinfo.warn }
+ { "institution" bibinfo.warn " " * }
+ if$
+ }
+ { "organization" bibinfo.warn " " * }
+ if$
+ type empty$
+ { bbl.standard "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.check pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.revision}
+{ revision empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.revision
+ revision tie.or.space.prefix
+ "revision" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+%% thesis
+
+FUNCTION {format.master.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.mthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+FUNCTION {format.phd.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.phdthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+
+
+%% URL
+
+FUNCTION {format.url}
+{ is.use.url
+ { url empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ cap.yes 'status.cap :=
+ name.url.prefix " " *
+ "\url{" * url * "}" *
+ punct.no 'this.status.punct :=
+ punct.period 'prev.status.punct :=
+ space.normal 'this.status.space :=
+ space.normal 'prev.status.space :=
+ quote.no 'this.status.quote :=
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% ENTRY HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%
+
+
+% Note: In many journals, the IEEE (or the authors) tend not to show the number
+% for articles, so the display of the number is controlled here by the
+% switch "is.use.number.for.article"
+FUNCTION {article}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.journal "journal" bibinfo.check "journal" output.warn
+ format.volume output
+ format.number.if.use.for.article output
+ format.pages output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {book}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ author empty$
+ { skip$ }
+ { format.editors output }
+ if$
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {booklet}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {electronic}
+{ std.status.using.period
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.date.electronic output
+ format.article.title.electronic output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inbook}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {incollection}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle.edition "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.address.publisher.date.nowarn output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inproceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.paper output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {manual}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title.edition "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {mastersthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.master.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {misc}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.pages output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {patent}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.patent.nationality.type.number output
+ format.patent.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {periodical}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ format.organization "organization" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {phdthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.phd.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {proceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {standard}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization.institution.standard.type.number output
+ format.revision output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {techreport}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.institution "institution" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.tech.report.number output.nonnull
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {unpublished}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.date output
+ format.note "note" output.warn
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+
+% The special entry type which provides the user interface to the
+% BST controls
+FUNCTION {IEEEtranBSTCTL}
+{ is.print.banners.to.terminal
+ { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
+ top$
+ }
+ { skip$ }
+ if$
+ CTLuse_article_number
+ empty$
+ { skip$ }
+ { CTLuse_article_number
+ yes.no.to.int
+ 'is.use.number.for.article :=
+ }
+ if$
+ CTLuse_paper
+ empty$
+ { skip$ }
+ { CTLuse_paper
+ yes.no.to.int
+ 'is.use.paper :=
+ }
+ if$
+ CTLuse_url
+ empty$
+ { skip$ }
+ { CTLuse_url
+ yes.no.to.int
+ 'is.use.url :=
+ }
+ if$
+ CTLuse_forced_etal
+ empty$
+ { skip$ }
+ { CTLuse_forced_etal
+ yes.no.to.int
+ 'is.forced.et.al :=
+ }
+ if$
+ CTLmax_names_forced_etal
+ empty$
+ { skip$ }
+ { CTLmax_names_forced_etal
+ string.to.integer
+ 'max.num.names.before.forced.et.al :=
+ }
+ if$
+ CTLnames_show_etal
+ empty$
+ { skip$ }
+ { CTLnames_show_etal
+ string.to.integer
+ 'num.names.shown.with.forced.et.al :=
+ }
+ if$
+ CTLuse_alt_spacing
+ empty$
+ { skip$ }
+ { CTLuse_alt_spacing
+ yes.no.to.int
+ 'is.use.alt.interword.spacing :=
+ }
+ if$
+ CTLalt_stretch_factor
+ empty$
+ { skip$ }
+ { CTLalt_stretch_factor
+ 'ALTinterwordstretchfactor :=
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ }
+ if$
+ CTLdash_repeated_names
+ empty$
+ { skip$ }
+ { CTLdash_repeated_names
+ yes.no.to.int
+ 'is.dash.repeated.names :=
+ }
+ if$
+ CTLname_format_string
+ empty$
+ { skip$ }
+ { CTLname_format_string
+ 'name.format.string :=
+ }
+ if$
+ CTLname_latex_cmd
+ empty$
+ { skip$ }
+ { CTLname_latex_cmd
+ 'name.latex.cmd :=
+ }
+ if$
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
+ num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
+ { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
+ max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
+ }
+ { skip$ }
+ if$
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+%% ENTRY ALIASES %%
+%%%%%%%%%%%%%%%%%%%
+FUNCTION {conference}{inproceedings}
+FUNCTION {online}{electronic}
+FUNCTION {internet}{electronic}
+FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
+FUNCTION {default.type}{misc}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% MAIN PROGRAM %%
+%%%%%%%%%%%%%%%%%%
+
+READ
+
+EXECUTE {initialize.controls}
+EXECUTE {initialize.status.constants}
+EXECUTE {banner.message}
+
+
+
+% BEGIN sort code based on unsrtnat.bst
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " " bbl.etal * * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " " bbl.etal * * }
+ { " " bbl.and * " " * * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { bbl.the " " * #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.institution.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { institution empty$
+ { cite$ #1 #3 substring$ }
+ { bbl.the " " * #4 institution chop.word #3 text.prefix$ }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { bbl.the " " * #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.key.label }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.key.organization.label }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.key.organization.label }
+ { type$ "standard" =
+ { author.key.organization.institution.label }
+ { author.key.label }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ 'short.list :=
+ "("
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ duplicate$
+ empty$
+ short.list key empty.field.to.null.string = or
+ { pop$ "" }
+ { skip$ }
+ if$
+ *
+ 'label :=
+}
+
+
+INTEGERS { seq.num }
+
+FUNCTION {init.seq}
+{ #0 'seq.num :=}
+
+
+FUNCTION {int.to.fix}
+{ "000000000" swap$ int.to.str$ *
+ #-1 #10 substring$
+}
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ " "
+ *
+ seq.num int.to.fix
+ }
+ { calc.label
+ label sortify
+ " "
+ *
+ seq.num #1 + 'seq.num :=
+ seq.num int.to.fix
+ }
+ if$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { next.extra "b" =
+ { "a" 'extra.label := }
+ { skip$ }
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ { skip$ }
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+ }
+ if$
+}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+% END sort code based on unsrtnat.bst
+
+
+
+EXECUTE {init.seq}
+
+ITERATE {presort}
+
+SORT
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
+EXECUTE{completed.message}
+
+
+%% That's all folks, mds.
diff --git a/macros/latex/contrib/IEEEtran/bibtex/IEEEtranS.bst b/macros/latex/contrib/IEEEtran/bibtex/IEEEtranS.bst
new file mode 100644
index 0000000000..b9c2c649f2
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/IEEEtranS.bst
@@ -0,0 +1,2607 @@
+%%
+%% IEEEtranS.bst
+%% BibTeX Bibliography Style file
+%% Sorting version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
+%% Version 1.14 (2015/08/26)
+%%
+%% Copyright (c) 2003-2015 Michael Shell
+%%
+%% Original starting code base and algorithms obtained from the output of
+%% Patrick W. Daly's makebst package as well as from prior versions of
+%% IEEE BibTeX styles:
+%%
+%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
+%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
+%%
+%% Added sorting code is from plain.bst.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and/or
+%% http://www.ieee.org/
+%%
+%% For use with BibTeX version 0.99a or later
+%%
+%% This is a numerical citation style.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are the defaults for the user adjustable controls. The values used
+% here can be overridden by the user via IEEEtranBSTCTL entry type.
+
+% NOTE: The recommended LaTeX command to invoke a control entry type is:
+%
+%\makeatletter
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
+% \edef\@citeb{\expandafter\@firstofone\@citeb}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+% \@esphack}
+%\makeatother
+%
+% It is called at the start of the document, before the first \cite, like:
+% \bstctlcite{IEEEexample:BSTcontrol}
+%
+% IEEEtran.cls V1.6 and later does provide this command.
+
+
+
+% #0 turns off the display of the number for articles.
+% #1 enables
+FUNCTION {default.is.use.number.for.article} { #1 }
+
+
+% #0 turns off the display of the paper and type fields in @inproceedings.
+% #1 enables
+FUNCTION {default.is.use.paper} { #1 }
+
+
+% #0 turns off the display of urls
+% #1 enables
+FUNCTION {default.is.use.url} { #1 }
+
+
+% #0 turns off the forced use of "et al."
+% #1 enables
+FUNCTION {default.is.forced.et.al} { #0 }
+
+
+% The maximum number of names that can be present beyond which an "et al."
+% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
+% is not greater than this value!
+% Note: There are many instances of references in IEEE journals which have
+% a very large number of authors as well as instances in which "et al." is
+% used profusely.
+FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
+
+
+% The number of names that will be shown with a forced "et al.".
+% Must be less than or equal to max.num.names.before.forced.et.al
+FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
+
+
+% #0 turns off the alternate interword spacing for entries with URLs.
+% #1 enables
+FUNCTION {default.is.use.alt.interword.spacing} { #1 }
+
+
+% If alternate interword spacing for entries with URLs is enabled, this is
+% the interword spacing stretch factor that will be used. For example, the
+% default "4" here means that the interword spacing in entries with URLs can
+% stretch to four times normal. Does not have to be an integer. Note that
+% the value specified here can be overridden by the user in their LaTeX
+% code via a command such as:
+% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
+% that via the IEEEtranBSTCTL entry type.
+FUNCTION {default.ALTinterwordstretchfactor} { "4" }
+
+
+% #0 turns off the "dashification" of repeated (i.e., identical to those
+% of the previous entry) names. The IEEE normally does this.
+% #1 enables
+FUNCTION {default.is.dash.repeated.names} { #1 }
+
+
+% The default name format control string.
+FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
+
+
+% The default LaTeX font command for the names.
+FUNCTION {default.name.latex.cmd}{ "" }
+
+
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
+% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
+
+% #0 turns off the terminal startup banner/completed message so as to
+% operate more quietly.
+% #1 enables
+FUNCTION {is.print.banners.to.terminal} { #1 }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FILE VERSION AND BANNER %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION{bst.file.version} { "1.14" }
+FUNCTION{bst.file.date} { "2015/08/26" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
+
+FUNCTION {banner.message}
+{ is.print.banners.to.terminal
+ { "-- IEEEtranS.bst version" " " * bst.file.version *
+ " (" * bst.file.date * ") " * "by Michael Shell." *
+ top$
+ "-- " bst.file.website *
+ top$
+ "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
+ top$
+ "** Sorting version - not for normal IEEE work."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {completed.message}
+{ is.print.banners.to.terminal
+ { ""
+ top$
+ "Done."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING CONSTANTS %%
+%%%%%%%%%%%%%%%%%%%%%%
+FUNCTION {bbl.a}{ "A" }
+FUNCTION {bbl.an}{ "An" }
+FUNCTION {bbl.and}{ "and" }
+FUNCTION {bbl.etal}{ "et~al." }
+FUNCTION {bbl.editors}{ "eds." }
+FUNCTION {bbl.editor}{ "ed." }
+FUNCTION {bbl.edition}{ "ed." }
+FUNCTION {bbl.volume}{ "vol." }
+FUNCTION {bbl.of}{ "of" }
+FUNCTION {bbl.number}{ "no." }
+FUNCTION {bbl.in}{ "in" }
+FUNCTION {bbl.pages}{ "pp." }
+FUNCTION {bbl.page}{ "p." }
+FUNCTION {bbl.chapter}{ "ch." }
+FUNCTION {bbl.paper}{ "paper" }
+FUNCTION {bbl.part}{ "pt." }
+FUNCTION {bbl.patent}{ "Patent" }
+FUNCTION {bbl.patentUS}{ "U.S." }
+FUNCTION {bbl.revision}{ "Rev." }
+FUNCTION {bbl.series}{ "ser." }
+FUNCTION {bbl.standard}{ "Std." }
+FUNCTION {bbl.techrep}{ "Tech. Rep." }
+FUNCTION {bbl.the}{ "The" }
+FUNCTION {bbl.mthesis}{ "Master's thesis" }
+FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
+FUNCTION {bbl.st}{ "st" }
+FUNCTION {bbl.nd}{ "nd" }
+FUNCTION {bbl.rd}{ "rd" }
+FUNCTION {bbl.th}{ "th" }
+
+
+% This is the LaTeX spacer that is used when a larger than normal space
+% is called for (such as just before the address:publisher).
+FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
+
+% The LaTeX code for dashes that are used to represent repeated names.
+% Note: Some older IEEE journals used something like
+% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
+% the baseline. However, the IEEE now uses a thinner, above baseline,
+% six dash long sequence.
+FUNCTION {repeated.name.dashes} { "------" }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PREDEFINED STRING MACROS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sep."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% ENTRY FIELDS %%
+%%%%%%%%%%%%%%%%%%
+
+ENTRY
+ { address
+ assignee
+ author
+ booktitle
+ chapter
+ day
+ dayfiled
+ edition
+ editor
+ howpublished
+ institution
+ intype
+ journal
+ key
+ language
+ month
+ monthfiled
+ nationality
+ note
+ number
+ organization
+ pages
+ paper
+ publisher
+ school
+ series
+ revision
+ title
+ type
+ url
+ volume
+ year
+ yearfiled
+ CTLuse_article_number
+ CTLuse_paper
+ CTLuse_url
+ CTLuse_forced_etal
+ CTLmax_names_forced_etal
+ CTLnames_show_etal
+ CTLuse_alt_spacing
+ CTLalt_stretch_factor
+ CTLdash_repeated_names
+ CTLname_format_string
+ CTLname_latex_cmd
+ CTLname_url_prefix
+ }
+ {}
+ { label }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% INTEGER VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+INTEGERS { prev.status.punct this.status.punct punct.std
+ punct.no punct.comma punct.period
+ prev.status.space this.status.space space.std
+ space.no space.normal space.large
+ prev.status.quote this.status.quote quote.std
+ quote.no quote.close
+ prev.status.nline this.status.nline nline.std
+ nline.no nline.newblock
+ status.cap cap.std
+ cap.no cap.yes}
+
+INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
+
+INTEGERS { is.use.number.for.article
+ is.use.paper
+ is.use.url
+ is.forced.et.al
+ max.num.names.before.forced.et.al
+ num.names.shown.with.forced.et.al
+ is.use.alt.interword.spacing
+ is.dash.repeated.names}
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+STRINGS { bibinfo
+ longest.label
+ oldname
+ s
+ t
+ ALTinterwordstretchfactor
+ name.format.string
+ name.latex.cmd
+ name.url.prefix}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOW LEVEL FUNCTIONS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.controls}
+{ default.is.use.number.for.article 'is.use.number.for.article :=
+ default.is.use.paper 'is.use.paper :=
+ default.is.use.url 'is.use.url :=
+ default.is.forced.et.al 'is.forced.et.al :=
+ default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
+ default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
+ default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
+ default.is.dash.repeated.names 'is.dash.repeated.names :=
+ default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
+ default.name.format.string 'name.format.string :=
+ default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
+}
+
+
+% This IEEEtran.bst features a very powerful and flexible mechanism for
+% controlling the capitalization, punctuation, spacing, quotation, and
+% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
+% or use the newline/newblock feature, but it has been implemented for
+% possible future use.) The output states of IEEEtran.bst consist of
+% multiple independent attributes and, as such, can be thought of as being
+% vectors, rather than the simple scalar values ("before.all",
+% "mid.sentence", etc.) used in most other .bst files.
+%
+% The more flexible and complex design used here was motivated in part by
+% the IEEE's rather unusual bibliography style. For example, the IEEE ends the
+% previous field item with a period and large space prior to the publisher
+% address; the @electronic entry types use periods as inter-item punctuation
+% rather than the commas used by the other entry types; and URLs are never
+% followed by periods even though they are the last item in the entry.
+% Although it is possible to accommodate these features with the conventional
+% output state system, the seemingly endless exceptions make for convoluted,
+% unreliable and difficult to maintain code.
+%
+% IEEEtran.bst's output state system can be easily understood via a simple
+% illustration of two most recently formatted entry fields (on the stack):
+%
+% CURRENT_ITEM
+% "PREVIOUS_ITEM
+%
+% which, in this example, is to eventually appear in the bibliography as:
+%
+% "PREVIOUS_ITEM," CURRENT_ITEM
+%
+% It is the job of the output routine to take the previous item off of the
+% stack (while leaving the current item at the top of the stack), apply its
+% trailing punctuation (including closing quote marks) and spacing, and then
+% to write the result to BibTeX's output buffer:
+%
+% "PREVIOUS_ITEM,"
+%
+% Punctuation (and spacing) between items is often determined by both of the
+% items rather than just the first one. The presence of quotation marks
+% further complicates the situation because, in standard English, trailing
+% punctuation marks are supposed to be contained within the quotes.
+%
+% IEEEtran.bst maintains two output state (aka "status") vectors which
+% correspond to the previous and current (aka "this") items. Each vector
+% consists of several independent attributes which track punctuation,
+% spacing, quotation, and newlines. Capitalization status is handled by a
+% separate scalar because the format routines, not the output routine,
+% handle capitalization and, therefore, there is no need to maintain the
+% capitalization attribute for both the "previous" and "this" items.
+%
+% When a format routine adds a new item, it copies the current output status
+% vector to the previous output status vector and (usually) resets the
+% current (this) output status vector to a "standard status" vector. Using a
+% "standard status" vector in this way allows us to redefine what we mean by
+% "standard status" at the start of each entry handler and reuse the same
+% format routines under the various inter-item separation schemes. For
+% example, the standard status vector for the @book entry type may use
+% commas for item separators, while the @electronic type may use periods,
+% yet both entry handlers exploit many of the exact same format routines.
+%
+% Because format routines have write access to the output status vector of
+% the previous item, they can override the punctuation choices of the
+% previous format routine! Therefore, it becomes trivial to implement rules
+% such as "Always use a period and a large space before the publisher." By
+% pushing the generation of the closing quote mark to the output routine, we
+% avoid all the problems caused by having to close a quote before having all
+% the information required to determine what the punctuation should be.
+%
+% The IEEEtran.bst output state system can easily be expanded if needed.
+% For instance, it is easy to add a "space.tie" attribute value if the
+% bibliography rules mandate that two items have to be joined with an
+% unbreakable space.
+
+FUNCTION {initialize.status.constants}
+{ #0 'punct.no :=
+ #1 'punct.comma :=
+ #2 'punct.period :=
+ #0 'space.no :=
+ #1 'space.normal :=
+ #2 'space.large :=
+ #0 'quote.no :=
+ #1 'quote.close :=
+ #0 'cap.no :=
+ #1 'cap.yes :=
+ #0 'nline.no :=
+ #1 'nline.newblock :=
+}
+
+FUNCTION {std.status.using.comma}
+{ punct.comma 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.no 'cap.std :=
+}
+
+FUNCTION {std.status.using.period}
+{ punct.period 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.yes 'cap.std :=
+}
+
+FUNCTION {initialize.prev.this.status}
+{ punct.no 'prev.status.punct :=
+ space.no 'prev.status.space :=
+ quote.no 'prev.status.quote :=
+ nline.no 'prev.status.nline :=
+ punct.no 'this.status.punct :=
+ space.no 'this.status.space :=
+ quote.no 'this.status.quote :=
+ nline.no 'this.status.nline :=
+ cap.yes 'status.cap :=
+}
+
+FUNCTION {this.status.std}
+{ punct.std 'this.status.punct :=
+ space.std 'this.status.space :=
+ quote.std 'this.status.quote :=
+ nline.std 'this.status.nline :=
+}
+
+FUNCTION {cap.status.std}{ cap.std 'status.cap := }
+
+FUNCTION {this.to.prev.status}
+{ this.status.punct 'prev.status.punct :=
+ this.status.space 'prev.status.space :=
+ this.status.quote 'prev.status.quote :=
+ this.status.nline 'prev.status.nline :=
+}
+
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ { skip$ }
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ { skip$ }
+ if$
+}
+
+
+% convert the strings "yes" or "no" to #1 or #0 respectively
+FUNCTION {yes.no.to.int}
+{ "l" change.case$ duplicate$
+ "yes" =
+ { pop$ #1 }
+ { duplicate$ "no" =
+ { pop$ #0 }
+ { "unknown boolean " quote$ * swap$ * quote$ *
+ " in " * cite$ * warning$
+ #0
+ }
+ if$
+ }
+ if$
+}
+
+
+% pushes true if the single char string on the stack is in the
+% range of "0" to "9"
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+% multiplies the integer on the stack by a factor of 10
+FUNCTION {bump.int.mag}
+{ #0 'multiresult :=
+ { duplicate$ #0 > }
+ { #1 -
+ multiresult #10 +
+ 'multiresult :=
+ }
+ while$
+pop$
+multiresult
+}
+
+% converts a single character string on the stack to an integer
+FUNCTION {char.to.integer}
+{ duplicate$
+ is.num
+ { chr.to.int$ "0" chr.to.int$ - }
+ {"noninteger character " quote$ * swap$ * quote$ *
+ " in integer field of " * cite$ * warning$
+ #0
+ }
+ if$
+}
+
+% converts a string on the stack to an integer
+FUNCTION {string.to.integer}
+{ duplicate$ text.length$ 'namesleft :=
+ #1 'nameptr :=
+ #0 'numnames :=
+ { nameptr namesleft > not }
+ { duplicate$ nameptr #1 substring$
+ char.to.integer numnames bump.int.mag +
+ 'numnames :=
+ nameptr #1 +
+ 'nameptr :=
+ }
+ while$
+pop$
+numnames
+}
+
+
+
+
+% The output routines write out the *next* to the top (previous) item on the
+% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
+% the output status for the top two items on the stack, these output
+% routines have to consider the previous output status (which corresponds to
+% the item that is being output). Full independent control of punctuation,
+% closing quote marks, spacing, and newblock is provided.
+%
+% "output.nonnull" does not check for the presence of a previous empty
+% item.
+%
+% "output" does check for the presence of a previous empty item and will
+% remove an empty item rather than outputing it.
+%
+% "output.warn" is like "output", but will issue a warning if it detects
+% an empty item.
+
+FUNCTION {output.nonnull}
+{ swap$
+ prev.status.punct punct.comma =
+ { "," * }
+ { skip$ }
+ if$
+ prev.status.punct punct.period =
+ { add.period$ }
+ { skip$ }
+ if$
+ prev.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+ prev.status.space space.normal =
+ { " " * }
+ { skip$ }
+ if$
+ prev.status.space space.large =
+ { large.space * }
+ { skip$ }
+ if$
+ write$
+ prev.status.nline nline.newblock =
+ { newline$ "\newblock " write$ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.warn}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+% "fin.entry" is the output routine that handles the last item of the entry
+% (which will be on the top of the stack when "fin.entry" is called).
+
+FUNCTION {fin.entry}
+{ this.status.punct punct.no =
+ { skip$ }
+ { add.period$ }
+ if$
+ this.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+write$
+newline$
+}
+
+
+FUNCTION {is.last.char.not.punct}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {is.multiple.pages}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {do.name.latex.cmd}
+{ name.latex.cmd
+ empty$
+ { skip$ }
+ { name.latex.cmd "{" * swap$ * "}" * }
+ if$
+}
+
+% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
+% invokes the TeX hyphenation patterns without the need of the Babel
+% package. Babel does a lot more than switch hyphenation patterns and
+% its loading can cause unintended effects in many class files (such as
+% IEEEtran.cls).
+FUNCTION {select.language}
+{ duplicate$ empty$ 'pop$
+ { language empty$ 'skip$
+ { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {space.word}{ " " swap$ * " " * }
+
+
+% Field Conditioners, Converters, Checkers and External Interfaces
+
+FUNCTION {empty.field.to.null.string}
+{ duplicate$ empty$
+ { pop$ "" }
+ { skip$ }
+ if$
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ { pop$ }
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {empty.entry.warn}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$ url empty$
+ and and and and and and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+
+% The bibinfo system provides a way for the electronic parsing/acquisition
+% of a bibliography's contents as is done by ReVTeX. For example, a field
+% could be entered into the bibliography as:
+% \bibinfo{volume}{2}
+% Only the "2" would show up in the document, but the LaTeX \bibinfo command
+% could do additional things with the information. IEEEtran.bst does provide
+% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
+% currently not used as the bogus bibinfo functions defined here output the
+% entry values directly without the \bibinfo wrapper. The bibinfo functions
+% themselves (and the calls to them) are retained for possible future use.
+%
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+
+FUNCTION {bibinfo.check}
+{ swap$ duplicate$ missing$
+ { pop$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ pop$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {bibinfo.warn}
+{ swap$ duplicate$ missing$
+ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ "empty " swap$ * " in " * cite$ * warning$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+
+% The IEEE separates large numbers with more than 4 digits into groups of
+% three. The IEEE uses a small space to separate these number groups.
+% Typical applications include patent and page numbers.
+
+% number of consecutive digits required to trigger the group separation.
+FUNCTION {large.number.trigger}{ #5 }
+
+% For numbers longer than the trigger, this is the blocksize of the groups.
+% The blocksize must be less than the trigger threshold, and 2 * blocksize
+% must be greater than the trigger threshold (can't do more than one
+% separation on the initial trigger).
+FUNCTION {large.number.blocksize}{ #3 }
+
+% What is actually inserted between the number groups.
+FUNCTION {large.number.separator}{ "\," }
+
+% So as to save on integer variables by reusing existing ones, numnames
+% holds the current number of consecutive digits read and nameptr holds
+% the number that will trigger an inserted space.
+FUNCTION {large.number.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { numnames #1 + 'numnames := }
+ { #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames nameptr =
+ { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
+ nameptr large.number.blocksize - #1 + global.max$ substring$
+ large.number.separator swap$ * *
+ nameptr large.number.blocksize - 'numnames :=
+ large.number.blocksize #1 + 'nameptr :=
+ }
+ { skip$ }
+ if$
+ }
+ while$
+}
+
+% Converts all single dashes "-" to double dashes "--".
+FUNCTION {n.dashify}
+{ large.number.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+
+% This function detects entries with names that are identical to that of
+% the previous entry and replaces the repeated names with dashes (if the
+% "is.dash.repeated.names" user control is nonzero).
+FUNCTION {name.or.dash}
+{ 's :=
+ oldname empty$
+ { s 'oldname := s }
+ { s oldname =
+ { is.dash.repeated.names
+ { repeated.name.dashes }
+ { s 'oldname := s }
+ if$
+ }
+ { s 'oldname := s }
+ if$
+ }
+ if$
+}
+
+% Converts the number string on the top of the stack to
+% "numerical ordinal form" (e.g., "7" to "7th"). There is
+% no artificial limit to the upper bound of the numbers as the
+% two least significant digits determine the ordinal form.
+FUNCTION {num.to.ordinal}
+{ duplicate$ #-2 #1 substring$ "1" =
+ { bbl.th * }
+ { duplicate$ #-1 #1 substring$ "1" =
+ { bbl.st * }
+ { duplicate$ #-1 #1 substring$ "2" =
+ { bbl.nd * }
+ { duplicate$ #-1 #1 substring$ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% If the string on the top of the stack begins with a number,
+% (e.g., 11th) then replace the string with the leading number
+% it contains. Otherwise retain the string as-is. s holds the
+% extracted number, t holds the part of the string that remains
+% to be scanned.
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+% Converts the word number string on the top of the stack to
+% Arabic string form. Will be successful up to "tenth".
+FUNCTION {word.to.num}
+{ duplicate$ "l" change.case$ 's :=
+ s "first" =
+ { pop$ "1" }
+ { skip$ }
+ if$
+ s "second" =
+ { pop$ "2" }
+ { skip$ }
+ if$
+ s "third" =
+ { pop$ "3" }
+ { skip$ }
+ if$
+ s "fourth" =
+ { pop$ "4" }
+ { skip$ }
+ if$
+ s "fifth" =
+ { pop$ "5" }
+ { skip$ }
+ if$
+ s "sixth" =
+ { pop$ "6" }
+ { skip$ }
+ if$
+ s "seventh" =
+ { pop$ "7" }
+ { skip$ }
+ if$
+ s "eighth" =
+ { pop$ "8" }
+ { skip$ }
+ if$
+ s "ninth" =
+ { pop$ "9" }
+ { skip$ }
+ if$
+ s "tenth" =
+ { pop$ "10" }
+ { skip$ }
+ if$
+}
+
+
+% Converts the string on the top of the stack to numerical
+% ordinal (e.g., "11th") form.
+FUNCTION {convert.edition}
+{ duplicate$ empty$ 'skip$
+ { duplicate$ #1 #1 substring$ is.num
+ { extract.num
+ num.to.ordinal
+ }
+ { word.to.num
+ duplicate$ #1 #1 substring$ is.num
+ { num.to.ordinal }
+ { "edition ordinal word " quote$ * edition * quote$ *
+ " may be too high (or improper) for conversion" * " in " * cite$ * warning$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LATEX BIBLIOGRAPHY CODE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {start.entry}
+{ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ initialize.prev.this.status
+}
+
+% Here we write out all the LaTeX code that we will need. The most involved
+% code sequences are those that control the alternate interword spacing and
+% foreign language hyphenation patterns. The heavy use of \providecommand
+% gives users a way to override the defaults. Special thanks to Javier Bezos,
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
+% the other gurus on comp.text.tex for their help and advice on the topic of
+% \selectlanguage, Babel and BibTeX.
+FUNCTION {begin.bib}
+{ "% Generated by IEEEtranS.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ preamble$ empty$ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" *
+ write$ newline$
+ "\providecommand{\url}[1]{#1}"
+ write$ newline$
+ "\csname url@samestyle\endcsname"
+ write$ newline$
+ "\providecommand{\newblock}{\relax}"
+ write$ newline$
+ "\providecommand{\bibinfo}[2]{#2}"
+ write$ newline$
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
+ write$ newline$
+ "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
+ write$ newline$
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
+ write$ newline$
+ "\expandafter\ifx\csname l@#1\endcsname\relax"
+ write$ newline$
+ "\typeout{** WARNING: IEEEtranS.bst: No hyphenation pattern has been}%"
+ write$ newline$
+ "\typeout{** loaded for the language `#1'. Using the pattern for}%"
+ write$ newline$
+ "\typeout{** the default language instead.}%"
+ write$ newline$
+ "\else"
+ write$ newline$
+ "\language=\csname l@#1\endcsname"
+ write$ newline$
+ "\fi"
+ write$ newline$
+ "#2}}"
+ write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$ "\end{thebibliography}" write$ newline$ }
+
+FUNCTION {if.url.alt.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {if.url.std.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% LONGEST LABEL PASS %%
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #1 'number.label :=
+ #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ { skip$ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%% FORMAT HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%%
+
+%% Lower Level Formats (used by higher level formats)
+
+FUNCTION {format.address.org.or.pub.date}
+{ 't :=
+ ""
+ year empty$
+ { "empty year in " cite$ * warning$ }
+ { skip$ }
+ if$
+ address empty$ t empty$ and
+ year empty$ and month empty$ and
+ { skip$ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ address "address" bibinfo.check *
+ t empty$
+ { skip$ }
+ { punct.period 'prev.status.punct :=
+ space.large 'prev.status.space :=
+ address empty$
+ { skip$ }
+ { ": " * }
+ if$
+ t *
+ }
+ if$
+ year empty$ month empty$ and
+ { skip$ }
+ { t empty$ address empty$ and
+ { skip$ }
+ { ", " * }
+ if$
+ month empty$
+ { year empty$
+ { skip$ }
+ { year "year" bibinfo.check * }
+ if$
+ }
+ { month "month" bibinfo.check *
+ year empty$
+ { skip$ }
+ { " " * year "year" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ this.to.prev.status
+ this.status.std
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ name.format.string
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ { nameptr num.names.shown.with.forced.et.al #1 + =
+ numnames max.num.names.before.forced.et.al >
+ is.forced.et.al and and
+ { "others" 't :=
+ #1 'namesleft :=
+ }
+ { skip$ }
+ if$
+ namesleft #1 >
+ { ", " * t do.name.latex.cmd * }
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
+ bbl.and
+ space.word * t do.name.latex.cmd *
+ }
+ if$
+ }
+ if$
+ }
+ { t do.name.latex.cmd }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ cap.status.std
+ } if$
+}
+
+
+
+
+%% Higher Level Formats
+
+%% addresses/locations
+
+FUNCTION {format.address}
+{ address duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% author/editor names
+
+FUNCTION {format.authors}{ author "author" format.names }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ { ", " *
+ get.bbl.editor
+ capitalize
+ *
+ }
+ if$
+}
+
+
+
+%% date
+
+FUNCTION {format.date}
+{
+ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "there's a month but no year in " cite$ * warning$ }
+ if$
+ *
+ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ swap$ 'skip$
+ {
+ swap$
+ " " * swap$
+ }
+ if$
+ *
+ }
+ if$
+}
+
+FUNCTION {format.date.electronic}
+{ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$
+ { pop$ }
+ { "there's a month but no year in " cite$ * warning$
+ pop$ ")" * "(" swap$ *
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+ }
+ { swap$
+ { swap$ pop$ ")" * "(" swap$ * }
+ { "(" swap$ * ", " * swap$ * ")" * }
+ if$
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% edition/title
+
+% Note: The IEEE considers the edition to be closely associated with
+% the title of a book. So, in IEEEtran.bst the edition is normally handled
+% within the formatting of the title. The format.edition function is
+% retained here for possible future use.
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$ change.case$
+ "edition" bibinfo.check
+ "~" * bbl.edition *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of a conference proceedings.
+% Here we use the "intype" field to provide the user a way to
+% override the word "in" (e.g., with things like "presented at")
+% Use of intype stops the emphasis of the booktitle to indicate that
+% we no longer mean the written conference proceedings, but the
+% conference itself.
+FUNCTION {format.in.booktitle}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ intype missing$
+ { emphasize
+ bbl.in " " *
+ }
+ { intype " " * }
+ if$
+ swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of collection.
+% Here the "intype" field is not supported, but "edition" is.
+FUNCTION {format.in.booktitle.edition}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ "l" change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ bbl.in " " * swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { quote.close 'this.status.quote :=
+ is.last.char.not.punct
+ { punct.std 'this.status.punct := }
+ { punct.no 'this.status.punct := }
+ if$
+ select.language
+ "``" swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title.electronic}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$
+ { skip$ }
+ { select.language }
+ if$
+}
+
+FUNCTION {format.book.title.edition}
+{ title "title" bibinfo.check
+ duplicate$ empty$
+ { "empty title in " cite$ * warning$ }
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$
+ change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.book.title}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% journal
+
+FUNCTION {format.journal}
+{ journal duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% how published
+
+FUNCTION {format.howpublished}
+{ howpublished duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% institutions/organization/publishers/school
+
+FUNCTION {format.institution}
+{ institution duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.organization}
+{ organization duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.address.publisher.date}
+{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
+
+FUNCTION {format.address.publisher.date.nowarn}
+{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.address.organization.date}
+{ organization "organization" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.school}
+{ school duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% volume/number/series/chapter/pages
+
+FUNCTION {format.volume}
+{ volume empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ bbl.volume
+ status.cap
+ { capitalize }
+ { skip$ }
+ if$
+ swap$ tie.or.space.prefix
+ "volume" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number}
+{ number empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ status.cap
+ { bbl.number capitalize }
+ { bbl.number }
+ if$
+ swap$ tie.or.space.prefix
+ "number" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number.if.use.for.article}
+{ is.use.number.for.article
+ { format.number }
+ { "" }
+ if$
+}
+
+% The IEEE does not seem to tie the series so closely with the volume
+% and number as is done in other bibliography styles. Instead the
+% series is treated somewhat like an extension of the title.
+FUNCTION {format.series}
+{ series empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.series " " *
+ series "series" bibinfo.check *
+ cap.status.std
+ }
+ if$
+}
+
+
+FUNCTION {format.chapter}
+{ chapter empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+% The intended use of format.paper is for paper numbers of inproceedings.
+% The paper type can be overridden via the type field.
+% We allow the type to be displayed even if the paper number is absent
+% for things like "postdeadline paper"
+FUNCTION {format.paper}
+{ is.use.paper
+ { paper empty$
+ { type empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type "type" bibinfo.check
+ cap.status.std
+ }
+ if$
+ }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.paper }
+ { type "type" bibinfo.check }
+ if$
+ " " * paper
+ "paper" bibinfo.check
+ *
+ cap.status.std
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ duplicate$ is.multiple.pages
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% technical report number
+
+FUNCTION {format.tech.report.number}
+{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
+ type duplicate$ empty$
+ { pop$
+ bbl.techrep
+ }
+ { skip$ }
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+
+
+
+%% note
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ punct.period 'this.status.punct :=
+ note #1 #1 substring$
+ duplicate$ "{" =
+ { skip$ }
+ { status.cap
+ { "u" }
+ { "l" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% patent
+
+FUNCTION {format.patent.date}
+{ this.to.prev.status
+ this.status.std
+ year empty$
+ { monthfiled duplicate$ empty$
+ { "monthfiled" bibinfo.check pop$ "" }
+ { "monthfiled" bibinfo.check }
+ if$
+ dayfiled duplicate$ empty$
+ { "dayfiled" bibinfo.check pop$ "" * }
+ { "dayfiled" bibinfo.check
+ monthfiled empty$
+ { "dayfiled without a monthfiled in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ yearfiled empty$
+ { "no year or yearfiled in " cite$ * warning$ }
+ { yearfiled "yearfiled" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ }
+ { month duplicate$ empty$
+ { "month" bibinfo.check pop$ "" }
+ { "month" bibinfo.check }
+ if$
+ day duplicate$ empty$
+ { "day" bibinfo.check pop$ "" * }
+ { "day" bibinfo.check
+ month empty$
+ { "day without a month in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ year "year" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.patent.nationality.type.number}
+{ this.to.prev.status
+ this.status.std
+ nationality duplicate$ empty$
+ { "nationality" bibinfo.warn pop$ "" }
+ { "nationality" bibinfo.check
+ duplicate$ "l" change.case$ "united states" =
+ { pop$ bbl.patentUS }
+ { skip$ }
+ if$
+ " " *
+ }
+ if$
+ type empty$
+ { bbl.patent "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.warn pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+
+
+%% standard
+
+FUNCTION {format.organization.institution.standard.type.number}
+{ this.to.prev.status
+ this.status.std
+ organization duplicate$ empty$
+ { pop$
+ institution duplicate$ empty$
+ { "institution" bibinfo.warn }
+ { "institution" bibinfo.warn " " * }
+ if$
+ }
+ { "organization" bibinfo.warn " " * }
+ if$
+ type empty$
+ { bbl.standard "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.check pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.revision}
+{ revision empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.revision
+ revision tie.or.space.prefix
+ "revision" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+%% thesis
+
+FUNCTION {format.master.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.mthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+FUNCTION {format.phd.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.phdthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+
+
+%% URL
+%%
+FUNCTION {format.url}
+{ is.use.url
+ { url empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ cap.yes 'status.cap :=
+ name.url.prefix " " *
+ "\url{" * url * "}" *
+ punct.no 'this.status.punct :=
+ punct.period 'prev.status.punct :=
+ space.normal 'this.status.space :=
+ space.normal 'prev.status.space :=
+ quote.no 'this.status.quote :=
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% ENTRY HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%
+
+
+% Note: In many journals, the IEEE (or the authors) tend not to show the number
+% for articles, so the display of the number is controlled here by the
+% switch "is.use.number.for.article"
+FUNCTION {article}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.journal "journal" bibinfo.check "journal" output.warn
+ format.volume output
+ format.number.if.use.for.article output
+ format.pages output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {book}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ author empty$
+ { skip$ }
+ { format.editors output }
+ if$
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {booklet}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {electronic}
+{ std.status.using.period
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.date.electronic output
+ format.article.title.electronic output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inbook}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {incollection}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle.edition "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.address.publisher.date.nowarn output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inproceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.paper output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {manual}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title.edition "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {mastersthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.master.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {misc}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.pages output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {patent}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.patent.nationality.type.number output
+ format.patent.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {periodical}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ format.organization "organization" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {phdthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.phd.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {proceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {standard}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization.institution.standard.type.number output
+ format.revision output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {techreport}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.institution "institution" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.tech.report.number output.nonnull
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {unpublished}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.date output
+ format.note "note" output.warn
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+
+% The special entry type which provides the user interface to the
+% BST controls
+FUNCTION {IEEEtranBSTCTL}
+{ is.print.banners.to.terminal
+ { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
+ top$
+ }
+ { skip$ }
+ if$
+ CTLuse_article_number
+ empty$
+ { skip$ }
+ { CTLuse_article_number
+ yes.no.to.int
+ 'is.use.number.for.article :=
+ }
+ if$
+ CTLuse_paper
+ empty$
+ { skip$ }
+ { CTLuse_paper
+ yes.no.to.int
+ 'is.use.paper :=
+ }
+ if$
+ CTLuse_url
+ empty$
+ { skip$ }
+ { CTLuse_url
+ yes.no.to.int
+ 'is.use.url :=
+ }
+ if$
+ CTLuse_forced_etal
+ empty$
+ { skip$ }
+ { CTLuse_forced_etal
+ yes.no.to.int
+ 'is.forced.et.al :=
+ }
+ if$
+ CTLmax_names_forced_etal
+ empty$
+ { skip$ }
+ { CTLmax_names_forced_etal
+ string.to.integer
+ 'max.num.names.before.forced.et.al :=
+ }
+ if$
+ CTLnames_show_etal
+ empty$
+ { skip$ }
+ { CTLnames_show_etal
+ string.to.integer
+ 'num.names.shown.with.forced.et.al :=
+ }
+ if$
+ CTLuse_alt_spacing
+ empty$
+ { skip$ }
+ { CTLuse_alt_spacing
+ yes.no.to.int
+ 'is.use.alt.interword.spacing :=
+ }
+ if$
+ CTLalt_stretch_factor
+ empty$
+ { skip$ }
+ { CTLalt_stretch_factor
+ 'ALTinterwordstretchfactor :=
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ }
+ if$
+ CTLdash_repeated_names
+ empty$
+ { skip$ }
+ { CTLdash_repeated_names
+ yes.no.to.int
+ 'is.dash.repeated.names :=
+ }
+ if$
+ CTLname_format_string
+ empty$
+ { skip$ }
+ { CTLname_format_string
+ 'name.format.string :=
+ }
+ if$
+ CTLname_latex_cmd
+ empty$
+ { skip$ }
+ { CTLname_latex_cmd
+ 'name.latex.cmd :=
+ }
+ if$
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
+ num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
+ { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
+ max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
+ }
+ { skip$ }
+ if$
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+%% ENTRY ALIASES %%
+%%%%%%%%%%%%%%%%%%%
+FUNCTION {conference}{inproceedings}
+FUNCTION {online}{electronic}
+FUNCTION {internet}{electronic}
+FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
+FUNCTION {default.type}{misc}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% MAIN PROGRAM %%
+%%%%%%%%%%%%%%%%%%
+
+READ
+
+EXECUTE {initialize.controls}
+EXECUTE {initialize.status.constants}
+EXECUTE {banner.message}
+
+
+
+% BEGIN sort code based on that of plain.bst
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ { skip$ }
+ if$
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { "et al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ bbl.a " " * #2
+ bbl.an " " * #3
+ bbl.the " " * #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.institution.sort}
+{ author empty$
+ { organization empty$
+ { institution empty$
+ { key empty$
+ { "to sort, need author, organization, institution or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { bbl.the " " * #4 institution chop.word sortify }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ }
+ { type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.sort }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.organization.sort }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.organization.sort }
+ { type$ "standard" =
+ { author.organization.institution.sort }
+ { author.sort }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string sortify
+ *
+ " "
+ *
+ title empty.field.to.null.string
+ sort.format.title
+ *
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+% END sort code based on that of plain.bst
+
+
+
+EXECUTE {initialize.longest.label}
+ITERATE {longest.label.pass}
+
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
+EXECUTE{completed.message}
+
+
+%% That's all folks, mds.
diff --git a/macros/latex/contrib/IEEEtran/bibtex/IEEEtranSA.bst b/macros/latex/contrib/IEEEtran/bibtex/IEEEtranSA.bst
new file mode 100644
index 0000000000..9918a69bc8
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/IEEEtranSA.bst
@@ -0,0 +1,2806 @@
+%%
+%% IEEEtranSA.bst
+%% BibTeX Bibliography Style file
+%% Sorting alpha version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
+%% Version 1.14 (2015/08/26)
+%%
+%% Copyright (c) 2003-2015 Michael Shell
+%%
+%% Original starting code base and algorithms obtained from the output of
+%% Patrick W. Daly's makebst package as well as from prior versions of
+%% IEEE BibTeX styles:
+%%
+%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
+%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
+%%
+%% Added sorting code is from plain.bst, alpha code is from alpha.bst.
+%%
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and/or
+%% http://www.ieee.org/
+%%
+%% For use with BibTeX version 0.99a or later
+%%
+%% This is an alpha citation style.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are the defaults for the user adjustable controls. The values used
+% here can be overridden by the user via IEEEtranBSTCTL entry type.
+
+% NOTE: The recommended LaTeX command to invoke a control entry type is:
+%
+%\makeatletter
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
+% \edef\@citeb{\expandafter\@firstofone\@citeb}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+% \@esphack}
+%\makeatother
+%
+% It is called at the start of the document, before the first \cite, like:
+% \bstctlcite{IEEEexample:BSTcontrol}
+%
+% IEEEtran.cls V1.6 and later does provide this command.
+
+
+
+% #0 turns off the display of the number for articles.
+% #1 enables
+FUNCTION {default.is.use.number.for.article} { #1 }
+
+
+% #0 turns off the display of the paper and type fields in @inproceedings.
+% #1 enables
+FUNCTION {default.is.use.paper} { #1 }
+
+
+% #0 turns off the display of urls
+% #1 enables
+FUNCTION {default.is.use.url} { #1 }
+
+
+% #0 turns off the forced use of "et al."
+% #1 enables
+FUNCTION {default.is.forced.et.al} { #0 }
+
+
+% The maximum number of names that can be present beyond which an "et al."
+% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
+% is not greater than this value!
+% Note: There are many instances of references in IEEE journals which have
+% a very large number of authors as well as instances in which "et al." is
+% used profusely.
+FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
+
+
+% The number of names that will be shown with a forced "et al.".
+% Must be less than or equal to max.num.names.before.forced.et.al
+FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
+
+
+% #0 turns off the alternate interword spacing for entries with URLs.
+% #1 enables
+FUNCTION {default.is.use.alt.interword.spacing} { #1 }
+
+
+% If alternate interword spacing for entries with URLs is enabled, this is
+% the interword spacing stretch factor that will be used. For example, the
+% default "4" here means that the interword spacing in entries with URLs can
+% stretch to four times normal. Does not have to be an integer. Note that
+% the value specified here can be overridden by the user in their LaTeX
+% code via a command such as:
+% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
+% that via the IEEEtranBSTCTL entry type.
+FUNCTION {default.ALTinterwordstretchfactor} { "4" }
+
+
+% #0 turns off the "dashification" of repeated (i.e., identical to those
+% of the previous entry) names. The IEEE normally does this.
+% #1 enables
+FUNCTION {default.is.dash.repeated.names} { #1 }
+
+
+% The default name format control string.
+FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
+
+
+% The default LaTeX font command for the names.
+FUNCTION {default.name.latex.cmd}{ "" }
+
+
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
+% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
+
+% #0 turns off the terminal startup banner/completed message so as to
+% operate more quietly.
+% #1 enables
+FUNCTION {is.print.banners.to.terminal} { #1 }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FILE VERSION AND BANNER %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION{bst.file.version} { "1.14" }
+FUNCTION{bst.file.date} { "2015/08/26" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
+
+FUNCTION {banner.message}
+{ is.print.banners.to.terminal
+ { "-- IEEEtranSA.bst version" " " * bst.file.version *
+ " (" * bst.file.date * ") " * "by Michael Shell." *
+ top$
+ "-- " bst.file.website *
+ top$
+ "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
+ top$
+ "** Sorting Alpha version - not for normal IEEE work."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {completed.message}
+{ is.print.banners.to.terminal
+ { ""
+ top$
+ "Done."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING CONSTANTS %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {bbl.a}{ "A" }
+FUNCTION {bbl.an}{ "An" }
+FUNCTION {bbl.and}{ "and" }
+FUNCTION {bbl.etal}{ "et~al." }
+FUNCTION {bbl.editors}{ "eds." }
+FUNCTION {bbl.editor}{ "ed." }
+FUNCTION {bbl.edition}{ "ed." }
+FUNCTION {bbl.volume}{ "vol." }
+FUNCTION {bbl.of}{ "of" }
+FUNCTION {bbl.number}{ "no." }
+FUNCTION {bbl.in}{ "in" }
+FUNCTION {bbl.pages}{ "pp." }
+FUNCTION {bbl.page}{ "p." }
+FUNCTION {bbl.chapter}{ "ch." }
+FUNCTION {bbl.paper}{ "paper" }
+FUNCTION {bbl.part}{ "pt." }
+FUNCTION {bbl.patent}{ "Patent" }
+FUNCTION {bbl.patentUS}{ "U.S." }
+FUNCTION {bbl.revision}{ "Rev." }
+FUNCTION {bbl.series}{ "ser." }
+FUNCTION {bbl.standard}{ "Std." }
+FUNCTION {bbl.techrep}{ "Tech. Rep." }
+FUNCTION {bbl.the}{ "The" }
+FUNCTION {bbl.mthesis}{ "Master's thesis" }
+FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
+FUNCTION {bbl.st}{ "st" }
+FUNCTION {bbl.nd}{ "nd" }
+FUNCTION {bbl.rd}{ "rd" }
+FUNCTION {bbl.th}{ "th" }
+
+
+% This is the LaTeX spacer that is used when a larger than normal space
+% is called for (such as just before the address:publisher).
+FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
+
+% The LaTeX code for dashes that are used to represent repeated names.
+% Note: Some older IEEE journals used something like
+% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
+% the baseline. However, the IEEE now uses a thinner, above baseline,
+% six dash long sequence.
+FUNCTION {repeated.name.dashes} { "------" }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PREDEFINED STRING MACROS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sep."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% ENTRY FIELDS %%
+%%%%%%%%%%%%%%%%%%
+
+ENTRY
+ { address
+ assignee
+ author
+ booktitle
+ chapter
+ day
+ dayfiled
+ edition
+ editor
+ howpublished
+ institution
+ intype
+ journal
+ key
+ language
+ month
+ monthfiled
+ nationality
+ note
+ number
+ organization
+ pages
+ paper
+ publisher
+ school
+ series
+ revision
+ title
+ type
+ url
+ volume
+ year
+ yearfiled
+ CTLuse_article_number
+ CTLuse_paper
+ CTLuse_url
+ CTLuse_forced_etal
+ CTLmax_names_forced_etal
+ CTLnames_show_etal
+ CTLuse_alt_spacing
+ CTLalt_stretch_factor
+ CTLdash_repeated_names
+ CTLname_format_string
+ CTLname_latex_cmd
+ CTLname_url_prefix
+ }
+ {}
+ { label extra.label sort.label }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% INTEGER VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+INTEGERS { prev.status.punct this.status.punct punct.std
+ punct.no punct.comma punct.period
+ prev.status.space this.status.space space.std
+ space.no space.normal space.large
+ prev.status.quote this.status.quote quote.std
+ quote.no quote.close
+ prev.status.nline this.status.nline nline.std
+ nline.no nline.newblock
+ status.cap cap.std
+ cap.no cap.yes}
+
+INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
+
+INTEGERS { is.use.number.for.article
+ is.use.paper
+ is.use.url
+ is.forced.et.al
+ max.num.names.before.forced.et.al
+ num.names.shown.with.forced.et.al
+ is.use.alt.interword.spacing
+ is.dash.repeated.names}
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+STRINGS { bibinfo
+ longest.label
+ oldname
+ s
+ t
+ ALTinterwordstretchfactor
+ name.format.string
+ name.latex.cmd
+ name.url.prefix}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOW LEVEL FUNCTIONS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.controls}
+{ default.is.use.number.for.article 'is.use.number.for.article :=
+ default.is.use.paper 'is.use.paper :=
+ default.is.use.url 'is.use.url :=
+ default.is.forced.et.al 'is.forced.et.al :=
+ default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
+ default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
+ default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
+ default.is.dash.repeated.names 'is.dash.repeated.names :=
+ default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
+ default.name.format.string 'name.format.string :=
+ default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
+}
+
+
+% This IEEEtran.bst features a very powerful and flexible mechanism for
+% controlling the capitalization, punctuation, spacing, quotation, and
+% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
+% or use the newline/newblock feature, but it has been implemented for
+% possible future use.) The output states of IEEEtran.bst consist of
+% multiple independent attributes and, as such, can be thought of as being
+% vectors, rather than the simple scalar values ("before.all",
+% "mid.sentence", etc.) used in most other .bst files.
+%
+% The more flexible and complex design used here was motivated in part by
+% the IEEE's rather unusual bibliography style. For example, the IEEE ends the
+% previous field item with a period and large space prior to the publisher
+% address; the @electronic entry types use periods as inter-item punctuation
+% rather than the commas used by the other entry types; and URLs are never
+% followed by periods even though they are the last item in the entry.
+% Although it is possible to accommodate these features with the conventional
+% output state system, the seemingly endless exceptions make for convoluted,
+% unreliable and difficult to maintain code.
+%
+% IEEEtran.bst's output state system can be easily understood via a simple
+% illustration of two most recently formatted entry fields (on the stack):
+%
+% CURRENT_ITEM
+% "PREVIOUS_ITEM
+%
+% which, in this example, is to eventually appear in the bibliography as:
+%
+% "PREVIOUS_ITEM," CURRENT_ITEM
+%
+% It is the job of the output routine to take the previous item off of the
+% stack (while leaving the current item at the top of the stack), apply its
+% trailing punctuation (including closing quote marks) and spacing, and then
+% to write the result to BibTeX's output buffer:
+%
+% "PREVIOUS_ITEM,"
+%
+% Punctuation (and spacing) between items is often determined by both of the
+% items rather than just the first one. The presence of quotation marks
+% further complicates the situation because, in standard English, trailing
+% punctuation marks are supposed to be contained within the quotes.
+%
+% IEEEtran.bst maintains two output state (aka "status") vectors which
+% correspond to the previous and current (aka "this") items. Each vector
+% consists of several independent attributes which track punctuation,
+% spacing, quotation, and newlines. Capitalization status is handled by a
+% separate scalar because the format routines, not the output routine,
+% handle capitalization and, therefore, there is no need to maintain the
+% capitalization attribute for both the "previous" and "this" items.
+%
+% When a format routine adds a new item, it copies the current output status
+% vector to the previous output status vector and (usually) resets the
+% current (this) output status vector to a "standard status" vector. Using a
+% "standard status" vector in this way allows us to redefine what we mean by
+% "standard status" at the start of each entry handler and reuse the same
+% format routines under the various inter-item separation schemes. For
+% example, the standard status vector for the @book entry type may use
+% commas for item separators, while the @electronic type may use periods,
+% yet both entry handlers exploit many of the exact same format routines.
+%
+% Because format routines have write access to the output status vector of
+% the previous item, they can override the punctuation choices of the
+% previous format routine! Therefore, it becomes trivial to implement rules
+% such as "Always use a period and a large space before the publisher." By
+% pushing the generation of the closing quote mark to the output routine, we
+% avoid all the problems caused by having to close a quote before having all
+% the information required to determine what the punctuation should be.
+%
+% The IEEEtran.bst output state system can easily be expanded if needed.
+% For instance, it is easy to add a "space.tie" attribute value if the
+% bibliography rules mandate that two items have to be joined with an
+% unbreakable space.
+
+FUNCTION {initialize.status.constants}
+{ #0 'punct.no :=
+ #1 'punct.comma :=
+ #2 'punct.period :=
+ #0 'space.no :=
+ #1 'space.normal :=
+ #2 'space.large :=
+ #0 'quote.no :=
+ #1 'quote.close :=
+ #0 'cap.no :=
+ #1 'cap.yes :=
+ #0 'nline.no :=
+ #1 'nline.newblock :=
+}
+
+FUNCTION {std.status.using.comma}
+{ punct.comma 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.no 'cap.std :=
+}
+
+FUNCTION {std.status.using.period}
+{ punct.period 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.yes 'cap.std :=
+}
+
+FUNCTION {initialize.prev.this.status}
+{ punct.no 'prev.status.punct :=
+ space.no 'prev.status.space :=
+ quote.no 'prev.status.quote :=
+ nline.no 'prev.status.nline :=
+ punct.no 'this.status.punct :=
+ space.no 'this.status.space :=
+ quote.no 'this.status.quote :=
+ nline.no 'this.status.nline :=
+ cap.yes 'status.cap :=
+}
+
+FUNCTION {this.status.std}
+{ punct.std 'this.status.punct :=
+ space.std 'this.status.space :=
+ quote.std 'this.status.quote :=
+ nline.std 'this.status.nline :=
+}
+
+FUNCTION {cap.status.std}{ cap.std 'status.cap := }
+
+FUNCTION {this.to.prev.status}
+{ this.status.punct 'prev.status.punct :=
+ this.status.space 'prev.status.space :=
+ this.status.quote 'prev.status.quote :=
+ this.status.nline 'prev.status.nline :=
+}
+
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ { skip$ }
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ { skip$ }
+ if$
+}
+
+
+% convert the strings "yes" or "no" to #1 or #0 respectively
+FUNCTION {yes.no.to.int}
+{ "l" change.case$ duplicate$
+ "yes" =
+ { pop$ #1 }
+ { duplicate$ "no" =
+ { pop$ #0 }
+ { "unknown boolean " quote$ * swap$ * quote$ *
+ " in " * cite$ * warning$
+ #0
+ }
+ if$
+ }
+ if$
+}
+
+
+% pushes true if the single char string on the stack is in the
+% range of "0" to "9"
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+% multiplies the integer on the stack by a factor of 10
+FUNCTION {bump.int.mag}
+{ #0 'multiresult :=
+ { duplicate$ #0 > }
+ { #1 -
+ multiresult #10 +
+ 'multiresult :=
+ }
+ while$
+pop$
+multiresult
+}
+
+% converts a single character string on the stack to an integer
+FUNCTION {char.to.integer}
+{ duplicate$
+ is.num
+ { chr.to.int$ "0" chr.to.int$ - }
+ {"noninteger character " quote$ * swap$ * quote$ *
+ " in integer field of " * cite$ * warning$
+ #0
+ }
+ if$
+}
+
+% converts a string on the stack to an integer
+FUNCTION {string.to.integer}
+{ duplicate$ text.length$ 'namesleft :=
+ #1 'nameptr :=
+ #0 'numnames :=
+ { nameptr namesleft > not }
+ { duplicate$ nameptr #1 substring$
+ char.to.integer numnames bump.int.mag +
+ 'numnames :=
+ nameptr #1 +
+ 'nameptr :=
+ }
+ while$
+pop$
+numnames
+}
+
+
+
+
+% The output routines write out the *next* to the top (previous) item on the
+% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
+% the output status for the top two items on the stack, these output
+% routines have to consider the previous output status (which corresponds to
+% the item that is being output). Full independent control of punctuation,
+% closing quote marks, spacing, and newblock is provided.
+%
+% "output.nonnull" does not check for the presence of a previous empty
+% item.
+%
+% "output" does check for the presence of a previous empty item and will
+% remove an empty item rather than outputing it.
+%
+% "output.warn" is like "output", but will issue a warning if it detects
+% an empty item.
+
+FUNCTION {output.nonnull}
+{ swap$
+ prev.status.punct punct.comma =
+ { "," * }
+ { skip$ }
+ if$
+ prev.status.punct punct.period =
+ { add.period$ }
+ { skip$ }
+ if$
+ prev.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+ prev.status.space space.normal =
+ { " " * }
+ { skip$ }
+ if$
+ prev.status.space space.large =
+ { large.space * }
+ { skip$ }
+ if$
+ write$
+ prev.status.nline nline.newblock =
+ { newline$ "\newblock " write$ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.warn}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+% "fin.entry" is the output routine that handles the last item of the entry
+% (which will be on the top of the stack when "fin.entry" is called).
+
+FUNCTION {fin.entry}
+{ this.status.punct punct.no =
+ { skip$ }
+ { add.period$ }
+ if$
+ this.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+write$
+newline$
+}
+
+
+FUNCTION {is.last.char.not.punct}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {is.multiple.pages}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {do.name.latex.cmd}
+{ name.latex.cmd
+ empty$
+ { skip$ }
+ { name.latex.cmd "{" * swap$ * "}" * }
+ if$
+}
+
+% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
+% invokes the TeX hyphenation patterns without the need of the Babel
+% package. Babel does a lot more than switch hyphenation patterns and
+% its loading can cause unintended effects in many class files (such as
+% IEEEtran.cls).
+FUNCTION {select.language}
+{ duplicate$ empty$ 'pop$
+ { language empty$ 'skip$
+ { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {space.word}{ " " swap$ * " " * }
+
+
+% Field Conditioners, Converters, Checkers and External Interfaces
+
+FUNCTION {empty.field.to.null.string}
+{ duplicate$ empty$
+ { pop$ "" }
+ { skip$ }
+ if$
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ { pop$ }
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {empty.entry.warn}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$ url empty$
+ and and and and and and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+
+% The bibinfo system provides a way for the electronic parsing/acquisition
+% of a bibliography's contents as is done by ReVTeX. For example, a field
+% could be entered into the bibliography as:
+% \bibinfo{volume}{2}
+% Only the "2" would show up in the document, but the LaTeX \bibinfo command
+% could do additional things with the information. IEEEtran.bst does provide
+% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
+% currently not used as the bogus bibinfo functions defined here output the
+% entry values directly without the \bibinfo wrapper. The bibinfo functions
+% themselves (and the calls to them) are retained for possible future use.
+%
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+
+FUNCTION {bibinfo.check}
+{ swap$ duplicate$ missing$
+ { pop$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ pop$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {bibinfo.warn}
+{ swap$ duplicate$ missing$
+ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ "empty " swap$ * " in " * cite$ * warning$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+
+% The IEEE separates large numbers with more than 4 digits into groups of
+% three. The IEEE uses a small space to separate these number groups.
+% Typical applications include patent and page numbers.
+
+% number of consecutive digits required to trigger the group separation.
+FUNCTION {large.number.trigger}{ #5 }
+
+% For numbers longer than the trigger, this is the blocksize of the groups.
+% The blocksize must be less than the trigger threshold, and 2 * blocksize
+% must be greater than the trigger threshold (can't do more than one
+% separation on the initial trigger).
+FUNCTION {large.number.blocksize}{ #3 }
+
+% What is actually inserted between the number groups.
+FUNCTION {large.number.separator}{ "\," }
+
+% So as to save on integer variables by reusing existing ones, numnames
+% holds the current number of consecutive digits read and nameptr holds
+% the number that will trigger an inserted space.
+FUNCTION {large.number.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { numnames #1 + 'numnames := }
+ { #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames nameptr =
+ { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
+ nameptr large.number.blocksize - #1 + global.max$ substring$
+ large.number.separator swap$ * *
+ nameptr large.number.blocksize - 'numnames :=
+ large.number.blocksize #1 + 'nameptr :=
+ }
+ { skip$ }
+ if$
+ }
+ while$
+}
+
+% Converts all single dashes "-" to double dashes "--".
+FUNCTION {n.dashify}
+{ large.number.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+
+% This function detects entries with names that are identical to that of
+% the previous entry and replaces the repeated names with dashes (if the
+% "is.dash.repeated.names" user control is nonzero).
+FUNCTION {name.or.dash}
+{ 's :=
+ oldname empty$
+ { s 'oldname := s }
+ { s oldname =
+ { is.dash.repeated.names
+ { repeated.name.dashes }
+ { s 'oldname := s }
+ if$
+ }
+ { s 'oldname := s }
+ if$
+ }
+ if$
+}
+
+% Converts the number string on the top of the stack to
+% "numerical ordinal form" (e.g., "7" to "7th"). There is
+% no artificial limit to the upper bound of the numbers as the
+% two least significant digits determine the ordinal form.
+FUNCTION {num.to.ordinal}
+{ duplicate$ #-2 #1 substring$ "1" =
+ { bbl.th * }
+ { duplicate$ #-1 #1 substring$ "1" =
+ { bbl.st * }
+ { duplicate$ #-1 #1 substring$ "2" =
+ { bbl.nd * }
+ { duplicate$ #-1 #1 substring$ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% If the string on the top of the stack begins with a number,
+% (e.g., 11th) then replace the string with the leading number
+% it contains. Otherwise retain the string as-is. s holds the
+% extracted number, t holds the part of the string that remains
+% to be scanned.
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+% Converts the word number string on the top of the stack to
+% Arabic string form. Will be successful up to "tenth".
+FUNCTION {word.to.num}
+{ duplicate$ "l" change.case$ 's :=
+ s "first" =
+ { pop$ "1" }
+ { skip$ }
+ if$
+ s "second" =
+ { pop$ "2" }
+ { skip$ }
+ if$
+ s "third" =
+ { pop$ "3" }
+ { skip$ }
+ if$
+ s "fourth" =
+ { pop$ "4" }
+ { skip$ }
+ if$
+ s "fifth" =
+ { pop$ "5" }
+ { skip$ }
+ if$
+ s "sixth" =
+ { pop$ "6" }
+ { skip$ }
+ if$
+ s "seventh" =
+ { pop$ "7" }
+ { skip$ }
+ if$
+ s "eighth" =
+ { pop$ "8" }
+ { skip$ }
+ if$
+ s "ninth" =
+ { pop$ "9" }
+ { skip$ }
+ if$
+ s "tenth" =
+ { pop$ "10" }
+ { skip$ }
+ if$
+}
+
+
+% Converts the string on the top of the stack to numerical
+% ordinal (e.g., "11th") form.
+FUNCTION {convert.edition}
+{ duplicate$ empty$ 'skip$
+ { duplicate$ #1 #1 substring$ is.num
+ { extract.num
+ num.to.ordinal
+ }
+ { word.to.num
+ duplicate$ #1 #1 substring$ is.num
+ { num.to.ordinal }
+ { "edition ordinal word " quote$ * edition * quote$ *
+ " may be too high (or improper) for conversion" * " in " * cite$ * warning$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LATEX BIBLIOGRAPHY CODE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {start.entry}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ "]{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ initialize.prev.this.status
+}
+
+% Here we write out all the LaTeX code that we will need. The most involved
+% code sequences are those that control the alternate interword spacing and
+% foreign language hyphenation patterns. The heavy use of \providecommand
+% gives users a way to override the defaults. Special thanks to Javier Bezos,
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
+% the other gurus on comp.text.tex for their help and advice on the topic of
+% \selectlanguage, Babel and BibTeX.
+FUNCTION {begin.bib}
+{ "% Generated by IEEEtranSA.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ "\providecommand{\etalchar}[1]{$^{#1}$}"
+ write$ newline$
+ preamble$ empty$ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" *
+ write$ newline$
+ "\providecommand{\url}[1]{#1}"
+ write$ newline$
+ "\csname url@samestyle\endcsname"
+ write$ newline$
+ "\providecommand{\newblock}{\relax}"
+ write$ newline$
+ "\providecommand{\bibinfo}[2]{#2}"
+ write$ newline$
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
+ write$ newline$
+ "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
+ write$ newline$
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
+ write$ newline$
+ "\expandafter\ifx\csname l@#1\endcsname\relax"
+ write$ newline$
+ "\typeout{** WARNING: IEEEtranSA.bst: No hyphenation pattern has been}%"
+ write$ newline$
+ "\typeout{** loaded for the language `#1'. Using the pattern for}%"
+ write$ newline$
+ "\typeout{** the default language instead.}%"
+ write$ newline$
+ "\else"
+ write$ newline$
+ "\language=\csname l@#1\endcsname"
+ write$ newline$
+ "\fi"
+ write$ newline$
+ "#2}}"
+ write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$ "\end{thebibliography}" write$ newline$ }
+
+FUNCTION {if.url.alt.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {if.url.std.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%% FORMAT HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%%
+
+%% Lower Level Formats (used by higher level formats)
+
+FUNCTION {format.address.org.or.pub.date}
+{ 't :=
+ ""
+ year empty$
+ { "empty year in " cite$ * warning$ }
+ { skip$ }
+ if$
+ address empty$ t empty$ and
+ year empty$ and month empty$ and
+ { skip$ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ address "address" bibinfo.check *
+ t empty$
+ { skip$ }
+ { punct.period 'prev.status.punct :=
+ space.large 'prev.status.space :=
+ address empty$
+ { skip$ }
+ { ": " * }
+ if$
+ t *
+ }
+ if$
+ year empty$ month empty$ and
+ { skip$ }
+ { t empty$ address empty$ and
+ { skip$ }
+ { ", " * }
+ if$
+ month empty$
+ { year empty$
+ { skip$ }
+ { year "year" bibinfo.check * }
+ if$
+ }
+ { month "month" bibinfo.check *
+ year empty$
+ { skip$ }
+ { " " * year "year" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ this.to.prev.status
+ this.status.std
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ name.format.string
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ { nameptr num.names.shown.with.forced.et.al #1 + =
+ numnames max.num.names.before.forced.et.al >
+ is.forced.et.al and and
+ { "others" 't :=
+ #1 'namesleft :=
+ }
+ { skip$ }
+ if$
+ namesleft #1 >
+ { ", " * t do.name.latex.cmd * }
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
+ bbl.and
+ space.word * t do.name.latex.cmd *
+ }
+ if$
+ }
+ if$
+ }
+ { t do.name.latex.cmd }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ cap.status.std
+ } if$
+}
+
+
+
+
+%% Higher Level Formats
+
+%% addresses/locations
+
+FUNCTION {format.address}
+{ address duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% author/editor names
+
+FUNCTION {format.authors}{ author "author" format.names }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ { ", " *
+ get.bbl.editor
+ capitalize
+ *
+ }
+ if$
+}
+
+
+
+%% date
+
+FUNCTION {format.date}
+{
+ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "there's a month but no year in " cite$ * warning$ }
+ if$
+ *
+ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ swap$ 'skip$
+ {
+ swap$
+ " " * swap$
+ }
+ if$
+ *
+ }
+ if$
+}
+
+FUNCTION {format.date.electronic}
+{ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$
+ { pop$ }
+ { "there's a month but no year in " cite$ * warning$
+ pop$ ")" * "(" swap$ *
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+ }
+ { swap$
+ { swap$ pop$ ")" * "(" swap$ * }
+ { "(" swap$ * ", " * swap$ * ")" * }
+ if$
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% edition/title
+
+% Note: The IEEE considers the edition to be closely associated with
+% the title of a book. So, in IEEEtran.bst the edition is normally handled
+% within the formatting of the title. The format.edition function is
+% retained here for possible future use.
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$ change.case$
+ "edition" bibinfo.check
+ "~" * bbl.edition *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of a conference proceedings.
+% Here we use the "intype" field to provide the user a way to
+% override the word "in" (e.g., with things like "presented at")
+% Use of intype stops the emphasis of the booktitle to indicate that
+% we no longer mean the written conference proceedings, but the
+% conference itself.
+FUNCTION {format.in.booktitle}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ intype missing$
+ { emphasize
+ bbl.in " " *
+ }
+ { intype " " * }
+ if$
+ swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of collection.
+% Here the "intype" field is not supported, but "edition" is.
+FUNCTION {format.in.booktitle.edition}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ "l" change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ bbl.in " " * swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { quote.close 'this.status.quote :=
+ is.last.char.not.punct
+ { punct.std 'this.status.punct := }
+ { punct.no 'this.status.punct := }
+ if$
+ select.language
+ "``" swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title.electronic}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$
+ { skip$ }
+ { select.language }
+ if$
+}
+
+FUNCTION {format.book.title.edition}
+{ title "title" bibinfo.check
+ duplicate$ empty$
+ { "empty title in " cite$ * warning$ }
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$
+ change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.book.title}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% journal
+
+FUNCTION {format.journal}
+{ journal duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% how published
+
+FUNCTION {format.howpublished}
+{ howpublished duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% institutions/organization/publishers/school
+
+FUNCTION {format.institution}
+{ institution duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.organization}
+{ organization duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.address.publisher.date}
+{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
+
+FUNCTION {format.address.publisher.date.nowarn}
+{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.address.organization.date}
+{ organization "organization" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.school}
+{ school duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% volume/number/series/chapter/pages
+
+FUNCTION {format.volume}
+{ volume empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ bbl.volume
+ status.cap
+ { capitalize }
+ { skip$ }
+ if$
+ swap$ tie.or.space.prefix
+ "volume" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number}
+{ number empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ status.cap
+ { bbl.number capitalize }
+ { bbl.number }
+ if$
+ swap$ tie.or.space.prefix
+ "number" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number.if.use.for.article}
+{ is.use.number.for.article
+ { format.number }
+ { "" }
+ if$
+}
+
+% The IEEE does not seem to tie the series so closely with the volume
+% and number as is done in other bibliography styles. Instead the
+% series is treated somewhat like an extension of the title.
+FUNCTION {format.series}
+{ series empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.series " " *
+ series "series" bibinfo.check *
+ cap.status.std
+ }
+ if$
+}
+
+
+FUNCTION {format.chapter}
+{ chapter empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+% The intended use of format.paper is for paper numbers of inproceedings.
+% The paper type can be overridden via the type field.
+% We allow the type to be displayed even if the paper number is absent
+% for things like "postdeadline paper"
+FUNCTION {format.paper}
+{ is.use.paper
+ { paper empty$
+ { type empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type "type" bibinfo.check
+ cap.status.std
+ }
+ if$
+ }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.paper }
+ { type "type" bibinfo.check }
+ if$
+ " " * paper
+ "paper" bibinfo.check
+ *
+ cap.status.std
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ duplicate$ is.multiple.pages
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% technical report number
+
+FUNCTION {format.tech.report.number}
+{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
+ type duplicate$ empty$
+ { pop$
+ bbl.techrep
+ }
+ { skip$ }
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+
+
+
+%% note
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ punct.period 'this.status.punct :=
+ note #1 #1 substring$
+ duplicate$ "{" =
+ { skip$ }
+ { status.cap
+ { "u" }
+ { "l" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% patent
+
+FUNCTION {format.patent.date}
+{ this.to.prev.status
+ this.status.std
+ year empty$
+ { monthfiled duplicate$ empty$
+ { "monthfiled" bibinfo.check pop$ "" }
+ { "monthfiled" bibinfo.check }
+ if$
+ dayfiled duplicate$ empty$
+ { "dayfiled" bibinfo.check pop$ "" * }
+ { "dayfiled" bibinfo.check
+ monthfiled empty$
+ { "dayfiled without a monthfiled in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ yearfiled empty$
+ { "no year or yearfiled in " cite$ * warning$ }
+ { yearfiled "yearfiled" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ }
+ { month duplicate$ empty$
+ { "month" bibinfo.check pop$ "" }
+ { "month" bibinfo.check }
+ if$
+ day duplicate$ empty$
+ { "day" bibinfo.check pop$ "" * }
+ { "day" bibinfo.check
+ month empty$
+ { "day without a month in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ year "year" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.patent.nationality.type.number}
+{ this.to.prev.status
+ this.status.std
+ nationality duplicate$ empty$
+ { "nationality" bibinfo.warn pop$ "" }
+ { "nationality" bibinfo.check
+ duplicate$ "l" change.case$ "united states" =
+ { pop$ bbl.patentUS }
+ { skip$ }
+ if$
+ " " *
+ }
+ if$
+ type empty$
+ { bbl.patent "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.warn pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+
+
+%% standard
+
+FUNCTION {format.organization.institution.standard.type.number}
+{ this.to.prev.status
+ this.status.std
+ organization duplicate$ empty$
+ { pop$
+ institution duplicate$ empty$
+ { "institution" bibinfo.warn }
+ { "institution" bibinfo.warn " " * }
+ if$
+ }
+ { "organization" bibinfo.warn " " * }
+ if$
+ type empty$
+ { bbl.standard "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.check pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.revision}
+{ revision empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.revision
+ revision tie.or.space.prefix
+ "revision" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+%% thesis
+
+FUNCTION {format.master.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.mthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+FUNCTION {format.phd.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.phdthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+
+
+%% URL
+
+FUNCTION {format.url}
+{ is.use.url
+ { url empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ cap.yes 'status.cap :=
+ name.url.prefix " " *
+ "\url{" * url * "}" *
+ punct.no 'this.status.punct :=
+ punct.period 'prev.status.punct :=
+ space.normal 'this.status.space :=
+ space.normal 'prev.status.space :=
+ quote.no 'this.status.quote :=
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% ENTRY HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%
+
+
+% Note: In many journals, the IEEE (or the authors) tend not to show the number
+% for articles, so the display of the number is controlled here by the
+% switch "is.use.number.for.article"
+FUNCTION {article}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.journal "journal" bibinfo.check "journal" output.warn
+ format.volume output
+ format.number.if.use.for.article output
+ format.pages output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {book}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ author empty$
+ { skip$ }
+ { format.editors output }
+ if$
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {booklet}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {electronic}
+{ std.status.using.period
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.date.electronic output
+ format.article.title.electronic output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inbook}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {incollection}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle.edition "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.address.publisher.date.nowarn output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inproceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.paper output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {manual}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title.edition "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {mastersthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.master.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {misc}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.pages output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {patent}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.patent.nationality.type.number output
+ format.patent.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {periodical}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ format.organization "organization" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {phdthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.phd.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {proceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {standard}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization.institution.standard.type.number output
+ format.revision output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {techreport}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.institution "institution" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.tech.report.number output.nonnull
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {unpublished}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.date output
+ format.note "note" output.warn
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+
+% The special entry type which provides the user interface to the
+% BST controls
+FUNCTION {IEEEtranBSTCTL}
+{ is.print.banners.to.terminal
+ { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
+ top$
+ }
+ { skip$ }
+ if$
+ CTLuse_article_number
+ empty$
+ { skip$ }
+ { CTLuse_article_number
+ yes.no.to.int
+ 'is.use.number.for.article :=
+ }
+ if$
+ CTLuse_paper
+ empty$
+ { skip$ }
+ { CTLuse_paper
+ yes.no.to.int
+ 'is.use.paper :=
+ }
+ if$
+ CTLuse_url
+ empty$
+ { skip$ }
+ { CTLuse_url
+ yes.no.to.int
+ 'is.use.url :=
+ }
+ if$
+ CTLuse_forced_etal
+ empty$
+ { skip$ }
+ { CTLuse_forced_etal
+ yes.no.to.int
+ 'is.forced.et.al :=
+ }
+ if$
+ CTLmax_names_forced_etal
+ empty$
+ { skip$ }
+ { CTLmax_names_forced_etal
+ string.to.integer
+ 'max.num.names.before.forced.et.al :=
+ }
+ if$
+ CTLnames_show_etal
+ empty$
+ { skip$ }
+ { CTLnames_show_etal
+ string.to.integer
+ 'num.names.shown.with.forced.et.al :=
+ }
+ if$
+ CTLuse_alt_spacing
+ empty$
+ { skip$ }
+ { CTLuse_alt_spacing
+ yes.no.to.int
+ 'is.use.alt.interword.spacing :=
+ }
+ if$
+ CTLalt_stretch_factor
+ empty$
+ { skip$ }
+ { CTLalt_stretch_factor
+ 'ALTinterwordstretchfactor :=
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ }
+ if$
+ CTLdash_repeated_names
+ empty$
+ { skip$ }
+ { CTLdash_repeated_names
+ yes.no.to.int
+ 'is.dash.repeated.names :=
+ }
+ if$
+ CTLname_format_string
+ empty$
+ { skip$ }
+ { CTLname_format_string
+ 'name.format.string :=
+ }
+ if$
+ CTLname_latex_cmd
+ empty$
+ { skip$ }
+ { CTLname_latex_cmd
+ 'name.latex.cmd :=
+ }
+ if$
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
+ num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
+ { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
+ max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
+ }
+ { skip$ }
+ if$
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+%% ENTRY ALIASES %%
+%%%%%%%%%%%%%%%%%%%
+FUNCTION {conference}{inproceedings}
+FUNCTION {online}{electronic}
+FUNCTION {internet}{electronic}
+FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
+FUNCTION {default.type}{misc}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% MAIN PROGRAM %%
+%%%%%%%%%%%%%%%%%%
+
+READ
+
+EXECUTE {initialize.controls}
+EXECUTE {initialize.status.constants}
+EXECUTE {banner.message}
+
+
+
+% BEGIN sort code based on that of plain.bst
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ { skip$ }
+ if$
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { "et al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ bbl.a " " * #2
+ bbl.an " " * #3
+ bbl.the " " * #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.institution.sort}
+{ author empty$
+ { organization empty$
+ { institution empty$
+ { key empty$
+ { "to sort, need author, organization, institution or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { bbl.the " " * #4 institution chop.word sortify }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+
+% END sort code based on that of plain.bst
+
+
+
+% alpha.bst code
+STRINGS { last.sort.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s num.names$ 'numnames :=
+ numnames #1 >
+ { numnames #4 >
+ { #3 'namesleft := }
+ { numnames 'namesleft := }
+ if$
+ #1 'nameptr :=
+ ""
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { "{\etalchar{+}}" * }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ numnames #4 >
+ { "{\etalchar{+}}" * }
+ 'skip$
+ if$
+ }
+ { s #1 "{v{}}{l{}}" format.name$
+ duplicate$ text.length$ #2 <
+ { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
+ 'skip$
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { bbl.the " " * #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.institution.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { institution empty$
+ { cite$ #1 #3 substring$ }
+ { bbl.the " " * #4 institution chop.word #3 text.prefix$ }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { bbl.the " " * #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.key.label }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.key.organization.label }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.key.organization.label }
+ { type$ "standard" =
+ { author.key.organization.institution.label }
+ { author.key.label }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string purify$ #-1 #2 substring$
+ *
+ 'label :=
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string purify$ #-1 #4 substring$
+ *
+ sortify 'sort.label :=
+}
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ }
+ { calc.label
+ sort.label
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.sort }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.organization.sort }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.organization.sort }
+ { type$ "standard" =
+ { author.organization.institution.sort }
+ { author.sort }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ *
+ " "
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string sortify
+ *
+ " "
+ *
+ title empty.field.to.null.string
+ sort.format.title
+ *
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.sort.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { last.sort.label sort.label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ sort.label 'last.sort.label :=
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { next.extra "b" =
+ { "a" 'extra.label := }
+ { skip$ }
+ if$
+ label extra.label * 'label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ { skip$ }
+ if$
+ extra.label 'next.extra :=
+ }
+ if$
+}
+
+% End alpha.bst code
+
+
+ITERATE {presort}
+
+SORT
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
+EXECUTE{completed.message}
+
+
+%% That's all folks, mds.
diff --git a/macros/latex/contrib/IEEEtran/bibtex/IEEEtranSN.bst b/macros/latex/contrib/IEEEtran/bibtex/IEEEtranSN.bst
new file mode 100644
index 0000000000..da43e61aa1
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/IEEEtranSN.bst
@@ -0,0 +1,2878 @@
+%%
+%% IEEEtranSN.bst
+%% BibTeX Bibliography Style file
+%% Sorting Natbib version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
+%% Version 1.14 (2015/08/26)
+%%
+%% Copyright (c) 2003-2015 Michael Shell
+%%
+%% Original starting code base and algorithms obtained from the output of
+%% Patrick W. Daly's makebst package as well as from prior versions of
+%% IEEE BibTeX styles:
+%%
+%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
+%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
+%%
+%% Added sorting and natbib code is from Patrick W Daly's plainnat.bst
+%% and Oren Patashnik's plain.bst.
+%%
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%% and/or
+%% http://www.ieee.org/
+%%
+%% For use with BibTeX version 0.99a or later
+%%
+%% This is a natbib compatible citation style.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%*************************************************************************
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are the defaults for the user adjustable controls. The values used
+% here can be overridden by the user via IEEEtranBSTCTL entry type.
+
+% NOTE: The recommended LaTeX command to invoke a control entry type is:
+%
+%\makeatletter
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+% \@for\@citeb:=#2\do{%
+% \edef\@citeb{\expandafter\@firstofone\@citeb}%
+% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+% \@esphack}
+%\makeatother
+%
+% It is called at the start of the document, before the first \cite, like:
+% \bstctlcite{IEEEexample:BSTcontrol}
+%
+% IEEEtran.cls V1.6 and later does provide this command.
+
+
+
+% #0 turns off the display of the number for articles.
+% #1 enables
+FUNCTION {default.is.use.number.for.article} { #1 }
+
+
+% #0 turns off the display of the paper and type fields in @inproceedings.
+% #1 enables
+FUNCTION {default.is.use.paper} { #1 }
+
+
+% #0 turns off the display of urls
+% #1 enables
+FUNCTION {default.is.use.url} { #1 }
+
+
+% #0 turns off the forced use of "et al."
+% #1 enables
+FUNCTION {default.is.forced.et.al} { #0 }
+
+
+% The maximum number of names that can be present beyond which an "et al."
+% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
+% is not greater than this value!
+% Note: There are many instances of references in IEEE journals which have
+% a very large number of authors as well as instances in which "et al." is
+% used profusely.
+FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
+
+
+% The number of names that will be shown with a forced "et al.".
+% Must be less than or equal to max.num.names.before.forced.et.al
+FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
+
+
+% #0 turns off the alternate interword spacing for entries with URLs.
+% #1 enables
+FUNCTION {default.is.use.alt.interword.spacing} { #1 }
+
+
+% If alternate interword spacing for entries with URLs is enabled, this is
+% the interword spacing stretch factor that will be used. For example, the
+% default "4" here means that the interword spacing in entries with URLs can
+% stretch to four times normal. Does not have to be an integer. Note that
+% the value specified here can be overridden by the user in their LaTeX
+% code via a command such as:
+% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
+% that via the IEEEtranBSTCTL entry type.
+FUNCTION {default.ALTinterwordstretchfactor} { "4" }
+
+
+% #0 turns off the "dashification" of repeated (i.e., identical to those
+% of the previous entry) names. The IEEE normally does this.
+% #1 enables
+FUNCTION {default.is.dash.repeated.names} { #1 }
+
+
+% The default name format control string.
+FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
+
+
+% The default LaTeX font command for the names.
+FUNCTION {default.name.latex.cmd}{ "" }
+
+
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
+% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
+
+% #0 turns off the terminal startup banner/completed message so as to
+% operate more quietly.
+% #1 enables
+FUNCTION {is.print.banners.to.terminal} { #1 }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FILE VERSION AND BANNER %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION{bst.file.version} { "1.14" }
+FUNCTION{bst.file.date} { "2015/08/26" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
+
+FUNCTION {banner.message}
+{ is.print.banners.to.terminal
+ { "-- IEEEtranSN.bst version" " " * bst.file.version *
+ " (" * bst.file.date * ") " * "by Michael Shell." *
+ top$
+ "-- " bst.file.website *
+ top$
+ "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
+ top$
+ "** Sorting Natbib version - not for normal IEEE work."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {completed.message}
+{ is.print.banners.to.terminal
+ { ""
+ top$
+ "Done."
+ top$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING CONSTANTS %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {bbl.a}{ "A" }
+FUNCTION {bbl.an}{ "An" }
+FUNCTION {bbl.and}{ "and" }
+FUNCTION {bbl.etal}{ "et~al." }
+FUNCTION {bbl.editors}{ "eds." }
+FUNCTION {bbl.editor}{ "ed." }
+FUNCTION {bbl.edition}{ "ed." }
+FUNCTION {bbl.volume}{ "vol." }
+FUNCTION {bbl.of}{ "of" }
+FUNCTION {bbl.number}{ "no." }
+FUNCTION {bbl.in}{ "in" }
+FUNCTION {bbl.pages}{ "pp." }
+FUNCTION {bbl.page}{ "p." }
+FUNCTION {bbl.chapter}{ "ch." }
+FUNCTION {bbl.paper}{ "paper" }
+FUNCTION {bbl.part}{ "pt." }
+FUNCTION {bbl.patent}{ "Patent" }
+FUNCTION {bbl.patentUS}{ "U.S." }
+FUNCTION {bbl.revision}{ "Rev." }
+FUNCTION {bbl.series}{ "ser." }
+FUNCTION {bbl.standard}{ "Std." }
+FUNCTION {bbl.techrep}{ "Tech. Rep." }
+FUNCTION {bbl.the}{ "The" }
+FUNCTION {bbl.mthesis}{ "Master's thesis" }
+FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
+FUNCTION {bbl.st}{ "st" }
+FUNCTION {bbl.nd}{ "nd" }
+FUNCTION {bbl.rd}{ "rd" }
+FUNCTION {bbl.th}{ "th" }
+
+
+% This is the LaTeX spacer that is used when a larger than normal space
+% is called for (such as just before the address:publisher).
+FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
+
+% The LaTeX code for dashes that are used to represent repeated names.
+% Note: Some older IEEE journals used something like
+% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
+% the baseline. However, the IEEE now uses a thinner, above baseline,
+% six dash long sequence.
+FUNCTION {repeated.name.dashes} { "------" }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PREDEFINED STRING MACROS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sep."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% ENTRY FIELDS %%
+%%%%%%%%%%%%%%%%%%
+
+ENTRY
+ { address
+ assignee
+ author
+ booktitle
+ chapter
+ day
+ dayfiled
+ edition
+ editor
+ howpublished
+ institution
+ intype
+ journal
+ key
+ language
+ month
+ monthfiled
+ nationality
+ note
+ number
+ organization
+ pages
+ paper
+ publisher
+ school
+ series
+ revision
+ title
+ type
+ url
+ volume
+ year
+ yearfiled
+ CTLuse_article_number
+ CTLuse_paper
+ CTLuse_url
+ CTLuse_forced_etal
+ CTLmax_names_forced_etal
+ CTLnames_show_etal
+ CTLuse_alt_spacing
+ CTLalt_stretch_factor
+ CTLdash_repeated_names
+ CTLname_format_string
+ CTLname_latex_cmd
+ CTLname_url_prefix
+ }
+ {}
+ { label extra.label sort.label short.list}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% INTEGER VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+INTEGERS { prev.status.punct this.status.punct punct.std
+ punct.no punct.comma punct.period
+ prev.status.space this.status.space space.std
+ space.no space.normal space.large
+ prev.status.quote this.status.quote quote.std
+ quote.no quote.close
+ prev.status.nline this.status.nline nline.std
+ nline.no nline.newblock
+ status.cap cap.std
+ cap.no cap.yes}
+
+INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
+
+INTEGERS { is.use.number.for.article
+ is.use.paper
+ is.use.url
+ is.forced.et.al
+ max.num.names.before.forced.et.al
+ num.names.shown.with.forced.et.al
+ is.use.alt.interword.spacing
+ is.dash.repeated.names}
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+STRINGS { bibinfo
+ longest.label
+ oldname
+ s
+ t
+ ALTinterwordstretchfactor
+ name.format.string
+ name.latex.cmd
+ name.url.prefix}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOW LEVEL FUNCTIONS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.controls}
+{ default.is.use.number.for.article 'is.use.number.for.article :=
+ default.is.use.paper 'is.use.paper :=
+ default.is.use.url 'is.use.url :=
+ default.is.forced.et.al 'is.forced.et.al :=
+ default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
+ default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
+ default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
+ default.is.dash.repeated.names 'is.dash.repeated.names :=
+ default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
+ default.name.format.string 'name.format.string :=
+ default.name.latex.cmd 'name.latex.cmd :=
+ default.name.url.prefix 'name.url.prefix :=
+}
+
+
+% This IEEEtran.bst features a very powerful and flexible mechanism for
+% controlling the capitalization, punctuation, spacing, quotation, and
+% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
+% or use the newline/newblock feature, but it has been implemented for
+% possible future use.) The output states of IEEEtran.bst consist of
+% multiple independent attributes and, as such, can be thought of as being
+% vectors, rather than the simple scalar values ("before.all",
+% "mid.sentence", etc.) used in most other .bst files.
+%
+% The more flexible and complex design used here was motivated in part by
+% the IEEE's rather unusual bibliography style. For example, the IEEE ends the
+% previous field item with a period and large space prior to the publisher
+% address; the @electronic entry types use periods as inter-item punctuation
+% rather than the commas used by the other entry types; and URLs are never
+% followed by periods even though they are the last item in the entry.
+% Although it is possible to accommodate these features with the conventional
+% output state system, the seemingly endless exceptions make for convoluted,
+% unreliable and difficult to maintain code.
+%
+% IEEEtran.bst's output state system can be easily understood via a simple
+% illustration of two most recently formatted entry fields (on the stack):
+%
+% CURRENT_ITEM
+% "PREVIOUS_ITEM
+%
+% which, in this example, is to eventually appear in the bibliography as:
+%
+% "PREVIOUS_ITEM," CURRENT_ITEM
+%
+% It is the job of the output routine to take the previous item off of the
+% stack (while leaving the current item at the top of the stack), apply its
+% trailing punctuation (including closing quote marks) and spacing, and then
+% to write the result to BibTeX's output buffer:
+%
+% "PREVIOUS_ITEM,"
+%
+% Punctuation (and spacing) between items is often determined by both of the
+% items rather than just the first one. The presence of quotation marks
+% further complicates the situation because, in standard English, trailing
+% punctuation marks are supposed to be contained within the quotes.
+%
+% IEEEtran.bst maintains two output state (aka "status") vectors which
+% correspond to the previous and current (aka "this") items. Each vector
+% consists of several independent attributes which track punctuation,
+% spacing, quotation, and newlines. Capitalization status is handled by a
+% separate scalar because the format routines, not the output routine,
+% handle capitalization and, therefore, there is no need to maintain the
+% capitalization attribute for both the "previous" and "this" items.
+%
+% When a format routine adds a new item, it copies the current output status
+% vector to the previous output status vector and (usually) resets the
+% current (this) output status vector to a "standard status" vector. Using a
+% "standard status" vector in this way allows us to redefine what we mean by
+% "standard status" at the start of each entry handler and reuse the same
+% format routines under the various inter-item separation schemes. For
+% example, the standard status vector for the @book entry type may use
+% commas for item separators, while the @electronic type may use periods,
+% yet both entry handlers exploit many of the exact same format routines.
+%
+% Because format routines have write access to the output status vector of
+% the previous item, they can override the punctuation choices of the
+% previous format routine! Therefore, it becomes trivial to implement rules
+% such as "Always use a period and a large space before the publisher." By
+% pushing the generation of the closing quote mark to the output routine, we
+% avoid all the problems caused by having to close a quote before having all
+% the information required to determine what the punctuation should be.
+%
+% The IEEEtran.bst output state system can easily be expanded if needed.
+% For instance, it is easy to add a "space.tie" attribute value if the
+% bibliography rules mandate that two items have to be joined with an
+% unbreakable space.
+
+FUNCTION {initialize.status.constants}
+{ #0 'punct.no :=
+ #1 'punct.comma :=
+ #2 'punct.period :=
+ #0 'space.no :=
+ #1 'space.normal :=
+ #2 'space.large :=
+ #0 'quote.no :=
+ #1 'quote.close :=
+ #0 'cap.no :=
+ #1 'cap.yes :=
+ #0 'nline.no :=
+ #1 'nline.newblock :=
+}
+
+FUNCTION {std.status.using.comma}
+{ punct.comma 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.no 'cap.std :=
+}
+
+FUNCTION {std.status.using.period}
+{ punct.period 'punct.std :=
+ space.normal 'space.std :=
+ quote.no 'quote.std :=
+ nline.no 'nline.std :=
+ cap.yes 'cap.std :=
+}
+
+FUNCTION {initialize.prev.this.status}
+{ punct.no 'prev.status.punct :=
+ space.no 'prev.status.space :=
+ quote.no 'prev.status.quote :=
+ nline.no 'prev.status.nline :=
+ punct.no 'this.status.punct :=
+ space.no 'this.status.space :=
+ quote.no 'this.status.quote :=
+ nline.no 'this.status.nline :=
+ cap.yes 'status.cap :=
+}
+
+FUNCTION {this.status.std}
+{ punct.std 'this.status.punct :=
+ space.std 'this.status.space :=
+ quote.std 'this.status.quote :=
+ nline.std 'this.status.nline :=
+}
+
+FUNCTION {cap.status.std}{ cap.std 'status.cap := }
+
+FUNCTION {this.to.prev.status}
+{ this.status.punct 'prev.status.punct :=
+ this.status.space 'prev.status.space :=
+ this.status.quote 'prev.status.quote :=
+ this.status.nline 'prev.status.nline :=
+}
+
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ { skip$ }
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ { skip$ }
+ if$
+}
+
+
+% convert the strings "yes" or "no" to #1 or #0 respectively
+FUNCTION {yes.no.to.int}
+{ "l" change.case$ duplicate$
+ "yes" =
+ { pop$ #1 }
+ { duplicate$ "no" =
+ { pop$ #0 }
+ { "unknown boolean " quote$ * swap$ * quote$ *
+ " in " * cite$ * warning$
+ #0
+ }
+ if$
+ }
+ if$
+}
+
+
+% pushes true if the single char string on the stack is in the
+% range of "0" to "9"
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+% multiplies the integer on the stack by a factor of 10
+FUNCTION {bump.int.mag}
+{ #0 'multiresult :=
+ { duplicate$ #0 > }
+ { #1 -
+ multiresult #10 +
+ 'multiresult :=
+ }
+ while$
+pop$
+multiresult
+}
+
+% converts a single character string on the stack to an integer
+FUNCTION {char.to.integer}
+{ duplicate$
+ is.num
+ { chr.to.int$ "0" chr.to.int$ - }
+ {"noninteger character " quote$ * swap$ * quote$ *
+ " in integer field of " * cite$ * warning$
+ #0
+ }
+ if$
+}
+
+% converts a string on the stack to an integer
+FUNCTION {string.to.integer}
+{ duplicate$ text.length$ 'namesleft :=
+ #1 'nameptr :=
+ #0 'numnames :=
+ { nameptr namesleft > not }
+ { duplicate$ nameptr #1 substring$
+ char.to.integer numnames bump.int.mag +
+ 'numnames :=
+ nameptr #1 +
+ 'nameptr :=
+ }
+ while$
+pop$
+numnames
+}
+
+
+
+
+% The output routines write out the *next* to the top (previous) item on the
+% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
+% the output status for the top two items on the stack, these output
+% routines have to consider the previous output status (which corresponds to
+% the item that is being output). Full independent control of punctuation,
+% closing quote marks, spacing, and newblock is provided.
+%
+% "output.nonnull" does not check for the presence of a previous empty
+% item.
+%
+% "output" does check for the presence of a previous empty item and will
+% remove an empty item rather than outputing it.
+%
+% "output.warn" is like "output", but will issue a warning if it detects
+% an empty item.
+
+FUNCTION {output.nonnull}
+{ swap$
+ prev.status.punct punct.comma =
+ { "," * }
+ { skip$ }
+ if$
+ prev.status.punct punct.period =
+ { add.period$ }
+ { skip$ }
+ if$
+ prev.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+ prev.status.space space.normal =
+ { " " * }
+ { skip$ }
+ if$
+ prev.status.space space.large =
+ { large.space * }
+ { skip$ }
+ if$
+ write$
+ prev.status.nline nline.newblock =
+ { newline$ "\newblock " write$ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.warn}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+% "fin.entry" is the output routine that handles the last item of the entry
+% (which will be on the top of the stack when "fin.entry" is called).
+
+FUNCTION {fin.entry}
+{ this.status.punct punct.no =
+ { skip$ }
+ { add.period$ }
+ if$
+ this.status.quote quote.close =
+ { "''" * }
+ { skip$ }
+ if$
+write$
+newline$
+}
+
+
+FUNCTION {is.last.char.not.punct}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {is.multiple.pages}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {do.name.latex.cmd}
+{ name.latex.cmd
+ empty$
+ { skip$ }
+ { name.latex.cmd "{" * swap$ * "}" * }
+ if$
+}
+
+% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
+% invokes the TeX hyphenation patterns without the need of the Babel
+% package. Babel does a lot more than switch hyphenation patterns and
+% its loading can cause unintended effects in many class files (such as
+% IEEEtran.cls).
+FUNCTION {select.language}
+{ duplicate$ empty$ 'pop$
+ { language empty$ 'skip$
+ { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {space.word}{ " " swap$ * " " * }
+
+
+% Field Conditioners, Converters, Checkers and External Interfaces
+
+FUNCTION {empty.field.to.null.string}
+{ duplicate$ empty$
+ { pop$ "" }
+ { skip$ }
+ if$
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ { pop$ }
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {empty.entry.warn}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$ url empty$
+ and and and and and and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+
+% The bibinfo system provides a way for the electronic parsing/acquisition
+% of a bibliography's contents as is done by ReVTeX. For example, a field
+% could be entered into the bibliography as:
+% \bibinfo{volume}{2}
+% Only the "2" would show up in the document, but the LaTeX \bibinfo command
+% could do additional things with the information. IEEEtran.bst does provide
+% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
+% currently not used as the bogus bibinfo functions defined here output the
+% entry values directly without the \bibinfo wrapper. The bibinfo functions
+% themselves (and the calls to them) are retained for possible future use.
+%
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+
+FUNCTION {bibinfo.check}
+{ swap$ duplicate$ missing$
+ { pop$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ pop$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {bibinfo.warn}
+{ swap$ duplicate$ missing$
+ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
+ { duplicate$ empty$
+ { swap$ "empty " swap$ * " in " * cite$ * warning$ }
+ { swap$ pop$ }
+ if$
+ }
+ if$
+}
+
+
+% The IEEE separates large numbers with more than 4 digits into groups of
+% three. The IEEE uses a small space to separate these number groups.
+% Typical applications include patent and page numbers.
+
+% number of consecutive digits required to trigger the group separation.
+FUNCTION {large.number.trigger}{ #5 }
+
+% For numbers longer than the trigger, this is the blocksize of the groups.
+% The blocksize must be less than the trigger threshold, and 2 * blocksize
+% must be greater than the trigger threshold (can't do more than one
+% separation on the initial trigger).
+FUNCTION {large.number.blocksize}{ #3 }
+
+% What is actually inserted between the number groups.
+FUNCTION {large.number.separator}{ "\," }
+
+% So as to save on integer variables by reusing existing ones, numnames
+% holds the current number of consecutive digits read and nameptr holds
+% the number that will trigger an inserted space.
+FUNCTION {large.number.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { numnames #1 + 'numnames := }
+ { #0 'numnames :=
+ large.number.trigger 'nameptr :=
+ }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames nameptr =
+ { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
+ nameptr large.number.blocksize - #1 + global.max$ substring$
+ large.number.separator swap$ * *
+ nameptr large.number.blocksize - 'numnames :=
+ large.number.blocksize #1 + 'nameptr :=
+ }
+ { skip$ }
+ if$
+ }
+ while$
+}
+
+% Converts all single dashes "-" to double dashes "--".
+FUNCTION {n.dashify}
+{ large.number.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+
+% This function detects entries with names that are identical to that of
+% the previous entry and replaces the repeated names with dashes (if the
+% "is.dash.repeated.names" user control is nonzero).
+FUNCTION {name.or.dash}
+{ 's :=
+ oldname empty$
+ { s 'oldname := s }
+ { s oldname =
+ { is.dash.repeated.names
+ { repeated.name.dashes }
+ { s 'oldname := s }
+ if$
+ }
+ { s 'oldname := s }
+ if$
+ }
+ if$
+}
+
+% Converts the number string on the top of the stack to
+% "numerical ordinal form" (e.g., "7" to "7th"). There is
+% no artificial limit to the upper bound of the numbers as the
+% two least significant digits determine the ordinal form.
+FUNCTION {num.to.ordinal}
+{ duplicate$ #-2 #1 substring$ "1" =
+ { bbl.th * }
+ { duplicate$ #-1 #1 substring$ "1" =
+ { bbl.st * }
+ { duplicate$ #-1 #1 substring$ "2" =
+ { bbl.nd * }
+ { duplicate$ #-1 #1 substring$ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% If the string on the top of the stack begins with a number,
+% (e.g., 11th) then replace the string with the leading number
+% it contains. Otherwise retain the string as-is. s holds the
+% extracted number, t holds the part of the string that remains
+% to be scanned.
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+% Converts the word number string on the top of the stack to
+% Arabic string form. Will be successful up to "tenth".
+FUNCTION {word.to.num}
+{ duplicate$ "l" change.case$ 's :=
+ s "first" =
+ { pop$ "1" }
+ { skip$ }
+ if$
+ s "second" =
+ { pop$ "2" }
+ { skip$ }
+ if$
+ s "third" =
+ { pop$ "3" }
+ { skip$ }
+ if$
+ s "fourth" =
+ { pop$ "4" }
+ { skip$ }
+ if$
+ s "fifth" =
+ { pop$ "5" }
+ { skip$ }
+ if$
+ s "sixth" =
+ { pop$ "6" }
+ { skip$ }
+ if$
+ s "seventh" =
+ { pop$ "7" }
+ { skip$ }
+ if$
+ s "eighth" =
+ { pop$ "8" }
+ { skip$ }
+ if$
+ s "ninth" =
+ { pop$ "9" }
+ { skip$ }
+ if$
+ s "tenth" =
+ { pop$ "10" }
+ { skip$ }
+ if$
+}
+
+
+% Converts the string on the top of the stack to numerical
+% ordinal (e.g., "11th") form.
+FUNCTION {convert.edition}
+{ duplicate$ empty$ 'skip$
+ { duplicate$ #1 #1 substring$ is.num
+ { extract.num
+ num.to.ordinal
+ }
+ { word.to.num
+ duplicate$ #1 #1 substring$ is.num
+ { num.to.ordinal }
+ { "edition ordinal word " quote$ * edition * quote$ *
+ " may be too high (or improper) for conversion" * " in " * cite$ * warning$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LATEX BIBLIOGRAPHY CODE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% from plainnat.bst
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " " bbl.etal * * }
+ { " " bbl.and * " " * * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.full }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.full }
+ { author.full }
+ if$
+ }
+ if$
+}
+% END from plainnat.bst
+
+FUNCTION {start.entry}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ initialize.prev.this.status
+}
+
+% Here we write out all the LaTeX code that we will need. The most involved
+% code sequences are those that control the alternate interword spacing and
+% foreign language hyphenation patterns. The heavy use of \providecommand
+% gives users a way to override the defaults. Special thanks to Javier Bezos,
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
+% the other gurus on comp.text.tex for their help and advice on the topic of
+% \selectlanguage, Babel and BibTeX.
+FUNCTION {begin.bib}
+{ "% Generated by IEEEtranSN.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ preamble$ empty$ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{#1}"
+ write$ newline$
+ "\csname url@samestyle\endcsname"
+ write$ newline$
+ "\providecommand{\newblock}{\relax}"
+ write$ newline$
+ "\providecommand{\bibinfo}[2]{#2}"
+ write$ newline$
+ "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
+ write$ newline$
+ "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
+ write$ newline$
+ "\providecommand{\BIBforeignlanguage}[2]{{%"
+ write$ newline$
+ "\expandafter\ifx\csname l@#1\endcsname\relax"
+ write$ newline$
+ "\typeout{** WARNING: IEEEtranSN.bst: No hyphenation pattern has been}%"
+ write$ newline$
+ "\typeout{** loaded for the language `#1'. Using the pattern for}%"
+ write$ newline$
+ "\typeout{** the default language instead.}%"
+ write$ newline$
+ "\else"
+ write$ newline$
+ "\language=\csname l@#1\endcsname"
+ write$ newline$
+ "\fi"
+ write$ newline$
+ "#2}}"
+ write$ newline$
+ "\providecommand{\BIBdecl}{\relax}"
+ write$ newline$
+ "\BIBdecl"
+ write$ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$ "\end{thebibliography}" write$ newline$ }
+
+FUNCTION {if.url.alt.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+FUNCTION {if.url.std.interword.spacing}
+{ is.use.alt.interword.spacing
+ { is.use.url
+ { url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$ }
+ { skip$ }
+ if$
+ }
+ { skip$ }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%% FORMAT HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%%
+
+%% Lower Level Formats (used by higher level formats)
+
+FUNCTION {format.address.org.or.pub.date}
+{ 't :=
+ ""
+ year empty$
+ { "empty year in " cite$ * warning$ }
+ { skip$ }
+ if$
+ address empty$ t empty$ and
+ year empty$ and month empty$ and
+ { skip$ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ address "address" bibinfo.check *
+ t empty$
+ { skip$ }
+ { punct.period 'prev.status.punct :=
+ space.large 'prev.status.space :=
+ address empty$
+ { skip$ }
+ { ": " * }
+ if$
+ t *
+ }
+ if$
+ year empty$ month empty$ and
+ { skip$ }
+ { t empty$ address empty$ and
+ { skip$ }
+ { ", " * }
+ if$
+ month empty$
+ { year empty$
+ { skip$ }
+ { year "year" bibinfo.check * }
+ if$
+ }
+ { month "month" bibinfo.check *
+ year empty$
+ { skip$ }
+ { " " * year "year" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ this.to.prev.status
+ this.status.std
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ name.format.string
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ { nameptr num.names.shown.with.forced.et.al #1 + =
+ numnames max.num.names.before.forced.et.al >
+ is.forced.et.al and and
+ { "others" 't :=
+ #1 'namesleft :=
+ }
+ { skip$ }
+ if$
+ namesleft #1 >
+ { ", " * t do.name.latex.cmd * }
+ { s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ { " " * bbl.etal emphasize * }
+ { numnames #2 >
+ { "," * }
+ { skip$ }
+ if$
+ bbl.and
+ space.word * t do.name.latex.cmd *
+ }
+ if$
+ }
+ if$
+ }
+ { t do.name.latex.cmd }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ cap.status.std
+ } if$
+}
+
+
+
+
+%% Higher Level Formats
+
+%% addresses/locations
+
+FUNCTION {format.address}
+{ address duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% author/editor names
+
+FUNCTION {format.authors}{ author "author" format.names }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ { ", " *
+ get.bbl.editor
+ capitalize
+ *
+ }
+ if$
+}
+
+
+
+%% date
+
+FUNCTION {format.date}
+{
+ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "there's a month but no year in " cite$ * warning$ }
+ if$
+ *
+ }
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ swap$ 'skip$
+ {
+ swap$
+ " " * swap$
+ }
+ if$
+ *
+ }
+ if$
+}
+
+FUNCTION {format.date.electronic}
+{ month "month" bibinfo.check duplicate$ empty$
+ year "year" bibinfo.check duplicate$ empty$
+ { swap$
+ { pop$ }
+ { "there's a month but no year in " cite$ * warning$
+ pop$ ")" * "(" swap$ *
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+ }
+ { swap$
+ { swap$ pop$ ")" * "(" swap$ * }
+ { "(" swap$ * ", " * swap$ * ")" * }
+ if$
+ this.to.prev.status
+ punct.no 'this.status.punct :=
+ space.normal 'this.status.space :=
+ quote.no 'this.status.quote :=
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% edition/title
+
+% Note: The IEEE considers the edition to be closely associated with
+% the title of a book. So, in IEEEtran.bst the edition is normally handled
+% within the formatting of the title. The format.edition function is
+% retained here for possible future use.
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$ change.case$
+ "edition" bibinfo.check
+ "~" * bbl.edition *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of a conference proceedings.
+% Here we use the "intype" field to provide the user a way to
+% override the word "in" (e.g., with things like "presented at")
+% Use of intype stops the emphasis of the booktitle to indicate that
+% we no longer mean the written conference proceedings, but the
+% conference itself.
+FUNCTION {format.in.booktitle}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ intype missing$
+ { emphasize
+ bbl.in " " *
+ }
+ { intype " " * }
+ if$
+ swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+% This is used to format the booktitle of collection.
+% Here the "intype" field is not supported, but "edition" is.
+FUNCTION {format.in.booktitle.edition}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ "l" change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ bbl.in " " * swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { quote.close 'this.status.quote :=
+ is.last.char.not.punct
+ { punct.std 'this.status.punct := }
+ { punct.no 'this.status.punct := }
+ if$
+ select.language
+ "``" swap$ *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.article.title.electronic}
+{ title duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ "t" change.case$
+ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$
+ { skip$ }
+ { select.language }
+ if$
+}
+
+FUNCTION {format.book.title.edition}
+{ title "title" bibinfo.check
+ duplicate$ empty$
+ { "empty title in " cite$ * warning$ }
+ { this.to.prev.status
+ this.status.std
+ select.language
+ emphasize
+ edition empty$ 'skip$
+ { ", " *
+ edition
+ convert.edition
+ status.cap
+ { "t" }
+ { "l" }
+ if$
+ change.case$
+ * "~" * bbl.edition *
+ }
+ if$
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.book.title}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% journal
+
+FUNCTION {format.journal}
+{ journal duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ select.language
+ emphasize
+ }
+ if$
+}
+
+
+
+%% how published
+
+FUNCTION {format.howpublished}
+{ howpublished duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% institutions/organization/publishers/school
+
+FUNCTION {format.institution}
+{ institution duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.organization}
+{ organization duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.address.publisher.date}
+{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
+
+FUNCTION {format.address.publisher.date.nowarn}
+{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.address.organization.date}
+{ organization "organization" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.school}
+{ school duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% volume/number/series/chapter/pages
+
+FUNCTION {format.volume}
+{ volume empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ bbl.volume
+ status.cap
+ { capitalize }
+ { skip$ }
+ if$
+ swap$ tie.or.space.prefix
+ "volume" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number}
+{ number empty.field.to.null.string
+ duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ status.cap
+ { bbl.number capitalize }
+ { bbl.number }
+ if$
+ swap$ tie.or.space.prefix
+ "number" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+FUNCTION {format.number.if.use.for.article}
+{ is.use.number.for.article
+ { format.number }
+ { "" }
+ if$
+}
+
+% The IEEE does not seem to tie the series so closely with the volume
+% and number as is done in other bibliography styles. Instead the
+% series is treated somewhat like an extension of the title.
+FUNCTION {format.series}
+{ series empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.series " " *
+ series "series" bibinfo.check *
+ cap.status.std
+ }
+ if$
+}
+
+
+FUNCTION {format.chapter}
+{ chapter empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+% The intended use of format.paper is for paper numbers of inproceedings.
+% The paper type can be overridden via the type field.
+% We allow the type to be displayed even if the paper number is absent
+% for things like "postdeadline paper"
+FUNCTION {format.paper}
+{ is.use.paper
+ { paper empty$
+ { type empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ type "type" bibinfo.check
+ cap.status.std
+ }
+ if$
+ }
+ { this.to.prev.status
+ this.status.std
+ type empty$
+ { bbl.paper }
+ { type "type" bibinfo.check }
+ if$
+ " " * paper
+ "paper" bibinfo.check
+ *
+ cap.status.std
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { this.to.prev.status
+ this.status.std
+ duplicate$ is.multiple.pages
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+
+%% technical report number
+
+FUNCTION {format.tech.report.number}
+{ number "number" bibinfo.check
+ this.to.prev.status
+ this.status.std
+ cap.status.std
+ type duplicate$ empty$
+ { pop$
+ bbl.techrep
+ }
+ { skip$ }
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+
+
+
+%% note
+
+FUNCTION {format.note}
+{ note empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ punct.period 'this.status.punct :=
+ note #1 #1 substring$
+ duplicate$ "{" =
+ { skip$ }
+ { status.cap
+ { "u" }
+ { "l" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ cap.yes 'status.cap :=
+ }
+ if$
+}
+
+
+
+%% patent
+
+FUNCTION {format.patent.date}
+{ this.to.prev.status
+ this.status.std
+ year empty$
+ { monthfiled duplicate$ empty$
+ { "monthfiled" bibinfo.check pop$ "" }
+ { "monthfiled" bibinfo.check }
+ if$
+ dayfiled duplicate$ empty$
+ { "dayfiled" bibinfo.check pop$ "" * }
+ { "dayfiled" bibinfo.check
+ monthfiled empty$
+ { "dayfiled without a monthfiled in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ yearfiled empty$
+ { "no year or yearfiled in " cite$ * warning$ }
+ { yearfiled "yearfiled" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ }
+ { month duplicate$ empty$
+ { "month" bibinfo.check pop$ "" }
+ { "month" bibinfo.check }
+ if$
+ day duplicate$ empty$
+ { "day" bibinfo.check pop$ "" * }
+ { "day" bibinfo.check
+ month empty$
+ { "day without a month in " cite$ * warning$
+ *
+ }
+ { " " swap$ * * }
+ if$
+ }
+ if$
+ year "year" bibinfo.check
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ { ", " * swap$ * }
+ if$
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.patent.nationality.type.number}
+{ this.to.prev.status
+ this.status.std
+ nationality duplicate$ empty$
+ { "nationality" bibinfo.warn pop$ "" }
+ { "nationality" bibinfo.check
+ duplicate$ "l" change.case$ "united states" =
+ { pop$ bbl.patentUS }
+ { skip$ }
+ if$
+ " " *
+ }
+ if$
+ type empty$
+ { bbl.patent "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.warn pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+
+
+%% standard
+
+FUNCTION {format.organization.institution.standard.type.number}
+{ this.to.prev.status
+ this.status.std
+ organization duplicate$ empty$
+ { pop$
+ institution duplicate$ empty$
+ { "institution" bibinfo.warn }
+ { "institution" bibinfo.warn " " * }
+ if$
+ }
+ { "organization" bibinfo.warn " " * }
+ if$
+ type empty$
+ { bbl.standard "type" bibinfo.check }
+ { type "type" bibinfo.check }
+ if$
+ *
+ number duplicate$ empty$
+ { "number" bibinfo.check pop$ }
+ { "number" bibinfo.check
+ large.number.separate
+ swap$ " " * swap$ *
+ }
+ if$
+ cap.status.std
+}
+
+FUNCTION {format.revision}
+{ revision empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ bbl.revision
+ revision tie.or.space.prefix
+ "revision" bibinfo.check
+ * *
+ cap.status.std
+ }
+ if$
+}
+
+
+%% thesis
+
+FUNCTION {format.master.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.mthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+FUNCTION {format.phd.thesis.type}
+{ this.to.prev.status
+ this.status.std
+ type empty$
+ {
+ bbl.phdthesis
+ }
+ {
+ type "type" bibinfo.check
+ }
+ if$
+cap.status.std
+}
+
+
+
+%% URL
+
+FUNCTION {format.url}
+{ is.use.url
+ { url empty$
+ { "" }
+ { this.to.prev.status
+ this.status.std
+ cap.yes 'status.cap :=
+ name.url.prefix " " *
+ "\url{" * url * "}" *
+ punct.no 'this.status.punct :=
+ punct.period 'prev.status.punct :=
+ space.normal 'this.status.space :=
+ space.normal 'prev.status.space :=
+ quote.no 'this.status.quote :=
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% ENTRY HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%
+
+
+% Note: In many journals, the IEEE (or the authors) tend not to show the number
+% for articles, so the display of the number is controlled here by the
+% switch "is.use.number.for.article"
+FUNCTION {article}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.journal "journal" bibinfo.check "journal" output.warn
+ format.volume output
+ format.number.if.use.for.article output
+ format.pages output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {book}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ author empty$
+ { skip$ }
+ { format.editors output }
+ if$
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {booklet}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {electronic}
+{ std.status.using.period
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.date.electronic output
+ format.article.title.electronic output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inbook}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ author empty$
+ { format.editors "author and editor" output.warn }
+ { format.authors output.nonnull }
+ if$
+ name.or.dash
+ format.book.title.edition output
+ format.series output
+ format.address.publisher.date output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {incollection}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle.edition "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.address.publisher.date.nowarn output
+ format.volume output
+ format.number output
+ format.chapter output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {inproceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.in.booktitle "booktitle" output.warn
+ format.series output
+ format.editors output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.paper output
+ format.pages output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {manual}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title.edition "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {mastersthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.master.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {misc}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization "organization" bibinfo.check output
+ format.address "address" bibinfo.check output
+ format.pages output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {patent}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.article.title output
+ format.patent.nationality.type.number output
+ format.patent.date output
+ format.note output
+ format.url output
+ fin.entry
+ empty.entry.warn
+ if.url.std.interword.spacing
+}
+
+FUNCTION {periodical}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ format.organization "organization" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {phdthesis}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.phd.thesis.type output.nonnull
+ format.school "school" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {proceedings}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.editors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.series output
+ format.volume output
+ format.number output
+ publisher empty$
+ { format.address.organization.date output }
+ { format.organization "organization" bibinfo.check output
+ format.address.publisher.date output
+ }
+ if$
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {standard}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors output
+ name.or.dash
+ format.book.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.organization.institution.standard.type.number output
+ format.revision output
+ format.date output
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {techreport}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.howpublished "howpublished" bibinfo.check output
+ format.institution "institution" bibinfo.warn output
+ format.address "address" bibinfo.check output
+ format.tech.report.number output.nonnull
+ format.date "year" output.warn
+ format.note output
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+FUNCTION {unpublished}
+{ std.status.using.comma
+ start.entry
+ if.url.alt.interword.spacing
+ format.authors "author" output.warn
+ name.or.dash
+ format.article.title "title" output.warn
+ format.date output
+ format.note "note" output.warn
+ format.url output
+ fin.entry
+ if.url.std.interword.spacing
+}
+
+
+% The special entry type which provides the user interface to the
+% BST controls
+FUNCTION {IEEEtranBSTCTL}
+{ is.print.banners.to.terminal
+ { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
+ top$
+ }
+ { skip$ }
+ if$
+ CTLuse_article_number
+ empty$
+ { skip$ }
+ { CTLuse_article_number
+ yes.no.to.int
+ 'is.use.number.for.article :=
+ }
+ if$
+ CTLuse_paper
+ empty$
+ { skip$ }
+ { CTLuse_paper
+ yes.no.to.int
+ 'is.use.paper :=
+ }
+ if$
+ CTLuse_url
+ empty$
+ { skip$ }
+ { CTLuse_url
+ yes.no.to.int
+ 'is.use.url :=
+ }
+ if$
+ CTLuse_forced_etal
+ empty$
+ { skip$ }
+ { CTLuse_forced_etal
+ yes.no.to.int
+ 'is.forced.et.al :=
+ }
+ if$
+ CTLmax_names_forced_etal
+ empty$
+ { skip$ }
+ { CTLmax_names_forced_etal
+ string.to.integer
+ 'max.num.names.before.forced.et.al :=
+ }
+ if$
+ CTLnames_show_etal
+ empty$
+ { skip$ }
+ { CTLnames_show_etal
+ string.to.integer
+ 'num.names.shown.with.forced.et.al :=
+ }
+ if$
+ CTLuse_alt_spacing
+ empty$
+ { skip$ }
+ { CTLuse_alt_spacing
+ yes.no.to.int
+ 'is.use.alt.interword.spacing :=
+ }
+ if$
+ CTLalt_stretch_factor
+ empty$
+ { skip$ }
+ { CTLalt_stretch_factor
+ 'ALTinterwordstretchfactor :=
+ "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
+ ALTinterwordstretchfactor * "}" *
+ write$ newline$
+ }
+ if$
+ CTLdash_repeated_names
+ empty$
+ { skip$ }
+ { CTLdash_repeated_names
+ yes.no.to.int
+ 'is.dash.repeated.names :=
+ }
+ if$
+ CTLname_format_string
+ empty$
+ { skip$ }
+ { CTLname_format_string
+ 'name.format.string :=
+ }
+ if$
+ CTLname_latex_cmd
+ empty$
+ { skip$ }
+ { CTLname_latex_cmd
+ 'name.latex.cmd :=
+ }
+ if$
+ CTLname_url_prefix
+ missing$
+ { skip$ }
+ { CTLname_url_prefix
+ 'name.url.prefix :=
+ }
+ if$
+
+
+ num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
+ { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$
+ max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
+ }
+ { skip$ }
+ if$
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+%% ENTRY ALIASES %%
+%%%%%%%%%%%%%%%%%%%
+FUNCTION {conference}{inproceedings}
+FUNCTION {online}{electronic}
+FUNCTION {internet}{electronic}
+FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
+FUNCTION {default.type}{misc}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% MAIN PROGRAM %%
+%%%%%%%%%%%%%%%%%%
+
+READ
+
+EXECUTE {initialize.controls}
+EXECUTE {initialize.status.constants}
+EXECUTE {banner.message}
+
+
+
+% BEGIN sort code based on plainnat.bst
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { numnames #2 > nameptr #2 = and
+ { "zz" *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string * " " *
+ }
+ { skip$ }
+ if$
+ t sortify *
+ }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ bbl.a " " * #2
+ bbl.an " " * #3
+ bbl.the " " * #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.institution.sort}
+{ author empty$
+ { organization empty$
+ { institution empty$
+ { key empty$
+ { "to sort, need author, organization, institution or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { bbl.the " " * #4 institution chop.word sortify }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+
+
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " " bbl.etal * * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " " bbl.etal * * }
+ { " " bbl.and * " " * * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { bbl.the " " * #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.institution.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { institution empty$
+ { cite$ #1 #3 substring$ }
+ { bbl.the " " * #4 institution chop.word #3 text.prefix$ }
+ if$
+ }
+ { bbl.the " " * #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { bbl.the " " * #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.key.label }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.key.organization.label }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.key.organization.label }
+ { type$ "standard" =
+ { author.key.organization.institution.label }
+ { author.key.label }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ 'short.list :=
+ "("
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ duplicate$
+ empty$
+ short.list key empty.field.to.null.string = or
+ { pop$ "" }
+ { skip$ }
+ if$
+ *
+ 'label :=
+}
+
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ duplicate$
+ }
+ { calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.sort }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.organization.sort }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.organization.sort }
+ { type$ "standard" =
+ { author.organization.institution.sort }
+ { author.sort }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ cite$
+ *
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { next.extra "b" =
+ { "a" 'extra.label := }
+ { skip$ }
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ { skip$ }
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+ }
+ if$
+}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+% END sort code based on plainnat.bst
+
+
+
+
+ITERATE {presort}
+
+SORT
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
+EXECUTE{completed.message}
+
+
+%% That's all folks, mds.
diff --git a/macros/latex/contrib/IEEEtran/bibtex/IEEEtran_bst_HOWTO.pdf b/macros/latex/contrib/IEEEtran/bibtex/IEEEtran_bst_HOWTO.pdf
new file mode 100644
index 0000000000..a9d1b408f7
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/IEEEtran_bst_HOWTO.pdf
Binary files differ
diff --git a/macros/latex/contrib/IEEEtran/bibtex/README b/macros/latex/contrib/IEEEtran/bibtex/README
new file mode 100644
index 0000000000..ade47cde58
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/README
@@ -0,0 +1,138 @@
+
+August 26, 2015
+
+
+IEEEtran.bst is the official BibTeX style for authors of the Institute of
+Electrical and Electronics Engineers (IEEE) Transactions journals and
+conferences.
+
+It also may have applications for other academic work such as theses and
+technical reports. The alphanumeric and natbib variants extend the
+applicability of the IEEEtran bibstyle family to the natural sciences
+and beyond.
+
+The IEEEtran bibstyle is a very comprehensive BibTeX style which provides
+many features beyond the standard BibTeX styles, including full support
+for references of online documents, patents, periodicals and standards.
+See the provided user manual for detailed usage information.
+
+The latest version of the IEEEtran BibTeX style can be found at CTAN:
+
+http://www.ctan.org/pkg/ieeetran
+
+as well as within IEEE's site:
+
+http://www.ieee.org/
+
+Note that the packages at IEEE's site do not contain the natbib and
+alphanumeric variants (e.g., IEEEtranN.bst, etc.) as these are not used
+for IEEE related work. These files can be obtained on CTAN.
+
+For helpful tips, answers to frequently asked questions, and other support,
+visit the IEEEtran home page at my website:
+
+http://www.michaelshell.org/tex/ieeetran/
+
+
+Enjoy!
+
+Michael Shell
+http://www.michaelshell.org/
+
+*******
+Version 1.14 (2015/08/26) changes:
+
+ 1. Added the CTLuse_url field to the IEEEtranBSTCTL control entry type
+ to allow user control of the display of URLs.
+ Thanks to Pablo Chacin, Bogdan Roman and Richard Kolacinski for
+ suggesting this feature.
+
+ 2. Added functions bbl.a, bbl.an, bbl.and, bbl.etal and bbl.the
+ as needed to better support other languages.
+ Thanks to Karsten Hinz for suggesting this change.
+
+ 3. Added mention, and an example, of reports about standards to the
+ documentation.
+ Thanks to Guido R. Hiertz for providing information on this topic.
+
+ 4. Fixed missed comma in the BSTcontrol example in the documentation.
+ Thanks to Oscar Gustafsson for reporting this problem.
+
+ 5. Corrected IEEE_J_MTT journal name string in IEEEabrv.bib.
+ Thanks to Nicolás Barabino, Chuanren Wu and Santiago Cogollos Borras
+ for suggesting this change.
+
+ 6. Corrected IEEE_J_STARS journal name string in IEEEabrv.bib.
+ Thanks to Yannick Berker for suggesting this change.
+
+ 7. Revised/enabled abbreviations for IEEE_J_DSC, IEEE_J_LT, IEEE_J_NSM,
+ IEEE_J_SC, IEEE_J_DSC and full and abbreviations for IEEE_M_C
+ and IEEE_M_WC journal name strings in IEEEfull.bib and IEEEabrv.bib.
+
+ 8. Added new journal name strings to IEEEfull.bib and IEEEabrv.bib.
+ Thanks to Uwe Siart and Mona Mittra for helping with obtaining the
+ correct definitions. See changelog.txt for the complete list.
+
+
+********************************** Files **********************************
+
+README - This file.
+
+changelog.txt - The revision history.
+
+IEEEtran_bst_HOWTO.pdf - The user manual.
+
+IEEEtran.bst - The standard IEEEtran BibTeX style file. For use
+ with IEEE work.
+
+IEEEtranS.bst - A version of IEEEtran.bst that sorts the entries.
+ Some IEEE conferences/publications may use/allow
+ sorted bibliographies.
+
+IEEEtranSA.bst - Like IEEEtranS.bst, but with alphanumeric citation
+ tags like alpha.bst. Not for normal IEEE use.
+
+IEEEtranN.bst - Like IEEEtran.bst, but based on plainnat.bst and
+ is compatible with Patrick W. Daly's natbib
+ package. Not for normal IEEE use.
+
+IEEEtranSN.bst - Sorting version of IEEEtranN.bst. Not for normal
+ IEEE use
+
+IEEEexample.bib - An example BibTeX database that contains the
+ references shown in the user manual.
+
+IEEEabrv.bib - String definitions for the abbreviated names of
+ IEEE journals. (For use with IEEE work.)
+
+IEEEfull.bib - String definitions for the full names of IEEE
+ journals. (Do not use for IEEE work.)
+
+***************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall the IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+
+File list of work: IEEEtran_bst_HOWTO.pdf, IEEEtran.bst, IEEEtranS.bst,
+ IEEEtranSA.bst, IEEEtranN.bst, IEEEtranSN.bst,
+ IEEEexample.bib, IEEEabrv.bib, IEEEfull.bib
+
+***************************************************************************
diff --git a/macros/latex/contrib/IEEEtran/bibtex/changelog.txt b/macros/latex/contrib/IEEEtran/bibtex/changelog.txt
new file mode 100644
index 0000000000..585faacd0b
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/bibtex/changelog.txt
@@ -0,0 +1,173 @@
+
+
+Changelog history of the IEEEtran BibTeX class.
+ 2015/08/26
+ by Michael Shell (MDS)
+ http://www.michaelshell.org/
+
+
+ 2015/08/26 V1.14 (MDS) changes:
+ 1. Added the CTLuse_url field to the IEEEtranBSTCTL control entry type
+ to allow user control of the display of URLs.
+ Thanks to Pablo Chacin, Bogdan Roman and Richard Kolacinski for
+ suggesting this feature.
+
+ 2. Added functions bbl.a, bbl.an, bbl.and, bbl.etal and bbl.the
+ as needed to better support other languages.
+ Thanks to Karsten Hinz for suggesting this change.
+
+ 3. Added mention, and an example, of reports about standards to the
+ documentation.
+ Thanks to Guido R. Hiertz for providing information on this topic.
+
+ 4. Fixed missed comma in the BSTcontrol example in the documentation.
+ Thanks to Oscar Gustafsson for reporting this problem.
+
+ 5. Corrected IEEE_J_MTT journal name string in IEEEabrv.bib.
+ Thanks to Nicolás Barabino, Chuanren Wu and Santiago Cogollos Borras
+ for suggesting this change.
+
+ 6. Corrected IEEE_J_STARS journal name string in IEEEabrv.bib.
+ Thanks to Yannick Berker for suggesting this change.
+
+ 7. Revised/enabled abbreviations for IEEE_J_DSC, IEEE_J_LT, IEEE_J_NSM,
+ IEEE_J_SC, IEEE_J_DSC and full and abbreviations for IEEE_M_C
+ and IEEE_M_WC journal name strings in IEEEfull.bib and IEEEabrv.bib.
+
+ 8. Added new journal name strings to IEEEfull.bib and IEEEabrv.bib.
+ Thanks to Uwe Siart and Mona Mittra for helping with obtaining the
+ correct definitions.
+ The new journal string name definitions are (full version shown):
+
+ @STRING{IEEE_J_AFFC = "{IEEE} Transactions on Affective Computing"}
+ in 2014 ASL became ASLP
+ @STRING{IEEE_J_ASLP = "{IEEE/ACM} Transactions on Audio, Speech, and Language Processing"}
+ @STRING{IEEE_J_JAS = "{IEEE/CAA} Journal of Automatica Sinica"}
+ @STRING{IEEE_J_AMD = "{IEEE} Transactions on Autonomous Mental Development"}
+ @STRING{IEEE_J_BD = "{IEEE} Transactions on Big Data"}
+ @STRING{IEEE_J_BHI = "{IEEE} Journal of Biomedical and Health Informatics"}
+ @STRING{IEEE_J_CC = "{IEEE} Transactions on Cloud Computing"}
+ @STRING{IEEE_J_CCN = "{IEEE} Transactions on Cognitive Communications and Networking"}
+ in 2015 AMD became CDS
+ @STRING{IEEE_J_CDS = "{IEEE} Transactions on Cognitive and Developmental Systems"}
+ in 2011 CAPT became CPMT
+ @STRING{IEEE_J_CPMT = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology"}
+ @STRING{IEEE_J_CIAIG = "{IEEE} Transactions on Computational Intelligence and {AI} in Games"}
+ @STRING{IEEE_J_CSS = "{IEEE} Transactions on Computational Social Systems"}
+ @STRING{IEEE_J_CNS = "{IEEE} Transactions on Control of Network Systems"}
+ in 2013 SMCB became CYB
+ @STRING{IEEE_J_CYB = "{IEEE} Transactions on Cybernetics"}
+ @STRING{IEEE_J_EDS = "{IEEE} Journal of Electron Devices Society"}
+ @STRING{IEEE_J_ES = "{IEEE} Embedded Systems Letters"}
+ @STRING{IEEE_J_ETC = "{IEEE} Transactions on Emerging Topics in Computing"}
+ @STRING{IEEE_J_ETCAS = "{IEEE} Transactions on Emerging and Selected Topics in Circuits and Systems"}
+ @STRING{IEEE_J_ESTPE = "{IEEE} Transactions on Emerging and Selected Topics in Power Electronics"}
+ @STRING{IEEE_J_XCDC = "{IEEE} Journal on Exploratory Solid-State Computational Devices and Circuits"}
+ in 2013 SMCC became HMS
+ @STRING{IEEE_J_HMS = "{IEEE} Transactions on Human-Machine Systems"}
+ @STRING{IEEE_J_IV = "{IEEE} Transactions on Intelligent Vehicles"}
+ @STRING{IEEE_J_IOT = "{IEEE} Internet of Things Journal"}
+ @STRING{IEEE_J_LS = "{IEEE} Life Sciences Letters"}
+ @STRING{IEEE_J_MAGL = "{IEEE} Magnetics Letters"}
+ in 2014 MEMS became MEMSI
+ @STRING{IEEE_J_MEMSI = "{IEEE} Journal of Microelectromechanical Systems"}
+ @STRING{IEEE_J_MBSC = "{IEEE} Transactions on Molecular, Biological and Multi-Scale Communications"}
+ @STRING{IEEE_J_MSCS = "{IEEE} Transactions on Multi-Scale Computing Systems"}
+ @STRING{IEEE_J_MMCT = "{IEEE} Journal on Multiscale and Multiphysics Computational Techniques"}
+ @STRING{IEEE_J_ENANO = "{IEEE} Nanotechnology Express"}
+ @STRING{IEEE_J_NSE = "{IEEE} Transactions on Network Science and Engineering"}
+ in 2012 NN became NNLS
+ @STRING{IEEE_J_NNLS = "{IEEE} Transactions on Neural Networks and Learning Systems"}
+ @STRING{IEEE_J_OCN = "{IEEE} Journal of Optical Communications and Networking"}
+ @STRING{IEEE_J_PJ = "{IEEE} Photonics Journal"}
+ @STRING{IEEE_J_PHOT = "{IEEE} Journal of Photovoltaics"}
+ @STRING{IEEE_J_PETS = "{IEEE} Power and Energy Technology Systems Journal"}
+ @STRING{IEEE_J_RFIC = "{IEEE} {RFIC} Journal"}
+ @STRING{IEEE_J_RFID = "{IEEE} {RFID} Journal"}
+ @STRING{IEEE_J_RITA = "{IEEE} Revista Iberoamericana de Technolog{\'{i}}as del Aprendizaje"}
+ @STRING{IEEE_J_RAL = "{IEEE} Robotics and Automation Letters"}
+ @STRING{IEEE_J_SIPN = "{IEEE} Transactions on Signal and Information Processing over Networks"}
+ @STRING{IEEE_J_SG = "{IEEE} Transactions on Smart Grid"}
+ @STRING{IEEE_J_SUSC = "{IEEE} Sustainable Computing"}
+ @STRING{IEEE_J_STE = "{IEEE} Transactions on Sustainable Energy"}
+ in 2012 SMCA became SMCS
+ @STRING{IEEE_J_SMCS = "{IEEE} Transactions on Systems, Man, and Cybernetics: Systems"}
+ @STRING{IEEE_J_TEHM = "{IEEE} Journal of Translational Engineering in Health and Medicine"}
+ @STRING{IEEE_J_TTHZ = "{IEEE} Transactions on Terrahertz Science and Technology"}
+ @STRING{IEEE_J_TTE = "{IEEE} Transactions on Transportation Electrification"}
+ @STRING{IEEE_J_WCOML = "{IEEE} Wireless Communications Letters"}
+
+ magazines and Online Publications
+ @STRING{IEEE_O_ACC = "{IEEE} Access"}
+ @STRING{IEEE_M_CHINAC = "China Communications Magazine"}
+ in 2012 DTC became DT
+ @STRING{IEEE_M_DT = "{IEEE} Design \&\ Test"}
+ @STRING{IEEE_M_ETF = "{IEEE} Electrification Magazine"}
+ @STRING{IEEE_M_EMC = "{IEEE} Electromagnetic Compatibility Magazine"}
+ @STRING{IEEE_M_GRS = "{IEEE} Geoscience and Remote Sensing Magazine"}
+ @STRING{IEEE_M_PEL = "{IEEE} Power Electronics Magazine"}
+ @STRING{IEEE_M_PULSE = "{IEEE} Pulse"}
+ @STRING{IEEE_M_SSC = "{IEEE} Solid-State Circuits Magazine"}
+ @STRING{IEEE_M_SMC = "{IEEE} Systems, Man, and Cybernetics Magazine"}
+
+
+ 2008/09/30 V1.13 (MDS) changes
+ 1. Fixed bug with edition number to ordinal conversion. Thanks to
+ Michael Roland for reporting this and correcting the algorithm.
+
+
+ 2007/01/11 V1.12 (MDS) changes
+ 1. Fixed bug with unwanted comma before "et al." when an entry contained
+ more than two author names. Thanks to Pallav Gupta for reporting this.
+
+ 2. Fixed bug with anomalous closing quote in tech reports that have a
+ type, but without a number or address. Thanks to Mehrdad Mirreza for
+ reporting this.
+
+ 3. Use braces in \providecommand in begin.bib to better support
+ latex2html. TeX style length assignments OK with recent versions
+ of latex2html - 1.71 (2002/2/1) or later is strongly recommended.
+ Use of the language field still causes trouble with latex2html.
+ Thanks to Federico Beffa for reporting this.
+
+ 4. Added IEEEtran.bst ID and version comment string to .bbl output.
+
+ 5. Provide a \BIBdecl hook that allows the user to execute commands
+ just prior to the first entry.
+
+ 6. Use default urlstyle (is using url.sty) of "same" rather than rm to
+ better work with a wider variety of bibliography styles.
+
+ 7. Changed month abbreviations from Sept., July and June to Sep., Jul.,
+ and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann
+ for reporting this.
+
+ 8. Fixed bug where control entry types should not be considered when
+ calculating longest label width.
+
+ 9. Added alias www for electronic/online entry type.
+
+ 10. Added CTLname_url_prefix control entry field to the BST control entry
+ type.
+
+
+ 2003/04/02 V1.11 (MDS) changes
+ 1. Fixed bug with URLs containing underscores when using url.sty. Thanks
+ to Ming Kin Lai for reporting this.
+
+
+ 2002/09/27 V1.10 (MDS) changes
+ 1. Corrected minor bug for improperly formed warning message when a
+ book was not given a title. Thanks to Ming Kin Lai for reporting this.
+
+ 2. Added support for CTLname_format_string and CTLname_latex_cmd fields
+ in the BST control entry type.
+
+
+ 2002/08/13 V1.00 (MDS)
+ Initial release
+
+
+
+
+
diff --git a/macros/latex/contrib/IEEEtran/changelog.txt b/macros/latex/contrib/IEEEtran/changelog.txt
new file mode 100644
index 0000000000..0fff10569e
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/changelog.txt
@@ -0,0 +1,783 @@
+
+
+ Changelog history of the IEEEtran LaTeX class.
+ 2015/08/26
+ by Michael Shell (MDS)
+ http://www.michaelshell.org/
+
+
+ 2015/08/26 V1.8b (MDS) changes:
+
+ 1) Added new comsoc mode for the IEEE Communications Society.
+ This mode (at present) only invokes the use of the newtxmath math fonts.
+
+ 2) Revised IEEEeqnarray column specifications to work with active "
+ (or other punctuation catcode changes) as with babel under the
+ german or ngerman language modes.
+ Thanks to Stefan M. Moser for reporting this problem.
+
+ 3) Added \indexspace and other index related macros as newer versions of
+ article.cls now do. These macros are needed to avoid an error when
+ using the glossaries package.
+ Thanks to Sebastian Nyberg for suggesting this change.
+
+ 4) Fixed odd/even page header font bug under compsoc mode and
+ other page style code improvements.
+ Thanks to Marco Paolieri for reporting this problem.
+
+ 5) Added hooks to allow for easy control of spacing above title.
+
+ 6) Added the \IEEEnoauxwrite command.
+ Thanks to Sudarshan Mukherjee for suggesting this feature.
+
+
+ 2014/09/17 V1.8a (MDS) changes:
+
+ 1) Extensive rework of the compsoc mode to comply with the latest standards
+ of the IEEE Computer Society.
+
+ 2) Internal code improvements for page setup and command argument
+ processing.
+
+ 3) Fixed abstract, index terms and diamond line for compsoc technotes.
+ Thanks to Dimitris Schinianakis for reporting this problem.
+
+ 4) New cspaper option to support the special trim paper size
+ (7.875in x 10.75in) used in actual Computer Society journals. For
+ compsoc journal mode, typesetting will not be altered by the use of this
+ option.
+
+ 5) New \IEEEraisesectionheading{} command to provide for the special raised
+ first section heading of Computer Society journal papers.
+
+ 6) Increased \clubpenalty, \widowpenalty, \displaywidowpenalty to
+ discourage paragraph breaks at the first and last lines.
+ Thanks to Dirk Beyer for suggesting this change.
+
+ 7) Added lines per column console message.
+
+
+*******
+ 2012/12/27 V1.8 (MDS) changes::
+
+ 1) New transmag class option to support the IEEE Transactions on Magnetics
+ format. Thanks to Wei Yingkang, Sangmin Suh and Benjamin Gaussens
+ for suggestions and beta testing.
+
+ 2) The \IEEEcompsoctitleabstractindextext and
+ \IEEEdisplaynotcompsoctitleabstractindextext
+ commands have been deprecated in favor of their
+ \IEEEtitleabstractindextext and \IEEEdisplaynontitleabstractindextext
+ (observe that the "not" has changed to "non") equivalents. This change
+ generalizes and decouples them from compsoc mode because the new
+ transmag mode also uses them now.
+
+ 3) Added new *-forms of \IEEEyesnumber*, \IEEEnonumber*, \IEEEyessubnumber*,
+ and \IEEEnosubnumber* (the non-star form of the latter is also new) which
+ persist across IEEEeqnarray lines until countermanded. To provide for
+ continued subequations across instances of IEEEeqnarrays as well as for
+ subequations that follow a main equation (e.g., 14, 14a, 14b ...)
+ \IEEEyessubnumber no longer automatically increments the equation number
+ on it's first invocation of a subequation group. Invoke both
+ \IEEEyesnumber\IEEEyessubnumber together to start a new
+ equation/subequation group.
+
+ 4) Hyperref links now work with IEEEeqnarray equations.
+ Thanks to Stefan M. Moser for reporting this problem.
+
+ 5) Fixed \markboth so that it does not cause an error with babel.sty.
+ Thanks to Frank Meier for suggesting this change.
+
+ 6) Change all instances of ~ to \nobreakspace to avoid
+
+ ! Argument of \language@active@arg~ has an extra }
+
+ figure caption error with bable.sty under spanish. Thanks to
+ Manuel Olivares and Javier Bezos for suggesting this change.
+
+ 7) Allow line breaks within long theorem names.
+ Thanks to Miquel Payaro for suggesting this change.
+
+ 8) Revised \IEEEeqnarraymulticol{} to allow inner alignments without
+ requiring extra containing braces to prevent an incomplete \ifx error.
+ Thanks to Stefan M. Moser and Auke van der Valk for reporting this
+ problem.
+
+ 9) Revised spacing at top of top figures and tables to better
+ align with the top main text lines as IEEE does in its journals.
+ Thanks to Dirk Beyer for reporting this issue and beta testing.
+
+10) Removed support for legacy IED list commands, legacy QED and proof
+ commands and the legacy biography and biographynophoto environments.
+ IEEEtran no longer defines or references \labelindent so as to
+ avoid namespace problems with list packages that define it.
+ Thanks to Sven Köhler for reporting the problem with enumitem.sty.
+
+
+*******
+ 2007/03/05 V1.7a (MDS) changes:
+
+ 1) Corrected problem of unwanted two column peer review title page format.
+ Thanks to Virgilio Rodriguez for reporting this bug.
+
+ 2) "depreciated" -> "deprecated". Thanks to Virgilio Rodriguez for
+ suggesting this change.
+
+
+
+*******
+ 2007/01/11 V1.7 (MDS) changes:
+
+ 1) New class option compsoc to support the IEEE Computer Society format.
+
+ 2) New class option captionsoff disables the display of figure/table
+ captions. endfloat.sty is now mentioned in the docs. Thanks to Geoff
+ Walker for suggesting these changes.
+
+ 3) Fixed compatibility issues with subfig.sty and caption.sty. Thanks to
+ Steven Douglas Cochran and Axel Sommerfeldt for suggesting this change.
+
+ 4) New \CLASSINPUT, \CLASSOPTION and \CLASSINFO interface allows for more
+ user control and conditional compilation.
+
+ 5) \ifcenterfigcaptions (\centerfigcaptionstrue, \centerfigcaptionsfalse),
+ \CMPARstart and \overrideIEEEmargins have been removed and no are
+ longer supported. The effect of \overrideIEEEmargins can be mimicked
+ via the more general \CLASSINPUT interface:
+ % US letter paper:
+ \newcommand{\CLASSINPUTinnersidemargin}{0.775in}
+ \newcommand{\CLASSINPUToutersidemargin}{0.585in}
+ % A4 paper:
+ \newcommand{\CLASSINPUTinnersidemargin}{17mm}
+ \newcommand{\CLASSINPUToutersidemargin}{11.647mm}
+
+ 6) Several commands and environments have been deprecated in favor of
+ replacements with IEEE prefixes to better avoid potential future name
+ clashes with other packages. Legacy code retained to allow the use of
+ the obsolete forms (for now), but with a warning message to the console
+ during compilation:
+ \IEEEauthorblockA, \IEEEauthorblockN, \IEEEauthorrefmark,
+ \IEEEbiography, \IEEEbiographynophoto, \IEEEkeywords, \IEEEPARstart,
+ \IEEEproof, \IEEEpubid, \IEEEpubidadjcol, \IEEEQED, \IEEEQEDclosed,
+ \IEEEQEDopen, \IEEEspecialpapernotice. IEEEtran.cls now redefines
+ \proof in way to avoid problems with the amsthm.sty package.
+ For IED lists:
+ \IEEEiedlabeljustifyc, \IEEEiedlabeljustifyl, \IEEEiedlabeljustifyr,
+ \IEEEnocalcleftmargin, \IEEElabelindent, \IEEEsetlabelwidth,
+ \IEEEusemathlabelsep
+
+ 7) These commands/lengths now require the IEEE prefix and do not have
+ legacy support: \IEEEnormaljot.
+ For IED lists: \ifIEEEnocalcleftmargin, \ifIEEEnolabelindentfactor,
+ \IEEEiedlistdecl, \IEEElabelindentfactor
+
+ 8) \normalsizebaselineskip skip replaced by
+ \CLASSINFOnormalsizebaselineskip (nonrubber dimen) length.
+ Also, new \CLASSINFOnormalsizeunitybaselineskip (nonrubber dimen)
+ provided.
+
+ 9) Now defaults to using Alpha numbering rather than Roman for appendices
+ numbering. This is because Alpha numbering is more common and avoids
+ problems with theorem numbering. \ifuseRomanappendices
+ (\useRomanappendicestrue, \useRomanappendicesfalse) is no longer
+ supported. Instead, use the new class option romanappendices if Roman
+ appendices numbering is desired. Thanks to Leonid Mirkin for reporting
+ the problem with theorems in appendices and suggesting changes.
+
+10) Improved paper size setting code for pdflatex.
+
+11) Better handling of theorem numbering when using the section counter
+ within the appendix(cies). Thanks to Leonid Mirkin for suggesting
+ this change.
+
+12) Fixed bug that caused equations at the end of theorems to be too
+ close to the line below them.
+
+13) Provided hook to conference mode console notice and changed notice to
+ better support conferences that use A4 paper. Thanks to Volker Kuhlmann
+ for suggesting this change.
+
+14) \IEEEauthorrefmark made robust to allow it to be used in \thanks
+ without a leading \protect
+
+15) Improved \textunderscore to provide a much better fake _ when used with
+ OT1 encoding. Under OT1, detect use of pcr or cmtt \ttfamily and use
+ available true _ glyph for those two typewriter fonts.
+
+16) Revised internal \@sect command to be more robust for users who employ
+ modified section heading formats. Thanks to Zarko F. Cucej for
+ suggesting this change.
+
+17) Improved \thesubsubsection definition to prevent breaks at the hyphen.
+ Thanks to Moritz Borgmann for suggesting this change. Thanks to
+ Dan Luecking and Heiko Oberdiek for explaining some of the various
+ alternatives and techniques to fix it.
+
+18) No longer provide \NAT@parse hack to get cite.sty to play (somewhat)
+ with hyperref.sty as this is already included in cite.sty version
+ 4.0 (2003-05-27) and later.
+
+19) At the beginning of document, set the default style of url.sty to be
+ the same as the current text font - as is done in IEEE journals.
+
+20) Corrected excessive line spacing in journal table captions. Thanks to
+ Moritz Borgmann for suggesting this change.
+
+21) Corrected \thesubsubsection to use the "I-A1" format IEEE uses rather
+ than "I-A.1" as was done before. Ditto for \theparagraph. Thanks to
+ Moritz Borgmann for suggesting this change.
+
+22) Enclose papersize specials within \AtBeginDvi in case someone wants
+ to make a format with IEEEtran. Thanks to Moritz Borgmann for
+ suggesting this change.
+
+23) Eliminated the small space after abstract and keywords dash as IEEE
+ now does. Thanks to Moritz Borgmann for suggesting this change.
+
+24) IEEEkeywords is no longer locked out in conference mode
+
+25) Increase defaults of \binoppenalty and \relpenalty to discourage
+ breaks within equations. Thanks to Moritz Borgmann for suggesting
+ this change.
+
+26) Support optional argument for IEEEproof. Thanks to Ingo Steinwart for
+ suggesting this change. Also, start a new \par with \IEEEproof.
+
+27) Add support for an optional argument to \bstctlcite.
+
+28) Changed \topfraction and \dbltopfraction from 1.0 to 0.9. Thanks to
+ Donald Arseneau for suggesting this change.
+
+
+*******
+ 2005/09/13 V1.6c (MDS) changes:
+
+ 1) Changed endfigure/endfloat definitions so as not to cause problems with
+ preview-LaTeX and other packages. Thanks to Stephan Heuel and David
+ Kastrup for reporting this problem.
+
+
+
+*******
+ 2002/11/18 V1.6b (MDS) changes:
+
+ 1) Fixed problem with figure captions when using hyperref. Thanks to
+ Leandro Barajas and Michael Bassetti for reporting this bug.
+
+ 2) Provide a fake nabib command \NAT@parse so that hyperref will not
+ interfere with the operation of cite.sty. However, as a result citation
+ numbers will not be hyperlinked. Also, natbib will not be able to work
+ with IEEEtran. However, this is perhaps the best solution until
+ cite.sty and hyperref.sty are able to co-exist with each other.
+ It easy enough to override the fake command via:
+ \makeatletter
+ \let\NAT@parse\undefined
+ \makeatother
+
+ 3) Revised font selection method so as not to have problems when used
+ with setspace.sty. Thanks to Zhang Yan for reporting this bug.
+
+ 4) Added \special to feed papersize to dvips. Thanks to Moritz Borgmann
+ for suggesting this feature.
+
+ 5) In addition to the IEEE IED lists, the original IED style list
+ environments (as is done in article.cls) are now provided as
+ LaTeXitemize, LaTeXenumerate, and LaTeXdescription. Also, users can
+ now redefine \makelabel within IEEE IED list controls. There may be
+ some use for this in specialized applications. Thanks to Eli Barzilay
+ for suggesting this feature.
+
+ 6) \table* now defaults to \footnotesize text like \table.
+
+ 7) The draft modes now no longer force a pagebreak after the title.
+ Thanks to Christian Peel for suggesting this change.
+
+ 8) New draftclsnofoot mode is like draftcls, but does not display the
+ date and the word "DRAFT" at the foot of the page. Thanks to
+ Christian Peel for suggesting this feature.
+
+ 9) New peerreview and peerreviewca modes with \IEEEpeerreviewmaketitle
+ command allows for a "cover" titlepage for anonymous peer review.
+ Except for the cover titlepage, peerreview is much like journal mode.
+ peerreviewca is like peerreview, but allows the author names to be
+ entered and formatted as under conference mode so that author
+ affiliations and contact information can be easily seen on the cover
+ page. Thanks to Eric Benedict for suggesting this feature.
+
+
+
+*******
+ 2002/08/13 V1.6 (MDS) changes:
+
+ 1) Added conference mode via conference option. Defaults to the
+ traditional journal mode. e.g., \documentclass[conference]{IEEEtran}
+
+ 2) Added support for A4 paper via new a4paper option. Pdflatex's paper
+ size lengths are now automatically set to the proper paper size being
+ used.
+
+ 3) Revised margins again. Page text is now horizontally centered.
+ Conference mode increases the top and bottom margins with the bottom
+ margin being slightly larger. For A4 paper, the top margin and text
+ typesetting will not change from those of US letter paper, but the side
+ margins will be smaller and the bottom margin will be larger than that
+ of US letter. All per IEEE specs.
+
+ 4) Fixed footnote line spacing anomaly in draft mode.
+ Thanks to Alberto Rodriguez for reporting this bug.
+
+ Also, slightly revised footnote and \thanks note spacing.
+ Set \interfootnotelinepenalty=10000 to prevent LaTeX
+ from breaking footnotes across multiple pages or columns.
+
+ 5) Fixed bug that caused overwritten photo areas and sometimes anomalous
+ spacing when a new paragraph was started within a biography. Also,
+ the presence of \par's, new lines or spaces at the beginning of
+ abstract, keywords, biography, or biographynophoto will no longer
+ affect the first word spacing.
+ Thanks to Eric Durant for reporting this bug.
+
+ The biography environment now does a better job in preventing
+ a biography photo area from being broken across pages or columns.
+
+ 6) Fixed whitespace between \cite entries bug. i.e.,
+ both \cite{einstein24, knuth84} and \cite{einstein24,knuth84}
+ are now valid. \cite is now a robust command as it should be.
+ IEEEtran now no longer defines the old non-standard \shortcite or
+ \citename.
+
+ The base IEEEtran.cls does not sort citation numbers or produce ranges
+ for three or more consecutive numbers. However, V1.6 of IEEEtran.cls
+ now pre-defines the following format control macros to facilitate easy
+ use with Donald Arseneau's cite.sty package (tested with cite.sty V3.9):
+
+ \def\citepunct{], [}
+ \def\citedash{]--[}
+
+ cite.sty is standard on most LaTeX sytems and can be obtained from
+ www.ctan.org. Thanks to Donald Arseneau for creating cite.sty,
+ providing the required format arguments to produce the IEEE style
+ and designing a cite interface capable of handling the IEEE citation
+ style.
+
+ Note: Historically, IEEE has wanted authors to "hardcode" symbolics.
+ (i.e., replace all \cite{} with fixed [x]). However, it now seems that
+ most electronic manuscript submissions to IEEE are in .pdf format, and
+ as such, do not require the LaTeX document reference numbers to be hard
+ coded. If an author is required to submit actual LaTeX files, I do
+ recommend that the bibliography file (.bbl) be copied into the .tex
+ document and the \bibliographystyle{} and \bibliography{} commands be
+ commented out so that the .tex file does not depend on (potentially
+ lengthy and/or confidential) external bibliography database files
+
+ 7) Adjusted some spacing parameters. The spacing above and below equations
+ has been revised (to a typical IEEE value). \jot now has a decent value.
+ The title text is now exactly 24pt. (On a related note, \fontsubfuzz has
+ been increased to 0.9pt to prevent annoying font substitution warnings
+ when using the Computer Modern fonts that use the 24.88pt size.)
+ In V1.6, \small is now 8.5pt in 9pt docs because \footnotesize is 8pt.
+ For 9pt docs, you should probably go ahead and use \footnotesize when
+ you need text a little smaller than \normalsize.
+ The interword spacing has been adjusted to be extremely close to that
+ which IEEE uses. You can use a new class option, nofonttune, if you need
+ to disable the adjusting of the interword spacing. This adjustment and
+ an increase to \hyphenpenalty have greatly reduced the amount of
+ hyphenation in a typical paper.
+ The baselineskip for the normalsize fonts has been tweaked to reduce
+ underfull vboxes on journal paper columns with only paragraphs.
+ Conference mode does the same thing but by also tweaking the \textheight
+ slightly off 9.25in (IEEE spec) to ensure an integer number of lines per
+ page. Draft (also draftcls) mode has also been revised to reduce
+ underfull vbox warnings. However, draft mode can still produce underfull
+ vboxes (a direct result of the increase in line spacing and margins) if:
+ A non-normalsize font occupies an entire column (abstract and index
+ terms take up a whole column by themselves); or the beginning of a
+ section occurs near the end of a column and cannot be squeezed into the
+ bottom, etc. This is normal as draft mode's liberal spacings cannot
+ guarantee perfect formatting.
+
+ 8) New biographynophoto environment for biographies without photos.
+ Usage:
+
+ \begin{biographynophoto}{author name}
+ biography text here
+ \end{biographynophoto}
+
+ 9) Fixed bug that produced multiple table of contents entries for papers
+ with more than one biography. Also, biography now works better with
+ hyperref.
+
+10) New \sublargesize font size command provides for 11pt text in a 10pt
+ document. (Needed for things like author names.) For documents not
+ using 10pt normal size text, \sublargesize is currently identical
+ to \large.
+
+11) New \IEEEmembership command to provide correct font to indicate IEEE
+ membership for journal papers.
+
+12) Fixed author name line overflow problem when in journal mode. This
+ problem had been introduced in V1.5 in my rush to get \and to work for
+ conferences. \and is unneeded (and invalid) in journal mode. For
+ conference mode, \and will work as expected and features an optional
+ spacing argument. i.e., \and[\hspace{5ex}]
+ \and will default (recommended) to using \hfill which will result in
+ equal spacing between author blocks.
+
+13) New \authorblockN, \authorblockA and \authorrefmark commands to
+ facilitate easy formatting of author names, affiliations and cross
+ reference symbols, respectively, when in conference mode. These
+ three commands are to be used only for conference papers.
+ In conference mode, \author text is placed within a modified tabular
+ environment (somewhat like article.cls). So, within \author in
+ conference mode, you should not try to enclose multiple \\ within an
+ environment or command (other than the argument braces of
+ \authorblockX{}). For example:
+
+ \author{\authorblockN{{John Doe \\ Jane Doe}}} % WRONG!
+
+ will generate an error.
+
+ Note that font size/attribute changes will now persists across \\
+ within \author. (But, not across author blocks nor across \and.)
+ However, with the new commands, there should be no need to alter any
+ font attributes within \author. All text sizing and spacing within
+ \author{} and the author block commands is per IEEE specs for both
+ conference and journal modes. (In conference mode, the author names
+ are only very slightly larger than the affiliations which are in normal
+ size.) For specialized applications you can alter the justification of
+ author lines by placing \hfill at the beginning or at the end of a line.
+ The interline spacing within \author is determined by the font
+ attributes that are in effect at the end of each line within author.
+
+14) Because the titles and author name blocks use different font
+ sizes/styles from the main text, it was possible that two column papers
+ with titles that span both columns (standard journal and conference
+ papers, but not technotes) with certain numbers of lines for the title
+ and authors' name/affiliations can cause underfull vbox problems
+ (paragraphs with large spacings between them) in the second column of
+ the main text on the title page - if there were no new sections,
+ equations or figures in this column (they would provide some needed
+ rubber spacing). The use of things like special paper notices and
+ publisher ID marks also affected this issue. The problem could not
+ happen in the first column because the first column has a rubber length
+ around the heading of the first section. Furthermore, problems seldom
+ occurred on pages after the first as the margins had been chosen not to
+ cause it with the popular font sizes. Rubber lengths after the author
+ names would not fix this problem.
+ Auto-calculating a "good" spacing after the title is a tad difficult
+ to do in LaTeX. However, I am pleased to report that V1.6 has this new
+ capability - "dynamically determined title spacing". IEEEtran will now
+ measure the height of all the title and author text in \maketitle
+ and then calculate a rigid (non-rubber) spacer to follow that meets
+ IEEE specs and also produces a \textheight on the title page that
+ ensures an integer number of normalsized lines on the rest of the page.
+ Single column papers, and two column papers with the title entirely in
+ column one (technotes) do not need dynamic rigid spacing and therefore
+ use standard rubber spacers.
+
+ Note: This problem can still crop up if you use floats that span both
+ columns (i.e., figure*). It has been a decade+ long limitation with
+ LaTeX that the stretchable portion of \dbltextfloatsep is ignored.
+ If you get a problem with underful vbox warnings and paragraphs that
+ "are pulled apart" on page with a float that spans both columns, tweak
+ the space between the figure and the main text a little:
+
+ \vskip 5pt
+ \end{figure*}
+
+ If you can't find a value that fixes both columns, you are going to
+ have to put a rubber spacer somewhere in one or both of the columns.
+15) Because of change #14 above, those of you using \pubid will, as of V1.6,
+ have to place it *before* \maketitle in order for it have the intended
+ affect. The dynamic spacer algorithm must see if you are using \pubid
+ when \maketitle is called. \pubidadjcol works as before except that it
+ now has additional logic to prevent it from doing anything if \pubid
+ was never called.
+
+16) In some unusual, non-standard circumstances, an author may desire to
+ alter the spacing after the title area or put some unusual text above
+ the main text. For instance, to stop a bad break when a new section
+ occurs right at the start of the second page. This is difficult to do
+ when the title spans both columns of two column text since LaTeX treats
+ such title text as a type of float. A new command,
+ \IEEEaftertitletext{}, gives access to the end of that produced by
+ \maketitle. The types of things that can go into \IEEEaftertitletext
+ are the same as those into \twocolumn[] - no \par, but \\ are OK. There
+ is no restriction on the range of spacings that can be used. e.g.,
+ \IEEEaftertitletext{\vspace{-100pt}} will push the main text well into
+ the title and \IEEEaftertitletext{\vspace{100pt}} will push it far down
+ the page. You will have complete control. If used, place
+ \IEEEaftertitletext{} before \maketitle like \title and \author.
+ IEEEtran's dynamic title spacing intentionally does not take into
+ consideration the contents of \IEEEaftertitletext{} when determining
+ the spacer after the title area (otherwise it would try to second
+ guess you), so the user will have manually adjust the height of the
+ contents in \IEEEaftertitletext{} if the problem discussed in #14 above
+ should develop. A safe bet is to keep the height of contents of
+ \IEEEaftertitletext{} to integer multiples of \baselineskip, e.g.,
+ \IEEEaftertitletext{\vspace{-1\baselineskip}}
+
+ Because it can result in an IEEE nonstandard format, the use of
+ \IEEEaftertitletext{} is discouraged. Possible uses include (1) the use
+ of IEEEtran for non-IEEE work with different title spacing requirements,
+ or (2) as an emergency manual override if a problem should develop in
+ IEEEtran's automatic spacing algorithm.
+
+17) completely rewritten \PARstart to:
+ a. no longer have problems when the user begins an environment
+ within the paragraph that uses \PARstart.
+ b. auto-detect and use the current font family
+ c. revise handling of the space at the end of the first word so that
+ interword glue will now work as normal.
+ d. produce correctly aligned edges for the (two) indented lines.
+
+ Because the current font family is now auto-detected, there is no
+ longer any need for \CMPARstart - it is now the same as \PARstart.
+
+18) There is now a new "open box" Q.E.D. symbol (\QEDopen) as well as the
+ original default (\QED) closed one (\QEDclosed). Some journals use
+ the open form. To make \proof use the open form, just do:
+ \renewcommand{\QED}{\QEDopen}
+
+19) Additional \typeout{} notices added to warn the user when unusual
+ settings/commands are detected or as reminders to avoid common errors
+ when in conference mode.
+
+20) IEEEtran now provides \abovecaptionskip and \belowcaptionskip skip
+ registers because article class provides them and some packages
+ may error if they are missing. However, IEEEtran only uses
+ \abovecaptionskip for actual caption spacing.
+
+21) Fixed bug that prevented users from redefining the section headings
+ to use arabic digits. Thanks to Richardt H. Wilkinson for reporting
+ this bug.
+
+22) Code cleaned up to be more efficient with the use of TeX registers;
+ removed some old LaTeX 2.09 code; revised option processing to
+ LaTeX2e standard; eliminated unwanted "phantom" spaces in some
+ environments.
+
+23) Added new \IEEEeqnarray, \IEEEeqnarraybox, \IEEEeqnarrayboxm and
+ \IEEEeqnarrayboxt environments to provide superior alternatives to the
+ standard LaTeX \eqnarray, \array and \tabular. Additional new support
+ commands include \IEEEeqnarraydecl, \IEEEeqnarrayboxdecl,
+ \IEEEeqnarraymathstyle, \IEEEeqnarraytextstyle, \yesnumber.
+ \IEEEnonumber, \IEEEyesnumber, \IEEEyessubnumber, \IEEEeqnarraynumspace,
+ \IEEEeqnarraymulticol, \IEEEeqnarrayomit, \IEEEeqnarraydefcol,
+ \IEEEeqnarraydefcolsep, \IEEEeqnarrayseprow, \IEEEeqnarrayseprowcut,
+ \IEEEeqnarrayrulerow, \IEEEeqnarraydblrulerowcut,
+ \IEEEeqnarraystrutmode, \IEEEeqnarraystrutsize,
+ \IEEEeqnarraystrutsizeadd, \IEEEvisiblestrutstrue,
+ \IEEEvisiblestrutsfalse and \IEEEstrut.
+ These are documented in the user's guide.
+
+24) V1.6 changed back to using () around theorem names (which are also now
+ in italics) as this is what IEEE is using now. Thanks to Christian Peel
+ for reporting this. Also, when section numbers are used as the first
+ part of theorem numbers, display them in arabic, not Roman.
+
+25) New \IEEEtriggeratref{X} command allows a page break to be triggered
+ just before the given reference number "X". This is most useful when
+ balancing the columns on the last page and a \newpage between references
+ is desired. \IEEEtriggercmd{X} allows a different command to be executed
+ at trigger.
+
+
+
+*******
+ 2001/07/26 V1.5 (MDS) changes:
+
+
+ 1) Fixed \and within \author bug: (! Misplaced \crcr. \endtabular ->\crcr)
+ Thanks to Rainer Dorsch for discovering and reporting that \and
+ did not work.
+
+ 2) Fixed the biography environment so that if a biography's text is shorter
+ than the area allocated for the photo, a collision with the next
+ biography does not occur. You can now put real graphics (using the
+ graphicx package) into the biography photo box with a new optional
+ argument of the biography command! For example:
+
+ \begin{biography}[{\includegraphics[width=1in,height=1.25in,clip,
+ keepaspectratio]{./tux.eps}}]{Linux Penguin}
+
+ will use the specified graphic as the author's photo. The photo area is
+ exactly 1in wide by 1.25in high - as is done in IEEE Transactions. Try
+ to keep the same 4:5 aspect ratio if scanning/cropping your photos.
+ Note the need for the extra set of enclosing braces around the
+ \includegraphics. Without it, The LaTeX parser may get confused when it
+ sees the \includegraphics's brackets within the biography's optional
+ argument. Due to the length of the \includegraphics command, you may
+ wish to define your own shorthand form of it. I have not done so with
+ IEEEtran to prevent dependence on the graphicx package. If you do not
+ use the optional argument, or leave it empty, a standard frame box
+ with the words "Place Photo Here" will be used. If you want the space
+ to remain completely empty, you can do:
+
+ \begin{biography}[\mbox{}]{The Invisible Man}
+
+ The interface to biography's optional argument is into a
+ 1in X 1.25in minipage in which the argument text is centered both
+ horizontally and vertically:
+
+ \begin{minipage}[b][1.25in][c]{1in}%
+ \centering
+ #1%
+ \end{minipage}
+
+ Within the biography environment, \unitlength is set to 1in.
+ With this in mind, you can even design your own custom frameboxes.
+ For instance:
+
+ \begin{biography}[\framebox(1,1.25){\parbox[][\height
+ ][c]{0.9in}{\centering PLACE\\ PHOTO\\
+ HERE}}]{Author Name}
+
+ will yield the same type of result as the default photo box.
+
+ Thanks to Herbert Voss for discovering the collision bug, suggesting
+ the ability to handle graphics and providing some prototype code.
+
+
+
+*******
+ 2001/03/15 V1.4 (MDS) changes:
+
+
+ 1) New "draftcls" and "final" options have been added.
+ Thanks to Dragan Cvetkovic for suggesting an option like draftcls.
+
+ 2) Documentation changes to reflect the fact that this IEEEtran.cls
+ is no longer beta test.
+
+ 3) Slightly revised caption sizes. Figure and table captions are now
+ in \footnotesize, not \small as before.
+
+ 4) Allow user to control figure caption justification. IEEEtran.cls
+ normally defaults to left justified as is done in Transactions.
+ However, for conferences, you may wish to issue the command:
+ \centerfigcaptionstrue
+ in the preamble. Short (less than one line long) figure captions
+ will then be centered. Multi-line figure captions will always be
+ properly left justified. V1.6: This is already done for you when
+ using the conference mode.
+
+
+
+*******
+ 2001/01/18 V1.3
+ Michael Shell (MDS) made extensive changes and additions:
+
+
+ BUGS FIXED (and many others too numerous to mention!):
+ 1) Fixed improper alignment with itemized, enumerated and
+ description lists. Added new controls to these three
+ environments so that it is easy to get the alignment IEEE
+ uses. Furthermore, the itemize, enumerate and description lists
+ no longer force a new paragraph to begin at the end the list
+ (\par). (Sometimes lists are used within paragraphs.)
+
+ 2) JVH's fixes now allow things like $\mathbf{N}(0,P(0))$
+ to work properly without needing the extra braces:
+ ${\mathbf{N}}(0,P(0))$. There is no longer any dependence
+ on the "rawfonts" and "oldlfont" packages. Thanks Juergen!
+
+ 3) Fixed underfull hbox errors and incorrect reference number
+ alignment when the number of references in the bibliography
+ exceeded 9 entries (which is almost every paper!).
+
+ 4) Removed dependence on the LaTeX sizexx.clo files.
+ Now, 9pt documents should work correctly even on systems that
+ lack a size9.clo file. This is most often used in conjunction
+ with the option "technote" for "correspondence" papers like those
+ in IEEE Transactions on Information Theory. For virtually all
+ other papers, 10pt is used and so it is the default.
+ Some improper font sizes have been corrected. \footnotesize is
+ now 8pt in 9pt docs, so footnotes in technotes should be the
+ correct size now.
+
+ 5) Added \interlinepenalty within the bibliography section to discourage
+ LaTeX from breaking within a reference. IEEE almost never breaks within
+ a reference and when they do it is usually in technotes
+ (correspondence papers). You may get an underfull vbox warning in the
+ bibliography indicating that the spacing just before the "REFERENCES"
+ section is larger than normal, but the final result will be more like
+ what IEEE will publish. See the comments in the BIBLIOGRAPHY section
+ around line 2034 below if you want to change this behavior.
+
+ 6) No longer "blows up" when you use \paragraph and have a table
+ of contents.
+
+ 7) Theorem environment changed, (but for V1.6, back to the old way, sigh).
+
+ 8) Figure captions adjusted: IEEE left (not center) justifies
+ figure captions (for journals) and does not indent figure caption text.
+
+ 9) Adjusted some spacings in the table of contents(TOC))/list-of-figures/
+ list-of-tables so that section/table numbers will not so easily
+ collide with the titles. Section VIII was usually the worst offender.
+ Still doesn't right justify the section numbers, but neither does
+ article.cls (This must be why LaTeX likes the x.y.z section numbering
+ scheme unlike I, II, III, etc. of IEEE. )
+ It may be "normal" as it is (left justified). sigh.
+
+10) Now uses "index terms" now as a heading instead of "keywords".
+ Furthermore, the "index terms" and "abstract" headings are in bold
+ italic. This is how IEEE does things.
+
+11) \thebibliography and \biography now put entries into
+ the table of contents for you.
+
+
+*******
+
+
+
+
+ *******
+ 2000/09/06 (JVH) changes: (now designated as V1.2)
+
+ made some corrections to get closer to LaTeX2e
+ 20000906 Juergen v.Hagen
+ vonhagen@ihefiji.etec.uni-karlsruhe.de
+
+ Permission to redistribute granted as of December 2000.
+ *******
+
+
+
+
+
+ *******
+
+ 1996 (JWD) LaTeX2e version: (now designated as V1.1)
+
+ In the most recent TeXhax digest, there was a request for a copy of
+ IEEEtrans.sty modified to work with LaTeX2e. I have a version I
+ modified to make it IEEEtrans.cls, which I have sent to the person
+ making the request and am now sending to you to consider posting to
+ the archives.
+ --
+ Jon Dixon
+ dixonj@colorado.edu
+ http://spot.colorado.edu/~dixonj/
+
+*******
+
+
+
+
+
+*******
+
+ 30-August-1993 original LaTeX 2.09 version (IEEEtran.sty),
+ (now designated as V1.0):
+
+ by Gerry Murray and Silvano Balemi
+ Automatic Control Lab, ETH Zurich, Switzerland
+ balemi@aut.ee.ethz.ch
+
+*******
+
+
+
diff --git a/macros/latex/contrib/IEEEtran/extras/README b/macros/latex/contrib/IEEEtran/extras/README
new file mode 100644
index 0000000000..ae0a6ae979
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/extras/README
@@ -0,0 +1,53 @@
+
+August 26, 2015
+
+
+Here are some odds and ends that may be useful.
+
+
+Enjoy!
+
+Michael Shell
+http://www.michaelshell.org/
+
+******************************** Files ************************************
+
+README - This file.
+
+tux.eps - "Tux" the Linux penguin in EPS format.
+ This bitmapped graphic is sized to 1" X 1.25"
+ and can be used as a test photo for the IEEEtran.cls
+ biography environment.
+
+tux.pdf - "Tux" the Linux penguin in PDF format.
+ This bitmapped graphic is sized to 1" X 1.25"
+ and can be used as a test photo for the IEEEtran.cls
+ biography environment.
+
+
+***************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall the IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+
+File list of work: tux.eps, tux.pdf
+
+*************************************************************************** \ No newline at end of file
diff --git a/macros/latex/contrib/IEEEtran/extras/tux.eps b/macros/latex/contrib/IEEEtran/extras/tux.eps
new file mode 100644
index 0000000000..11b9a7d1ee
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/extras/tux.eps
@@ -0,0 +1,1958 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.11 by Peter Kirchgessner
+%%Title: /home/mshell/IEEE/TEST/tux.ps
+%%CreationDate: Fri Jul 27 14:59:35 2001
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 87 105
+%%EndComments
+%%BeginPreview: 256 256 1 256
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000001c0000000000000000000000000000000
+% 00000000000000000000000000003ffffffe0000000000000000000000000000
+% 0000000000000000000000000000ffffffff8000000000000000000000000000
+% 0000000000000000000000000007fffffffff000000000000000000000000000
+% 000000000000000000000000001ffffffffffc00000000000000000000000000
+% 00000000000000000000000000ffffffffffffc0000000000000000000000000
+% 00000000000000000000000001fffffffffffff0000000000000000000000000
+% 00000000000000000000000003fffffffffffff8000000000000000000000000
+% 0000000000000000000000000ffffffffffffffe000000000000000000000000
+% 0000000000000000000000003fffffffffffffff800000000000000000000000
+% 0000000000000000000000003fffffffffffffffe00000000000000000000000
+% 0000000000000000000000007ffffffffffffffff00000000000000000000000
+% 000000000000000000000000ffffffffffffd5fff80000000000000000000000
+% 000000000000000000000001ffffffffffffef7ffc0000000000000000000000
+% 000000000000000000000003ffffffffffffb2fffe0000000000000000000000
+% 000000000000000000000003ffffffffffffd5ffff0000000000000000000000
+% 000000000000000000000007ffffffffffffab5fff0000000000000000000000
+% 00000000000000000000000fffffffffffffeeffffc000000000000000000000
+% 00000000000000000000000fffffffffffff5bffffc000000000000000000000
+% 00000000000000000000001ffffffffffffff7ffffe000000000000000000000
+% 00000000000000000000001fffffffffffffbfffffe000000000000000000000
+% 00000000000000000000003ffffffffffffffffffff000000000000000000000
+% 00000000000000000000003ffffffffffffffffffff800000000000000000000
+% 00000000000000000000003ffffffffffffffffffff800000000000000000000
+% 00000000000000000000007ffffffffffffffffffffc00000000000000000000
+% 00000000000000000000007ffffffffffffffffffffc00000000000000000000
+% 00000000000000000000007ffffffffffffffffffffe00000000000000000000
+% 00000000000000000000007ffffffffffffffffffffe00000000000000000000
+% 00000000000000000000007ffffffffffffffffffffe00000000000000000000
+% 0000000000000000000000ffffffffffffffffffffff00000000000000000000
+% 0000000000000000000000ffffffffffffffffffffff00000000000000000000
+% 0000000000000000000000ffffffffffffffffffffff00000000000000000000
+% 0000000000000000000000fffffffffffffffbffffff00000000000000000000
+% 0000000000000000000000ffffffffffffffff7fffff80000000000000000000
+% 0000000000000000000000fffffefffffff5ffffffff80000000000000000000
+% 0000000000000000000000ffffffffffffaa3fffffff80000000000000000000
+% 0000000000000000000000fffd7ffffffea48fdfffff80000000000000000000
+% 0000000000000000000000ffe00ffffff54923ffffff80000000000000000000
+% 0000000000000000000000ffd525ffffea1005ffffff80000000000000000000
+% 0000000000000000000000ffa00bffffd48212ffffff80000000000000000000
+% 0000000000000000000000ffa892ffffe80005ffffff80000000000000000000
+% 0000000000000000000000ff40007fff800000bfffffc0000000000000000000
+% 0000000000000000000000ff00007fff0004007fffffc0000000000000000000
+% 0000000000000000000000fe80003fff003f803fffffc0000000000000000000
+% 0000000000000000000000ff07c03fff007fc03fffffc0000000000000000000
+% 0000000000000000000000fe1f703fff00fcb01fffffc0000000000000000000
+% 0000000000000000000000fe1f581fff01ff781fffffc0000000000000000000
+% 0000000000000000000000fe1fbc1fff01ff581fffffc0000000000000000000
+% 0000000000000000000000fe3fac3fdf03ffb81fffffc0000000000000000000
+% 0000000000000000000000fe3ffc1fff03fffc0fffffc0000000000000000000
+% 00000000000000000000007e3fee3fff83fff80fffffc0000000000000000000
+% 00000000000000000000007e3ffc3fff83fffc1fffffc0000000000000000000
+% 00000000000000000000007e1ffe7fffc3fff80fffffc0000000000000000000
+% 00000000000000000000007e1ffe800063fff81fffffc0000000000000000000
+% 00000000000000000000007e1ffe555511fff81fffffc0000000000000000000
+% 00000000000000000000007f0ff9400aa5fff01fffffc0000000000000000000
+% 00000000000000000000007f07f6955589ffe03fffffc0000000000000000000
+% 00000000000000000000007f81d120012017803fffffe0000000000000000000
+% 00000000000000000000007f814a0aaa0485007fffffe0000000000000000000
+% 00000000000000000000007f8150a0000010a0ffffffe0000000000000000000
+% 00000000000000000000007fc6a50a9048842bffffffe0000000000000000000
+% 00000000000000000000007ff94850020010807fffffe0000000000000000000
+% 00000000000000000000007fe52282480220091fffffe0000000000000000000
+% 00000000000000000000007fda8828004802405fffffe0000000000000000000
+% 00000000000000000000007fa52282910040081fffffe0000000000000000000
+% 00000000000000000000003f5448240001092aaffffff0000000000000000000
+% 00000000000000000000003eaa9288422400553ffffff0000000000000000000
+% 00000000000000000000003ea92021080049545ffffff0000000000000000000
+% 00000000000000000000003eaa4a84004402a2bffffff8000000000000000000
+% 00000000000000000000003ea4802891089d4a5ffffffc000000000000000000
+% 00000000000000000000003f522a8000002892bffffffc000000000000000000
+% 00000000000000000000003fe880248452d5293ffffffc000000000000000000
+% 00000000000000000000003fd52a8010815292bffdfffe000000000000000000
+% 00000000000000000000003ffd0011023ea44afffd5ffe000000000000000000
+% 00000000000000000000003feb548224e94aaa3ffeb7ff000000000000000000
+% 00000000000000000000003feec0244baa9150bffeabff000000000000000000
+% 00000000000000000000003fe5bd89ba552a821fff55ff800000000000000000
+% 00000000000000000000003fc15555454954244fff55ffc00000000000000000
+% 00000000000000000000003fcad5092aaaa9008fffaaffc00000000000000000
+% 00000000000000000000003fc0b5525255504017ffd5ffe00000000000000000
+% 00000000000000000000003fca5a84aaaaa28927ffd7fff00000000000000000
+% 00000000000000000000007fc016b54aaa040007fffffff80000000000000000
+% 00000000000000000000007fd48b555554908003fffffff80000000000000000
+% 0000000000000000000000ffc122eaada8240001fffffffc0000000000000000
+% 0000000000000000000001ffc8095ddaa2800001fffffffc0000000000000000
+% 0000000000000000000003ffc0a002a408100000fffffffe0000000000000000
+% 0000000000000000000003ff80055411512000007fffffff0000000000000000
+% 0000000000000000000007ff01200142020000007fffffff8000000000000000
+% 000000000000000000000fff000a4808480000003fffffff8000000000000000
+% 000000000000000000001ffe00201242000000001fffffffc000000000000000
+% 000000000000000000003ffc00094090800000001fffffffe000000000000000
+% 000000000000000000007ff800100a04100000000ffffffff000000000000000
+% 000000000000000000007ff8000290510000000007fffffff000000000000000
+% 00000000000000000001ffe0000422000000000007fffffff800000000000000
+% 00000000000000000003ffe0000084a00000000003fffffffc00000000000000
+% 00000000000000000003ffc0000010000000000003fffffffe00000000000000
+% 00000000000000000007ffc0000000000000000001fffffffe00000000000000
+% 0000000000000000001fff80000000000000000001ffffffff80000000000000
+% 0000000000000000003fff00000000000000000000ffffffffc0000000000000
+% 0000000000000000003fff00000000000000000000ffffffffe0000000000000
+% 0000000000000000007ffe00000000000000000000fffffffff0000000000000
+% 000000000000000001fffc000000000000000000007ffffffff8000000000000
+% 000000000000000003fffc000000000000000000007ffffffffc000000000000
+% 000000000000000003fff8000000000000000000007ffffffffe000000000000
+% 000000000000000007fff8000000000000000000007fffffffff000000000000
+% 00000000000000001ffff0000000000000000000003fffffffffc00000000000
+% 00000000000000003ffffa000000000000000000003fffffffffe00000000000
+% 00000000000000007ffff0000000000000000000003ffffffffff00000000000
+% 00000000000000007ffff4000000000000000000003ffffffffff00000000000
+% 0000000000000001ffffe9000000000000000000921ffffffffffc0000000000
+% 0000000000000001ffffe440000000000000124a040ffffffffffe0000000000
+% 0000000000000003ffffea9000000000000000104807fffffffffe0000000000
+% 0000000000000003ffffe80000000000000004811103ffffffffff0000000000
+% 0000000000000007ffffe20000000000000000042041ffdfffffff8000000000
+% 000000000000000fffffd40000000000000000004480ffffffffff8000000000
+% 000000000000000fffffc000000000000000000000007ffbffffffc000000000
+% 000000000000001fffffa000000000000000000002507fffffffffc000000000
+% 000000000000001fffff0000000000000000000000001fffbfffffe000000000
+% 000000000000001fffff0000000000000000000000081fffffffffe000000000
+% 000000000000003ffffe0000000000000000000000110fffeffffff000000000
+% 000000000000003ff7fe0000000000000000000000000ffffffffff000000000
+% 000000000000003ffffc00000000000000000000000207fffffffff800000000
+% 000000000000007feff800000000000000000000000043fffdfffff800000000
+% 000000000000007ffff800000000000000000000000003fffffffffc00000000
+% 000000000000007ffff000000000000000000000000041ffff7ffffc00000000
+% 00000000000000ffffe000000000000000000000000001ffbffffffe00000000
+% 00000000000000ff7fe000000000000000000000000000ff7ffffffe00000000
+% 00000000000001ffffc000000000000000000000000000fff7dfffff00000000
+% 00000000000001feffc000000000000000000000000000fedfffffff00000000
+% 00000000000003ffff00000000000000000000000000007fffefffff80000000
+% 00000000000003fdff00000000000000000000000000007fffffffff80000000
+% 00000000000003ffff00000000000000000000000000007ffff7ffff80000000
+% 00000000000007fbfe00000000000000000000000000003fffffffffc0000000
+% 0000000000000ffffc00000000000000000000000000003ffffbffffc0000000
+% 0000000000000ff7fc00000000000000000000000000003fffffffffe0000000
+% 0000000000000ffff800000000000000000000000000001fffffffffe0000000
+% 0000000000001feff800000000000000000000000000001ffffdffffe0000000
+% 0000000000003ffff000000000000000000000000000001ffffffffff0000000
+% 0000000000003fdff000000000000000000000000000001ffffdfffff0000000
+% 0000000000007fffe000000000000000000000000000001ffffffffff0000000
+% 0000000000007fbfe000000000000000000000000000001ffffdfffff0000000
+% 000000000000ffffe000000000000000000000000000000ffffffffff8000000
+% 000000000001ffffc000000000000000000000000000000ffffffffff8000000
+% 000000000001ff7fc000000000000000000000000000000ffffffffff8000000
+% 000000000003ffffc000000000000000000000000000000ffffffffff8000000
+% 000000000007ffff8000000000000000000000000000000ffffffffff8000000
+% 00000000000fff7f8000000000000000000000000000000ffffbfffffc000000
+% 00000000000fffff8000000000000000000000000000000ffffffffffc000000
+% 00000000001fff7f8000000000000000000000000000000ffffffffffc000000
+% 00000000003fff7f0000000000000000000000000000000ffff7fffffc000000
+% 00000000007fff7f0000000000000000000000000000000ffffffffffc000000
+% 00000000007fffff0000000000000000000000000000000ffffffffffc000000
+% 0000000000ffff7f0000000000000000000000000000000ffffffffffc000000
+% 0000000000ffff7f0000000000000000000000000000000ffffffffffc000000
+% 0000000000ffff7f0000000000000000000000000000000ffffffffffc000000
+% 0000000000fffd7f0000000000000000000000000000000ffffffffffc000000
+% 0000000001ffff7e0000000000000000000000000000000ffffffffffc000000
+% 0000000001ffffbf0000000000000000000000000000000ffffffffffc000000
+% 0000000001fffffe0000000000000000000000000000000ffffffffffc000000
+% 0000000001ffffbf0000000000000000000000000000000ffffffffffc000000
+% 0000000001fffffe0000000000000000000000000000000ffffffffffc000000
+% 0000000001ffffff0000000000000000000000000000001ffffffffff8000000
+% 0000000001fffffb0000000000000000000000000000001ffffffffff8000000
+% 0000000000ffbfff0000000000000000000000000000001ffffffefff8000000
+% 0000000000fa03fc8000000000000000000000000000001fffffffd7f8000000
+% 00000000005048ff8000000000000000000000000000003ffffffff7f0000000
+% 000000000025123fc000000000000000000000000000003ffffffffdf0000000
+% 0000000000a840bfe000000000000000000000000000003ffffffff7f0000000
+% 000000000042141ff000000000000000000000000000aa8ffffffffff0000000
+% 0000000001288143fe000000000000000000000000010027ffffffffa0000000
+% 0000000002822815fe00000000000000000000000002000fffffffff80000000
+% 0000000002548282ff800000000000000000000000025497ffffffff40000000
+% 0000000005202829ffc0000000000000000000000002800fffffffff08000000
+% 00000000094a82803ff0000000000000000000000000255ffffffffe21000000
+% 00000000141024255ffc000000000000000000000002881ffffffffc44000000
+% 0000000052a288883ffe0000000000000000000000022157fffffffa08800000
+% 00000aaaaa0821110fff000000000000000000000001442ffffffff8a1000000
+% 0005525544a2882257ffe000000000000000000000021157ffffffe408800000
+% 000524892908228403fff00000000000000000000004a42fffffffe952800000
+% 0014892442224420a5fff800000000000000000000020157ffffffc200800000
+% 000a52529444088a02fffe00000000000000000000295495ffffff54aa800000
+% 002904840088a110a97fff800000000000000000008202557ffffa8800800000
+% 005251295511082200ffffc00000000000000000000954957fffeaa2aa000000
+% 0014840000222284a53ffff000000000000000000122012aaffeaa1400800000
+% 0022295554844420085ffff800000000000000000005544aa952aaa154000000
+% 005480000120888aa12ffffe0000000000000000024881295555500a01400000
+% 00292aaaa40a1110081fffff00000000000000000002aa455555255054100000
+% 0052400008a08222a24fffff800000000000000001250094a54aa80201480000
+% 0024894a420a28440897ffffc000000000000000000a55252a5482a8a4100000
+% 0015221090a082089103fffff0000000000000000122a0489292540209440000
+% 00284842040910a12225ffffe0000000000000000005151249248150a0110000
+% 00128210a14224080442fffff8000000000000000095404492492a040a848000
+% 002a28840a104142a8897ffff0000000000000000002aa912492404940294000
+% 00128221404508100110bffff800000000000000009d10244924951015021000
+% 0014508a1510428554227ffff800000000000000001aa5411249004280544000
+% 000905104045142801441ffff800000000000000005d4814449055102a011400
+% 00155022148840814808affff000000000000000003a92a11105004500a84100
+% 000905048111122812a117ffe00000000000000000fd24044450551054021420
+% 0014a85028222082800a0bffc00000000000000001faa951110500450150a108
+% 000a0105028445102aa057ff800000000000000003fd42044448491052040450
+% 0015545050208825000a81fc000000000000000007fa94511111122204515104
+% 00088104850a110055200a8000000000000000001ffd210444422044a0840452
+% 00152a21104082550045514000000000000000007ffaaa51111045080a114884
+% 0009404822142800520802600000000000000000fffa80044445084140841112
+% 002a150284a102aa04a150a00000000000000001fffaaaa11110411414212224
+% 0014a05020045000a00a0528000000000000000ffff510084445144141084490
+% 002909050aa1054a0aa05058000000000000001ffffd45421110411414520928
+% 8055525040085010a009050c000000000000007ffff55014844488412100a248
+% 00280005154205220a90505600000000000001fffffd254021111212044a0930
+% 80a555504014a044402285158000000000001ffffff54815084420845110a540
+% 005400048a400a0894841055c000000000003ffffffd22805211042084451500
+% 815155481092a0a10110a527e00000000000fffffff548290084514a11105400
+% 00a4001142040a0828240095780000000007fffffffa92824a21040084455000
+% 8292aa8210a0a0a282815525ffc0000007ffffffffed482810885154292a8000
+% 01540028440a0908282a00957ffe802afffffffffffaa2828222040142540000
+% 82a2aa829140a2228280552adfffffffffffffffffea94282888a15414a80000
+% 01540028041408442425004afffffffffffffffffffaa102422208014aa00000
+% 02a95542a94142088888552b5fffffffffffffffffed4a508888a2aa54000000
+% 814a9014001410a111110095fffffffffffffffffff5200411120844ac000000
+% 82aa4aa15541450822222a555fffffffffffffffffdaaaa14220a29550000000
+% 0155554a4814104284444155fffffffffffffffffff5480a1445092ac0000000
+% 8055555552a2a51420888aab5fffffffffffffffffeea5504110555400000000
+% 000daaaaaaa910410a2224aafffffffffffffffffffaa885144522ac00000000
+% 8000755555554a9450888957b7ffffffffffffffffed55284110955000000000
+% 00000ed5555555210422255afffffffffffffffffffb5242944aaaa000000000
+% 8000001b6aaaaaaa51489557bfffffffffffffffffed55282125558000000000
+% 00000002ddb555554a12aabd7fffe0000000001ffffb55454aaaaf0000000000
+% 80000000176edaaaa4a4aad7ff800000000000000ffed5292495540000000000
+% 0000000002dbb5555555557dfe000000000000000075aaaaaaaab80000000000
+% 8000000000036feaaaaaabd7fc00000000000000003f6aaaaaabe00000000000
+% 0000000000003abdb55576bee000000000000000003ad5555556800000000000
+% 80000000000003eb6db6ddf78000000000000000003fbb55556d800000000000
+% 000000000000007edb6db76f0000000000000000001eeab555b7000000000000
+% 8000000000000003f6db6dfc00000000000000000007df6bbb6c000000000000
+% 00000000000000007ff7fff800000000000000000003fadd6ef8000000000000
+% 80000000000000001b5edbb000000000000000000000ffb7b5e0000000000000
+% 000000000000000003fbffc000000000000000000000777d7f80000000000000
+% 80000000000000000007f0000000000000000000000001ffe000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+%%EndPreview
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228 14.173228 translate
+% Translate to begin of first scanline
+0.000000 90.000000 translate
+72.000000 -90.000000 scale
+% Image geometry
+256 320 8
+% Transformation matrix
+[ 256 0 0 320 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 256 string def
+/gstr 256 string def
+/bstr 256 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData: 86888 ASCII Bytes
+colorimage
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+K)bfOKE$H~>
+K)bfOKE$H~>
+K)bfOKE$H~>
+N;r5GMuS;~>
+N;r5GMuS;~>
+N;r5GMuS;~>
+O8n8BOT0h~>
+O8n8BOT0h~>
+O8n8BOT0h~>
+OoO>@P5g%~>
+OoO>@P5g%~>
+OoO>@P5g%~>
+PlKG=Q2c@~>
+PlKG=Q2c@~>
+PlKG=Q2c@~>
+QN,M;QiDR~>
+QN,M;QiDR~>
+QN,M;QiDR~>
+QiGM9RK%d~>
+QiGM9RK%d~>
+QiGM9RK%d~>
+RK(S7S,\!~>
+RK(S7S,\!~>
+RK(S7S,\!~>
+RfCb:!!`B'Sc=3~>
+RfCb:!!`B'Sc=3~>
+RfCb:!!`B'Sc=3~>
+S,^e9!!`B'T)X<~>
+S,^e9!!`B'T)X<~>
+S,^e9!!`B'T)X<~>
+Sc?\2T`9N~>
+Sc?\2T`9N~>
+Sc?\2T`9N~>
+T)[7@rW`#sU&TW~>
+T)[7@rW`#sU&TW~>
+T)[7@rW`#sU&TW~>
+TE!CB"q2.a)\WVgp&^ugJ,~>
+TE!CB"q2.a)\WVgp&^ugJ,~>
+TE!CB"q2.a)\WVgp&^ugJ,~>
+TE!FC$4IRe,V1Jl)\WVap]:F"V#Pr~>
+TE!FC$4IRe,V1Jl)\WVap]:F"V#Pr~>
+TE!FC$4IRe,V1Jl)\WVap]:F"V#Pr~>
+T`<OD%0d4[,V1c74>\T7'+>*@!WWG$s*t~>
+T`<OD%0d4[,V1c74>\T7'+>*@!WWG$s*t~>
+T`<OD%0d4[,V1c74>\T7'+>*@!WWG$s*t~>
+U&WUD%La!r/3H<s8kMK.//o!%q#UO#VZ2/~>
+U&WUD%La!r/3H<s8kMK.//o!%q#UO#VZ2/~>
+U&WUD%La!r/3H<s8kMK.//o!%q#UO#VZ2/~>
+UAr^ErsTAN,V2>[>\%)>6p*">'*e76VZ2/~>
+UAr^ErsTAN,V2>[>\%)>6p*">'*e76VZ2/~>
+UAr^ErsTAN,V2>[>\%)>6p*">'*e76VZ2/~>
+UAr^E&I&X_,W%nhA8>sk>Y6h()\WYU!iQ'K~>
+UAr^E&I&X_,W%nhA8>sk>Y6h()\WYU!iQ'K~>
+UAr^E&I&X_,W%nhA8>sk>Y6h()\WYU!iQ'K~>
+U]8aD&I]=(1eM"gI!f^?:cp9S)[lrH!iZ-L~>
+U]8aD&I]=(1eM"gI!f^?:cp9S)[lrH!iZ-L~>
+U]8aD&I]=(1eM"gI!f^?:cp9S)[lrH!iZ-L~>
+U]8aD&e#F!4A]R1I!g$H<CAr#)]KFpq#[PqJ,~>
+U]8aD&e#F!4A]R1I!g$H<CAr#)]KFpq#[PqJ,~>
+U]8aD&e#F!4A]R1I!g$H<CAr#)]KFpq#[PqJ,~>
+V#SgD&e#^)4A]R1I!g$H>XU\2,T@C*q#[PqJ,~>
+V#SgD&e#^)4A]R1I!g$H>XU\2,T@C*q#[PqJ,~>
+V#SgD&e#^)4A]R1I!g$H>XU\2,T@C*q#[PqJ,~>
+V#SgD'+>g24A]R1FDGYs:ddE&/0l/J%/Bt)s*t~>
+V#SgD'+>g24A]R1FDGYs:ddE&/0l/J%/Bt)s*t~>
+V#SgD'+>g24A]R1FDGYs:ddE&/0l/J%/Bt)s*t~>
+V>nmD'+>g26r7E9CLg[H6p*:_/0l/J%/9n)s*t~>
+V>nmD'+>g26r7E9CLg[H6p*:_/0l/J%/9n)s*t~>
+V>nmD'+>g26r7E9CLg[H6p*:_/0l/J%/9n)s*t~>
+V>npE%0dIb/3Ha6A6`,26p*=*/-I4;'+>*@!iu?O~>
+V>npE%0dIb/3Ha6A6`,26p*=*/-I4;'+>*@!iu?O~>
+V>npE%0dIb/3Ha6A6`,26p*=*/-I4;'+>*@!iu?O~>
+VZ5!E"U5VZ/3H?":^]ZR1b:0s)^H@9$jQG-XT*e~>
+VZ5!E"U5VZ/3H?":^]ZR1b:0s)^H@9$jQG-XT*e~>
+VZ5!E"U5VZ/3H?":^]ZR1b:0s)^H@9$jQG-XT*e~>
+VZ5!ErsT5R,W%nO6o6_O,UE:$rs\T&XT*e~>
+VZ5!ErsT5R,W%nO6o6_O,UE:$rs\T&XT*e~>
+VZ5!ErsT5R,W%nO6o6_O,UE:$rs\T&XT*e~>
+VZ5!E&I]<l,V1c'/0lJ[',(cU!X9))!j2KQ~>
+VZ5!E&I]<l,V1c'/0lJ[',(cU!X9))!j2KQ~>
+VZ5!E&I]<l,V1c'/0lJ[',(cU!X9))!j2KQ~>
+VuP$D!Xo_]r?VCVrs\8rXoEn~>
+VuP$D!Xo_]r?VCVrs\8rXoEn~>
+VuP$D!Xo_]r?VCVrs\8rXoEn~>
+VuP'E!X9&Ar"B&7l2gqiY5a"~>
+VuP'E!X9&Ar"B&7l2gqiY5a"~>
+VuP'E!X9&Ar"B&7l2gqiY5a"~>
+VuP$D"U5AD',(T5!j;QR~>
+VuP$D"U5AD',(T5!j;QR~>
+VuP$D"U5AD',(T5!j;QR~>
+W;k*DrsSr5!Y"/lYQ'+~>
+W;k*DrsSr5!Y"/lYQ'+~>
+W;k*DrsSr5!Y"/lYQ'+~>
+W;iq#YQ'+~>
+W;iq#YQ'+~>
+W;iq#YQ'+~>
+W;iq#YQ'+~>
+W;iq#YQ'+~>
+W;iq#YQ'+~>
+W;in"YlB4~>
+W;in"YlB4~>
+W;in"YlB4~>
+W;in"YlB4~>
+W;in"YlB4~>
+W;in"YlB4~>
+W;in"YlB4~>
+W;in"YlB4~>
+W;in"YlB4~>
+WW/q!Z2]=~>
+WW/q!Z2]=~>
+WW/q!Z2]=~>
+WW1*B!!_B`Z2]=~>
+WW1*B!!_B`Z2]=~>
+WW1*B!!_B`Z2]=~>
+WW2Ji"9o8C"pX,i"pP,5!X9;HrY,;?k5qpgJ,~>
+WW2Ji"9o8C"pX,i"pP,5!X9;HrY,;?k5qpgJ,~>
+WW2Ji"9o8C"pX,i"pP,5!X9;HrY,;?k5qpgJ,~>
+WW2Vm!!`?0rY#;@#2fR_'*TX41d!#lklS-iJ,~>
+WW2Vm!!`?0rY#;@#2fR_'*TX41d!#lklS-iJ,~>
+WW2Vm!!`?0rY#;@#2fR_'*TX41d!#lklS-iJ,~>
+WW2\or!Wi8$l^H;//o!%hZ<uj)`1Af1_]-UZ2]=~>
+WW2\or!Wi8$l^H;//o!%hZ<uj)`1Af1_]-UZ2]=~>
+WW2\or!Wi8$l^H;//o!%hZ<uj)`1Af1_]-UZ2]=~>
+WW2_p!sT/B#5nT.$l_#k6nAu[n,`Ron,`b,1f.^N'C,_)s*t~>
+WW2_p!sT/B#5nT.$l_#k6nAu[n,`Ron,`b,1f.^N'C,_)s*t~>
+WW2_p!sT/B#5nT.$l_#k6nAu[n,`Ron,`b,1f.^N'C,_)s*t~>
+WW2bqrs\])rsT&M/4;$&#4hlr#580%"qqpp%/^/1$m\YS1^<7IZN#F~>
+WW2bqrs\])rsT&M/4;$&#4hlr#580%"qqpp%/^/1$m\YS1^<7IZN#F~>
+WW2bqrs\])rsT&M/4;$&#4hlr#580%"qqpp%/^/1$m\YS1^<7IZN#F~>
+WW2;d"UlYE1`HYc!X]>]8mH.RCMQoq#6"Z,"rfru)s[R2s*t~>
+WW2;d"UlYE1`HYc!X]>]8mH.RCMQoq#6"Z,"rfru)s[R2s*t~>
+WW2;d"UlYE1`HYc!X]>]8mH.RCMQoq#6"Z,"rfru)s[R2s*t~>
+WW2Sl"9oej)\`/O":QhL1_]<Z#6lG9>\eG/KDh#:K3Tr9rW30@6o5SD!j_iV~>
+WW2Sl"9oej)\`/O":QhL1_]<Z#6lG9>\eG/KDh#:K3Tr9rW30@6o5SD!j_iV~>
+WW2Sl"9oej)\`/O":QhL1_]<Z#6lG9>\eG/KDh#:K3Tr9rW30@6o5SD!j_iV~>
+WW2Yn#SSahFG#3]:`KB8"<00c,RjDK!"Ac,#Ri7aA9<3XN0O=3%&Bu+PXGo]!XpVB,Rj&AZN#F~>
+WW2Yn#SSahFG#3]:`KB8"<00c,RjDK!"Ac,#Ri7aA9<3XN0O=3%&Bu+PXGo]!XpVB,Rj&AZN#F~>
+WW2Yn#SSahFG#3]:`KB8"<00c,RjDK!"Ac,#Ri7aA9<3XN0O=3%&Bu+PXGo]!XpVB,Rj&AZN#F~>
+WW2\o&K=PgN1?uNS:bT6$j$J=,U<fh!Y#f*A9<3ON0Kj&Uo^Z)rk/T58dkb&"qqphm/jTnJ,~>
+WW2\o&K=PgN1?uNS:bT6$j$J=,U<fh!Y#f*A9<3ON0Kj&Uo^Z)rk/T58dkb&"qqphm/jTnJ,~>
+WW2\o&K=PgN1?uNS:bT6$j$J=,U<fh!Y#f*A9<3ON0Kj&Uo^Z)rk/T58dkb&"qqphm/jTnJ,~>
+WW2_p%3&Q"Panhg`5K?RF@m5G!rir/!WWH'!Y#f8A9<3XPa%]6XL,(9rko/f]pq\."p+i1'+F:1
+ZN#F~>
+WW2_p%3&Q"Panhg`5K?RF@m5G!rir/!WWH'!Y#f8A9<3XPa%]6XL,(9rko/f]pq\."p+i1'+F:1
+ZN#F~>
+WW2_p%3&Q"Panhg`5K?RF@m5G!rir/!WWH'!Y#f8A9<3XPa%]6XL,(9rko/f]pq\."p+i1'+F:1
+ZN#F~>
+WW2bq'+@K\N1?u_`5K@&[#BB)'*84D%/9l(#6"Z/'1?AQN/X:&ri?+,rk/T]eBGkEUk:K;rW<*5
+mK0]oJ,~>
+WW2bq'+@K\N1?u_`5K@&[#BB)'*84D%/9l(#6"Z/'1?AQN/X:&ri?+,rk/T]eBGkEUk:K;rW<*5
+mK0]oJ,~>
+WW2bq'+@K\N1?u_`5K@&[#BB)'*84D%/9l(#6"Z/'1?AQN/X:&ri?+,rk/T]eBGkEUk:K;rW<*5
+mK0]oJ,~>
+WW2bq'I7dQPbc"2bfn#D[%*)&6k]b+$jQA+#qTV/N1?uV[(X0O`;e$ieBGV5Ul9(."p+i1%.42&
+s*t~>
+WW2bq'I7dQPbc"2bfn#D[%*)&6k]b+$jQA+#qTV/N1?uV[(X0O`;e$ieBGV5Ul9(."p+i1%.42&
+s*t~>
+WW2bq'I7dQPbc"2bfn#D[%*)&6k]b+$jQA+#qTV/N1?uV[(X0O`;e$ieBGV5Ul9(."p+i1%.42&
+s*t~>
+WW2er#n0XXN23Pg`6?1!]`k3rN-llZo)]dC<GR5W[)CJLguRP_m,[NojOD,TUl9[t%-do"s*t~>
+WW2er#n0XXN23Pg`6?1!]`k3rN-llZo)]dC<GR5W[)CJLguRP_m,[NojOD,TUl9[t%-do"s*t~>
+WW2er#n0XXN23Pg`6?1!]`k3rN-llZo)]dC<GR5W[)CJLguRP_m,[NojOD,TUl9[t%-do"s*t~>
+WW2er#TI<,S><O1eD1&as4daq[%(,#o)]1[FH!<>h!F\*q>CTkrTr=HS:"imklS3kJ,~>
+WW2er#TI<,S><O1eD1&as4daq[%(,#o)]1[FH!<>h!F\*q>CTkrTr=HS:"imklS3kJ,~>
+WW2er#TI<,S><O1eD1&as4daq[%(,#o)]1[FH!<>h!F\*q>CTkrTr=HS:"imklS3kJ,~>
+WW2hs#6m;4PdJBam/-_bo_nF;X;gd5"U85%[+t<Fr<Munm)5-98d=P^Zi>O~>
+WW2hs#6m;4PdJBam/-_bo_nF;X;gd5"U85%[+t<Fr<Munm)5-98d=P^Zi>O~>
+WW2hs#6m;4PdJBam/-_bo_nF;X;gd5"U85%[+t<Fr<Munm)5-98d=P^Zi>O~>
+WW2hs$3jLh^"i8YrUg'\qY^HU;"Oel)hYiZo_SLijKt/IeF`b=#5%lme>.1*l2n<lJ,~>
+WW2hs$3jLh^"i8YrUg'\qY^HU;"Oel)hYiZo_SLijKt/IeF`b=#5%lme>.1*l2n<lJ,~>
+WW2hs$3jLh^"i8YrUg'\qY^HU;"Oel)hYiZo_SLijKt/IeF`b=#5%lme>.1*l2n<lJ,~>
+WW2hs$k-pQjRiECm**Dlm.C5S!q_ueo`>4HUs.osr<VbS1_U'%,\5F%r;u&M2!P.Ks*t~>
+WW2hs$k-pQjRiECm**Dlm.C5S!q_ueo`>4HUs.osr<VbS1_U'%,\5F%r;u&M2!P.Ks*t~>
+WW2hs$k-pQjRiECm**Dlm.C5S!q_ueo`>4HUs.osr<VbS1_U'%,\5F%r;u&M2!P.Ks*t~>
+WW2hs%3'rDo_na<>U0t%4J_?Ar;k+fq>pX$r;m*iUs/2trV[)iF;"]W$l^H24LG%b"8()J%-mu$
+s*t~>
+WW2hs%3'rDo_na<>U0t%4J_?Ar;k+fq>pX$r;m*iUs/2trV[)iF;"]W$l^H24LG%b"8()J%-mu$
+s*t~>
+WW2hs%3'rDo_na<>U0t%4J_?Ar;k+fq>pX$r;m*iUs/2trV[)iF;"]W$l^H24LG%b"8()J%-mu$
+s*t~>
+WW2hs%O@k:rVbe>!WicU,SPRlrVZc`9)A\i%/g509!$8/rVZfiK+._\#;gOE8gGsho_n^ioSaIL
+!jhoW~>
+WW2hs%O@k:rVbe>!WicU,SPRlrVZc`9)A\i%/g509!$8/rVZfiK+._\#;gOE8gGsho_n^ioSaIL
+!jhoW~>
+WW2hs%O@k:rVbe>!WicU,SPRlrVZc`9)A\i%/g509!$8/rVZfiK+._\#;gOE8gGsho_n^ioSaIL
+!jhoW~>
+WW2hs!Be="oEosI!X:c/A3;-%o`"droR$iO$jHb7$k*@>!Wu9#eF`b=!qa/>rW3B1/9I,8A0a"]
+o_n^hZlA<4Zi>O~>
+WW2hs!Be="oEosI!X:c/A3;-%o`"droR$iO$jHb7$k*@>!Wu9#eF`b=!qa/>rW3B1/9I,8A0a"]
+o_n^hZlA<4Zi>O~>
+WW2hs!Be="oEosI!X:c/A3;-%o`"droR$iO$jHb7$k*@>!Wu9#eF`b=!qa/>rW3B1/9I,8A0a"]
+o_n^hZlA<4Zi>O~>
+WW)r&quR$ubk1kp/H,\T1lR&t//uh3r;i,arXAf.rtGA5"9r,4eF`b=!UNGV!XK2sFGu/T$tT#/
+r;tJ"%."&%s*t~>
+WW)r&quR$ubk1kp/H,\T1lR&t//uh3r;i,arXAf.rtGA5"9r,4eF`b=!UNGV!XK2sFGu/T$tT#/
+r;tJ"%."&%s*t~>
+WW)r&quR$ubk1kp/H,\T1lR&t//uh3r;i,arXAf.rtGA5"9r,4eF`b=!UNGV!XK2sFGu/T$tT#/
+r;tJ"%."&%s*t~>
+WW)r&quR$oeEm.@%/p;;)dIc<49B<jrVcAa'*eFL$6(NI'*\L>>dW#Qrqul2%/L#01jjpk"t\R.
+r;uUf'C5e,s*t~>
+WW)r&quR$oeEm.@%/p;;)dIc<49B<jrVcAa'*eFL$6(NI'*\L>>dW#Qrqul2%/L#01jjpk"t\R.
+r;uUf'C5e,s*t~>
+WW)r&quR$oeEm.@%/p;;)dIc<49B<jrVcAa'*eFL$6(NI'*\L>>dW#Qrqul2%/L#01jjpk"t\R.
+r;uUf'C5e,s*t~>
+WW2hs"AmV7oP=@+$oE'J<=C_FrVcAa',1?a%Q$dS:dc6,<NO^BrVcA(q#Ua>>\eEp'<M02!q^RC
+liONnJ,~>
+WW2hs"AmV7oP=@+$oE'J<=C_FrVcAa',1?a%Q$dS:dc6,<NO^BrVcA(q#Ua>>\eEp'<M02!q^RC
+liONnJ,~>
+WW2hs"AmV7oP=@+$oE'J<=C_FrVcAa',1?a%Q$dS:dc6,<NO^BrVcA(q#Ua>>\eEp'<M02!q^RC
+liONnJ,~>
+WW2hs"C0IKrCZth$6)fHCE"5+rVcAir=]5O,V8pW#t-=@XOQn@rTlZC!rio</4<_o%"n3Or;uVU%
+."&%s*t~>
+WW2hs"C0IKrCZth$6)fHCE"5+rVcAir=]5O,V8pW#t-=@XOQn@rTlZC!rio</4<_o%"n3Or;uVU%
+."&%s*t~>
+WW2hs"C0IKrCZth$6)fHCE"5+rVcAir=]5O,V8pW#t-=@XOQn@rTlZC!rio</4<_o%"n3Or;uVU%
+."&%s*t~>
+WW2hs"BEtDoK<$Q$4JI^CFfOGrVc)Qr<rZ1rX9/J,U<dDN6LYerT#7%!Wj#D'E/CC/2RcNo`"dj
+oUH?V!jhoW~>
+WW2hs"BEtDoK<$Q$4JI^CFfOGrVc)Qr<rZ1rX9/J,U<dDN6LYerT#7%!Wj#D'E/CC/2RcNo`"dj
+oUH?V!jhoW~>
+WW2hs"BEtDoK<$Q$4JI^CFfOGrVc)Qr<rZ1rX9/J,U<dDN6LYerT#7%!Wj#D'E/CC/2RcNo`"dj
+oUH?V!jhoW~>
+W;lbs##NP1oL')lrW3H3)am:3!c.c5luWI-!X]>T$k,8"h":R+,k_<>'*85Gm/Hqbm%b'V!jhoW~>
+W;lbs##NP1oL')lrW3H3)am:3!c.c5luWI-!X]>T$k,8"h":R+,k_<>'*85Gm/Hqbm%b'V!jhoW~>
+W;lbs##NP1oL')lrW3H3)am:3!c.c5luWI-!X]>T$k,8"h":R+,k_<>'*85Gm/Hqbm%b'V!jhoW~>
+W;lbs##NP1rF?QMrW3H3'/WN!!c.H,`%2>l!XT8:!ZR*Jo_mPjo)\r'o`"djm%b'V!jhoW~>
+W;lbs##NP1rF?QMrW3H3'/WN!!c.H,`%2>l!XT8:!ZR*Jo_mPjo)\r'o`"djm%b'V!jhoW~>
+W;lbs##NP1rF?QMrW3H3'/WN!!c.H,`%2>l!XT8:!ZR*Jo_mPjo)\r'o`"djm%b'V!jhoW~>
+W;lbs"[p;qoR$l?!ZVk)$j'u3lt[7E(*bCi0eFn#+X%U*,[A:SrTkg$!WdE8rquobS.k5jZi>O~>
+W;lbs"[p;qoR$l?!ZVk)$j'u3lt[7E(*bCi0eFn#+X%U*,[A:SrTkg$!WdE8rquobS.k5jZi>O~>
+W;lbs"[p;qoR$l?!ZVk)$j'u3lt[7E(*bCi0eFn#+X%U*,[A:SrTkg$!WdE8rquobS.k5jZi>O~>
+W;lbs"Z3pRoX#&'!ZM=F!c.5"3CIJ2MMdRSL6@FGH>,c%1n<@noK;^H!1a#d!p#:KliONnJ,~>
+W;lbs"Z3pRoX#&'!ZM=F!c.5"3CIJ2MMdRSL6@FGH>,c%1n<@noK;^H!1a#d!p#:KliONnJ,~>
+W;lbs"Z3pRoX#&'!ZM=F!c.5"3CIJ2MMdRSL6@FGH>,c%1n<@noK;^H!1a#d!p#:KliONnJ,~>
+W;lbs"WOQ(o\:D[!X3,:FafXRriQd4Y,8A-Y-kF0NH&!ho^mP'!WieSo`"djjEqC&!jhoW~>
+W;lbs"WOQ(o\:D[!X3,:FafXRriQd4Y,8A-Y-kF0NH&!ho^mP'!WieSo`"djjEqC&!jhoW~>
+W;lbs"WOQ(o\:D[!X3,:FafXRriQd4Y,8A-Y-kF0NH&!ho^mP'!WieSo`"djjEqC&!jhoW~>
+W;lbs"q6aWo_ik9q#Up><.^:&X1#UI['$_5XoPp0Xp22.L7@8J%eTl'AGuH.o[H_'!jhoW~>
+W;lbs"q6aWo_ik9q#Up><.^:&X1#UI['$_5XoPp0Xp22.L7@8J%eTl'AGuH.o[H_'!jhoW~>
+W;lbs"q6aWo_ik9q#Up><.^:&X1#UI['$_5XoPp0Xp22.L7@8J%eTl'AGuH.o[H_'!jhoW~>
+W;l_r#&D`\o\;8BquR92/T$<'Kp&:?[^NKIriQ[&MLL"sP,u+#Y*QIrp&Y7?bl.JBm)1._liONn
+J,~>
+W;l_r#&D`\o\;8BquR92/T$<'Kp&:?[^NKIriQ[&MLL"sP,u+#Y*QIrp&Y7?bl.JBm)1._liONn
+J,~>
+W;l_r#&D`\o\;8BquR92/T$<'Kp&:?[^NKIriQ[&MLL"sP,u+#Y*QIrp&Y7?bl.JBm)1._liONn
+J,~>
+W;l_r#!Bijo_kj)r;mfV;L=+LD0qbT[C3NN[^<3?VN#_4<,%Z$rjDp3MF\NY!WaRRr;?]PPRQjZ
+Zi>O~>
+W;l_r#!Bijo_kj)r;mfV;L=+LD0qbT[C3NN[^<3?VN#_4<,%Z$rjDp3MF\NY!WaRRr;?]PPRQjZ
+Zi>O~>
+W;l_r#!Bijo_kj)r;mfV;L=+LD0qbT[C3NN[^<3?VN#_4<,%Z$rjDp3MF\NY!WaRRr;?]PPRQjZ
+Zi>O~>
+W;l_r'I9L8o_n`Q$j$JcBR>GhJpWui[C-"B%(*IMY,nLtQ@aja[(H=G"L>1n<#tl<!\C_NrVZfa
+e4Ss,[/YX~>
+W;l_r'I9L8o_n`Q$j$JcBR>GhJpWui[C-"B%(*IMY,nLtQ@aja[(H=G"L>1n<#tl<!\C_NrVZfa
+e4Ss,[/YX~>
+W;l_r'I9L8o_n`Q$j$JcBR>GhJpWui[C-"B%(*IMY,nLtQ@aja[(H=G"L>1n<#tl<!\C_NrVZfa
+e4Ss,[/YX~>
+W;l_r)$Y34m/?nTN#ONiI>*ZHU8G6%[C*<K[^<L?ZkB7=[(F5n]=YM[[&0=04<l+eeGT7Im,Y5]
+klS6lJ,~>
+W;l_r)$Y34m/?nTN#ONiI>*ZHU8G6%[C*<K[^<L?ZkB7=[(F5n]=YM[[&0=04<l+eeGT7Im,Y5]
+klS6lJ,~>
+W;l_r)$Y34m/?nTN#ONiI>*ZHU8G6%[C*<K[^<L?ZkB7=[(F5n]=YM[[&0=04<l+eeGT7Im,Y5]
+klS6lJ,~>
+W;l\q&k'\!o_naVMfjH%NLQcFZEgmDrO)^5r4<]X]>MP,b/VK>_7dIo]sb)@P')i0m/Hqco^(((
+kQ8-kJ,~>
+W;l\q&k'\!o_naVMfjH%NLQcFZEgmDrO)^5r4<]X]>MP,b/VK>_7dIo]sb)@P')i0m/Hqco^(((
+kQ8-kJ,~>
+W;l\q&k'\!o_naVMfjH%NLQcFZEgmDrO)^5r4<]X]>MP,b/VK>_7dIo]sb)@P')i0m/Hqco^(((
+kQ8-kJ,~>
+W;l\q)&&OYjRhf7H\-s2QD1Fc[Bd6H[^*?M['[IE_>_@PaoTf4rlPku`l>p0]!ec=S!9GF`8o_'
+S.+T_[/YX~>
+W;l\q)&&OYjRhf7H\-s2QD1Fc[Bd6H[^*?M['[IE_>_@PaoTf4rlPku`l>p0]!ec=S!9GF`8o_'
+S.+T_[/YX~>
+W;l\q)&&OYjRhf7H\-s2QD1Fc[Bd6H[^*?M['[IE_>_@PaoTf4rlPku`l>p0]!ec=S!9GF`8o_'
+S.+T_[/YX~>
+W;lYp(IYX[m$E'NKoM7dVQR51[^EQL[^NQT]DfVe`lcHLb0J;\c-FSYbfIlC_nEalX/;GRMhQRu
+0b!7I[/YX~>
+W;lYp(IYX[m$E'NKoM7dVQR51[^EQL[^NQT]DfVe`lcHLb0J;\c-FSYbfIlC_nEalX/;GRMhQRu
+0b!7I[/YX~>
+W;lYp(IYX[m$E'NKoM7dVQR51[^EQL[^NQT]DfVe`lcHLb0J;\c-FSYbfIlC_nEalX/;GRMhQRu
+0b!7I[/YX~>
+W;ci%q>q$5Pg#&4I>*]IS"ct_Z2qD>r3cX<[/RlC_oBjucMc/oc,e,MaSs*W]aD?_[]Z[*QATN<%
+-[i#s*t~>
+W;ci%q>q$5Pg#&4I>*]IS"ct_Z2qD>r3cX<[/RlC_oBjucMc/oc,e,MaSs*W]aD?_[]Z[*QATN<%
+-[i#s*t~>
+W;ci%q>q$5Pg#&4I>*]IS"ct_Z2qD>r3cX<[/RlC_oBjucMc/oc,e,MaSs*W]aD?_[]Z[*QATN<%
+-[i#s*t~>
+W;lYp%h(pAG_1X*OHuH6X/iP3[JdNH]<o2^_84.2b0J/Sc-k%cc-FQ1a:6&,_o'R5]sb5CU4,$0
+l2n?mJ,~>
+W;lYp%h(pAG_1X*OHuH6X/iP3[JdNH]<o2^_84.2b0J/Sc-k%cc-FQ1a:6&,_o'R5]sb5CU4,$0
+l2n?mJ,~>
+W;lYp%h(pAG_1X*OHuH6X/iP3[JdNH]<o2^_84.2b0J/Sc-k%cc-FQ1a:6&,_o'R5]sb5CU4,$0
+l2n?mJ,~>
+W;lYp$lrSqH\.'8QCFVLX02B+%^raV]>;+q_8aL;cHak_rmCekrlk>^&'W,=bfJ#L_oKg+ZD)[t%
+-mu%s*t~>
+W;lYp$lrSqH\.'8QCFVLX02B+%^raV]>;+q_8aL;cHak_rmCekrlk>^&'W,=bfJ#L_oKg+ZD)[t%
+-mu%s*t~>
+W;lYp$lrSqH\.'8QCFVLX02B+%^raV]>;+q_8aL;cHak_rmCekrlk>^&'W,=bfJ#L_oKg+ZD)[t%
+-mu%s*t~>
+W;l\q$mT#"I=6g0P*VZ8X02H-rO**G[(Erd_8F:4b0J<2df7Sebl,W_bQl57a2>3P>8HN+[/YX~>
+W;l\q$mT#"I=6g0P*VZ8X02H-rO**G[(Erd_8F:4b0J<2df7Sebl,W_bQl57a2>3P>8HN+[/YX~>
+W;l\q$mT#"I=6g0P*VZ8X02H-rO**G[(Erd_8F:4b0J<2df7Sebl,W_bQl57a2>3P>8HN+[/YX~>
+W;l_r&JeetH[UL%Ng?61V5po-[^*=?[f3o<_>hLTb5T]cde_/iaNV`Hrlk>^#KFg0a1\?p-gLi@
+s*t~>
+W;l_r&JeetH[UL%Ng?61V5po-[^*=?[f3o<_>hLTb5T]cde_/iaNV`Hrlk>^#KFg0a1\?p-gLi@
+s*t~>
+W;l_r&JeetH[UL%Ng?61V5po-[^*=?[f3o<_>hLTb5T]cde_/iaNV`Hrlk>^#KFg0a1\?p-gLi@
+s*t~>
+W;lbs%0eS.H[UL%LmF@$V5pZqZMq97]<o2^rkS`T`lcQTrR(blbfp%,!R/X`bl>`b`k25O#/8-h
+V0FKplN4KoJ,~>
+W;lbs%0eS.H[UL%LmF@$V5pZqZMq97]<o2^rkS`T`lcQTrR(blbfp%,!R/X`bl>`b`k25O#/8-h
+V0FKplN4KoJ,~>
+W;lbs%0eS.H[UL%LmF@$V5pZqZMq97]<o2^rkS`T`lcQTrR(blbfp%,!R/X`bl>`b`k25O#/8-h
+V0FKplN4KoJ,~>
+VuQ\s,9:3;I=6^-LmFU.X/iP/[C3KK[^Nfa_7RP"`l?0DdaHFhdeV,da8jH`a:#nmNHKi1ZFd];
+Bd;mE[Jta~>
+VuQ\s,9:3;I=6^-LmFU.X/iP/[C3KK[^Nfa_7RP"`l?0DdaHFhdeV,da8jH`a:#nmNHKi1ZFd];
+Bd;mE[Jta~>
+VuQ\s,9:3;I=6^-LmFU.X/iP/[C3KK[^Nfa_7RP"`l?0DdaHFhdeV,da8jH`a:#nmNHKi1ZFd];
+Bd;mE[Jta~>
+VuQ_t%Lb+5GC>(!Lm"3tV5pZ"rNcI3s18<=]DfVJ_og.#dKIh9bfn0-bl>`cbfJ$-a:,\^L37K\
+QD1F\NE[(]!k&&Y~>
+VuQ_t%Lb+5GC>(!Lm"3tV5pZ"rNcI3s18<=]DfVJ_og.#dKIh9bfn0-bl>`cbfJ$-a:,\^L37K\
+QD1F\NE[(]!k&&Y~>
+VuQ_t%Lb+5GC>(!Lm"3tV5pZ"rNcI3s18<=]DfVJ_og.#dKIh9bfn0-bl>`cbfJ$-a:,\^L37K\
+QD1F\NE[(]!k&&Y~>
+VuQ_t'F[BRH[U<uNg?6,V5pZ&[C3NO[^Q.Hs2"`T!Qr=XcMtucbl>`dbfIlLrl>Sc]7tWdJrQLo
+U8=NB9Fg=h[Jta~>
+VuQ_t'F[BRH[U<uNg?6,V5pZ&[C3NO[^Q.Hs2"`T!Qr=XcMtucbl>`dbfIlLrl>Sc]7tWdJrQLo
+U8=NB9Fg=h[Jta~>
+VuQ_t'F[BRH[U<uNg?6,V5pZ&[C3NO[^Q.Hs2"`T!Qr=XcMtucbl>`dbfIlLrl>Sc]7tWdJrQLo
+U8=NB9Fg=h[Jta~>
+VuQ_t$k-$VH[UL%Ng?61X/l3)!4Dg7!OTK;_#_QurQYGlbl5ZebfJ#PaNXV(#/QjQHAIZKrLNt_
+!fBAUklS<nJ,~>
+VuQ_t$k-$VH[UL%Ng?61X/l3)!4Dg7!OTK;_#_QurQYGlbl5ZebfJ#PaNXV(#/QjQHAIZKrLNt_
+!fBAUklS<nJ,~>
+VuQ_t$k-$VH[UL%Ng?61X/l3)!4Dg7!OTK;_#_QurQYGlbl5ZebfJ#PaNXV(#/QjQHAIZKrLNt_
+!fBAUklS<nJ,~>
+VuQ_t(CX8eH[UL+QC=A=X/iP6[^ENK[_&u[]DfYGb5]lpcH+)NaN2TLqoBAh["`:HOHu3%SYDjL
+SYD*3%-[i%s*t~>
+VuQ_t(CX8eH[UL+QC=A=X/iP6[^ENK[_&u[]DfYGb5]lpcH+)NaN2TLqoBAh["`:HOHu3%SYDjL
+SYD*3%-[i%s*t~>
+VuQ_t(CX8eH[UL+QC=A=X/iP6[^ENK[_&u[]DfYGb5]lpcH+)NaN2TLqoBAh["`:HOHu3%SYDjL
+SYD*3%-[i%s*t~>
+VuQ_t%gG^MH\I08QCXSCX/iP7[J[K4]Do\J`l%f$"jP-4bfJ$-a8jH_a9obVF_uqtQBmu1UAUP`
+O@TlF!k82[~>
+VuQ_t%gG^MH\I08QCXSCX/iP7[J[K4]Do\J`l%f$"jP-4bfJ$-a8jH_a9obVF_uqtQBmu1UAUP`
+O@TlF!k82[~>
+VuQ_t%gG^MH\I08QCXSCX/iP7[J[K4]Do\J`l%f$"jP-4bfJ$-a8jH_a9obVF_uqtQBmu1UAUP`
+O@TlF!k82[~>
+VuQ\s$o(t"H\.QQU8=]eX0V`4&\>Ea]=Ynk_8aL4cHaSXaN2U'aSs0`_6er/H]=?hSc>GaSHG=O
+Lc=Ju\,Us~>
+VuQ\s$o(t"H\.QQU8=]eX0V`4&\>Ea]=Ynk_8aL4cHaSXaN2U'aSs0`_6er/H]=?hSc>GaSHG=O
+Lc=Ju\,Us~>
+VuQ\s$o(t"H\.QQU8=]eX0V`4&\>Ea]=Ynk_8aL4cHaSXaN2U'aSs0`_6er/H]=?hSc>GaSHG=O
+Lc=Ju\,Us~>
+VuQ\s$4J.74CO,:V5:5urjD[4s1A6G!65#\&^8>;bfJ#L`l#X4_7Q@[D1[fIQMR0PRKAdp*Vfa=
+$l^H*o)cE$J,~>
+VuQ\s$4J.74CO,:V5:5urjD[4s1A6G!65#\&^8>;bfJ#L`l#X4_7Q@[D1[fIQMR0PRKAdp*Vfa=
+$l^H*o)cE$J,~>
+VuQ\s$4J.74CO,:V5:5urjD[4s1A6G!65#\&^8>;bfJ#L`l#X4_7Q@[D1[fIQMR0PRKAdp*Vfa=
+$l^H*o)cE$J,~>
+VuQYr'FZ`_7T=u4X/iP6ZF.*O]">D_]>=Eb#gC<4bfJ#LaN"4q#eQaP@<.0eQC@cCs.]Oa"e(gA
+Lc5b<!X0i[Hs@p$oE)Q&J,~>
+VuQYr'FZ`_7T=u4X/iP6ZF.*O]">D_]>=Eb#gC<4bfJ#LaN"4q#eQaP@<.0eQC@cCs.]Oa"e(gA
+Lc5b<!X0i[Hs@p$oE)Q&J,~>
+VuQYr'FZ`_7T=u4X/iP6ZF.*O]">D_]>=Eb#gC<4bfJ#LaN"4q#eQaP@<.0eQC@cCs.]Oa"e(gA
+Lc5b<!X0i[Hs@p$oE)Q&J,~>
+VuQVq)BD+=:.]/hVR!V<[^roU]">er_oBU3`luHHrQ"uYrkSrRTP[A5JrPqZR[X)D"d4\%Na!1l
+!X9<CI!f]d)ta9Bs*t~>
+VuQVq)BD+=:.]/hVR!V<[^roU]">er_oBU3`luHHrQ"uYrkSrRTP[A5JrPqZR[X)D"d4\%Na!1l
+!X9<CI!f]d)ta9Bs*t~>
+VuQVq)BD+=:.]/hVR!V<[^roU]">er_oBU3`luHHrQ"uYrkSrRTP[A5JrPqZR[X)D"d4\%Na!1l
+!X9<CI!f]d)ta9Bs*t~>
+VuQVq%1G!e;GL,%QEIO$[^s'L])omm_u@gT`rEj_]<%Q?9NuOhNg?!"rLNt_s.'C\Lk:G37M?4+
+!W`s&rd4lkA0_fs#5J>1s*t~>
+VuQVq%1G!e;GL,%QEIO$[^s'L])omm_u@gT`rEj_]<%Q?9NuOhNg?!"rLNt_s.'C\Lk:G37M?4+
+!W`s&rd4lkA0_fs#5J>1s*t~>
+VuQVq%1G!e;GL,%QEIO$[^s'L])omm_u@gT`rEj_]<%Q?9NuOhNg?!"rLNt_s.'C\Lk:G37M?4+
+!W`s&rd4lkA0_fs#5J>1s*t~>
+VuQVq%La:E<*NF%>Df;\[C3]\rPJ`__og."`X]hl[$?)J7TXJULldpgRf/ccU7Ia?NeN1IOdqq(
+'DV\;'.d[AI"Qf^>Y5qDq#\,,J,~>
+VuQVq%La:E<*NF%>Df;\[C3]\rPJ`__og."`X]hl[$?)J7TXJULldpgRf/ccU7Ia?NeN1IOdqq(
+'DV\;'.d[AI"Qf^>Y5qDq#\,,J,~>
+VuQVq%La:E<*NF%>Df;\[C3]\rPJ`__og."`X]hl[$?)J7TXJULldpgRf/ccU7Ia?NeN1IOdqq(
+'DV\;'.d[AI"Qf^>Y5qDq#\,,J,~>
+VuQVq%La:EJo+ao;G:b]S#`p.rk\WP!64uR%D0!<NHJi;>\eJ/KoV>pQ2mKSRgbUENKfs9[_9,_
+N$Ji.!Wj#\9)a5;K*$F*)u0QGs*t~>
+VuQVq%La:EJo+ao;G:b]S#`p.rk\WP!64uR%D0!<NHJi;>\eJ/KoV>pQ2mKSRgbUENKfs9[_9,_
+N$Ji.!Wj#\9)a5;K*$F*)u0QGs*t~>
+VuQVq%La:EJo+ao;G:b]S#`p.rk\WP!64uR%D0!<NHJi;>\eJ/KoV>pQ2mKSRgbUENKfs9[_9,_
+N$Ji.!Wj#\9)a5;K*$F*)u0QGs*t~>
+VuQYrrrsbX:o'q)@:<D79N5_XNKod"VQ?&JNJ<%-@8p<GEdNClLlddcP5:ILOGJ^MT!c8MrOi9>
+A/"b?!Xp>bre(5u!eYSOp]A&,J,~>
+VuQYrrrsbX:o'q)@:<D79N5_XNKod"VQ?&JNJ<%-@8p<GEdNClLlddcP5:ILOGJ^MT!c8MrOi9>
+A/"b?!Xp>bre(5u!eYSOp]A&,J,~>
+VuQYrrrsbX:o'q)@:<D79N5_XNKod"VQ?&JNJ<%-@8p<GEdNClLlddcP5:ILOGJ^MT!c8MrOi9>
+A/"b?!Xp>bre(5u!eYSOp]A&,J,~>
+VuQYr&dACNI'gS`BOkmq@96]BAo2O%ral@BAnGb"FaO(@#`+S(QBIQ"RZdZ9#`a^pL6o'V]u9f]
+!Mh:A!XfE)I!gR!I"Qf=)[uQE])R9~>
+VuQYr&dACNI'gS`BOkmq@96]BAo2O%ral@BAnGb"FaO(@#`+S(QBIQ"RZdZ9#`a^pL6o'V]u9f]
+!Mh:A!XfE)I!gR!I"Qf=)[uQE])R9~>
+VuQYr&dACNI'gS`BOkmq@96]BAo2O%ral@BAnGb"FaO(@#`+S(QBIQ"RZdZ9#`a^pL6o'V]u9f]
+!Mh:A!XfE)I!gR!I"Qf=)[uQE])R9~>
+VuQVq!X9pOrk/l>BkqU/H[C!dMNs0YNK&gQrJgi=!1*MF!1NkL%??6uKn>>\]u7k5bf%I!]`Q-Z
+4SSsd$m]V@K7&<(HurU=#5SD5s*t~>
+VuQVq!X9pOrk/l>BkqU/H[C!dMNs0YNK&gQrJgi=!1*MF!1NkL%??6uKn>>\]u7k5bf%I!]`Q-Z
+4SSsd$m]V@K7&<(HurU=#5SD5s*t~>
+VuQVq!X9pOrk/l>BkqU/H[C!dMNs0YNK&gQrJgi=!1*MF!1NkL%??6uKn>>\]u7k5bf%I!]`Q-Z
+4SSsd$m]V@K7&<(HurU=#5SD5s*t~>
+VuQYr!X9&irk/`I]oQiBDJjK8Js*4BriZ9u!hbjJrg!\MQBm]"rfRPQP)t][Kme]BrOr-Q!6"iL
+!)WFl$Odt:FG"sgK7&&g2#.3bs*t~>
+VuQYr!X9&irk/`I]oQiBDJjK8Js*4BriZ9u!hbjJrg!\MQBm]"rfRPQP)t][Kme]BrOr-Q!6"iL
+!)WFl$Odt:FG"sgK7&&g2#.3bs*t~>
+VuQYr!X9&irk/`I]oQiBDJjK8Js*4BriZ9u!hbjJrg!\MQBm]"rfRPQP)t][Kme]BrOr-Q!6"iL
+!)WFl$Odt:FG"sgK7&&g2#.3bs*t~>
+VuQYr!t6,2[/R`G[(VB2B5;:#G`&!iX9Gc(U7Ij@r0mSIrJh&;KnXr8V#A",`;Rp[`;[FOF:8TS
+!riH3'4cKCK7%cG:a?8@!keP`~>
+VuQYr!t6,2[/R`G[(VB2B5;:#G`&!iX9Gc(U7Ij@r0mSIrJh&;KnXr8V#A",`;Rp[`;[FOF:8TS
+!riH3'4cKCK7%cG:a?8@!keP`~>
+VuQYr!t6,2[/R`G[(VB2B5;:#G`&!iX9Gc(U7Ij@r0mSIrJh&;KnXr8V#A",`;Rp[`;[FOF:8TS
+!riH3'4cKCK7%cG:a?8@!keP`~>
+VuQYr!t6G;XSfaF[Ynp6CM.[:NM*#BVPTcQR[TP2r0%#7#(hY_Jr>YkrOiKD]tMA&bgaSLrk/B/
+)[?'=#n0XXI"Qf^8gFi>!knVa~>
+VuQYr!t6G;XSfaF[Ynp6CM.[:NM*#BVPTcQR[TP2r0%#7#(hY_Jr>YkrOiKD]tMA&bgaSLrk/B/
+)[?'=#n0XXI"Qf^8gFi>!knVa~>
+VuQYr!t6G;XSfaF[Ynp6CM.[:NM*#BVPTcQR[TP2r0%#7#(hY_Jr>YkrOiKD]tMA&bgaSLrk/B/
+)[?'=#n0XXI"Qf^8gFi>!knVa~>
+W;l_r!sU#-XT#mG[(X/]Mf*0@CN>#_QBmu*R[09;OoUOAL^/N[I=d'*Mkp?cs0hm>!6"ld!o2;T
+rk/AK$jQM/#R3+jA8>^\1_]Qa^&NT~>
+W;l_r!sU#-XT#mG[(X/]Mf*0@CN>#_QBmu*R[09;OoUOAL^/N[I=d'*Mkp?cs0hm>!6"ld!o2;T
+rk/AK$jQM/#R3+jA8>^\1_]Qa^&NT~>
+W;l_r!sU#-XT#mG[(X/]Mf*0@CN>#_QBmu*R[09;OoUOAL^/N[I=d'*Mkp?cs0hm>!6"ld!o2;T
+rk/AK$jQM/#R3+jA8>^\1_]Qa^&NT~>
+W;l_r!t6G;V#@t8[(X/]O_A9=CNXuXM#EA6P5gRBL^J`^I<U*`JqAf=XnfX>`6?`\jQu7*m+g+/
+X<dNA"qqpp6qT9LoE)c,J,~>
+W;l_r!t6G;V#@t8[(X/]O_A9=CNXuXM#EA6P5gRBL^J`^I<U*`JqAf=XnfX>`6?`\jQu7*m+g+/
+X<dNA"qqpp6qT9LoE)c,J,~>
+W;l_r!t6G;V#@t8[(X/]O_A9=CNXuXM#EA6P5gRBL^J`^I<U*`JqAf=XnfX>`6?`\jQu7*m+g+/
+X<dNA"qqpp6qT9LoE)c,J,~>
+W;l_r!sT]$XS][<[(X/=D.-sfDKgO+JcggWI<YU0"FYlZQ`g>$%(<jV]tMA.eE#u_o^r.]"RO@N
+:^m!u!YZL]o)cZ+J,~>
+W;l_r!sT]$XS][<[(X/=D.-sfDKgO+JcggWI<YU0"FYlZQ`g>$%(<jV]tMA.eE#u_o^r.]"RO@N
+:^m!u!YZL]o)cZ+J,~>
+W;l_r!sT]$XS][<[(X/=D.-sfDKgO+JcggWI<YU0"FYlZQ`g>$%(<jV]tMA.eE#u_o^r.]"RO@N
+:^m!u!YZL]o)cZ+J,~>
+WW2er!sT]$V#%b2[_9ANF^\fkB5@9_!G?3IB*3@+NhlTd!4;a="iSXGm.BrLr<W&orUf1#U_<sn
+!l+bc~>
+WW2er!sT]$V#%b2[_9ANF^\fkB5@9_!G?3IB*3@+NhlTd!4;a="iSXGm.BrLr<W&orUf1#U_<sn
+!l+bc~>
+WW2er!sT]$V#%b2[_9ANF^\fkB5@9_!G?3IB*3@+NhlTd!4;a="iSXGm.BrLr<W&orUf1#U_<sn
+!l+bc~>
+WrMhq"qrhh]u8.5rOiKF]tLe=EFE9dp1FPEEdEP3[f*l>[/R`B`6?`lm.C)O"SCKn>R'<l!>>[P
+s*t~>
+WrMhq"qrhh]u8.5rOiKF]tLe=EFE9dp1FPEEdEP3[f*l>[/R`B`6?`lm.C)O"SCKn>R'<l!>>[P
+s*t~>
+WrMhq"qrhh]u8.5rOiKF]tLe=EFE9dp1FPEEdEP3[f*l>[/R`B`6?`lm.C)O"SCKn>R'<l!>>[P
+s*t~>
+WrMkr!t5ho[/SPUbf'In!4;a="1F,1B_l6DB689BIZ^H(]aD3]]sPJkbgb_?o_/4do]3(m#3Q'f
+$ig@Es*t~>
+WrMkr!t5ho[/SPUbf'In!4;a="1F,1B_l6DB689BIZ^H(]aD3]]sPJkbgb_?o_/4do]3(m#3Q'f
+$ig@Es*t~>
+WrMkr!t5ho[/SPUbf'In!4;a="1F,1B_l6DB689BIZ^H(]aD3]]sPJkbgb_?o_/4do]3(m#3Q'f
+$ig@Es*t~>
+X8hqr#n.J>`8o_/bfn$#]a_EGO+DY+I=$<lNgHTNr4NNI]tLed`5KmLh!F\*p&,!bgggiU!riJ?
+s*t~>
+X8hqr#n.J>`8o_/bfn$#]a_EGO+DY+I=$<lNgHTNr4NNI]tLed`5KmLh!F\*p&,!bgggiU!riJ?
+s*t~>
+X8hqr#n.J>`8o_/bfn$#]a_EGO+DY+I=$<lNgHTNr4NNI]tLed`5KmLh!F\*p&,!bgggiU!riJ?
+s*t~>
+X8hqr#mMs!m-NfoeBGl(^&PJ;XT5a*]`PXU[/IZA`6?`ljRi!@!PKH6!W`]2_>f#~>
+X8hqr#mMs!m-NfoeBGl(^&PJ;XT5a*]`PXU[/IZA`6?`ljRi!@!PKH6!W`]2_>f#~>
+X8hqr#mMs!m-NfoeBGl(^&PJ;XT5a*]`PXU[/IZA`6?`ljRi!@!PKH6!W`]2_>f#~>
+XT/"r#n3'so^qM2gs!_5]`?"D]`?"G^&Q"Tbgb/'jRi*7r<)Ck$k2;#rt>A6_Z,,~>
+XT/"r#n3'so^qM2gs!_5]`?"D]`?"G^&Q"Tbgb/'jRi*7r<)Ck$k2;#rt>A6_Z,,~>
+XT/"r#n3'so^qM2gs!_5]`?"D]`?"G^&Q"Tbgb/'jRi*7r<)Ck$k2;#rt>A6_Z,,~>
+XoJ(r#tj"OrUfI;jOD-;]`?"J]`>M?^&Q"Ubgb.tjQu7*n,3C&,Ra_YklLnp'+DbXJ,~>
+XoJ(r#tj"OrUfI;jOD-;]`?"J]`>M?^&Q"Ubgb.tjQu7*n,3C&,Ra_YklLnp'+DbXJ,~>
+XoJ(r#tj"OrUfI;jOD-;]`?"J]`>M?^&Q"Ubgb.tjQu7*n,3C&,Ra_YklLnp'+DbXJ,~>
+XoAG,!XAK&!Y_[-rr)lh"74ge`;R@L`9b2;`!=N9eE#]Wm.B`E!q^7AjoYPr!!:(<J,~>
+XoAG,!XAK&!Y_[-rr)lh"74ge`;R@L`9b2;`!=N9eE#]Wm.B`E!q^7AjoYPr!!:(<J,~>
+XoAG,!XAK&!Y_[-rr)lh"74ge`;R@L`9b2;`!=N9eE#]Wm.B`E!q^7AjoYPr!!:(<J,~>
+Y5\V/'+>NYquQs)CZP-drVuKkm+fhK]a2R#eC<R?m-OB1r;sYh%-IZn"qq'Us*t~>
+Y5\V/'+>NYquQs)CZP-drVuKkm+fhK]a2R#eC<R?m-OB1r;sYh%-IZn"qq'Us*t~>
+Y5\V/'+>NYquQs)CZP-drVuKkm+fhK]a2R#eC<R?m-OB1r;sYh%-IZn"qq'Us*t~>
+YQ+V2";;^f'*eC:!^+]nr;?fkrUf1+`;.(H`:LYLbgb.tjQ,\"rVcBTr;uV=)s.2'"q1ROs*t~>
+YQ+V2";;^f'*eC:!^+]nr;?fkrUf1+`;.(H`:LYLbgb.tjQ,\"rVcBTr;uV=)s.2'"q1ROs*t~>
+YQ+V2";;^f'*eC:!^+]nr;?fkrUf1+`;.(H`:LYLbgb.tjQ,\"rVcBTr;uV=)s.2'"q1ROs*t~>
+Yl=b+$krUZ!=T23!X'1,m.BrHr;uWPeEjmK`;e<kguRhoo_nFHr<(8+$jPbo`W(G~>
+Yl=b+$krUZ!=T23!X'1,m.BrHr;uWPeEjmK`;e<kguRhoo_nFHr<(8+$jPbo`W(G~>
+Yl=b+$krUZ!=T23!X'1,m.BrHr;uWPeEjmK`;e<kguRhoo_nFHr<(8+$jPbo`W(G~>
+Yl>.6"qqpp'+>9N!X;KVm.gM]o^(AOm_&kDbgbG/m.Br5rVuKlrJVBoj9!=#J,~>
+Yl>.6"qqpp'+>9N!X;KVm.gM]o^(AOm_&kDbgbG/m.Br5rVuKlrJVBoj9!=#J,~>
+Yl>.6"qqpp'+>9N!X;KVm.gM]o^(AOm_&kDbgbG/m.Br5rVuKlrJVBoj9!=#J,~>
+Z2ab(rXA`,""^P?o_8:do]4N?n@]1QeD0-Gm.C8KrUf7N!o,=8ir[7#J,~>
+Z2ab(rXA`,""^P?o_8:do]4N?n@]1QeD0-Gm.C8KrUf7N!o,=8ir[7#J,~>
+Z2ab(rXA`,""^P?o_8:do]4N?n@]1QeD0-Gm.C8KrUf7N!o,=8ir[7#J,~>
+ZN'e'#7LYB!Wj$Wm.L;Zo^(AWo">=Ibgb_7m.C8Kir&uOF9Vs1!lk7j~>
+ZN'e'#7LYB!Wj$Wm.L;Zo^(AWo">=Ibgb_7m.C8Kir&uOF9Vs1!lk7j~>
+ZN'e'#7LYB!Wj$Wm.L;Zo^(AWo">=Ibgb_7m.C8Kir&uOF9Vs1!lk7j~>
+ZiB_#!sUm+o^r(ao]4fOoXtIIeD0-Oo^q#=!Q5Z2!lt=k~>
+ZiB_#!sUm+o^r(ao]4fOoXtIIeD0-Oo^q#=!Q5Z2!lt=k~>
+ZiB_#!sUm+o^r(ao]4fOoXtIIeD0-Oo^q#=!Q5Z2!lt=k~>
+ZiB_#!ZQdaoDS^]#41F#bfn#Dqn3-NbhV"7rq-6h!;,4J!q]:niW@4$J,~>
+ZiB_#!ZQdaoDS^]#41F#bfn#Dqn3-NbhV"7rq-6h!;,4J!q]:niW@4$J,~>
+ZiB_#!ZQdaoDS^]#41F#bfn#Dqn3-NbhV"7rq-6h!;,4J!q]:niW@4$J,~>
+[/]e#!_Uu7nbrL["75+(eGRPjeGn;*m.Br'r;j86iW@4$J,~>
+[/]e#!_Uu7nbrL["75+(eGRPjeGn;*m.Br'r;j86iW@4$J,~>
+[/]e#!_Uu7nbrL["75+(eGRPjeGn;*m.Br'r;j86iW@4$J,~>
+[K#n$!\C/>mJR+Ym,\0$ro=4Ko^r+Sf_kj;/E$ZPs*t~>
+[K#n$!\C/>mJR+Ym,\0$ro=4Ko^r+Sf_kj;/E$ZPs*t~>
+[K#n$!\C/>mJR+Ym,\0$ro=4Ko^r+Sf_kj;/E$ZPs*t~>
+[f>t$!F4^Or;lQWro=(Grq$6io[Wm?CZ#9:s*t~>
+[f>t$!F4^Or;lQWro=(Grq$6io[Wm?CZ#9:s*t~>
+[f>t$!F4^Or;lQWro=(Grq$6io[Wm?CZ#9:s*t~>
+\,Z(%!?8`:rVuKim/HY)r;rJt%,h92s*t~>
+\,Z(%!?8`:rVuKim/HY)r;rJt%,h92s*t~>
+\,Z(%!?8`:rVuKim/HY)r;rJt%,h92s*t~>
+\,Z(%!G(Q]rVcB7r;t1V%,_32s*t~>
+\,Z(%!G(Q]rVcB7r;t1V%,_32s*t~>
+\,Z(%!G(Q]rVcB7r;t1V%,_32s*t~>
+\Gu1&![PJOkPYDQci!q;lnmQ#c2W:~>
+\Gu1&![PJOkPYDQci!q;lnmQ#c2W:~>
+\Gu1&![PJOkPYDQci!q;lnmQ#c2W:~>
+\c;:'":T),o^qJJs7??joZd=9CBb"$!mUaq~>
+\c;:'":T),o^qJJs7??joZd=9CBb"$!mUaq~>
+\c;:'":T),o^qJJs7??joZd=9CBb"$!mUaq~>
+])V@'"XLeBm/?Rcr<;iloV;NshZD+'J,~>
+])V@'"XLeBm/?Rcr<;iloV;NshZD+'J,~>
+])V@'"XLeBm/?Rcr<;iloV;NshZD+'J,~>
+]DqF'"]a(=m/?SBr;cK8r<;iloZR^Jh?)%'J,~>
+]DqF'"]a(=m/?SBr;cK8r<;iloZR^Jh?)%'J,~>
+]DqF'"]a(=m/?SBr;cK8r<;iloZR^Jh?)%'J,~>
+]DqL)"pQ?CeE$8okktMRdJX=BrUfaC/-67:!mpst~>
+]DqL)"pQ?CeE$8okktMRdJX=BrUfaC/-67:!mpst~>
+]DqL)"pQ?CeE$8okktMRdJX=BrUfaC/-67:!mpst~>
+]`7U*#R1r1[++1'o^qAG!;+e>qt'pUAD715s*t~>
+]`7U*#R1r1[++1'o^qAG!;+e>qt'pUAD715s*t~>
+]`7U*#R1r1[++1'o^qAG!;+e>qt'pUAD715s*t~>
+^&R[*#7Mkg^!u-8o]Z5To_nF6rVuKlrUfaKrq$8^$jPJgdf4g~>
+^&R[*#7Mkg^!u-8o]Z5To_nF6rVuKlrUfaKrq$8^$jPJgdf4g~>
+^&R[*#7Mkg^!u-8o]Z5To_nF6rVuKlrUfaKrq$8^$jPJgdf4g~>
+^Ama*#RhZ)[*7=lo^qDHrq+nBs7H?X!qbjOrTjX"$j$Xg!n71"~>
+^Ama*#RhZ)[*7=lo^qDHrq+nBs7H?X!qbjOrTjX"$j$Xg!n71"~>
+^Ama*#RhZ)[*7=lo^qDHrq+nBs7H?X!qbjOrTjX"$j$Xg!n71"~>
+^]3g*#n.c3[)Cbdo_nFKrVH0Ir;cKhr;lQhrUg-Vs5X4IjSeEIga!:AgB,n)J,~>
+^]3g*#n.c3[)Cbdo_nFKrVH0Ir;cKhr;lQhrUg-Vs5X4IjSeEIga!:AgB,n)J,~>
+^]3g*#n.c3[)Cbdo_nFKrVH0Ir;cKhr;lQhrUg-Vs5X4IjSeEIga!:AgB,n)J,~>
+_#Nm*$4Jb]UqP"5m.C8Ko)/merUfa\o^qM2m/?S<r;uWirVcBgm/Q/Fh#?@<m,Tu)'*d1mec1.~>
+_#Nm*$4Jb]UqP"5m.C8Ko)/merUfa\o^qM2m/?S<r;uWirVcBgm/Q/Fh#?@<m,Tu)'*d1mec1.~>
+_#Nm*$4Jb]UqP"5m.C8Ko)/merUfa\o^qM2m/?S<r;uWirVcBgm/Q/Fh#?@<m,Tu)'*d1mec1.~>
+_#Nm*$k,t&UpS(im.BrKo^qkU!VH?io_e(Tj8eQDo`+jqo_na\rVcBeo_n^jo_nF\qXjaQroF+7
+s3qD2eD/j?jQokT$jPGfec1.~>
+_#Nm*$k,t&UpS(im.BrKo^qkU!VH?io_e(Tj8eQDo`+jqo_na\rVcBeo_n^jo_nF\qXjaQroF+7
+s3qD2eD/j?jQokT$jPGfec1.~>
+_#Nm*$k,t&UpS(im.BrKo^qkU!VH?io_e(Tj8eQDo`+jqo_na\rVcBeo_n^jo_nF\qXjaQroF+7
+s3qD2eD/j?jQokT$jPGfec1.~>
+_>j!+$3goSS=H[o`73l7rU^-ho_n^jo_nF\rq$3Wq;hS2s5X1HrU^Boo^r+So_nF\r:KsS!T`VE
+jSdm4eGRMqeD0-ON#NE7g&fk*J,~>
+_>j!+$3goSS=H[o`73l7rU^-ho_n^jo_nF\rq$3Wq;hS2s5X1HrU^Boo^r+So_nF\r:KsS!T`VE
+jSdm4eGRMqeD0-ON#NE7g&fk*J,~>
+_>j!+$3goSS=H[o`73l7rU^-ho_n^jo_nF\rq$3Wq;hS2s5X1HrU^Boo^r+So_nF\r:KsS!T`VE
+jSdm4eGRMqeD0-ON#NE7g&fk*J,~>
+_Z0'+$4IT#S>;s^]u8FUr9X@R!r_cirq$9YjQ-9ps5Y'QjP8POjQuO;o_nF\o^r+SrUg'eo^qM2
+jSms5eGRMj`;RpW`!=N9h!ENQ'+EOqfDg@~>
+_Z0'+$4IT#S>;s^]u8FUr9X@R!r_cirq$9YjQ-9ps5Y'QjP8POjQuO;o_nF\o^r+SrUg'eo^qM2
+jSms5eGRMj`;RpW`!=N9h!ENQ'+EOqfDg@~>
+_Z0'+$4IT#S>;s^]u8FUr9X@R!r_cirq$9YjQ-9ps5Y'QjP8POjQuO;o_nF\o^r+SrUg'eo^qM2
+jSms5eGRMj`;RpW`!=N9h!ENQ'+EOqfDg@~>
+_Z0*,$kj$gPan8>XL,[ZbgcXQs6TdX#Q=;no_na\rVlEim,\-#s5a.Fs7H<h!;-0es7?]to^qM*
+gsjitbf%a#_udWj`;[FU`4a+5eE$881tMf]s*t~>
+_Z0*,$kj$gPan8>XL,[ZbgcXQs6TdX#Q=;no_na\rVlEim,\-#s5a.Fs7H<h!;-0es7?]to^qM*
+gsjitbf%a#_udWj`;[FU`4a+5eE$881tMf]s*t~>
+_Z0*,$kj$gPan8>XL,[ZbgcXQs6TdX#Q=;no_na\rVlEim,\-#s5a.Fs7H<h!;-0es7?]to^qM*
+gsjitbf%a#_udWj`;[FU`4a+5eE$881tMf]s*t~>
+_uK0,rt>DaPl@0^Uo^r:`73;lguRhgrUg*f!;-9h"SDZko]6#,s5a.No)/pfrUfICjP8P?bfp%(
+s1JENrk/BO]tO9\#0bTXoXudaf`Kh+J,~>
+_uK0,rt>DaPl@0^Uo^r:`73;lguRhgrUg*f!;-9h"SDZko]6#,s5a.No)/pfrUfICjP8P?bfp%(
+s1JENrk/BO]tO9\#0bTXoXudaf`Kh+J,~>
+_uK0,rt>DaPl@0^Uo^r:`73;lguRhgrUg*f!;-9h"SDZko]6#,s5a.No)/pfrUfICjP8P?bfp%(
+s1JENrk/BO]tO9\#0bTXoXudaf`Kh+J,~>
+_uK0,ru2S5S=HCFXL,[ZbgbG'jQ,t*rUfj_#P@BDgt_8go^)MXo^(rDj9+2ebfoh"q7R!NbhVRW
+Zm>GK!uid1'BB5Js*t~>
+_uK0,ru2S5S=HCFXL,[ZbgbG'jQ,t*rUfj_#P@BDgt_8go^)MXo^(rDj9+2ebfoh"q7R!NbhVRW
+Zm>GK!uid1'BB5Js*t~>
+_uK0,ru2S5S=HCFXL,[ZbgbG'jQ,t*rUfj_#P@BDgt_8go^)MXo^(rDj9+2ebfoh"q7R!NbhVRW
+Zm>GK!uid1'BB5Js*t~>
+`;f9-'+?-*1n:A3XK9+ReC<:7m-O]Co^r(bm,[6om-"?IoE=OAjP8PieGmbk_uRLF`!+BGo_k!f
+qZ6s14A\j2,Rif:g&HR~>
+`;f9-'+?-*1n:A3XK9+ReC<:7m-O]Co^r(bm,[6om-"?IoE=OAjP8PieGmbk_uRLF`!+BGo_k!f
+qZ6s14A\j2,Rif:g&HR~>
+`;f9-'+?-*1n:A3XK9+ReC<:7m-O]Co^r(bm,[6om-"?IoE=OAjP8PieGmbk_uRLF`!+BGo_k!f
+qZ6s14A\j2,Rif:g&HR~>
+`;f9-%gEsd8t;]Y]tMY>jQ,\"o^Me^m,[7"o]c;ao_na\rUfaKm,[6_gsjjQbl5QX^&Q"TbhV:X
+oOJC-!XB,r<DZ(/$jPkrgAc[~>
+`;f9-%gEsd8t;]Y]tMY>jQ,\"o^Me^m,[7"o]c;ao_na\rUfaKm,[6_gsjjQbl5QX^&Q"TbhV:X
+oOJC-!XB,r<DZ(/$jPkrgAc[~>
+`;f9-%gEsd8t;]Y]tMY>jQ,\"o^Me^m,[7"o]c;ao_na\rUfaKm,[6_gsjjQbl5QX^&Q"TbhV:X
+oOJC-!XB,r<DZ(/$jPkrgAc[~>
+`W,?-%20ZoA>H<?`6@#tm.BrIr;cKhr;cKdr;cKhli?\Mr;cKcr;cK_rVuKpm,[6_eC;^dr58rU
+`4a+-eE#upgcYE7#RiOH6prRF$jPqtgAc[~>
+`W,?-%20ZoA>H<?`6@#tm.BrIr;cKhr;cKdr;cKhli?\Mr;cKcr;cK_rVuKpm,[6_eC;^dr58rU
+`4a+-eE#upgcYE7#RiOH6prRF$jPqtgAc[~>
+`W,?-%20ZoA>H<?`6@#tm.BrIr;cKhr;cKdr;cKhli?\Mr;cKcr;cK_rVuKpm,[6_eC;^dr58rU
+`4a+-eE#upgcYE7#RiOH6prRF$jPqtgAc[~>
+`W,?-%4i/DPdJ-JeD0EWrVcBar;cKhr<)]jrUg*f"75+8o_SLdo`"dho`"dho^D_Yo`"ggoG$ZQ
+gt^E'bf%H5`4`k&bhV:OrOj0H!XJu3'/W*6,SLUN!o*a*~>
+`W,?-%4i/DPdJ-JeD0EWrVcBar;cKhr<)]jrUg*f"75+8o_SLdo`"dho`"dho^D_Yo`"ggoG$ZQ
+gt^E'bf%H5`4`k&bhV:OrOj0H!XJu3'/W*6,SLUN!o*a*~>
+`W,?-%4i/DPdJ-JeD0EWrVcBar;cKhr<)]jrUg*f"75+8o_SLdo`"dho`"dho^D_Yo`"ggoG$ZQ
+gt^E'bf%H5`4`k&bhV:OrOj0H!XJu3'/W*6,SLUN!o*a*~>
+`rGH.$k+BpCTP4neE#ugrUfITrp0g\rUg'eo`"dho_A@bo_&._o_ACbo`+7\jP887bl,Hc]u8.M
+m.Bq/#5A6($nP"=/0kno!o*a*~>
+`rGH.$k+BpCTP4neE#ugrUfITrp0g\rUg'eo`"dho_A@bo_&._o_ACbo`+7\jP887bl,Hc]u8.M
+m.Bq/#5A6($nP"=/0kno!o*a*~>
+`rGH.$k+BpCTP4neE#ugrUfITrp0g\rUg'eo`"dho_A@bo_&._o_ACbo`+7\jP887bl,Hc]u8.M
+m.Bq/#5A6($nP"=/0kno!o*a*~>
+`rG`6!X9&AquZm;#X"orbhV:Go^r(["8)Qjo^i%[o^2S`o_na\rVcBerUf^[s7?lhjP887bf%H5
+`5Km\o_n,EpAtO-)am:T)[u$6g])d~>
+`rG`6!X9&AquZm;#X"orbhV:Go^r(["8)Qjo^i%[o^2S`o_na\rVcBerUf^[s7?lhjP887bf%H5
+`5Km\o_n,EpAtO-)am:T)[u$6g])d~>
+`rG`6!X9&AquZm;#X"orbhV:Go^r(["8)Qjo^i%[o^2S`o_na\rVcBerUf^[s7?lhjP887bf%H5
+`5Km\o_n,EpAtO-)am:T)[u$6g])d~>
+`rGc7!t6,")uKd;)[:].bgb_Go_n^go_&._o`"dpo_na\rUfa\o^r(^o^;Y[o_na\q>L?c"mk=*
+eBH/9`!4H8m.C7`%/'`+$p7?S,Riu?h#Dm~>
+`rGc7!t6,")uKd;)[:].bgb_Go_n^go_&._o`"dpo_na\rUfa\o^r(^o^;Y[o_na\q>L?c"mk=*
+eBH/9`!4H8m.C7`%/'`+$p7?S,Riu?h#Dm~>
+`rGc7!t6,")uKd;)[:].bgb_Go_n^go_&._o`"dpo_na\rUfa\o^r(^o^;Y[o_na\q>L?c"mk=*
+eBH/9`!4H8m.C7`%/'`+$p7?S,Riu?h#Dm~>
+`rGf8";<US//.s`#7M8B^!,9mm.:/Uo_\Reo_SLdo`"dho_\Rho_na\rquihir/oL%IE02eBGkE
+`5LHtrUa+_!X/uh:dc6,liPuBJ,~>
+`rGf8";<US//.s`#7M8B^!,9mm.:/Uo_\Reo_SLdo`"dho_\Rho_na\rquihir/oL%IE02eBGkE
+`5LHtrUa+_!X/uh:dc6,liPuBJ,~>
+`rGf8";<US//.s`#7M8B^!,9mm.:/Uo_\Reo_SLdo`"dho_\Rho_na\rquihir/oL%IE02eBGkE
+`5LHtrUa+_!X/uh:dc6,liPuBJ,~>
+a8bo9"<0`s,SU(W#TG%beE#]_rUfsb!;-0e!;-'b!qcH`qu$WhrVcB]r<DomrUg'eo_n^go_JFf
+o_na\qY^Tim,ZsObl5NabiJEp`!l;?"9pDR1_]0Vh>`!~>
+a8bo9"<0`s,SU(W#TG%beE#]_rUfsb!;-0e!;-'b!qcH`qu$WhrVcB]r<DomrUg'eo_n^go_JFf
+o_na\qY^Tim,ZsObl5NabiJEp`!l;?"9pDR1_]0Vh>`!~>
+a8bo9"<0`s,SU(W#TG%beE#]_rUfsb!;-0e!;-'b!qcH`qu$WhrVcB]r<DomrUg'eo_n^go_JFf
+o_na\qY^Tim,ZsObl5NabiJEp`!l;?"9pDR1_]0Vh>`!~>
+a8br:!sUkf/G]DP)cb,;m.BrLr;cKdr;cK<r;cK[r;cKhr<W&orUfaCgsjRI`!"TVo^lD\!X&og
+8h:D;!o<m,~>
+a8br:!sUkf/G]DP)cb,;m.BrLr;cKdr;cK<r;cK[r;cKhr<W&orUfaCgsjRI`!"TVo^lD\!X&og
+8h:D;!o<m,~>
+a8br:!sUkf/G]DP)cb,;m.BrLr;cKdr;cK<r;cK[r;cKhr<W&orUfaCgsjRI`!"TVo^lD\!X&og
+8h:D;!o<m,~>
+a8br:"!g]"%/L#.)l2Qeo_SLdo_&._o_A@bo\fZOo_na\rUfXYs7?]cgsjQd`6@$'rQG]B!X&o_
+6lQ?s!oEs-~>
+a8br:"!g]"%/L#.)l2Qeo_SLdo_&._o_A@bo\fZOo_na\rUfXYs7?]cgsjQd`6@$'rQG]B!X&o_
+6lQ?s!oEs-~>
+a8br:"!g]"%/L#.)l2Qeo_SLdo_&._o_A@bo\fZOo_na\rUfXYs7?]cgsjQd`6@$'rQG]B!X&o_
+6lQ?s!oEs-~>
+a8bu;!sUkm)u9U=##O[Yo_8:ao_&.bo_na\qu$Ner;@&rrVcBerUg'eo_na\mJR.ZrVcB\r<r8a
+gsjQd`6@<@oMG>brs&E'!ujWj'C5eWs*t~>
+a8bu;!sUkm)u9U=##O[Yo_8:ao_&.bo_na\qu$Ner;@&rrVcBerUg'eo_na\mJR.ZrVcB\r<r8a
+gsjQd`6@<@oMG>brs&E'!ujWj'C5eWs*t~>
+a8bu;!sUkm)u9U=##O[Yo_8:ao_&.bo_na\qu$Ner;@&rrVcBerUg'eo_na\mJR.ZrVcB\r<r8a
+gsjQd`6@<@oMG>brs&E'!ujWj'C5eWs*t~>
+aT)&;!u"L!%/L#+';YR)!;-*c"8)Qjo`"dho_JFco_JFco^_qbo_na\rVcBVr<)]jrUfpa$hWfH
+eBGkTeF`^H#5SB$%/pnE$j$VY8h:D<!oEs-~>
+aT)&;!u"L!%/L#+';YR)!;-*c"8)Qjo`"dho_JFco_JFco^_qbo_na\rVcBVr<)]jrUfpa$hWfH
+eBGkTeF`^H#5SB$%/pnE$j$VY8h:D<!oEs-~>
+aT)&;!u"L!%/L#+';YR)!;-*c"8)Qjo`"dho_JFco_JFco^_qbo_na\rVcBVr<)]jrUfpa$hWfH
+eBGkTeF`^H#5SB$%/pnE$j$VY8h:D<!oEs-~>
+aT)&;![LSnq#URnjSJfTo_/4`o_n^go_SLdo],lMo]uGUo_SLno^(A_bf%`\rU`q`!WicD'E/pT
+'+>:+6mN3.!oO$.~>
+aT)&;![LSnq#URnjSJfTo_/4`o_n^go_SLdo],lMo]uGUo_SLno^(A_bf%`\rU`q`!WicD'E/pT
+'+>:+6mN3.!oO$.~>
+aT)&;![LSnq#URnjSJfTo_/4`o_n^go_SLdo],lMo]uGUo_SLno^(A_bf%`\rU`q`!WicD'E/pT
+'+>:+6mN3.!oO$.~>
+aT))<!u"'b%/U)0$lcSGrUfsb!;,LR!;-*c!;-3f!;,j\#5%lmo_na\r;?Wfp\b*ar;?upm+g+7
+`74GXX9SV)rsT;T,U=od)[m,g8jj<smK2;GJ,~>
+aT))<!u"'b%/U)0$lcSGrUfsb!;,LR!;-*c!;-3f!;,j\#5%lmo_na\r;?Wfp\b*ar;?upm+g+7
+`74GXX9SV)rsT;T,U=od)[m,g8jj<smK2;GJ,~>
+aT))<!u"'b%/U)0$lcSGrUfsb!;,LR!;-*c!;-3f!;,j\#5%lmo_na\r;?Wfp\b*ar;?upm+g+7
+`74GXX9SV)rsT;T,U=od)[m,g8jj<smK2;GJ,~>
+aoD2=!sU;Q,l.QD#'B5%r;cKer;cKZr;cKfr;cKbr<)]jrUf^[!;--d!;-*c!;-6g!qbj?rmV&*
+rT#7&!Y,VP,V1c71b9RZ$m\h(%.42Ss*t~>
+aoD2=!sU;Q,l.QD#'B5%r;cKer;cKZr;cKfr;cKbr<)]jrUf^[!;--d!;-*c!;-6g!qbj?rmV&*
+rT#7&!Y,VP,V1c71b9RZ$m\h(%.42Ss*t~>
+aoD2=!sU;Q,l.QD#'B5%r;cKer;cKZr;cKfr;cKbr<)]jrUf^[!;--d!;-*c!;-6g!qbj?rmV&*
+rT#7&!Y,VP,V1c71b9RZ$m\h(%.42Ss*t~>
+aoD2=!u"L!%/L#+)pJ6Y!;-3f"8)Qjo_&.bo_na\q>C<cp&,!brVcB=rVu6aj9+c@rH.u>%La!r
+1d"/g1aF"K'0JYrm/l5GJ,~>
+aoD2=!u"L!%/L#+)pJ6Y!;-3f"8)Qjo_&.bo_na\q>C<cp&,!brVcB=rVu6aj9+c@rH.u>%La!r
+1d"/g1aF"K'0JYrm/l5GJ,~>
+aoD2=!u"L!%/L#+)pJ6Y!;-3f"8)Qjo_&.bo_na\q>C<cp&,!brVcB=rVu6aj9+c@rH.u>%La!r
+1d"/g1aF"K'0JYrm/l5GJ,~>
+aoD5>!sUSm/G]DL%!;.<r;cK`r<)]jrUfm`!;-!`!;,aY!;-3f"8)Qjo_\Reo_eXio_na\qu$Ne
+r;HWes8<#k]aXlA!t6,"2#]lK4=h`d!ZO`g%.42Ts*t~>
+aoD5>!sUSm/G]DL%!;.<r;cK`r<)]jrUfm`!;-!`!;,aY!;-3f"8)Qjo_\Reo_eXio_na\qu$Ne
+r;HWes8<#k]aXlA!t6,"2#]lK4=h`d!ZO`g%.42Ts*t~>
+aoD5>!sUSm/G]DL%!;.<r;cK`r<)]jrUfm`!;-!`!;,aY!;-3f"8)Qjo_\Reo_eXio_na\qu$Ne
+r;HWes8<#k]aXlA!t6,"2#]lK4=h`d!ZO`g%.42Ts*t~>
+b5_;>!uk':'D_b3)pIs2r;cKfr;cKfr;cKbr<)]jrUg$d!;-*c!;,g[!;-9h!;-$a!TYg2!Y?"a
+/3H<s6o6_>'*8S!:a?85!oa00~>
+b5_;>!uk':'D_b3)pIs2r;cKfr;cKfr;cKbr<)]jrUg$d!;-*c!;,g[!;-9h!;-$a!TYg2!Y?"a
+/3H<s6o6_>'*8S!:a?85!oa00~>
+b5_;>!uk':'D_b3)pIs2r;cKfr;cKfr;cKbr<)]jrUg$d!;-*c!;,g[!;-9h!;-$a!TYg2!Y?"a
+/3H<s6o6_>'*8S!:a?85!oa00~>
+b5_>?!sUSm/G]DL$u>M7r<)]jrUfm`!;,XV!;-!`!;,=M!;,dZ!;-'b#AXAL$kjmC4T7_T1b9RZ
+"p,`?4;7,aiW"E~>
+b5_>?!sUSm/G]DL$u>M7r<)]jrUfm`!;,XV!;-!`!;,=M!;,dZ!;-'b#AXAL$kjmC4T7_T1b9RZ
+"p,`?4;7,aiW"E~>
+b5_>?!sUSm/G]DL$u>M7r<)]jrUfm`!;,XV!;-!`!;,=M!;,dZ!;-'b#AXAL$kjmC4T7_T1b9RZ
+"p,`?4;7,aiW"E~>
+b5_>?!u"9p%/U)/$m`dio_A@eo_na\p&,3hrVcBerUg'eo^_q_o_na\q>C<cr;?`irVcBer;cKc
+r<)]jrUfOV#,DY9',r2Jr]CQF//oN:!Wicm:a?86!oa00~>
+b5_>?!u"9p%/U)/$m`dio_A@eo_na\p&,3hrVcBerUg'eo^_q_o_na\q>C<cr;?`irVcBer;cKc
+r<)]jrUfOV#,DY9',r2Jr]CQF//oN:!Wicm:a?86!oa00~>
+b5_>?!u"9p%/U)/$m`dio_A@eo_na\p&,3hrVcBerUg'eo^_q_o_na\q>C<cr;?`irVcBer;cKc
+r<)]jrUfOV#,DY9',r2Jr]CQF//oN:!Wicm:a?86!oa00~>
+bQ%D?![M"rq>p^3FS,#"#5%lmo_na\q>CBerUg'e#5%lmo_na\n,37YnbiI[kPYn?)[mAn,U>3'
+/0l/J$k3+:!ukK-%.42Vs*t~>
+bQ%D?![M"rq>p^3FS,#"#5%lmo_na\q>CBerUg'e#5%lmo_na\n,37YnbiI[kPYn?)[mAn,U>3'
+/0l/J$k3+:!ukK-%.42Vs*t~>
+bQ%D?![M"rq>p^3FS,#"#5%lmo_na\q>CBerUg'e#5%lmo_na\n,37YnbiI[kPYn?)[mAn,U>3'
+/0l/J$k3+:!ukK-%.42Vs*t~>
+bQ%G@!t7Ri#5\H'$ma'qr;cKhr;cKcr;cKYr<)]jo^qVN"8)Qjo^i"]o_n^go_A@ho_na\rVcBf
+r<DomrUg'eo`"dloK3Nj'DrgL'E8L>!Wrj-A0gREir=N~>
+bQ%G@!t7Ri#5\H'$ma'qr;cKhr;cKcr;cKYr<)]jo^qVN"8)Qjo^i"]o_n^go_A@ho_na\rVcBf
+r<DomrUg'eo`"dloK3Nj'DrgL'E8L>!Wrj-A0gREir=N~>
+bQ%G@!t7Ri#5\H'$ma'qr;cKhr;cKcr;cKYr<)]jo^qVN"8)Qjo^i"]o_n^go_A@ho_na\rVcBf
+r<DomrUg'eo`"dloK3Nj'DrgL'E8L>!Wrj-A0gREir=N~>
+bQ%G@!ZP,jqZ6j.'4gb0r<)]jrUf[Z#k\)oo_nFKm.BiH!;-*c!;,[W!;,m]!;,s_!,MNA!#,>?
+!!`6#"!hYE#4DWQs*t~>
+bQ%G@!ZP,jqZ6j.'4gb0r<)]jrUf[Z#k\)oo_nFKm.BiH!;-*c!;,[W!;,m]!;,s_!,MNA!#,>?
+!!`6#"!hYE#4DWQs*t~>
+bQ%G@!ZP,jqZ6j.'4gb0r<)]jrUf[Z#k\)oo_nFKm.BiH!;-*c!;,[W!;,m]!;,s_!,MNA!#,>?
+!!`6#"!hYE#4DWQs*t~>
+bl@PA!t7"d'Dhh4$lcSOr;cK]r;cK\r<)]QjRiBK!;-9h"8)Qjo^i"co_na\rVcBdr;cKdr;cKW
+r<DomrUg&a%/p>.#5/*#$roCumK2GKJ,~>
+bl@PA!t7"d'Dhh4$lcSOr;cK]r;cK\r<)]QjRiBK!;-9h"8)Qjo^i"co_na\rVcBdr;cKdr;cKW
+r<DomrUg&a%/p>.#5/*#$roCumK2GKJ,~>
+bl@PA!t7"d'Dhh4$lcSOr;cK]r;cK\r<)]QjRiBK!;-9h"8)Qjo^i"co_na\rVcBdr;cKdr;cKW
+r<DomrUg&a%/p>.#5/*#$roCumK2GKJ,~>
+bl@PA!ZP-%q>pg/7-+=Fo^r(^o_eXlo_na\rVcBcr<Mu]jQ,t3rUg'e!;-'b"8)Qjo^i"]o^_q\
+o`"dho_SLdo_A@ce._?R!sUka%.42Ws*t~>
+bl@PA!ZP-%q>pg/7-+=Fo^r(^o_eXlo_na\rVcBcr<Mu]jQ,t3rUg'e!;-'b"8)Qjo^i"]o^_q\
+o`"dho_SLdo_A@ce._?R!sUka%.42Ws*t~>
+bl@PA!ZP-%q>pg/7-+=Fo^r(^o_eXlo_na\rVcBcr<Mu]jQ,t3rUg'e!;-'b"8)Qjo^i"]o^_q\
+o`"dho_SLdo_A@ce._?R!sUka%.42Ws*t~>
+c2[VA!]4.$qZ6g''9r=k!;-3f!;,aY#P@uno]5*"o^i"]o]H)Po_A@bo`"dho_SLdo_JFdln%W-
+![LbbmK2GKJ,~>
+c2[VA!]4.$qZ6g''9r=k!;-3f!;,aY#P@uno]5*"o^i"]o]H)Po_A@bo`"dho_SLdo_JFdln%W-
+![LbbmK2GKJ,~>
+c2[VA!]4.$qZ6g''9r=k!;-3f!;,aY#P@uno]5*"o^i"]o]H)Po_A@bo`"dho_SLdo_JFdln%W-
+![LbbmK2GKJ,~>
+c2[YB!t7Rc#5\H''0Oe=r;cKcr;cK\rVuNij8nW>lhphUr;?Wfq>CEfrVcBer;cKhr;cKcr<)]j
+rUfsb!;-6g!+bR#!ukJj%.42Xs*t~>
+c2[YB!t7Rc#5\H''0Oe=r;cKcr;cK\rVuNij8nW>lhphUr;?Wfq>CEfrVcBer;cKhr;cKcr<)]j
+rUfsb!;-6g!+bR#!ukJj%.42Xs*t~>
+c2[YB!t7Rc#5\H''0Oe=r;cKcr;cK\rVuNij8nW>lhphUr;?Wfq>CEfrVcBer;cKhr;cKcr<)]j
+rUfsb!;-6g!+bR#!ukJj%.42Xs*t~>
+c2[YB![M#%qZ6j5)gq;Dr<)]jrUg*f!;-0e"75+(m/?k_o_\Reo_eXio_na\r;?WfrVZijrVcB]
+r;cKXr;cKdr;`)O!Wrj21_]9YjSs`~>
+c2[YB![M#%qZ6j5)gq;Dr<)]jrUg*f!;-0e"75+(m/?k_o_\Reo_eXio_na\r;?WfrVZijrVcB]
+r;cKXr;cKdr;`)O!Wrj21_]9YjSs`~>
+c2[YB![M#%qZ6j5)gq;Dr<)]jrUg*f!;-0e"75+(m/?k_o_\Reo_eXio_na\r;?WfrVZijrVcB]
+r;cKXr;cKdr;`)O!Wrj21_]9YjSs`~>
+cN!bC!sUka%/U)3)`5M3rUg'eo`"dho_\Reo^D_^o_n.;jRi?J"8)QjoY^V0o_nEqn,`^s:eDZ2
+mfMSMJ,~>
+cN!bC!sUka%/U)3)`5M3rUg'eo`"dho_\Reo^D_^o_n.;jRi?J"8)QjoY^V0o_nEqn,`^s:eDZ2
+mfMSMJ,~>
+cN!bC!sUka%/U)3)`5M3rUg'eo`"dho_\Reo^D_^o_n.;jRi?J"8)QjoY^V0o_nEqn,`^s:eDZ2
+mfMSMJ,~>
+cN!hE"9no@:dk-]!Y\i*qu$Nequ$Nep&+m_r;?Wfrr!#mm,[7"o_&._o_JFco^r(^o_eXfo_A@e
+o_na\o_ed^r;?ZO%.F>u:]VgGmfMSMJ,~>
+cN!hE"9no@:dk-]!Y\i*qu$Nequ$Nep&+m_r;?Wfrr!#mm,[7"o_&._o_JFco^r(^o_eXfo_A@e
+o_na\o_ed^r;?ZO%.F>u:]VgGmfMSMJ,~>
+cN!hE"9no@:dk-]!Y\i*qu$Nequ$Nep&+m_r;?Wfrr!#mm,[7"o_&._o_JFco^r(^o_eXfo_A@e
+o_na\o_ed^r;?ZO%.F>u:]VgGmfMSMJ,~>
+ci<hC!\@k-qZ6g4)l30*!;-0e"8)Qjo^i"ao^(Z*o]c;Vo_na\rVZ`gr;?Wfn,37Yqu$WhrVcBb
+r;l6un,`Y`:`Jd'jo9i~>
+ci<hC!\@k-qZ6g4)l30*!;-0e"8)Qjo^i"ao^(Z*o]c;Vo_na\rVZ`gr;?Wfn,37Yqu$WhrVcBb
+r;l6un,`Y`:`Jd'jo9i~>
+ci<hC!\@k-qZ6g4)l30*!;-0e"8)Qjo^i"ao^(Z*o]c;Vo_na\rVZ`gr;?Wfn,37Yqu$WhrVcBb
+r;l6un,`Y`:`Jd'jo9i~>
+ci<qF"U5#:6sL/t!Wj#tjRN0Ko_&._o_SLdo`!nRrUg'\p&,!brVcB_r;cK]r<)]jrUfj_"8)Qj
+o^i"]/FW]B8l-Jo!p0H4~>
+ci<qF"U5#:6sL/t!Wj#tjRN0Ko_&._o_SLdo`!nRrUg'\p&,!brVcB_r;cK]r<)]jrUfj_"8)Qj
+o^i"]/FW]B8l-Jo!p0H4~>
+ci<qF"U5#:6sL/t!Wj#tjRN0Ko_&._o_SLdo`!nRrUg'\p&,!brVcB_r;cK]r<)]jrUfj_"8)Qj
+o^i"]/FW]B8l-Jo!p0H4~>
+d/X"F"9no9:dk-]":T\VrUg!c!;,j\!;-0e$M=;qo_na\jP8hgrV[&prVcBerUg'eo_\Reo_&._
+o_eXfo_A@bo^2SWo_n^hoLeTS!_Q9&m/lDLJ,~>
+d/X"F"9no9:dk-]":T\VrUg!c!;,j\!;-0e$M=;qo_na\jP8hgrV[&prVcBerUg'eo_\Reo_&._
+o_eXfo_A@bo^2SWo_n^hoLeTS!_Q9&m/lDLJ,~>
+d/X"F"9no9:dk-]":T\VrUg!c!;,j\!;-0e$M=;qo_na\jP8hgrV[&prVcBerUg'eo_\Reo_&._
+o_eXfo_A@bo^2SWo_n^hoLeTS!_Q9&m/lDLJ,~>
+d/WqD!ZPAqq>p[2^&Is4o_na\p&+m_nGNR`m,Zs_o^qJJ!;,IQ"8)Qjo_A@bo_JFco`"dhFRTA3
+:]Lpk!p0H4~>
+d/WqD!ZPAqq>p[2^&Is4o_na\p&+m_nGNR`m,Zs_o^qJJ!;,IQ"8)Qjo_A@bo_JFco`"dhFRTA3
+:]Lpk!p0H4~>
+d/WqD!ZPAqq>p[2^&Is4o_na\p&+m_nGNR`m,Zs_o^qJJ!;,IQ"8)Qjo_A@bo_JFco`"dhFRTA3
+:]Lpk!p0H4~>
+dJs"D!\@.PqZ6g<4QQ57"8)Qjo_\Reo_eXio_na\qu$]jm+gCWo^Vk[o_JFco_n^go`"dho_\Re
+o`"dho^r(^o_eXio_na\r;?]hrIaS@s%i\(m/lDLJ,~>
+dJs"D!\@.PqZ6g<4QQ57"8)Qjo_\Reo_eXio_na\qu$]jm+gCWo^Vk[o_JFco_n^go`"dho_\Re
+o`"dho^r(^o_eXio_na\r;?]hrIaS@s%i\(m/lDLJ,~>
+dJs"D!\@.PqZ6g<4QQ57"8)Qjo_\Reo_eXio_na\qu$]jm+gCWo^Vk[o_JFco_n^go`"dho_\Re
+o`"dho^r(^o_eXio_na\r;?]hrIaS@s%i\(m/lDLJ,~>
+dJs%E!XqIZq>p^;C\7H$!;-0e!;,UU%d`93jRi*CrUg'eo_na\nGN@ZqY^NgrVcBfr;cKar<)]j
+rUfRW!VDoO!WktV%."&Xs*t~>
+dJs%E!XqIZq>p^;C\7H$!;-0e!;,UU%d`93jRi*CrUg'eo_na\nGN@ZqY^NgrVcBfr;cKar<)]j
+rUfRW!VDoO!WktV%."&Xs*t~>
+dJs%E!XqIZq>p^;C\7H$!;-0e!;,UU%d`93jRi*CrUg'eo_na\nGN@ZqY^NgrVcBfr;cKar<)]j
+rUfRW!VDoO!WktV%."&Xs*t~>
+df9+E!ZOr]q>p[:XSi"so_&._o_eXfo_A@bo`"dmo^(AgjRi0E"8)Qjo`"dhoZ@%4oVCsX!^o-Z
+liQ>LJ,~>
+df9+E!ZOr]q>p[:XSi"so_&._o_eXfo_A@bo`"dmo^(AgjRi0E"8)Qjo`"dhoZ@%4oVCsX!^o-Z
+liQ>LJ,~>
+df9+E!ZOr]q>p[:XSi"so_&._o_eXfo_A@bo`"dmo^(AgjRi0E"8)Qjo`"dhoZ@%4oVCsX!^o-Z
+liQ>LJ,~>
+df9.F!sUS^%/U)0'/[r3rUfpa!;-'b!;-3f!;-9h!;-0e#5%9;guRhomJR%Wq>C<coDJ[]rquih
+q>CEfrVcBar;cKfr;j80ncAk$8hB90k5Tr~>
+df9.F!sUS^%/U)0'/[r3rUfpa!;-'b!;-3f!;-9h!;-0e#5%9;guRhomJR%Wq>C<coDJ[]rquih
+q>CEfrVcBar;cKfr;j80ncAk$8hB90k5Tr~>
+df9.F!sUS^%/U)0'/[r3rUfpa!;-'b!;-3f!;-9h!;-0e#5%9;guRhomJR%Wq>C<coDJ[]rquih
+q>CEfrVcBar;cKfr;j80ncAk$8hB90k5Tr~>
+e,T4F!sUSS#5\H'$q0IYr;cKVr;cKcr<;i[gt_8glMU_TnGN@Zr;?Wfqu$Neq>CEfrVcB`r;jh@
+ncAk+:b:o6k5Tr~>
+e,T4F!sUSS#5\H'$q0IYr;cKVr;cKcr<;i[gt_8glMU_TnGN@Zr;?Wfqu$Neq>CEfrVcB`r;jh@
+ncAk+:b:o6k5Tr~>
+e,T4F!sUSS#5\H'$q0IYr;cKVr;cKcr<;i[gt_8glMU_TnGN@Zr;?Wfqu$Neq>CEfrVcB`r;jh@
+ncAk+:b:o6k5Tr~>
+eGo:F!t7"Y%/U),$u>P7"8)Qjo_JFco_8:ao_n^jm+gCWrq-6h#5%lmo_na\rqurkrVcBar;cKg
+r<DomrUg'eo^r(^o^D_Yo_eXge-tmL!Y[s@lN65KJ,~>
+eGo:F!t7"Y%/U),$u>P7"8)Qjo_JFco_8:ao_n^jm+gCWrq-6h#5%lmo_na\rqurkrVcBar;cKg
+r<DomrUg'eo^r(^o^D_Yo_eXge-tmL!Y[s@lN65KJ,~>
+eGo:F!t7"Y%/U),$u>P7"8)Qjo_JFco_8:ao_n^jm+gCWrq-6h#5%lmo_na\rqurkrVcBar;cKg
+r<DomrUg'eo^r(^o^D_Yo_eXge-tmL!Y[s@lN65KJ,~>
+eGo:F!u!Lf#5\H&)l3H2!;,s_"8)Qjo_&._o_eXko^(AgjRi-D!;-0e!;,"D!;,s_!;-9h!Se@Z
+!WjWD%-muWs*t~>
+eGo:F!u!Lf#5\H&)l3H2!;,s_"8)Qjo_&._o_eXko^(AgjRi-D!;-0e!;,"D!;,s_!;-9h!Se@Z
+!WjWD%-muWs*t~>
+eGo:F!u!Lf#5\H&)l3H2!;,s_"8)Qjo_&._o_eXko^(AgjRi-D!;-0e!;,"D!;,s_!;-9h!Se@Z
+!WjWD%-muWs*t~>
+ec5@F!t7:s#5eN*$nTX$o]c;So_JFco`"dho`!VGjSnf=r;cKgr;cKar;cKgr;cK_r;cKfr<)]j
+rUfj_!TXpb!WjoL%-doWs*t~>
+ec5@F!t7:s#5eN*$nTX$o]c;So_JFco`"dho`!VGjSnf=r;cKgr;cKar;cKgr;cK_r;cKfr<)]j
+rUfj_!TXpb!WjoL%-doWs*t~>
+ec5@F!t7:s#5eN*$nTX$o]c;So_JFco`"dho`!VGjSnf=r;cKgr;cKar;cKgr;cK_r;cKfr<)]j
+rUfj_!TXpb!WjoL%-doWs*t~>
+ec5CG"9o8k>R^N3!Y[u_qu$WhrVcB]r;cKfr<)]jrUg$d!qcH`rnIP8o_n^jo_na\qY^Edq>C<c
+qu$Neq#(3brr!/qrVcBerUg'eo_&._o_\Rho_n+qncAkT6jDoXkPp&~>
+ec5CG"9o8k>R^N3!Y[u_qu$WhrVcB]r;cKfr<)]jrUg$d!qcH`rnIP8o_n^jo_na\qY^Edq>C<c
+qu$Neq#(3brr!/qrVcBerUg'eo_&._o_\Rho_n+qncAkT6jDoXkPp&~>
+ec5CG"9o8k>R^N3!Y[u_qu$WhrVcB]r;cKfr<)]jrUg$d!qcH`rnIP8o_n^jo_na\qY^Edq>C<c
+qu$Neq#(3brr!/qrVcBerUg'eo_&._o_\Rho_n+qncAkT6jDoXkPp&~>
+f)PFF!u!M,%/^/.'3sVtr;cKbr<)]jrUfFS!;-9G"6Ah@o_\Reo_A@bo_A@bo_eXfo`"dho^;YX
+o_A@eo_na\rVZc`,k;!;6p0]8kPp&~>
+f)PFF!u!M,%/^/.'3sVtr;cKbr<)]jrUfFS!;-9G"6Ah@o_\Reo_A@bo_A@bo_eXfo`"dho^;YX
+o_A@eo_na\rVZc`,k;!;6p0]8kPp&~>
+f)PFF!u!M,%/^/.'3sVtr;cKbr<)]jrUfFS!;-9G"6Ah@o_\Reo_A@bo_A@bo_eXfo`"dho^;YX
+o_A@eo_na\rVZc`,k;!;6p0]8kPp&~>
+fDkLF!u!5$%/^/.'5Q\&r;cKer;cKfr;cK]r;cKhg]?L.p\b3drVcB;r;cK\r;l71o)]!u<@e@>
+!pBT6~>
+fDkLF!u!5$%/^/.'5Q\&r;cKer;cKfr;cK]r;cKhg]?L.p\b3drVcB;r;cK\r;l71o)]!u<@e@>
+!pBT6~>
+fDkLF!u!5$%/^/.'5Q\&r;cKer;cKfr;cK]r;cKhg]?L.p\b3drVcB;r;cK\r;l71o)]!u<@e@>
+!pBT6~>
+fDkLF!uj(=%/^/.'7Am=r;cKJr;cKhg]cd*o_na\nbiI[p\b*ao)/[_rVcB]r;cK_r;l79o)]"&
+A0_BE!pBT6~>
+fDkLF!uj(=%/^/.'7Am=r;cKJr;cKhg]cd*o_na\nbiI[p\b*ao)/[_rVcB]r;cK_r;l79o)]"&
+A0_BE!pBT6~>
+fDkLF!uj(=%/^/.'7Am=r;cKJr;cKhg]cd*o_na\nbiI[p\b*ao)/[_rVcB]r;cK_r;l79o)]"&
+A0_BE!pBT6~>
+f`(pUo`>471jfu7!Wj=*m/$Y\o_\Reo_eXfo_eXfo_SLdo_n^go`!VHjRhd:"8)Qjo_JFco_n^m
+o_na\rVcBcr<)]jrUfa\"8)Qjo`"dioJH.@!ZPAXklU&JJ,~>
+f`(pUo`>471jfu7!Wj=*m/$Y\o_\Reo_eXfo_eXfo_SLdo_n^go`!VHjRhd:"8)Qjo_JFco_n^m
+o_na\rVcBcr<)]jrUfa\"8)Qjo`"dioJH.@!ZPAXklU&JJ,~>
+f`(pUo`>471jfu7!Wj=*m/$Y\o_\Reo_eXfo_eXfo_SLdo_n^go`!VHjRhd:"8)Qjo_JFco_n^m
+o_na\rVcBcr<)]jrUfa\"8)Qjo`"dioJH.@!ZPAXklU&JJ,~>
+f`1UG":Q4pCD6UI"<3ltrUf[Z!;-3f!;-6g"8)Qjo`"dho`"dho`!VOjRi*CrUg'eo_SLgo_na\
+q#(3bq>C<cmem.Xqu$WhrVcB`r;lOQo)\tM6k&;]kPp&~>
+f`1UG":Q4pCD6UI"<3ltrUf[Z!;-3f!;-6g"8)Qjo`"dho`"dho`!VOjRi*CrUg'eo_SLgo_na\
+q#(3bq>C<cmem.Xqu$WhrVcB`r;lOQo)\tM6k&;]kPp&~>
+f`1UG":Q4pCD6UI"<3ltrUf[Z!;-3f!;-6g"8)Qjo`"dho`"dho`!VOjRi*CrUg'eo_SLgo_na\
+q#(3bq>C<cmem.Xqu$WhrVcB`r;lOQo)\tM6k&;]kPp&~>
+g&L[G":QP,F;t,Z![Ol>rquihr;?`irVcBQr;uWim/Gc@jRi9H"8)Qjo_JFco_JFfo_na\o)/R\
+q#(3bnGNC[4S&UT8hB0-kPp&~>
+g&L[G":QP,F;t,Z![Ol>rquihr;?`irVcBQr;uWim/Gc@jRi9H"8)Qjo_JFco_JFfo_na\o)/R\
+q#(3bnGNC[4S&UT8hB0-kPp&~>
+g&L[G":QP,F;t,Z![Ol>rquihr;?`irVcBQr;uWim/Gc@jRi9H"8)Qjo_JFco_JFfo_na\o)/R\
+q#(3bnGNC[4S&UT8hB0-kPp&~>
+g&L^H"Ul>$4DQMG!Wjp[o_\Reo_&._o^;Y^o\A6_m.Br?r;cKWr<)]jrUfm`!;--d!;,p^"SDZk
+oK;aI!t8!>#3c3Ps*t~>
+g&L^H"Ul>$4DQMG!Wjp[o_\Reo_&._o^;Y^o\A6_m.Br?r;cKWr<)]jrUfm`!;--d!;,p^"SDZk
+oK;aI!t8!>#3c3Ps*t~>
+g&L^H"Ul>$4DQMG!Wjp[o_\Reo_&._o^;Y^o\A6_m.Br?r;cKWr<)]jrUfm`!;--d!;,p^"SDZk
+oK;aI!t8!>#3c3Ps*t~>
+g&LaI"q2.j/3I]9quQpN^%Cmo!;-*c!;-6g!;-'b"mk%"jQuO(r;cKXr<)]jrUfLU"8)Qjo_nag
+oDh;O!WjoL%-RcUs*t~>
+g&LaI"q2.j/3I]9quQpN^%Cmo!;-*c!;-6g!;-'b"mk%"jQuO(r;cKXr<)]jrUfLU"8)Qjo_nag
+oDh;O!WjoL%-RcUs*t~>
+g&LaI"q2.j/3I]9quQpN^%Cmo!;-*c!;-6g!;-'b"mk%"jQuO(r;cKXr<)]jrUfLU"8)Qjo_nag
+oDh;O!WjoL%-RcUs*t~>
+g&LdJ#6khe/3H=BAGcK14N-mfr;cKhr;cKcr;cKgr;cKhr>,&(rUg'eo_naTgt^uWo_nF\rUg'e
+o_n^go_SLdo_n^go`"dho_n^go^Vk^o_na\qu$WhrVcB^r;lOYoE#(^1^<.FkPp&~>
+g&LdJ#6khe/3H=BAGcK14N-mfr;cKhr;cKcr;cKgr;cKhr>,&(rUg'eo_naTgt^uWo_nF\rUg'e
+o_n^go_SLdo_n^go`"dho_n^go^Vk^o_na\qu$WhrVcB^r;lOYoE#(^1^<.FkPp&~>
+g&LdJ#6khe/3H=BAGcK14N-mfr;cKhr;cKcr;cKgr;cKhr>,&(rUg'eo_naTgt^uWo_nF\rUg'e
+o_n^go_SLdo_n^go`"dho_n^go^Vk^o_na\qu$WhrVcB^r;lOYoE#(^1^<.FkPp&~>
+g&LdJ#7M7k1eLSlFSu7F'4fVbrVcB[r;cKWr<Do\gt^uWo_A@bo_n^go`"dho_JFco_n^go_\Re
+o\KHHoLecX!XqmEk5siHJ,~>
+g&LdJ#7M7k1eLSlFSu7F'4fVbrVcB[r;cKWr<Do\gt^uWo_A@bo_n^go`"dho_JFco_n^go_\Re
+o\KHHoLecX!XqmEk5siHJ,~>
+g&LdJ#7M7k1eLSlFSu7F'4fVbrVcB[r;cKWr<Do\gt^uWo_A@bo_n^go`"dho_JFco_n^go_\Re
+o\KHHoLecX!XqmEk5siHJ,~>
+gAggI#7Mk78l]tc#6"Z+'4f>ZrVZ`grquihjS];Tm+gCWm.BlI!;,[W!;-'b!;--d"8)Qjo_JFc
+o_n^go_n^hoL/?R!uji@%-RcUs*t~>
+gAggI#7Mk78l]tc#6"Z+'4f>ZrVZ`grquihjS];Tm+gCWm.BlI!;,[W!;-'b!;--d"8)Qjo_JFc
+o_n^go_n^hoL/?R!uji@%-RcUs*t~>
+gAggI#7Mk78l]tc#6"Z+'4f>ZrVZ`grquihjS];Tm+gCWm.BlI!;,[W!;-'b!;--d"8)Qjo_JFc
+o_n^go_n^hoL/?R!uji@%-RcUs*t~>
+gAgdH"q2/%6tD5irW3-7ABaZD!;-3f"8)Qjo^_q]o^)S4#42!\o_na\nbiI[q>C<cp\b*aqu$Ne
+p\b3drVcBdr;cKdr;l7Qp&Y=)4=gp(!pBT6~>
+gAgdH"q2/%6tD5irW3-7ABaZD!;-3f"8)Qjo^_q]o^)S4#42!\o_na\nbiI[q>C<cp\b*aqu$Ne
+p\b3drVcBdr;cKdr;l7Qp&Y=)4=gp(!pBT6~>
+gAgdH"q2/%6tD5irW3-7ABaZD!;-3f"8)Qjo^_q]o^)S4#42!\o_na\nbiI[q>C<cp\b*aqu$Ne
+p\b3drVcBdr;cKdr;l7Qp&Y=)4=gp(!pBT6~>
+gAgaG"U5Vs8pho`!Ws*Hbk1Z.!;,m]$2"2po_na\rVcBer<;QCguRhor;?WfrVZ`gp&+m_n,37Y
+jo#2OrVZcX4SAgX)akA%!pBT6~>
+gAgaG"U5Vs8pho`!Ws*Hbk1Z.!;,m]$2"2po_na\rVcBer<;QCguRhor;?WfrVZ`gp&+m_n,37Y
+jo#2OrVZcX4SAgX)akA%!pBT6~>
+gAgaG"U5Vs8pho`!Ws*Hbk1Z.!;,m]$2"2po_na\rVcBer<;QCguRhor;?WfrVZ`gp&+m_n,37Y
+jo#2OrVZcX4SAgX)akA%!pBT6~>
+gAg^F":Q5#>Whue#nq+0o_na\rVcB`r;cKUr<Do\gt^u_o_SLdo_JFfo_na\r;?`irVcBer<Dom
+rUg'eo_8:ao_n^go_JFco_/4aga)Uq!t7:S%-@WSs*t~>
+gAg^F":Q5#>Whue#nq+0o_na\rVcB`r;cKUr<Do\gt^u_o_SLdo_JFfo_na\r;?`irVcBer<Dom
+rUg'eo_8:ao_n^go_JFco_/4aga)Uq!t7:S%-@WSs*t~>
+gAg^F":Q5#>Whue#nq+0o_na\rVcB`r;cKUr<Do\gt^u_o_SLdo_JFfo_na\r;?`irVcBer<Dom
+rUg'eo_8:ao_n^go_JFco_/4aga)Uq!t7:S%-@WSs*t~>
+gAg^FrsSrJ8lbil!ZPq)o_ed^r;?`irVcB]r;cKgr<DWDh!FD"o_A@eo_na\j8AuMqY^Edr;?`i
+rVcB_r;cKhr;k+]pAtF16mN3'!pBT6~>
+gAg^FrsSrJ8lbil!ZPq)o_ed^r;?`irVcB]r;cKgr<DWDh!FD"o_A@eo_na\j8AuMqY^Edr;?`i
+rVcB_r;cKhr;k+]pAtF16mN3'!pBT6~>
+gAg^FrsSrJ8lbil!ZPq)o_ed^r;?`irVcB]r;cKgr<DWDh!FD"o_A@eo_na\j8AuMqY^Edr;?`i
+rVcB_r;cKhr;k+]pAtF16mN3'!pBT6~>
+gAgXD#Ri7a$j$JLCXi1Y"8)Qjo_&._o_eXfo_\Rlo_nFKgt_8giV`cKoDJ[]mem.Xq#(63%/9l.
+$nO4S'*877%0$P!!pBT6~>
+gAgXD#Ri7a$j$JLCXi1Y"8)Qjo_&._o_eXfo_\Rlo_nFKgt_8giV`cKoDJ[]mem.Xq#(63%/9l.
+$nO4S'*877%0$P!!pBT6~>
+gAgXD#Ri7a$j$JLCXi1Y"8)Qjo_&._o_eXfo_\Rlo_nFKgt_8giV`cKoDJ[]mem.Xq#(63%/9l.
+$nO4S'*877%0$P!!pBT6~>
+gAgXDrs\oi":P>NABaWC!;-!`!;-9h!;-*c$1-I&jQuO2rVcBXr;cK^r;cKCr;iu.q>psK1d!lO
+,SL@q)uV#`)[m/F!p9N5~>
+gAgXDrs\oi":P>NABaWC!;-!`!;-9h!;-*c$1-I&jQuO2rVcBXr;cK^r;cKCr;iu.q>psK1d!lO
+,SL@q)uV#`)[m/F!p9N5~>
+gAgXDrs\oi":P>NABaWC!;-!`!;-9h!;-*c$1-I&jQuO2rVcBXr;cK^r;cKCr;iu.q>psK1d!lO
+,SL@q)uV#`)[m/F!p9N5~>
+gAgRB$k,6d$l`HqrVcBerUf^[!;,^X"ROq!jRi?J!;-*c"8)Qjo_eXlo_na\rVcBbr;cKhr<)]j
+rUg*f!;-6g!;-*c!;-3f!;-6g"8)QjN;N_k$m[Yt4>\T.$jHbH)^H@J/2Sn')u^9=!p9N5~>
+gAgRB$k,6d$l`HqrVcBerUf^[!;,^X"ROq!jRi?J!;-*c"8)Qjo_eXlo_na\rVcBbr;cKhr<)]j
+rUg*f!;-6g!;-*c!;-3f!;-6g"8)QjN;N_k$m[Yt4>\T.$jHbH)^H@J/2Sn')u^9=!p9N5~>
+gAgRB$k,6d$l`HqrVcBerUf^[!;,^X"ROq!jRi?J!;-*c"8)Qjo_eXlo_na\rVcBbr;cKhr<)]j
+rUg*f!;-6g!;-*c!;-3f!;-6g"8)QjN;N_k$m[Yt4>\T.$jHbH)^H@J/2Sn')u^9=!p9N5~>
+gAgjJ!=T2/!X06*>VnjenGN@Zr;?Wfq#(3brr!,prVc*<guRhoq>CEfrVcBVr;cKer;cK`r;cKf
+r<)]jrUg$d!;-6g!;-6g!VC1+!X&oW6o5k^$igM1!rWN7)_<6c1c-a/)\WGN!p9N5~>
+gAgjJ!=T2/!X06*>VnjenGN@Zr;?Wfq#(3brr!,prVc*<guRhoq>CEfrVcBVr;cKer;cK`r;cKf
+r<)]jrUg$d!;-6g!;-6g!VC1+!X&oW6o5k^$igM1!rWN7)_<6c1c-a/)\WGN!p9N5~>
+gAgjJ!=T2/!X06*>VnjenGN@Zr;?Wfq#(3brr!,prVc*<guRhoq>CEfrVcBVr;cKer;cK`r;cKf
+r<)]jrUg$d!;-6g!;-6g!VC1+!X&oW6o5k^$igM1!rWN7)_<6c1c-a/)\WGN!p9N5~>
+g&LsO#n/%J@:j+N0bXuo!X/cA6sN-]qY^EdrVZ`gp&+m_o_f$em+gCWo_nF@r;cK_r;cKOr;lOY
+rW363,V12S#5&$%"q1nZ/3H&o6iehIq#]^YJ,~>
+g&LsO#n/%J@:j+N0bXuo!X/cA6sN-]qY^EdrVZ`gp&+m_o_f$em+gCWo_nF@r;cK_r;cKOr;lOY
+rW363,V12S#5&$%"q1nZ/3H&o6iehIq#]^YJ,~>
+g&LsO#n/%J@:j+N0bXuo!X/cA6sN-]qY^EdrVZ`gp&+m_o_f$em+gCWo_nF@r;cK_r;cKOr;lOY
+rW363,V12S#5&$%"q1nZ/3H&o6iehIq#]^YJ,~>
+g&M$Q$k>RJNM*/V[C3,q7L]1r#STg_SFlIPrUg'e!;-9h!;,s_"8)Qjo`"dho_\Rlm+gCWm/?nT
+pAG!`rqurkrVcBfr;cK\r;cK`r;cKcr;cK^r<Un(!WicU,SLCN!riZ7)`1/tCJ#NI#5ePbs*t~>
+g&M$Q$k>RJNM*/V[C3,q7L]1r#STg_SFlIPrUg'e!;-9h!;,s_"8)Qjo`"dho_\Rlm+gCWm/?nT
+pAG!`rqurkrVcBfr;cK\r;cK`r;cKcr;cK^r<Un(!WicU,SLCN!riZ7)`1/tCJ#NI#5ePbs*t~>
+g&M$Q$k>RJNM*/V[C3,q7L]1r#STg_SFlIPrUg'e!;-9h!;,s_"8)Qjo`"dho_\Rlm+gCWm/?nT
+pAG!`rqurkrVcBfr;cK\r;cK`r;cKcr;cK^r<Un(!WicU,SLCN!riZ7)`1/tCJ#NI#5ePbs*t~>
+f`)-W0mJD<X0ql:"1G%?(An49'2YLcoDJd`rVcBUr<;i[jP8hgrVZrmrVcBerUg$d!;-0e!;-9h
+!;,j\!;-!`"8)Qjo_JFco_n^go`"dnU^R;5)^GjW!XB,j:iq(],RjVQjo9i~>
+f`)-W0mJD<X0ql:"1G%?(An49'2YLcoDJd`rVcBUr<;i[jP8hgrVZrmrVcBerUg$d!;-0e!;-9h
+!;,j\!;-!`"8)Qjo_JFco_n^go`"dnU^R;5)^GjW!XB,j:iq(],RjVQjo9i~>
+f`)-W0mJD<X0ql:"1G%?(An49'2YLcoDJd`rVcBUr<;i[jP8hgrVZrmrVcBerUg$d!;-0e!;-9h
+!;,j\!;-!`"8)Qjo_JFco_n^go`"dnU^R;5)^GjW!XB,j:iq(],RjVQjo9i~>
+f`)(RH]=Ssq76[9X+DAj!X&]@9!%+Ar;cKdr;cKfr;cKgr<;QCguS,"jS])NrqurkrVcB^r;cK]
+r;cKgr;cKfr<DV(!Wj#d'BfK&'0K*5CIB*GrW;3]J,~>
+f`)(RH]=Ssq76[9X+DAj!X&]@9!%+Ar;cKdr;cKfr;cKgr<;QCguS,"jS])NrqurkrVcB^r;cK]
+r;cKgr;cKfr<DV(!Wj#d'BfK&'0K*5CIB*GrW;3]J,~>
+f`)(RH]=Ssq76[9X+DAj!X&]@9!%+Ar;cKdr;cKfr;cKgr<;QCguS,"jS])NrqurkrVcB^r;cK]
+r;cKgr;cKfr<DV(!Wj#d'BfK&'0K*5CIB*GrW;3]J,~>
+f`))$LmtHNpppR5Y)4J'!XJu='2YdkrVcBJr<`,po^(AgjRiECp\b*aqu$Nep&+m_p&+m_r;?Wf
+q>C<cqu$urrUg'\rUg'L49>^4,j,46$nOeC<CAYWrW;3]J,~>
+f`))$LmtHNpppR5Y)4J'!XJu='2YdkrVcBJr<`,po^(AgjRiECp\b*aqu$Nep&+m_p&+m_r;?Wf
+q>C<cqu$urrUg'\rUg'L49>^4,j,46$nOeC<CAYWrW;3]J,~>
+f`))$LmtHNpppR5Y)4J'!XJu='2YdkrVcBJr<`,po^(AgjRiECp\b*aqu$Nep&+m_p&+m_r;?Wf
+q>C<cqu$urrUg'\rUg'L49>^4,j,46$nOeC<CAYWrW;3]J,~>
+g&D8'Kp\^>[C,e@"1>1],Q.ZH'-pSRjSf#`o_na\rVcBerUg*f"8)Qjo_\Reo_JFgm+gCWo`"dh
+o_eXfo]5rQo_na\pAG*crVcBcr;uWZe,6rd]YD+f>9ae4'B]E%$oBe'4>\T&rW;3]J,~>
+g&D8'Kp\^>[C,e@"1>1],Q.ZH'-pSRjSf#`o_na\rVcBerUg*f"8)Qjo_\Reo_JFgm+gCWo`"dh
+o_eXfo]5rQo_na\pAG*crVcBcr;uWZe,6rd]YD+f>9ae4'B]E%$oBe'4>\T&rW;3]J,~>
+g&D8'Kp\^>[C,e@"1>1],Q.ZH'-pSRjSf#`o_na\rVcBerUg*f"8)Qjo_\Reo_JFgm+gCWo`"dh
+o_eXfo]5rQo_na\pAG*crVcBcr;uWZe,6rd]YD+f>9ae4'B]E%$oBe'4>\T&rW;3]J,~>
+g&D89OJ8eV[C,_>!ipo'r<!!4!^r:.m/6qVqu$Ner;?fkm+gCWo_eXfo_JFfo_na\rquihrquih
+g\h66YGJ)kZ3-q_?o7$J#Rh@t4?PGG'-$oPjo9i~>
+g&D89OJ8eV[C,_>!ipo'r<!!4!^r:.m/6qVqu$Ner;?fkm+gCWo_eXfo_JFfo_na\rquihrquih
+g\h66YGJ)kZ3-q_?o7$J#Rh@t4?PGG'-$oPjo9i~>
+g&D89OJ8eV[C,_>!ipo'r<!!4!^r:.m/6qVqu$Ner;?fkm+gCWo_eXfo_JFfo_na\rquihrquih
+g\h66YGJ)kZ3-q_?o7$J#Rh@t4?PGG'-$oPjo9i~>
+gA_D4NgQQA[Bd45\cSpa/,]PL$j/>Fh":@>!;,UUs5X:;jRi*2r;cKfr;cKer;cKcr<)]jrUfd]
+#k\)om^8ms]"S$Z"hhLY[?`Q1!X]Sl1d!<7)[6ra#3>f7~>
+gA_D4NgQQA[Bd45\cSpa/,]PL$j/>Fh":@>!;,UUs5X:;jRi*2r;cKfr;cKer;cKcr<)]jrUfd]
+#k\)om^8ms]"S$Z"hhLY[?`Q1!X]Sl1d!<7)[6ra#3>f7~>
+gA_D4NgQQA[Bd45\cSpa/,]PL$j/>Fh":@>!;,UUs5X:;jRi*2r;cKfr;cKer;cKcr<)]jrUfd]
+#k\)om^8ms]"S$Z"hhLY[?`Q1!X]Sl1d!<7)[6ra#3>f7~>
+g]%S3Lm"4'X0T=E[Iq*4Z@sn/!X9&H1kXT^o^;Y[o_na\rr!/qrVcBejP8POo_8:ao^;Y[o_na\
+rqurkrVcBar;cKcr;cKhr<MuDX0T=SaNXV(rkefKRk3_($4JaJ,U=<;$mBV5jSs`~>
+g]%S3Lm"4'X0T=E[Iq*4Z@sn/!X9&H1kXT^o^;Y[o_na\rr!/qrVcBejP8POo_8:ao^;Y[o_na\
+rqurkrVcBar;cKcr;cKhr<MuDX0T=SaNXV(rkefKRk3_($4JaJ,U=<;$mBV5jSs`~>
+g]%S3Lm"4'X0T=E[Iq*4Z@sn/!X9&H1kXT^o^;Y[o_na\rr!/qrVcBejP8POo_8:ao^;Y[o_na\
+rqurkrVcBar;cKcr;cKhr<MuDX0T=SaNXV(rkefKRk3_($4JaJ,U=<;$mBV5jSs`~>
+g]%M4LmXa0X0T&%\cSa\,Q.ZM$l^a>eG]%<rUg!c"8)Qjo^Vkho^(AgjSf&LrVcBerUfm`!;-0e
+!;,FP"8)Qjo_\RloX1Nr]#2V1r6,;b`l!NOk5l#),U=<J'+>(=QEmmZs*t~>
+g]%M4LmXa0X0T&%\cSa\,Q.ZM$l^a>eG]%<rUg!c"8)Qjo^Vkho^(AgjSf&LrVcBerUfm`!;-0e
+!;,FP"8)Qjo_\RloX1Nr]#2V1r6,;b`l!NOk5l#),U=<J'+>(=QEmmZs*t~>
+g]%M4LmXa0X0T&%\cSa\,Q.ZM$l^a>eG]%<rUg!c"8)Qjo^Vkho^(AgjSf&LrVcBerUfm`!;-0e
+!;,FP"8)Qjo_\RloX1Nr]#2V1r6,;b`l!NOk5l#),U=<J'+>(=QEmmZs*t~>
+h#@P0LlRppV>de#[Iq*6]t0bW'E%t9$l^a5bk1l4!;-'b!;,m]"n_0BguS,$r<)]jrUfg^!;,aY
+!;,g[#kYNqX0oOP]u0ch"3.ri(?kl2"qrO5)\Wkh!Z$$W[`64lkPp&~>
+h#@P0LlRppV>de#[Iq*6]t0bW'E%t9$l^a5bk1l4!;-'b!;,m]"n_0BguS,$r<)]jrUfg^!;,aY
+!;,g[#kYNqX0oOP]u0ch"3.ri(?kl2"qrO5)\Wkh!Z$$W[`64lkPp&~>
+h#@P0LlRppV>de#[Iq*6]t0bW'E%t9$l^a5bk1l4!;-'b!;,m]"n_0BguS,$r<)]jrUfg^!;,aY
+!;,g[#kYNqX0oOP]u0ch"3.ri(?kl2"qrO5)\Wkh!Z$$W[`64lkPp&~>
+h#@\:Nfoj-X/iP6[IUm2ZCknAr;m-,'-phrm/?k_o_/4`o`"dko_na\r;?fcgt^uWo_\Reo_A@b
+o`"dho^i"]o_eXfo_eXfo^r(foWO^[X0oOM^&5bM_6./bkQ1f!,SU.c#m(N+QF=]PbfI0Ts*t~>
+h#@\:Nfoj-X/iP6[IUm2ZCknAr;m-,'-phrm/?k_o_/4`o`"dko_na\r;?fcgt^uWo_\Reo_A@b
+o`"dho^i"]o_eXfo_eXfo^r(foWO^[X0oOM^&5bM_6./bkQ1f!,SU.c#m(N+QF=]PbfI0Ts*t~>
+h#@\:Nfoj-X/iP6[IUm2ZCknAr;m-,'-phrm/?k_o_/4`o`"dko_na\r;?fcgt^uWo_\Reo_A@b
+o`"dho^i"]o_eXfo_eXfo^r(foWO^[X0oOM^&5bM_6./bkQ1f!,SU.c#m(N+QF=]PbfI0Ts*t~>
+h>[n8LlRjnV5pZ&[C*TRost=?]!@f)#5eN*'-pDMm/6eao_na\q>C<cq#(6cm/GcBm.C8Kqu$Ne
+q#(3bq>CNirVcBerUg*f!;-!`&bQ&#o_na\rVcBerUdLdV6[E+])TJC_ZRND9GZgn!X9&ArW3B1
+'6pCl_oBd=`p!GQ~>
+h>[n8LlRjnV5pZ&[C*TRost=?]!@f)#5eN*'-pDMm/6eao_na\q>C<cq#(6cm/GcBm.C8Kqu$Ne
+q#(3bq>CNirVcBerUg*f!;-!`&bQ&#o_na\rVcBerUdLdV6[E+])TJC_ZRND9GZgn!X9&ArW3B1
+'6pCl_oBd=`p!GQ~>
+h>[n8LlRjnV5pZ&[C*TRost=?]!@f)#5eN*'-pDMm/6eao_na\q>C<cq#(6cm/GcBm.C8Kqu$Ne
+q#(3bq>CNirVcBerUg*f!;-!`&bQ&#o_na\rVcBerUdLdV6[E+])TJC_ZRND9GZgn!X9&ArW3B1
+'6pCl_oBd=`p!GQ~>
+hZ!q?LlRdlSY`Bm[C,V;#/.U][\f$=qZ?d2!^)Fsp\b*ap\b*ar;?W^rnRP?s8;rin,3@\rVcBW
+r;cKYr<0O!V5pp#])TJD]*#4!6lY.f$OdMETY&+Z`l?*>VWn,2~>
+hZ!q?LlRdlSY`Bm[C,V;#/.U][\f$=qZ?d2!^)Fsp\b*ap\b*ar;?W^rnRP?s8;rin,3@\rVcBW
+r;cKYr<0O!V5pp#])TJD]*#4!6lY.f$OdMETY&+Z`l?*>VWn,2~>
+hZ!q?LlRdlSY`Bm[C,V;#/.U][\f$=qZ?d2!^)Fsp\b*ap\b*ar;?W^rnRP?s8;rin,3@\rVcBW
+r;cKYr<0O!V5pp#])TJD]*#4!6lY.f$OdMETY&+Z`l?*>VWn,2~>
+hu=(ELlRXcSY`BfZF[I5\cf^TTRIpZ!X8i;'.e7=o^)M`o_na\o^(Z"m.BrEr;cKPr;cKfr;cK\
+r<;hsR\d'jr43*G]=Y/(4;6`V$OetW]>;+m_8F13[-@U@~>
+hu=(ELlRXcSY`BfZF[I5\cf^TTRIpZ!X8i;'.e7=o^)M`o_na\o^(Z"m.BrEr;cKPr;cKfr;cK\
+r<;hsR\d'jr43*G]=Y/(4;6`V$OetW]>;+m_8F13[-@U@~>
+hu=(ELlRXcSY`BfZF[I5\cf^TTRIpZ!X8i;'.e7=o^)M`o_na\o^(Z"m.BrEr;cKPr;cKfr;cK\
+r<;hsR\d'jr43*G]=Y/(4;6`V$OetW]>;+m_8F13[-@U@~>
+iVs=JJqAf=R%:(MX0T%=m^`P7Y+')5qZ7'4',+3Lm.C8To_eXfo^_q\o`"1Wo_n^go`"dho_eXf
+o_/4co_na\qu$NepAG*crVcBcr;cKhr<0d(V5pp#])T2C['#sR6l$!g!Y#>IFeZL[]t:ti_o'*@
+lMlA~>
+iVs=JJqAf=R%:(MX0T%=m^`P7Y+')5qZ7'4',+3Lm.C8To_eXfo^_q\o`"1Wo_n^go`"dho_eXf
+o_/4co_na\qu$NepAG*crVcBcr;cKhr<0d(V5pp#])T2C['#sR6l$!g!Y#>IFeZL[]t:ti_o'*@
+lMlA~>
+iVs=JJqAf=R%:(MX0T%=m^`P7Y+')5qZ7'4',+3Lm.C8To_eXfo^_q\o`"1Wo_n^go`"dho_eXf
+o_/4co_na\qu$NepAG*crVcBcr;cKhr<0d(V5pp#])T2C['#sR6l$!g!Y#>IFeZL[]t:ti_o'*@
+lMlA~>
+mf*<>LAQQ1IYEB%JqA`;R$O23ri6./ZF[I4])TGFVNOXL!r`T07',bRr;cKfr<)]jrUfg^r:Kpc
+!;,OS"8)Qjo^D_Yo_\UeoEE"#V5q#3rOW$;"g4>K;B5u'!Y#?8S$p#B]sbVc]=kY)lMlA~>
+mf*<>LAQQ1IYEB%JqA`;R$O23ri6./ZF[I4])TGFVNOXL!r`T07',bRr;cKfr<)]jrUfg^r:Kpc
+!;,OS"8)Qjo^D_Yo_\UeoEE"#V5q#3rOW$;"g4>K;B5u'!Y#?8S$p#B]sbVc]=kY)lMlA~>
+mf*<>LAQQ1IYEB%JqA`;R$O23ri6./ZF[I4])TGFVNOXL!r`T07',bRr;cKfr<)]jrUfg^r:Kpc
+!;,OS"8)Qjo^D_Yo_\UeoEE"#V5q#3rOW$;"g4>K;B5u'!Y#?8S$p#B]sbVc]=kY)lMlA~>
+o)AlAJq\o7M#E;GMM6b9Knb;@OI2?)U8=okZEgn(\c]X?N@Xi,"U5AK1lUMer<)]jrUfLU!;-3f
+#5%lmo_na\o)/[_rVcB]r;cKdr<0d(SZB'q])K,BZDO1H@3#j>!Y%/DVRF+K[^roY]"PP(lMlA~>
+o)AlAJq\o7M#E;GMM6b9Knb;@OI2?)U8=okZEgn(\c]X?N@Xi,"U5AK1lUMer<)]jrUfLU!;-3f
+#5%lmo_na\o)/[_rVcB]r;cKdr<0d(SZB'q])K,BZDO1H@3#j>!Y%/DVRF+K[^roY]"PP(lMlA~>
+o)AlAJq\o7M#E;GMM6b9Knb;@OI2?)U8=okZEgn(\c]X?N@Xi,"U5AK1lUMer<)]jrUfLU!;-3f
+#5%lmo_na\o)/[_rVcB]r;cKdr<0d(SZB'q])K,BZDO1H@3#j>!Y%/DVRF+K[^roY]"PP(lMlA~>
+o`#DLJqf)AQCF>6R$sJ0OHBI$!g&e8rga1gX/iP6l+.#2[$u1Hq#^R)""\6+o`"dho^r(^o`"dh
+o_\Reo^)MVo^D_Yo_&.jo_nFSm,YUOSZB0+rjiEDY,eCiNHHf_#3Q$j,C>`^[/RK8[C3OC\c@HL
+s*t~>
+o`#DLJqf)AQCF>6R$sJ0OHBI$!g&e8rga1gX/iP6l+.#2[$u1Hq#^R)""\6+o`"dho^r(^o`"dh
+o_\Reo^)MVo^D_Yo_&.jo_nFSm,YUOSZB0+rjiEDY,eCiNHHf_#3Q$j,C>`^[/RK8[C3OC\c@HL
+s*t~>
+o`#DLJqf)AQCF>6R$sJ0OHBI$!g&e8rga1gX/iP6l+.#2[$u1Hq#^R)""\6+o`"dho^r(^o`"dh
+o_\Reo^)MVo^D_Yo_&.jo_nFSm,YUOSZB0+rjiEDY,eCiNHHf_#3Q$j,C>`^[/RK8[C3OC\c@HL
+s*t~>
+p&>/CJrPkXrgj"^rga4^R$O2,Sc5A_X8fI*[HY7*]tpk79_SSk"q4>0jRE*Jo^;YXo^i"]o^D_\
+o_na\r;@N*rTrV#eBG@lV5pZ.[C3KOX/i(fLjM]/#3Z*q(1``-Y-bXGZF71?\cK3mlMlA~>
+p&>/CJrPkXrgj"^rga4^R$O2,Sc5A_X8fI*[HY7*]tpk79_SSk"q4>0jRE*Jo^;YXo^i"]o^D_\
+o_na\r;@N*rTrV#eBG@lV5pZ.[C3KOX/i(fLjM]/#3Z*q(1``-Y-bXGZF71?\cK3mlMlA~>
+p&>/CJrPkXrgj"^rga4^R$O2,Sc5A_X8fI*[HY7*]tpk79_SSk"q4>0jRE*Jo^;YXo^i"]o^D_\
+o_na\r;@N*rTrV#eBG@lV5pZ.[C3KOX/i(fLjM]/#3Z*q(1``-Y-bXGZF71?\cK3mlMlA~>
+pAYAHKntnZSXlMQV>m7mSYD[LUAh"gX8fL*[HP1*]u.IVKe<!"!t7SnjSo)[o_na\rVZ`gq#(<e
+rVcBfr<)]jrUg!c#5%lmo_na\q>CNirVcBerUg*f!;,j\"8(s0bl5N`Yaq>jZMh0;ZE'guSW8;>
+1)BinmK3Cm&/Jr8SZAp#['m9G[Bd6P[=7E@J,~>
+pAYAHKntnZSXlMQV>m7mSYD[LUAh"gX8fL*[HP1*]u.IVKe<!"!t7SnjSo)[o_na\rVZ`gq#(<e
+rVcBfr<)]jrUg!c#5%lmo_na\q>CNirVcBerUg*f!;,j\"8(s0bl5N`Yaq>jZMh0;ZE'guSW8;>
+1)BinmK3Cm&/Jr8SZAp#['m9G[Bd6P[=7E@J,~>
+pAYAHKntnZSXlMQV>m7mSYD[LUAh"gX8fL*[HP1*]u.IVKe<!"!t7SnjSo)[o_na\rVZ`gq#(<e
+rVcBfr<)]jrUg!c#5%lmo_na\q>CNirVcBerUg*f!;,j\"8(s0bl5N`Yaq>jZMh0;ZE'guSW8;>
+1)BinmK3Cm&/Jr8SZAp#['m9G[Bd6P[=7E@J,~>
+pAY2GLm\14rh]Ros.ok!V5pGhri?"'!4Cq"s1nfERs5_G!WWH'!X&ogN84(&r;cKTr;cKPr;cKf
+r;cKer;cKfr;u?8bl,Hq[[itiZF.-LZEgO-SX,([G[)U+$k<L3!XT&4"t+2BQCXnUrNZX9ZF[HO
+X*a.3J,~>
+pAY2GLm\14rh]Ros.ok!V5pGhri?"'!4Cq"s1nfERs5_G!WWH'!X&ogN84(&r;cKTr;cKPr;cKf
+r;cKer;cKfr;u?8bl,Hq[[itiZF.-LZEgO-SX,([G[)U+$k<L3!XT&4"t+2BQCXnUrNZX9ZF[HO
+X*a.3J,~>
+pAY2GLm\14rh]Ros.ok!V5pGhri?"'!4Cq"s1nfERs5_G!WWH'!X&ogN84(&r;cKTr;cKPr;cKf
+r;cKer;cKfr;u?8bl,Hq[[itiZF.-LZEgO-SX,([G[)U+$k<L3!XT&4"t+2BQCXnUrNZX9ZF[HO
+X*a.3J,~>
+p\tPJJrZ.fSY`0gX8K:"X8]F'[Hb='[JdZ?]u.IZNE#QP"9pE)bk1N*!;,g[!;-!`"8)Qjo^D_Y
+o_\Rio_naTh###(X.?)fZEgmGY-P+)V3[-nHZEO>#4M]o"q)G;EeTgMU8t>tY-Ru5!kP[hlMlA~>
+p\tPJJrZ.fSY`0gX8K:"X8]F'[Hb='[JdZ?]u.IZNE#QP"9pE)bk1N*!;,g[!;-!`"8)Qjo^D_Y
+o_\Rio_naTh###(X.?)fZEgmGY-P+)V3[-nHZEO>#4M]o"q)G;EeTgMU8t>tY-Ru5!kP[hlMlA~>
+p\tPJJrZ.fSY`0gX8K:"X8]F'[Hb='[JdZ?]u.IZNE#QP"9pE)bk1N*!;,g[!;-!`"8)Qjo^D_Y
+o_\Rio_naTh###(X.?)fZEgmGY-P+)V3[-nHZEO>#4M]o"q)G;EeTgMU8t>tY-Ru5!kP[hlMlA~>
+p\tPJKp\="V5:5u[JI3-Ws,f:[CWcRk.1l-]"5Sk]<n5[*VBI:$l`HQm/$Y_o_na\r;?Wfrquih
+p&+m_r;?Wfq>C<cq#(3bqu$NeqY^NgjNPjG`!!97SY`CcZN$s4V4F0=Kn=YqA24A[!Ytt\7Vd7&
+Ng?61X0/b9[^*<K]"5;WM!G"j~>
+p\tPJKp\="V5:5u[JI3-Ws,f:[CWcRk.1l-]"5Sk]<n5[*VBI:$l`HQm/$Y_o_na\r;?Wfrquih
+p&+m_r;?Wfq>C<cq#(3bqu$NeqY^NgjNPjG`!!97SY`CcZN$s4V4F0=Kn=YqA24A[!Ytt\7Vd7&
+Ng?61X0/b9[^*<K]"5;WM!G"j~>
+p\tPJKp\="V5:5u[JI3-Ws,f:[CWcRk.1l-]"5Sk]<n5[*VBI:$l`HQm/$Y_o_na\r;?Wfrquih
+p&+m_r;?Wfq>C<cq#(3bqu$NeqY^NgjNPjG`!!97SY`CcZN$s4V4F0=Kn=YqA24A[!Ytt\7Vd7&
+Ng?61X0/b9[^*<K]"5;WM!G"j~>
+q#:\IJq]S_V5po-[Bfe>!4)R2!4)R2j155urON3F_n3(;@0ZB+"9oMrSF$4Q!;,s_!;-9h!;,s_
+!;,m]!;-'b!;,s_!VFn<`"oDEV5po-X0T%3X/2AXP)+g?HZsL3/c6)#$jHn;"pPPX4C!#RI=dHE
+SYDs]X0T%>]!f2X]!],?lMlA~>
+q#:\IJq]S_V5po-[Bfe>!4)R2!4)R2j155urON3F_n3(;@0ZB+"9oMrSF$4Q!;,s_!;-9h!;,s_
+!;,m]!;-'b!;,s_!VFn<`"oDEV5po-X0T%3X/2AXP)+g?HZsL3/c6)#$jHn;"pPPX4C!#RI=dHE
+SYDs]X0T%>]!f2X]!],?lMlA~>
+q#:\IJq]S_V5po-[Bfe>!4)R2!4)R2j155urON3F_n3(;@0ZB+"9oMrSF$4Q!;,s_!;-9h!;,s_
+!;,m]!;-'b!;,s_!VFn<`"oDEV5po-X0T%3X/2AXP)+g?HZsL3/c6)#$jHn;"pPPX4C!#RI=dHE
+SYDs]X0T%>]!f2X]!],?lMlA~>
+p\tDKNL6H:X8]F%[0X@P[C3KN]"5<0\dGjV[^s&d]<nGh/bB,E$j.bjh":C?!;-$a#5%lmo_na\
+pAG*crVcBcr<)]jrUfd]!;-3f!Ueb>`!ET<R\cjd[B$V4Wu%M$QB6oVJphuiDIHU94>JZN1,;6q
+A9.Zr&:K.dOIE#BX/iP6[^E]S]!_OK!2f&]J,~>
+p\tDKNL6H:X8]F%[0X@P[C3KN]"5<0\dGjV[^s&d]<nGh/bB,E$j.bjh":C?!;-$a#5%lmo_na\
+pAG*crVcBcr<)]jrUfd]!;-3f!Ueb>`!ET<R\cjd[B$V4Wu%M$QB6oVJphuiDIHU94>JZN1,;6q
+A9.Zr&:K.dOIE#BX/iP6[^E]S]!_OK!2f&]J,~>
+p\tDKNL6H:X8]F%[0X@P[C3KN]"5<0\dGjV[^s&d]<nGh/bB,E$j.bjh":C?!;-$a#5%lmo_na\
+pAG*crVcBcr<)]jrUfd]!;-3f!Ueb>`!ET<R\cjd[B$V4Wu%M$QB6oVJphuiDIHU94>JZN1,;6q
+A9.Zr&:K.dOIE#BX/iP6[^E]S]!_OK!2f&]J,~>
+p\tDKNgcN8X8]F)[JdZ:[G&1l[Jm`A]>;+dRr&Z,!X&oF:rN#)r;cKfr;cKLr;cKUr;cKhr;l97
+qSWH9SXTPYrj)O($)3uVOH,$KJqAFMHN83eEW^H)G^016%>':iP+/#CX0T%=[C3L@\c]@O[@$:[
+J,~>
+p\tDKNgcN8X8]F)[JdZ:[G&1l[Jm`A]>;+dRr&Z,!X&oF:rN#)r;cKfr;cKLr;cKUr;cKhr;l97
+qSWH9SXTPYrj)O($)3uVOH,$KJqAFMHN83eEW^H)G^016%>':iP+/#CX0T%=[C3L@\c]@O[@$:[
+J,~>
+p\tDKNgcN8X8]F)[JdZ:[G&1l[Jm`A]>;+dRr&Z,!X&oF:rN#)r;cKfr;cKLr;cKUr;cKhr;l97
+qSWH9SXTPYrj)O($)3uVOH,$KJqAFMHN83eEW^H)G^016%>':iP+/#CX0T%=[C3L@\c]@O[@$:[
+J,~>
+q#CAJ"H]"FX/l6*"1knO[Jm`>[CWrWoXY%1lad))rji9N_6g)!7.UH`$kjRJ[.NP[#5%lmo_na\
+n,37YrqurkrVcB`r;l97qSWZ?R[TeDX/iP3ri6C&U7IU3NeiLFKnB;Pqg89i%>':iNL$$(X/iP3
+[C3LA\cB/:\cK49li2J~>
+q#CAJ"H]"FX/l6*"1knO[Jm`>[CWrWoXY%1lad))rji9N_6g)!7.UH`$kjRJ[.NP[#5%lmo_na\
+n,37YrqurkrVcB`r;l97qSWZ?R[TeDX/iP3ri6C&U7IU3NeiLFKnB;Pqg89i%>':iNL$$(X/iP3
+[C3LA\cB/:\cK49li2J~>
+q#CAJ"H]"FX/l6*"1knO[Jm`>[CWrWoXY%1lad))rji9N_6g)!7.UH`$kjRJ[.NP[#5%lmo_na\
+n,37YrqurkrVcB`r;l97qSWZ?R[TeDX/iP3ri6C&U7IU3NeiLFKnB;Pqg89i%>':iNL$$(X/iP3
+[C3LA\cB/:\cK49li2J~>
+q#:PFL6.mqV5sU'!P5]9\cB.n\cB/;\d,[W_7R(DGS]lP"U5AD1o0dBr;cKfr<)]jrUfOV!;,aY
+!;-0e!;-0e!qbj/qSWQ4R%9eKX8T@(X8f"!SX,S'Nr=e4Kc,;jJq\f1KntG=OH>ctU8=orZF.*O
+[CWrWrON->]!\i5m/MS~>
+q#:PFL6.mqV5sU'!P5]9\cB.n\cB/;\d,[W_7R(DGS]lP"U5AD1o0dBr;cKfr<)]jrUfOV!;,aY
+!;-0e!;-0e!qbj/qSWQ4R%9eKX8T@(X8f"!SX,S'Nr=e4Kc,;jJq\f1KntG=OH>ctU8=orZF.*O
+[CWrWrON->]!\i5m/MS~>
+q#:PFL6.mqV5sU'!P5]9\cB.n\cB/;\d,[W_7R(DGS]lP"U5AD1o0dBr;cKfr<)]jrUfOV!;,aY
+!;-0e!;-0e!qbj/qSWQ4R%9eKX8T@(X8f"!SX,S'Nr=e4Kc,;jJq\f1KntG=OH>ctU8=orZF.*O
+[CWrWrON->]!\i5m/MS~>
+q#CAG"cf%JX/iQ*[Ih$1[J7<5[HkC)[C6(G"hhpfVN":=!WrifPjJ#?#5%lmo_na\oDJ[]rr!&n
+rVcBerUfXY!;-9h!p%kTr58rUUR7F>V5po&ZEjJ1&uD.iQBmVoNfK*ZLkpb@LkUP=rf.5FQBn#0
+U8=pi[K!f<[J7?4[/m=omJh\~>
+q#CAG"cf%JX/iQ*[Ih$1[J7<5[HkC)[C6(G"hhpfVN":=!WrifPjJ#?#5%lmo_na\oDJ[]rr!&n
+rVcBerUfXY!;-9h!p%kTr58rUUR7F>V5po&ZEjJ1&uD.iQBmVoNfK*ZLkpb@LkUP=rf.5FQBn#0
+U8=pi[K!f<[J7?4[/m=omJh\~>
+q#CAG"cf%JX/iQ*[Ih$1[J7<5[HkC)[C6(G"hhpfVN":=!WrifPjJ#?#5%lmo_na\oDJ[]rr!&n
+rVcBerUfXY!;-9h!p%kTr58rUUR7F>V5po&ZEjJ1&uD.iQBmVoNfK*ZLkpb@LkUP=rf.5FQBn#0
+U8=pi[K!f<[J7?4[/m=omJh\~>
+q#:\JJrQ7jX/iP3[C+Go$FRIR]tM7u[$uXln,`\*/>Vq:r;cK[r<DomrUg'eo_JFco_A@bo_&._
+o_eXgjOF%E&>P8QR\d'cZE(:3ZDFUmSXTPD"-S\)P5C7?OH0=%rg*STs/Q1+[IUm3ZF[?<R-t!)~>
+q#:\JJrQ7jX/iP3[C+Go$FRIR]tM7u[$uXln,`\*/>Vq:r;cK[r<DomrUg'eo_JFco_A@bo_&._
+o_eXgjOF%E&>P8QR\d'cZE(:3ZDFUmSXTPD"-S\)P5C7?OH0=%rg*STs/Q1+[IUm3ZF[?<R-t!)~>
+q#:\JJrQ7jX/iP3[C+Go$FRIR]tM7u[$uXln,`\*/>Vq:r;cK[r<DomrUg'eo_JFco_A@bo_&._
+o_eXgjOF%E&>P8QR\d'cZE(:3ZDFUmSXTPD"-S\)P5C7?OH0=%rg*STs/Q1+[IUm3ZF[?<R-t!)~>
+p\tSLNL6H:X/iP6]!]hp#/.po[$"i+n,`\*7(r6;r<)]jrUfsb"8(s0bl#Ba]q1=IR[pL[riuj2
+ZE(%&U7IjDRf8TYP*V8sP)tukOStILS"caUX0T&&\d#IJ]!\iHT^Mi1~>
+p\tSLNL6H:X/iP6]!]hp#/.po[$"i+n,`\*7(r6;r<)]jrUfsb"8(s0bl#Ba]q1=IR[pL[riuj2
+ZE(%&U7IjDRf8TYP*V8sP)tukOStILS"caUX0T&&\d#IJ]!\iHT^Mi1~>
+p\tSLNL6H:X/iP6]!]hp#/.po[$"i+n,`\*7(r6;r<)]jrUfsb"8(s0bl#Ba]q1=IR[pL[riuj2
+ZE(%&U7IjDRf8TYP*V8sP)tukOStILS"caUX0T&&\d#IJ]!\iHT^Mi1~>
+p\tSSNL$-3X/iY6]!^"u$amRR]"5>`_mZD$/arfF"rgRlrUg*f"8)Qjo_n^jo_na\pAG*crVcBc
+r<)]jrUg$d"8)Qjo_8:fo_naLgs#Z6&>"f?QCXkQX0Se3ZE(%&V5!s[s-`tSReW0KS,Sr^U8t,k
+ZF087!O]N<[/m=tn,In~>
+p\tSSNL$-3X/iY6]!^"u$amRR]"5>`_mZD$/arfF"rgRlrUg*f"8)Qjo_n^jo_na\pAG*crVcBc
+r<)]jrUg$d"8)Qjo_8:fo_naLgs#Z6&>"f?QCXkQX0Se3ZE(%&V5!s[s-`tSReW0KS,Sr^U8t,k
+ZF087!O]N<[/m=tn,In~>
+p\tSSNL$-3X/iY6]!^"u$amRR]"5>`_mZD$/arfF"rgRlrUg*f"8)Qjo_n^jo_na\pAG*crVcBc
+r<)]jrUg$d"8)Qjo_8:fo_naLgs#Z6&>"f?QCXkQX0Se3ZE(%&V5!s[s-`tSReW0KS,Sr^U8t,k
+ZF087!O]N<[/m=tn,In~>
+p\tPKLmXa-X/iP6ZHTla_nj0lRs5_<!WrWPN9p?<!;-*c!;-3f!;,aY!;,^X!pn^dr595]Q]6uf
+SXlg^ZEgO:ZE(%&V5!jX"IbXBSX08Erga7fV5:5nZEj#3#I_4L[C*<;P48L%~>
+p\tPKLmXa-X/iP6ZHTla_nj0lRs5_<!WrWPN9p?<!;-*c!;-3f!;,aY!;,^X!pn^dr595]Q]6uf
+SXlg^ZEgO:ZE(%&V5!jX"IbXBSX08Erga7fV5:5nZEj#3#I_4L[C*<;P48L%~>
+p\tPKLmXa-X/iP6ZHTla_nj0lRs5_<!WrWPN9p?<!;-*c!;-3f!;,aY!;,^X!pn^dr595]Q]6uf
+SXlg^ZEgO:ZE(%&V5!jX"IbXBSX08Erga7fV5:5nZEj#3#I_4L[C*<;P48L%~>
+p](8I#b%<\V5pZ.ZF.rg#JIac]:bHh#4MZt)dLVcrUfUX!;-!`"8)Qjo^;Y[o_na\rVZfajOF(F
+#a^7$P+A/?X/l0(s/Q="X/2Y`U@t,ZV4sgcX8fL*[IUm7[CWrT[C*<;NUd%!~>
+p](8I#b%<\V5pZ.ZF.rg#JIac]:bHh#4MZt)dLVcrUfUX!;-!`"8)Qjo^;Y[o_na\rVZfajOF(F
+#a^7$P+A/?X/l0(s/Q="X/2Y`U@t,ZV4sgcX8fL*[IUm7[CWrT[C*<;NUd%!~>
+p](8I#b%<\V5pZ.ZF.rg#JIac]:bHh#4MZt)dLVcrUfUX!;-!`"8)Qjo^;Y[o_na\rVZfajOF(F
+#a^7$P+A/?X/l0(s/Q="X/2Y`U@t,ZV4sgcX8fL*[IUm7[CWrT[C*<;NUd%!~>
+p\tPOKp\F%V5po-[Ec>i[^s&`_n3:HMC7lp!sU$8o_8:do_na\pAG*crVcB`r;cK_r;cKar<)]Q
+eBIm0$GDd\Kohb"V5po&r3H=&qPF(`rMBLos0D[4n@JY-s1/?@ZEg$Jo)F4~>
+p\tPOKp\F%V5po-[Ec>i[^s&`_n3:HMC7lp!sU$8o_8:do_na\pAG*crVcB`r;cK_r;cKar<)]Q
+eBIm0$GDd\Kohb"V5po&r3H=&qPF(`rMBLos0D[4n@JY-s1/?@ZEg$Jo)F4~>
+p\tPOKp\F%V5po-[Ec>i[^s&`_n3:HMC7lp!sU$8o_8:do_na\pAG*crVcB`r;cK_r;cKar<)]Q
+eBIm0$GDd\Kohb"V5po&r3H=&qPF(`rMBLos0D[4n@JY-s1/?@ZEg$Jo)F4~>
+p](8I#*>CHV5pZ&rjC%_#e%=X_n2e8FVF6G!Xs_RrquihgAM6JrVcBerUfj_"n_ccm+fh_`"/2d
+KohUkV5pZ&ZF.!D[Bfb3r1sIhV5!sc!NW'pX8fL*[I1U+ZMh04X.+k8s*t~>
+p](8I#*>CHV5pZ&rjC%_#e%=X_n2e8FVF6G!Xs_RrquihgAM6JrVcBerUfj_"n_ccm+fh_`"/2d
+KohUkV5pZ&ZF.!D[Bfb3r1sIhV5!sc!NW'pX8fL*[I1U+ZMh04X.+k8s*t~>
+p](8I#*>CHV5pZ&rjC%_#e%=X_n2e8FVF6G!Xs_RrquihgAM6JrVcBerUfj_"n_ccm+fh_`"/2d
+KohUkV5pZ&ZF.!D[Bfb3r1sIhV5!sc!NW'pX8fL*[I1U+ZMh04X.+k8s*t~>
+p\tSPKp\="V5:K'[C+Am!4Dd:#/.jh[&&pZn,`Y"AG#ct!;-*c#5%lmo_na\p&+m_r;?Wfm/7%Y
+m+g+h`!X2<KnYPUSY`BfZMq93Z3%G>[J?j*V5pGhqlB\$!OfE%\coLI[B$-eo`'F~>
+p\tSPKp\="V5:K'[C+Am!4Dd:#/.jh[&&pZn,`Y"AG#ct!;-*c#5%lmo_na\p&+m_r;?Wfm/7%Y
+m+g+h`!X2<KnYPUSY`BfZMq93Z3%G>[J?j*V5pGhqlB\$!OfE%\coLI[B$-eo`'F~>
+p\tSPKp\="V5:K'[C+Am!4Dd:#/.jh[&&pZn,`Y"AG#ct!;-*c#5%lmo_na\p&+m_r;?Wfm/7%Y
+m+g+h`!X2<KnYPUSY`BfZMq93Z3%G>[J?j*V5pGhqlB\$!OfE%\coLI[B$-eo`'F~>
+p\tYRKohaoV5:5u[C*TRd(0Rl]!f2`_niLFKcT[b!Xr)qlMU_Tr;?Wflhq%[rVcBerUg'e!q,.!
+rko8ZA:B,aOIMf;V6[/0ZMq67ZF.*GZLb-qZN%<5]!^q:#dq+PZF70HVOR8YJ,~>
+p\tYRKohaoV5:5u[C*TRd(0Rl]!f2`_niLFKcT[b!Xr)qlMU_Tr;?Wflhq%[rVcBerUg'e!q,.!
+rko8ZA:B,aOIMf;V6[/0ZMq67ZF.*GZLb-qZN%<5]!^q:#dq+PZF70HVOR8YJ,~>
+p\tYRKohaoV5:5u[C*TRd(0Rl]!f2`_niLFKcT[b!Xr)qlMU_Tr;?Wflhq%[rVcBerUg'e!q,.!
+rko8ZA:B,aOIMf;V6[/0ZMq67ZF.*GZLb-qZN%<5]!^q:#dq+PZF70HVOR8YJ,~>
+pAYGQOI2T0V5po0[E?&b]>;=qVN>N^!X0!/o_na\r;?`irVcB[r;cKhr;cKfr;cKfr<)]jrUfXY
+"8)$BeGdApPU'siLle'rV5pZ&ZMM!-ZM1C$ZF-b4ZMq8s\d,OP[C3ZSX-WJZJ,~>
+pAYGQOI2T0V5po0[E?&b]>;=qVN>N^!X0!/o_na\r;?`irVcB[r;cKhr;cKfr;cKfr<)]jrUfXY
+"8)$BeGdApPU'siLle'rV5pZ&ZMM!-ZM1C$ZF-b4ZMq8s\d,OP[C3ZSX-WJZJ,~>
+pAYGQOI2T0V5po0[E?&b]>;=qVN>N^!X0!/o_na\r;?`irVcB[r;cKhr;cKfr;cKfr<)]jrUfXY
+"8)$BeGdApPU'siLle'rV5pZ&ZMM!-ZM1C$ZF-b4ZMq8s\d,OP[C3ZSX-WJZJ,~>
+pAYMSNgQB.V5po0[CWcl\cB/;\d#j[_6fbm2t@"O$ruZmr;cKcr<DomrUg'eo^D_Yo_JFfo_na\
+p&,]njODDe]fZsAH\IKGSY`BfZF.*O]!]-J[/mS@p9G"4ZEgmG]!\rW[HkF'[0=.M[BcNkq#>j~>
+pAYMSNgQB.V5po0[CWcl\cB/;\d#j[_6fbm2t@"O$ruZmr;cKcr<DomrUg'eo^D_Yo_JFfo_na\
+p&,]njODDe]fZsAH\IKGSY`BfZF.*O]!]-J[/mS@p9G"4ZEgmG]!\rW[HkF'[0=.M[BcNkq#>j~>
+pAYMSNgQB.V5po0[CWcl\cB/;\d#j[_6fbm2t@"O$ruZmr;cKcr<DomrUg'eo^D_Yo_JFfo_na\
+p&,]njODDe]fZsAH\IKGSY`BfZF.*O]!]-J[/mS@p9G"4ZEgmG]!\rW[HkF'[0=.M[BcNkq#>j~>
+pAYGNNfoj*X/iP3[E5ub[_9SjY*OMWo)\q$KAc\.o^)MVo_SM'o^:Ma`5Gmo,@PqQOID`:V5po-
+]!\rW[Jmc9[J7'*[0!qI[H5""[K!f>[B#Vhs*t~>
+pAYGNNfoj*X/iP3[E5ub[_9SjY*OMWo)\q$KAc\.o^)MVo_SM'o^:Ma`5Gmo,@PqQOID`:V5po-
+]!\rW[Jmc9[J7'*[0!qI[H5""[K!f>[B#Vhs*t~>
+pAYGNNfoj*X/iP3[E5ub[_9SjY*OMWo)\q$KAc\.o^)MVo_SM'o^:Ma`5Gmo,@PqQOID`:V5po-
+]!\rW[Jmc9[J7'*[0!qI[H5""[K!f>[B#Vhs*t~>
+pAYALNfoj%V5pp$[E6#[]*6$_VOD3/o`>1!/CaOp"8)Qjo_/4co_na\q#(3br;?WfpAG!`rqurk
+rVcBfr>YCabdM$q%Ph^GLmF?tV5pZ&ZF.9O]!],W]!h:>#e%=P]!\uX]!^b5!4Dg;!4Dg;!k#(`
+qu;0~>
+pAYALNfoj%V5pp$[E6#[]*6$_VOD3/o`>1!/CaOp"8)Qjo_/4co_na\q#(3br;?WfpAG!`rqurk
+rVcBfr>YCabdM$q%Ph^GLmF?tV5pZ&ZF.9O]!],W]!h:>#e%=P]!\uX]!^b5!4Dg;!4Dg;!k#(`
+qu;0~>
+pAYALNfoj%V5pp$[E6#[]*6$_VOD3/o`>1!/CaOp"8)Qjo_/4co_na\q#(3br;?WfpAG!`rqurk
+rVcBfr>YCabdM$q%Ph^GLmF?tV5pZ&ZF.9O]!],W]!h:>#e%=P]!\uX]!^b5!4Dg;!4Dg;!k#(`
+qu;0~>
+pAYMTLmXR#V5pZ&]"5<!\c]@O]!_II!OfT=_ZR9?O@8aC"=1)@rUfg^!;-3f!;-0e"8)Qjo_JFc
+o_eXio_na\o)0Bsmc;&l'*]+%A:'#lSXlUXX0T%=[CWd?\c]@O]!_OK!4COl#.;%R[^)WVrVqB~>
+pAYMTLmXR#V5pZ&]"5<!\c]@O]!_II!OfT=_ZR9?O@8aC"=1)@rUfg^!;-3f!;-0e"8)Qjo_JFc
+o_eXio_na\o)0Bsmc;&l'*]+%A:'#lSXlUXX0T%=[CWd?\c]@O]!_OK!4COl#.;%R[^)WVrVqB~>
+pAYMTLmXR#V5pZ&]"5<!\c]@O]!_II!OfT=_ZR9?O@8aC"=1)@rUfg^!;-3f!;-0e"8)Qjo_JFc
+o_eXio_na\o)0Bsmc;&l'*]+%A:'#lSXlUXX0T%=[CWd?\c]@O]!_OK!4COl#.;%R[^)WVrVqB~>
+pAYGQLm"3tV5po0[EZ8_[JdZB[_'An]<7HE*VTU:/>Vq:r;cK`r;cK\r;cKZr;cK^r>>1f]j)K\
+!Y[=tH\IQPSY`BfZF.-K[^rle\d5^T]!eZ6KE(t%~>
+pAYGQLm"3tV5po0[EZ8_[JdZB[_'An]<7HE*VTU:/>Vq:r;cK`r;cK\r;cKZr;cK^r>>1f]j)K\
+!Y[=tH\IQPSY`BfZF.-K[^rle\d5^T]!eZ6KE(t%~>
+pAYGQLm"3tV5po0[EZ8_[JdZB[_'An]<7HE*VTU:/>Vq:r;cK`r;cK\r;cKZr;cK^r>>1f]j)K\
+!Y[=tH\IQPSY`BfZF.-K[^rle\d5^T]!eZ6KE(t%~>
+pAYGQNfo]sV5:K'[F2Vd[Iq*8_8a*[Lg1/\!WsB``:Wm("8)Qjo_/4`o_&._o]?#eoY!X$$j$J?
+11Y`cQBn)9X/iP6[CWc_\coLMZDIU$J,~>
+pAYGQNfo]sV5:K'[F2Vd[Iq*8_8a*[Lg1/\!WsB``:Wm("8)Qjo_/4`o_&._o]?#eoY!X$$j$J?
+11Y`cQBn)9X/iP6[CWc_\coLMZDIU$J,~>
+pAYGQNfo]sV5:K'[F2Vd[Iq*8_8a*[Lg1/\!WsB``:Wm("8)Qjo_/4`o_&._o]?#eoY!X$$j$J?
+11Y`cQBn)9X/iP6[CWc_\coLMZDIU$J,~>
+pAYMXNfod#V5:K*[CWcg])K,J]>M_%Rt<Bs"q1nR7#]@gr;cKPr;cK`r<)]jrUfpa#5%lmo_na\
+r;?]849k`c&/.!5FbQ-NSY`BfZF.*O]!]Dd"LYP9UAo`~>
+pAYMXNfod#V5:K*[CWcg])K,J]>M_%Rt<Bs"q1nR7#]@gr;cKPr;cK`r<)]jrUfpa#5%lmo_na\
+r;?]849k`c&/.!5FbQ-NSY`BfZF.*O]!]Dd"LYP9UAo`~>
+pAYMXNfod#V5:K*[CWcg])K,J]>M_%Rt<Bs"q1nR7#]@gr;cKPr;cK`r<)]jrUfpa#5%lmo_na\
+r;?]849k`c&/.!5FbQ-NSY`BfZF.*O]!]Dd"LYP9UAo`~>
+pAYGTNfoj%SZAg![E?&\[JdZF]>;=qXHn)_7!t64jS8ZRo_JFio_na\rVcBfr<)]jrUg$d!;-3f
+!;-*c"8)Qjo_A@go_na\X>KeU%NRiGG_M6FU8=orZF.-K^q'ZVZEg5)J,~>
+pAYGTNfoj%SZAg![E?&\[JdZF]>;=qXHn)_7!t64jS8ZRo_JFio_na\rVcBfr<)]jrUg$d!;-3f
+!;-*c"8)Qjo_A@go_na\X>KeU%NRiGG_M6FU8=orZF.-K^q'ZVZEg5)J,~>
+pAYGTNfoj%SZAg![E?&\[JdZF]>;=qXHn)_7!t64jS8ZRo_JFio_na\rVcBfr<)]jrUg$d!;-3f
+!;-*c"8)Qjo_A@go_na\X>KeU%NRiGG_M6FU8=orZF.-K^q'ZVZEg5)J,~>
+pAYPTNfoj%SZAg!]!],Wbdn7k]!f2Y]>;=qU5a;?m/-_]oYUP.m$o?u!YP\X6tCFoQBn8AX/iP3
+[CWcW[Df]][CWcOX/5iH~>
+pAYPTNfoj%SZAg!]!],Wbdn7k]!f2Y]>;=qU5a;?m/-_]oYUP.m$o?u!YP\X6tCFoQBn8AX/iP3
+[CWcW[Df]][CWcOX/5iH~>
+pAYPTNfoj%SZAg!]!],Wbdn7k]!f2Y]>;=qU5a;?m/-_]oYUP.m$o?u!YP\X6tCFoQBn8AX/iP3
+[CWcW[Df]][CWcOX/5iH~>
+pAYMVNfo^!V5:K*[CWdF\cB.^])K,C]>;+^RtY:Hrquihp\b3drVcBQr;cKfr<)]jrUfg^!;-6g
+"8()j)u9UH"sZTQG_M6MSY`BmZF.9O`OZ&WrON->ZE'`"J,~>
+pAYMVNfo^!V5:K*[CWdF\cB.^])K,C]>;+^RtY:Hrquihp\b3drVcBQr;cKfr<)]jrUfg^!;-6g
+"8()j)u9UH"sZTQG_M6MSY`BmZF.9O`OZ&WrON->ZE'`"J,~>
+pAYMVNfo^!V5:K*[CWdF\cB.^])K,C]>;+^RtY:Hrquihp\b3drVcBQr;cKfr<)]jrUfg^!;-6g
+"8()j)u9UH"sZTQG_M6MSY`BmZF.9O`OZ&WrON->ZE'`"J,~>
+pAYPWNfoj%V5pZ.[CWcRrON!:r42m9f"(pj]"7mLs18HAVNu[3h"gmKo_A@ko_na\rVcBerUg!c
+!;-*c!;-*c#5%lmo_na\q>CB5:^m.$%gFCNA9`fkSYDs]X0T%B[E#id[CWrW]!\rOX/hfkJ,~>
+pAYPWNfoj%V5pZ.[CWcRrON!:r42m9f"(pj]"7mLs18HAVNu[3h"gmKo_A@ko_na\rVcBerUg!c
+!;-*c!;-*c#5%lmo_na\q>CB5:^m.$%gFCNA9`fkSYDs]X0T%B[E#id[CWrW]!\rOX/hfkJ,~>
+pAYPWNfoj%V5pZ.[CWcRrON!:r42m9f"(pj]"7mLs18HAVNu[3h"gmKo_A@ko_na\rVcBerUg!c
+!;-*c!;-*c#5%lmo_na\q>CB5:^m.$%gFCNA9`fkSYDs]X0T%B[E#id[CWrW]!\rOX/hfkJ,~>
+p\t_TNfK9gSXlge[CWcW]!_4B!4CRm!4Da9!OfB7]*5:,Na[D/rVZ`grquihn,3@\rVcBdr;cKS
+r<DomrUdHR#5A63%P:@iFbPpHSY`BmZF.*O]!]Si$+7@P]!AB;V4IX:~>
+p\t_TNfK9gSXlge[CWcW]!_4B!4CRm!4Da9!OfB7]*5:,Na[D/rVZ`grquihn,3@\rVcBdr;cKS
+r<DomrUdHR#5A63%P:@iFbPpHSY`BmZF.*O]!]Si$+7@P]!AB;V4IX:~>
+p\t_TNfK9gSXlge[CWcW]!_4B!4CRm!4Da9!OfB7]*5:,Na[D/rVZ`grquihn,3@\rVcBdr;cKS
+r<DomrUdHR#5A63%P:@iFbPpHSY`BmZF.*O]!]Si$+7@P]!AB;V4IX:~>
+p\tYRLlRX]SY`BpZF[HOrji*;oXY%1gq!Zs]!],\[f3lE[&0CJ<5&8/o_SLgo_na\l2:VSr;?Wf
+n,3=[PT0;t#S&UfA9ETfSYc=d!j]5Aa1;;Z])K,:ZMp[$R/_[~>
+p\tYRLlRX]SY`BpZF[HOrji*;oXY%1gq!Zs]!],\[f3lE[&0CJ<5&8/o_SLgo_na\l2:VSr;?Wf
+n,3=[PT0;t#S&UfA9ETfSYc=d!j]5Aa1;;Z])K,:ZMp[$R/_[~>
+p\tYRLlRX]SY`BpZF[HOrji*;oXY%1gq!Zs]!],\[f3lE[&0CJ<5&8/o_SLgo_na\l2:VSr;?Wf
+n,3=[PT0;t#S&UfA9ETfSYc=d!j]5Aa1;;Z])K,:ZMp[$R/_[~>
+p\t_OLlRXeSY`Bm[C*TW[C+)es0_p7rjr?@TU9k&h"(CDo_eXfo_A@bo_JFco_eXio_na\r;?Wf
+r;?]P>R^9,&Jd,qA9EKcQD14V[Bd6K]"5;k\coLQ[B$U6rhT[bs8RT~>
+p\t_OLlRXeSY`Bm[C*TW[C+)es0_p7rjr?@TU9k&h"(CDo_eXfo_A@bo_JFco_eXio_na\r;?Wf
+r;?]P>R^9,&Jd,qA9EKcQD14V[Bd6K]"5;k\coLQ[B$U6rhT[bs8RT~>
+p\t_OLlRXeSY`Bm[C*TW[C+)es0_p7rjr?@TU9k&h"(CDo_eXfo_A@bo_JFco_eXio_na\r;?Wf
+r;?]P>R^9,&Jd,qA9EKcQD14V[Bd6K]"5;k\coLQ[B$U6rhT[bs8RT~>
+p\tMNLkq([SY`BmrjBn[&@K*\[CWcW[^<ZY[&0CJ=*X65!;-'b!;-3f!;,dZ!;-3f"SDZbUb)*=%
+NRK+@<-s]QDLX_ZEgmGagqkf]"5;TZE'guSXl/Is*t~>
+p\tMNLkq([SY`BmrjBn[&@K*\[CWcW[^<ZY[&0CJ=*X65!;-'b!;-3f!;,dZ!;-3f"SDZbUb)*=%
+NRK+@<-s]QDLX_ZEgmGagqkf]"5;TZE'guSXl/Is*t~>
+p\tMNLkq([SY`BmrjBn[&@K*\[CWcW[^<ZY[&0CJ=*X65!;-'b!;-3f!;,dZ!;-3f"SDZbUb)*=%
+NRK+@<-s]QDLX_ZEgmGagqkf]"5;TZE'guSXl/Is*t~>
+q#CAG&;Z@,R[p:U[C*TW[CWcW]!]\ls0_p7rjr`ETTXOfV#BrarUg'eo_na\q#(<erVcB^r;cKV
+r;t28%.XH3(-,8tEd`q<U8t?#ZF70P]!]_ms0_m4#-4SsSXQ")rr7K~>
+q#CAG&;Z@,R[p:U[C*TW[CWcW]!]\ls0_p7rjr`ETTXOfV#BrarUg'eo_na\q#(<erVcB^r;cKV
+r;t28%.XH3(-,8tEd`q<U8t?#ZF70P]!]_ms0_m4#-4SsSXQ")rr7K~>
+q#CAG&;Z@,R[p:U[C*TW[CWcW]!]\ls0_p7rjr`ETTXOfV#BrarUg'eo_na\q#(<erVcB^r;cKV
+r;t28%.XH3(-,8tEd`q<U8t?#ZF70P]!]_ms0_m4#-4SsSXQ")rr7K~>
+q#:eTLkq(SSY`Bm[C*TW[E5u[[Jd]:[L'RQ]<7unKk*Tik5>;PpAG*crVcBar<;ilrR>p.n,`k9
+4B,a0JrQ4nri?(,!P5\_\dZ!X[CWZLV59`ORZ`:$s*t~>
+q#:eTLkq(SSY`Bm[C*TW[E5u[[Jd]:[L'RQ]<7unKk*Tik5>;PpAG*crVcBar<;ilrR>p.n,`k9
+4B,a0JrQ4nri?(,!P5\_\dZ!X[CWZLV59`ORZ`:$s*t~>
+q#:eTLkq(SSY`Bm[C*TW[E5u[[Jd]:[L'RQ]<7unKk*Tik5>;PpAG*crVcBar<;ilrR>p.n,`k9
+4B,a0JrQ4nri?(,!P5\_\dZ!X[CWZLV59`ORZ`:$s*t~>
+q#:_MLkq(WSZB'(]"5;l\cB/:\du3[[CWNJ]<n`8QA'HT:Xo.;"8)Qjo_A@bo_eXfo_eXfo_JFf
+o_na\rquoJHmJ+]&L0S>>]PFVS"csh[Bd3J]"5;r\dc'Y]!\rOZDFCgR[TCnr;V9~>
+q#:_MLkq(WSZB'(]"5;l\cB/:\du3[[CWNJ]<n`8QA'HT:Xo.;"8)Qjo_A@bo_eXfo_eXfo_JFf
+o_na\rquoJHmJ+]&L0S>>]PFVS"csh[Bd3J]"5;r\dc'Y]!\rOZDFCgR[TCnr;V9~>
+q#:_MLkq(WSZB'(]"5;l\cB/:\du3[[CWNJ]<n`8QA'HT:Xo.;"8)Qjo_A@bo_eXfo_eXfo_JFf
+o_na\rquoJHmJ+]&L0S>>]PFVS"csh[Bd3J]"5;r\dc'Y]!\rOZDFCgR[TCnr;V9~>
+q>U_KLkq(SSYE0jrj;j>[CWcc\dl-VZECXEY,7M=HXn^)h"1IEo\o`Oo]25f#4;O$"sZE5@;^[V
+QD14VX8]NO])B#BZE'gmR[TV"Hi*hn~>
+q>U_KLkq(SSYE0jrj;j>[CWcc\dl-VZECXEY,7M=HXn^)h"1IEo\o`Oo]25f#4;O$"sZE5@;^[V
+QD14VX8]NO])B#BZE'gmR[TV"Hi*hn~>
+q>U_KLkq(SSYE0jrj;j>[CWcc\dl-VZECXEY,7M=HXn^)h"1IEo\o`Oo]25f#4;O$"sZE5@;^[V
+QD14VX8]NO])B#BZE'gmR[TV"Hi*hn~>
+q>UhNJr#GQSZB0+]"5;l\fA,h]!],\[CWrWZEC@;XJMDJIV;:g7)\`irVcB]r;cK`r;cKfr<)]j
+rUg!c"73*O%."$-%OXY>>]PFVSYE0cZF.*O]!^&!!O]N:[0X(=V59`RR$*1!s*t~>
+q>UhNJr#GQSZB0+]"5;l\fA,h]!],\[CWrWZEC@;XJMDJIV;:g7)\`irVcB]r;cK`r;cKfr<)]j
+rUg!c"73*O%."$-%OXY>>]PFVSYE0cZF.*O]!^&!!O]N:[0X(=V59`RR$*1!s*t~>
+q>UhNJr#GQSZB0+]"5;l\fA,h]!],\[CWrWZEC@;XJMDJIV;:g7)\`irVcB]r;cK`r;cKfr<)]j
+rUg!c"73*O%."$-%OXY>>]PFVSYE0cZF.*O]!^&!!O]N:[0X(=V59`RR$*1!s*t~>
+qYq(QJr#SQSY`Bu[C*TW[CWcc\e;E^[Bcs9Y,8%bOF:tN1(u3tm/?kbo_na\r;?Wfqu$Neq>C<c
+q>CNirUem84:LKV#nnmV;IO^"NL$.7WrfT7[F)Sa[0a.>V59`RR$*8Pq#>j~>
+qYq(QJr#SQSY`Bu[C*TW[CWcc\e;E^[Bcs9Y,8%bOF:tN1(u3tm/?kbo_na\r;?Wfqu$Neq>C<c
+q>CNirUem84:LKV#nnmV;IO^"NL$.7WrfT7[F)Sa[0a.>V59`RR$*8Pq#>j~>
+qYq(QJr#SQSY`Bu[C*TW[CWcc\e;E^[Bcs9Y,8%bOF:tN1(u3tm/?kbo_na\r;?Wfqu$Neq>C<c
+q>CNirUem84:LKV#nnmV;IO^"NL$.7WrfT7[F)Sa[0a.>V59`RR$*8Pq#>j~>
+qYptULlRLaSY`Bp[^rlSrON!:b.7S\rji`MZE(./VPTrOKlUEf*=N?=SF#hF!;-3f!;,p^#5$uX
+CEs;mklM5./O<-?Fb5XCU8=piZ2qPEf"(mi])K)EZE(%&V4F'DP)atas*t~>
+qYptULlRLaSY`Bp[^rlSrON!:b.7S\rji`MZE(./VPTrOKlUEf*=N?=SF#hF!;-3f!;,p^#5$uX
+CEs;mklM5./O<-?Fb5XCU8=piZ2qPEf"(mi])K)EZE(%&V4F'DP)atas*t~>
+qYptULlRLaSY`Bp[^rlSrON!:b.7S\rji`MZE(./VPTrOKlUEf*=N?=SF#hF!;-3f!;,p^#5$uX
+CEs;mklM5./O<-?Fb5XCU8=piZ2qPEf"(mi])K)EZE(%&V4F'DP)atas*t~>
+qYq%WLlRLaV5pZ&[C3ZS]!_LJ!4C.a!4D^8(:CTOX/;_fSW\\NA5YT,%K[%qN6LY\rquiho)/R\
+rV[)qrUfa;`10XL$jPhq#o59^;Ik$+Ng?F=X8fR.]!^G,!4D^8#dq7O[Bcj6V5=0^".GC5L%PCq~>
+qYq%WLlRLaV5pZ&[C3ZS]!_LJ!4C.a!4D^8(:CTOX/;_fSW\\NA5YT,%K[%qN6LY\rquiho)/R\
+rV[)qrUfa;`10XL$jPhq#o59^;Ik$+Ng?F=X8fR.]!^G,!4D^8#dq7O[Bcj6V5=0^".GC5L%PCq~>
+qYq%WLlRLaV5pZ&[C3ZS]!_LJ!4C.a!4D^8(:CTOX/;_fSW\\NA5YT,%K[%qN6LY\rquiho)/R\
+rV[)qrUfa;`10XL$jPhq#o59^;Ik$+Ng?F=X8fR.]!^G,!4D^8#dq7O[Bcj6V5=0^".GC5L%PCq~>
+qu6hDLlRLYRf9,hX0T.@]!],W[Jm`;[Fr+k[Iq*2[Jmc;[2,g>VOa3BKm7B<7OJZI!XoJg:kPjf
+h#?p`rUg'eo_nF\o_na\o_nFKjP7tTK3U5H$jPbo$jI_(5uM6;KoMRmV5sU$!4Cgt&@K*W[CWcW
+[CWrW]!\iLX/5fd"e(gALjaF;s*t~>
+qu6hDLlRLYRf9,hX0T.@]!],W[Jm`;[Fr+k[Iq*2[Jmc;[2,g>VOa3BKm7B<7OJZI!XoJg:kPjf
+h#?p`rUg'eo_nF\o_na\o_nFKjP7tTK3U5H$jPbo$jI_(5uM6;KoMRmV5sU$!4Cgt&@K*W[CWcW
+[CWrW]!\iLX/5fd"e(gALjaF;s*t~>
+qu6hDLlRLYRf9,hX0T.@]!],W[Jm`;[Fr+k[Iq*2[Jmc;[2,g>VOa3BKm7B<7OJZI!XoJg:kPjf
+h#?p`rUg'eo_nF\o_na\o_nFKjP7tTK3U5H$jPbo$jI_(5uM6;KoMRmV5sU$!4Cgt&@K*W[CWcW
+[CWrW]!\iLX/5fd"e(gALjaF;s*t~>
+qu77VLlRX]R[p:UX0T.@]!],\[JdZ<[CWdE\cB.n\cB/:\cB/:])K)HZE'guSXl(&HYZk]1)'Nd
+#n/(96tC\0XM)ROe.9dA[&g'nN/WC"6mNES$jPVk%1XU<7TXAPKoMRmV5pZr[/mkHik#/t'"YK^
+[C*TR[Bcj0SXl4:P)b-@nGe"~>
+qu77VLlRX]R[p:UX0T.@]!],\[JdZ<[CWdE\cB.n\cB/:\cB/:])K)HZE'guSXl(&HYZk]1)'Nd
+#n/(96tC\0XM)ROe.9dA[&g'nN/WC"6mNES$jPVk%1XU<7TXAPKoMRmV5pZr[/mkHik#/t'"YK^
+[C*TR[Bcj0SXl4:P)b-@nGe"~>
+qu77VLlRX]R[p:UX0T.@]!],\[JdZ<[CWdE\cB.n\cB/:\cB/:])K)HZE'guSXl(&HYZk]1)'Nd
+#n/(96tC\0XM)ROe.9dA[&g'nN/WC"6mNES$jPVk%1XU<7TXAPKoMRmV5pZr[/mkHik#/t'"YK^
+[C*TR[Bcj0SXl4:P)b-@nGe"~>
+qu7+RLlRLWQCXkKX/iP6ZMq63])B#>]!],\[Jm`;[G\Ur[Ih$A[^EEHX/;V\QA'a)?qrm+#5J?"%
+0$tK)_<Ns/0l/J$kj$_rX@K^%h9sL7TXAPKoVIiV5po-[H"h![CZ@F!4)U3%D&sTZE'guSXPq+N
+e2EAs*t~>
+qu7+RLlRLWQCXkKX/iP6ZMq63])B#>]!],\[Jm`;[G\Ur[Ih$A[^EEHX/;V\QA'a)?qrm+#5J?"%
+0$tK)_<Ns/0l/J$kj$_rX@K^%h9sL7TXAPKoVIiV5po-[H"h![CZ@F!4)U3%D&sTZE'guSXPq+N
+e2EAs*t~>
+qu7+RLlRLWQCXkKX/iP6ZMq63])B#>]!],\[Jm`;[G\Ur[Ih$A[^EEHX/;V\QA'a)?qrm+#5J?"%
+0$tK)_<Ns/0l/J$kj$_rX@K^%h9sL7TXAPKoVIiV5po-[H"h![CZ@F!4)U3%D&sTZE'guSXPq+N
+e2EAs*t~>
+qu6\FM#ND=QC=A@X/iQ'[0aFP]!],W[CWcRrON!:e%-'tZE(%#SXYq!I<&jr5pm/V!Y?,!3D<[n
+I>*ZHSYE0cZEgmu])K,;Z4=:JZF.!=X/2AUR#ZuFBC,YK~>
+qu6\FM#ND=QC=A@X/iQ'[0aFP]!],W[CWcRrON!:e%-'tZE(%#SXYq!I<&jr5pm/V!Y?,!3D<[n
+I>*ZHSYE0cZEgmu])K,;Z4=:JZF.!=X/2AUR#ZuFBC,YK~>
+qu6\FM#ND=QC=A@X/iQ'[0aFP]!],W[CWcRrON!:e%-'tZE(%#SXYq!I<&jr5pm/V!Y?,!3D<[n
+I>*ZHSYE0cZEgmu])K,;Z4=:JZF.!=X/2AUR#ZuFBC,YK~>
+qu7"WJr#5CP+%r4V5=-krNZO5ZF.":[0F4M]!],\[FVo$[C3KKZDF:iSWJPREb&'61)@S*%i-`\
+:0_[bJr#_`U8t?#[H+q![JI3/X8f$rSHPCIKmR(is*t~>
+qu7"WJr#5CP+%r4V5=-krNZO5ZF.":[0F4M]!],\[FVo$[C3KKZDF:iSWJPREb&'61)@S*%i-`\
+:0_[bJr#_`U8t?#[H+q![JI3/X8f$rSHPCIKmR(is*t~>
+qu7"WJr#5CP+%r4V5=-krNZO5ZF.":[0F4M]!],\[FVo$[C3KKZDF:iSWJPREb&'61)@S*%i-`\
+:0_[bJr#_`U8t?#[H+q![JI3/X8f$rSHPCIKmR(is*t~>
+qu?\Js,I>?Ng?6)SXlVQWr]N,qm-1.!4r-:"hM+Q[CWd&])T2;WsbYmRui>JCLC%03?>g8$PkK]
+:0_R_Knu%\Sc5\i[HG.#[K!N5X0V`*rh]Xc"I>.*I9c"9J,~>
+qu?\Js,I>?Ng?6)SXlVQWr]N,qm-1.!4r-:"hM+Q[CWd&])T2;WsbYmRui>JCLC%03?>g8$PkK]
+:0_R_Knu%\Sc5\i[HG.#[K!N5X0V`*rh]Xc"I>.*I9c"9J,~>
+qu?\Js,I>?Ng?6)SXlVQWr]N,qm-1.!4r-:"hM+Q[CWd&])T2;WsbYmRui>JCLC%03?>g8$PkK]
+:0_R_Knu%\Sc5\i[HG.#[K!N5X0V`*rh]Xc"I>.*I9c"9J,~>
+qu6tNJqAf=Nf]?gQN!HRV>%"kZE*u1s0W-D[CWcW[CWcWrjC^r&[epMX/2AXQB$B;DI?@63AM)Z
+!YQ8(5#,?uI=d9:S"ca[ZEh'L[I1U-[CWsK[K!Q3Wski*V59oWRZ`bgJo4QNs*t~>
+qu6tNJqAf=Nf]?gQN!HRV>%"kZE*u1s0W-D[CWcW[CWcWrjC^r&[epMX/2AXQB$B;DI?@63AM)Z
+!YQ8(5#,?uI=d9:S"ca[ZEh'L[I1U-[CWsK[K!Q3Wski*V59oWRZ`bgJo4QNs*t~>
+qu6tNJqAf=Nf]?gQN!HRV>%"kZE*u1s0W-D[CWcW[CWcWrjC^r&[epMX/2AXQB$B;DI?@63AM)Z
+!YQ8(5#,?uI=d9:S"ca[ZEh'L[I1U-[CWsK[K!Q3Wski*V59oWRZ`bgJo4QNs*t~>
+qu6eGI=d9/reUT7s-<kXSXlLGV4IO\q5X\)X0T%=ZM_-1])K)<]!^_4'=GEZZE'guSXYq$I<'+2
+;GKD2(;Bna(,A'K>\eP8KoVIiU8=ok[CWcRo"+k/#.h4M]!\rOri?$prga7^QB6oVEa7`+J,~>
+qu6eGI=d9/reUT7s-<kXSXlLGV4IO\q5X\)X0T%=ZM_-1])K)<]!^_4'=GEZZE'guSXYq$I<'+2
+;GKD2(;Bna(,A'K>\eP8KoVIiU8=ok[CWcRo"+k/#.h4M]!\rOri?$prga7^QB6oVEa7`+J,~>
+qu6eGI=d9/reUT7s-<kXSXlLGV4IO\q5X\)X0T%=ZM_-1])K)<]!^_4'=GEZZE'guSXYq$I<'+2
+;GKD2(;Bna(,A'K>\eP8KoVIiU8=ok[CWcRo"+k/#.h4M]!\rOri?$prga7^QB6oVEa7`+J,~>
+qZ$PC!eQ,[rJ1c?OHPoqR[Te9RerZRV>RCnZN%<9ZF.*O[CZ:DrON!:qmm!>]"5;\]!_OK't(Wa
+[C*'9V4F*;NeMh#B3\M05rft#!Yl_25#,3mGC>('P+%r<V6[D7]"5;WqRQ^8](i]4ZN%!)V>d"i
+R[0+sLj*+as*t~>
+qZ$PC!eQ,[rJ1c?OHPoqR[Te9RerZRV>RCnZN%<9ZF.*O[CZ:DrON!:qmm!>]"5;\]!_OK't(Wa
+[C*'9V4F*;NeMh#B3\M05rft#!Yl_25#,3mGC>('P+%r<V6[D7]"5;WqRQ^8](i]4ZN%!)V>d"i
+R[0+sLj*+as*t~>
+qZ$PC!eQ,[rJ1c?OHPoqR[Te9RerZRV>RCnZN%<9ZF.*O[CZ:DrON!:qmm!>]"5;\]!_OK't(Wa
+[C*'9V4F*;NeMh#B3\M05rft#!Yl_25#,3mGC>('P+%r<V6[D7]"5;WqRQ^8](i]4ZN%!)V>d"i
+R[0+sLj*+as*t~>
+q>UGAr-eNq%Y]^pNJNUVP*2,sR[Te9r13_]r2]e%"1>_J])K)<]!_OK"1>_O[Iq-0[K!9;U77I/
+Kme/_B4+e97QDL(!YcY15#,3mEd`@lOHuH6V5po0ZF[XH[Jm`;[JdZ?[CWcW[C-">s/Z-qrL3_K
+"-.tW:?);(~>
+q>UGAr-eNq%Y]^pNJNUVP*2,sR[Te9r13_]r2]e%"1>_J])K)<]!_OK"1>_O[Iq-0[K!9;U77I/
+Kme/_B4+e97QDL(!YcY15#,3mEd`@lOHuH6V5po0ZF[XH[Jm`;[JdZ?[CWcW[C-">s/Z-qrL3_K
+"-.tW:?);(~>
+q>UGAr-eNq%Y]^pNJNUVP*2,sR[Te9r13_]r2]e%"1>_J])K)<]!_OK"1>_O[Iq-0[K!9;U77I/
+Kme/_B4+e97QDL(!YcY15#,3mEd`@lOHuH6V5po0ZF[XH[Jm`;[JdZ?[CWcW[C-">s/Z-qrL3_K
+"-.tW:?);(~>
+q#C;5rHJ0f!JQ.)M#ND@OHPomQBmu*R[X5Hrh]Up!2]Xps0;d8]!],Wost44]"7mK(:pob]!\T8
+V4Ep6Lk:%qCM-mM8No-T^B,#g/NH9u?ugICLlI^kSY`0`ZEjJ;"hM+Q[CWsJ[0!qI])B&9X8f$r
+Sc>/YP5gODLj`gls*t~>
+q#C;5rHJ0f!JQ.)M#ND@OHPomQBmu*R[X5Hrh]Up!2]Xps0;d8]!],Wost44]"7mK(:pob]!\T8
+V4Ep6Lk:%qCM-mM8No-T^B,#g/NH9u?ugICLlI^kSY`0`ZEjJ;"hM+Q[CWsJ[0!qI])B&9X8f$r
+Sc>/YP5gODLj`gls*t~>
+q#C;5rHJ0f!JQ.)M#ND@OHPomQBmu*R[X5Hrh]Up!2]Xps0;d8]!],Wost44]"7mK(:pob]!\T8
+V4Ep6Lk:%qCM-mM8No-T^B,#g/NH9u?ugICLlI^kSY`0`ZEjJ;"hM+Q[CWsJ[0!qI])B&9X8f$r
+Sc>/YP5gODLj`gls*t~>
+p&G&&!,MROs)S-`!I]1kIK+otM#ND;OH,?aP5^dGSc,AcX/5frs0DX3%(`jX[CWrW]!],\[C-"F
+!k#VIrj!-:V4F':Ne2\"CM.$W;GKD2*PVXe*A'9;=C>ogI=d98QCXbHV>de![04(K[CWsG[/dB.
+X8f!uSXQ"1rf.):I<SfNs*t~>
+p&G&&!,MROs)S-`!I]1kIK+otM#ND;OH,?aP5^dGSc,AcX/5frs0DX3%(`jX[CWrW]!],\[C-"F
+!k#VIrj!-:V4F':Ne2\"CM.$W;GKD2*PVXe*A'9;=C>ogI=d98QCXbHV>de![04(K[CWsG[/dB.
+X8f!uSXQ"1rf.):I<SfNs*t~>
+p&G&&!,MROs)S-`!I]1kIK+otM#ND;OH,?aP5^dGSc,AcX/5frs0DX3%(`jX[CWrW]!],\[C-"F
+!k#VIrj!-:V4F':Ne2\"CM.$W;GKD2*PVXe*A'9;=C>ogI=d98QCXbHV>de![04(K[CWsG[/dB.
+X8f!uSXQ"1rf.):I<SfNs*t~>
+nc&u-B4l!qDJjK=GC=]6I0#.UqM597LlRLYrg!PQrga(dSc5JcWrTI([0aFP[CWcW[C*TWrj;j>
+[C*UFX8e_#QB$cLGB.>/?s$/n4u+.o!YGVW/NH*l=DN,)I>*ZHR[p"Gri?()rNua=[C*UF[K!Q4
+WrTI)V>m(fRZ`^1M#Vl'CYf#@~>
+nc&u-B4l!qDJjK=GC=]6I0#.UqM597LlRLYrg!PQrga(dSc5JcWrTI([0aFP[CWcW[C*TWrj;j>
+[C*UFX8e_#QB$cLGB.>/?s$/n4u+.o!YGVW/NH*l=DN,)I>*ZHR[p"Gri?()rNua=[C*UF[K!Q4
+WrTI)V>m(fRZ`^1M#Vl'CYf#@~>
+nc&u-B4l!qDJjK=GC=]6I0#.UqM597LlRLYrg!PQrga(dSc5JcWrTI([0aFP[CWcW[C*TWrj;j>
+[C*UFX8e_#QB$cLGB.>/?s$/n4u+.o!YGVW/NH*l=DN,)I>*ZHR[p"Gri?()rNua=[C*UF[K!Q4
+WrTI)V>m(fRZ`^1M#Vl'CYf#@~>
+mJdE%B4PXfCN=IoGPusfJcURWreUT7!f`5%rg!YTSYD\SV#[RqZMq65]!]-H[2?3W[Bd*=V59`K
+OGJ^:Ebf;q=Ah^V4>I\e!Yl_-1-SH8B5;^>I>EoLSXlURX/iP,rNcC0rj)O(s/#adrgF(TLkpY2
+I<T5Ws*t~>
+mJdE%B4PXfCN=IoGPusfJcURWreUT7!f`5%rg!YTSYD\SV#[RqZMq65]!]-H[2?3W[Bd*=V59`K
+OGJ^:Ebf;q=Ah^V4>I\e!Yl_-1-SH8B5;^>I>EoLSXlURX/iP,rNcC0rj)O(s/#adrgF(TLkpY2
+I<T5Ws*t~>
+mJdE%B4PXfCN=IoGPusfJcURWreUT7!f`5%rg!YTSYD\SV#[RqZMq65]!]-H[2?3W[Bd*=V59`K
+OGJ^:Ebf;q=Ah^V4>I\e!Yl_-1-SH8B5;^>I>EoLSXlURX/iP,rNcC0rj)O(s/#adrgF(TLkpY2
+I<T5Ws*t~>
+l2M#tA7T=gCN=W>rHA<kGB`n3s+1K0LkUYHOHPq/SH5RXrh]Xqs0D[4*jWAb[CWcRZEgO3V4sNH
+OH,-FGACi!=BA6h4uk21^B,#g-Sdk\=C>obGC>(!OHuH.V5=-kriuO)rNcC&s/#ad$C[9DNfJ^>
+GB._*g])d~>
+l2M#tA7T=gCN=W>rHA<kGB`n3s+1K0LkUYHOHPq/SH5RXrh]Xqs0D[4*jWAb[CWcRZEgO3V4sNH
+OH,-FGACi!=BA6h4uk21^B,#g-Sdk\=C>obGC>(!OHuH.V5=-kriuO)rNcC&s/#ad$C[9DNfJ^>
+GB._*g])d~>
+l2M#tA7T=gCN=W>rHA<kGB`n3s+1K0LkUYHOHPq/SH5RXrh]Xqs0D[4*jWAb[CWcRZEgO3V4sNH
+OH,-FGACi!=BA6h4uk21^B,#g-Sdk\=C>obGC>(!OHuH.V5=-kriuO)rNcC&s/#ad$C[9DNfJ^>
+GB._*g])d~>
+k5PHe@K'p>CBABoDZ"PSG632:GQ*$jJcLN(L^oT6R[on<SY_mRV5pZ&X8K:&X8f"0SX,A!Nei+-
+EbAcf=ADUW3AN/r^B,&h-SdkW=C>o[GC>'sLm"'mSY`1\WrTI'X8\sqSc>/YQ3`M,LjaJkEb%kt
+s*t~>
+k5PHe@K'p>CBABoDZ"PSG632:GQ*$jJcLN(L^oT6R[on<SY_mRV5pZ&X8K:&X8f"0SX,A!Nei+-
+EbAcf=ADUW3AN/r^B,&h-SdkW=C>o[GC>'sLm"'mSY`1\WrTI'X8\sqSc>/YQ3`M,LjaJkEb%kt
+s*t~>
+k5PHe@K'p>CBABoDZ"PSG632:GQ*$jJcLN(L^oT6R[on<SY_mRV5pZ&X8K:&X8f"0SX,A!Nei+-
+EbAcf=ADUW3AN/r^B,&h-SdkW=C>o[GC>'sLm"'mSY`1\WrTI'X8\sqSc>/YQ3`M,LjaJkEb%kt
+s*t~>
+j8T9^=BJg9AGg*<C]/8`GC+[bI=d0,LlIL^QC=9?SK=W.V5pGnV5pGhSXl(4Nei:=GB.J,=BJHr
+7Qrgf*V0?crrW<,!XAE$&/HWF3CZbOB5;O3I=d97OI#m:qka:ms.p:$SXl48QB7,_Kn=_sEb&':
+g&HR~>
+j8T9^=BJg9AGg*<C]/8`GC+[bI=d0,LlIL^QC=9?SK=W.V5pGnV5pGhSXl(4Nei:=GB.J,=BJHr
+7Qrgf*V0?crrW<,!XAE$&/HWF3CZbOB5;O3I=d97OI#m:qka:ms.p:$SXl48QB7,_Kn=_sEb&':
+g&HR~>
+j8T9^=BJg9AGg*<C]/8`GC+[bI=d0,LlIL^QC=9?SK=W.V5pGnV5pGhSXl(4Nei:=GB.J,=BJHr
+7Qrgf*V0?crrW<,!XAE$&/HWF3CZbOB5;O3I=d97OI#m:qka:ms.p:$SXl48QB7,_Kn=_sEb&':
+g&HR~>
+hZ!UO=8lJ)@/FU9CBSNqF`M^*I0tR^LlIFVP*VQ-Rf8iZV4sgbSc=ugNeiL>I<T^E?sm)7:.[`8
+1+*k9!lk6?#6"Z<%P97m5uLftCMS-<I=d97Nfo]sRf8iXV>d"cUAg_`Q4&e7LkUP2I<TmQA5(VT
+J,~>
+hZ!UO=8lJ)@/FU9CBSNqF`M^*I0tR^LlIFVP*VQ-Rf8iZV4sgbSc=ugNeiL>I<T^E?sm)7:.[`8
+1+*k9!lk6?#6"Z<%P97m5uLftCMS-<I=d97Nfo]sRf8iXV>d"cUAg_`Q4&e7LkUP2I<TmQA5(VT
+J,~>
+hZ!UO=8lJ)@/FU9CBSNqF`M^*I0tR^LlIFVP*VQ-Rf8iZV4sgbSc=ugNeiL>I<T^E?sm)7:.[`8
+1+*k9!lk6?#6"Z<%P97m5uLftCMS-<I=d97Nfo]sRf8iXV>d"cUAg_`Q4&e7LkUP2I<TmQA5(VT
+J,~>
+g]%CG9N"bir`B8-?sI7AB*i?kDK9cEI=6^!re:B."HAM)QBqK<s-<\KNrFk7I1:C5B4+hD:/4AM
+4uk28rW9k7&go7d5#,3fB5;O3I=6g'LlIFVpQki@!KN!8Ka33XHZsLG@8,8PJ,~>
+g]%CG9N"bir`B8-?sI7AB*i?kDK9cEI=6^!re:B."HAM)QBqK<s-<\KNrFk7I1:C5B4+hD:/4AM
+4uk28rW9k7&go7d5#,3fB5;O3I=6g'LlIFVpQki@!KN!8Ka33XHZsLG@8,8PJ,~>
+g]%CG9N"bir`B8-?sI7AB*i?kDK9cEI=6^!re:B."HAM)QBqK<s-<\KNrFk7I1:C5B4+hD:/4AM
+4uk28rW9k7&go7d5#,3fB5;O3I=6g'LlIFVpQki@!KN!8Ka33XHZsLG@8,8PJ,~>
+fDc7F7S-0H;GpS$@:3JRrau@LDK9rFrdFcts+UH3s,d8@reM2=I<TmNCM.$W=ADU_5s[Ld-P$+W
+^]4<c%Pg4>;IEmJCNjuNI=d')reLW9OH07#!07&7!/:E#s*+K\!b>P2ec1.~>
+fDc7F7S-0H;GpS$@:3JRrau@LDK9rFrdFcts+UH3s,d8@reM2=I<TmNCM.$W=ADU_5s[Ld-P$+W
+^]4<c%Pg4>;IEmJCNjuNI=d')reLW9OH07#!07&7!/:E#s*+K\!b>P2ec1.~>
+fDc7F7S-0H;GpS$@:3JRrau@LDK9rFrdFcts+UH3s,d8@reM2=I<TmNCM.$W=ADU_5s[Ld-P$+W
+^]4<c%Pg4>;IEmJCNjuNI=d')reLW9OH07#!07&7!/:E#s*+K\!b>P2ec1.~>
+e,KV45!_b8;HNj"$s[=RB5;:#DK9lBGC0::qLSp"GB\(?B41^@s%`Sc#=1O//KG#s!knUA/M]=P
+:0:n3CN=H>rI+]tre:<,rIk6'rI+]d"D_XT=%:^>J,~>
+e,KV45!_b8;HNj"$s[=RB5;:#DK9lBGC0::qLSp"GB\(?B41^@s%`Sc#=1O//KG#s!knUA/M]=P
+:0:n3CN=H>rI+]tre:<,rIk6'rI+]d"D_XT=%:^>J,~>
+e,KV45!_b8;HNj"$s[=RB5;:#DK9lBGC0::qLSp"GB\(?B41^@s%`Sc#=1O//KG#s!knUA/M]=P
+:0:n3CN=H>rI+]tre:<,rIk6'rI+]d"D_XT=%:^>J,~>
+ci4A:5t4=8:/4\h>[V+AB)l`HD?=j&FoHRbHiA6hEY3)"?tWkL=ADU_8O5X+3AMrd])Vd^%5L+=
+:0_1>CN=H>I=6><IJSQpIK+NjEWg/g>Y[`:s*t~>
+ci4A:5t4=8:/4\h>[V+AB)l`HD?=j&FoHRbHiA6hEY3)"?tWkL=ADU_8O5X+3AMrd])Vd^%5L+=
+:0_1>CN=H>I=6><IJSQpIK+NjEWg/g>Y[`:s*t~>
+ci4A:5t4=8:/4\h>[V+AB)l`HD?=j&FoHRbHiA6hEY3)"?tWkL=ADU_8O5X+3AMrd])Vd^%5L+=
+:0_1>CN=H>I=6><IJSQpIK+NjEWg/g>Y[`:s*t~>
+bPqr,3Bf`#:/Y1r>[V+ABE)cGDZ4GNBDu<<=T;.r8HhCD4u+lD\Glmd/M]=M:/Y2%B5@HdrceBj
+!I&nhI11=JHZs[SDJj)t>Y-s(s*t~>
+bPqr,3Bf`#:/Y1r>[V+ABE)cGDZ4GNBDu<<=T;.r8HhCD4u+lD\Glmd/M]=M:/Y2%B5@HdrceBj
+!I&nhI11=JHZs[SDJj)t>Y-s(s*t~>
+bPqr,3Bf`#:/Y1r>[V+ABE)cGDZ4GNBDu<<=T;.r8HhCD4u+lD\Glmd/M]=M:/Y2%B5@HdrceBj
+!I&nhI11=JHZs[SDJj)t>Y-s(s*t~>
+aSuW'3Bf`(:01P">[Uh9@/ja>B4,+[ra>_-$Vjf!:.[`;5!C_R/[k]Z/IO<o5#,!X?tX+fEc1hr
+!dA[*rce<]#]=EnB4P7F8NbE#J,~>
+aSuW'3Bf`(:01P">[Uh9@/ja>B4,+[ra>_-$Vjf!:.[`;5!C_R/[k]Z/IO<o5#,!X?tX+fEc1hr
+!dA[*rce<]#]=EnB4P7F8NbE#J,~>
+aSuW'3Bf`(:01P">[Uh9@/ja>B4,+[ra>_-$Vjf!:.[`;5!C_R/[k]Z/IO<o5#,!X?tX+fEc1hr
+!dA[*rce<]#]=EnB4P7F8NbE#J,~>
+`W$<$3CZJ5;GpRu='&Z+=9)b)=T2(q8HhCD3B8ZA[/^.X%5Kq-8PWAm?tX+iCN==dEX-Aj?sHc.
+8NG/tJ,~>
+`W$<$3CZJ5;GpRu='&Z+=9)b)=T2(q8HhCD3B8ZA[/^.X%5Kq-8PWAm?tX+iCN==dEX-Aj?sHc.
+8NG/tJ,~>
+`W$<$3CZJ5;GpRu='&Z+=9)b)=T2(q8HhCD3B8ZA[/^.X%5Kq-8PWAm?tX+iCN==dEX-Aj?sHc.
+8NG/tJ,~>
+_uBip3Bfo(r(d5h"'AH!=Ski!8O5X+3AN?;/$f0`-S7)65!_b<='T-GBDu]HDZ4DPDJT5a#%Ut:
+:.[o8ci8L~>
+_uBip3Bfo(r(d5h"'AH!=Ski!8O5X+3AN?;/$f0`-S7)65!_b<='T-GBDu]HDZ4DPDJT5a#%Ut:
+:.[o8ci8L~>
+_uBip3Bfo(r(d5h"'AH!=Ski!8O5X+3AN?;/$f0`-S7)65!_b<='T-GBDu]HDZ4DPDJT5a#%Ut:
+:.[o8ci8L~>
+_#FTo3B98h5t:iFqbI&\#!kF:3AN?;YlF\S"u82&5tOsUr`fG2r+H%;s'u@>=&MUZ5s@-Ns*t~>
+_#FTo3B98h5t:iFqbI&\#!kF:3AN?;YlF\S"u82&5tOsUr`fG2r+H%;s'u@>=&MUZ5s@-Ns*t~>
+_#FTo3B98h5t:iFqbI&\#!kF:3AN?;YlF\S"u82&5tOsUr`fG2r+H%;s'u@>=&MUZ5s@-Ns*t~>
+^Ae9e1-%Ao4p4GC8O5rG62j%N3AN06/$8jO/cRRA3Bf`#8PW#Y=BJg0=BABq;G9PL4>Jb;s*t~>
+^Ae9e1-%Ao4p4GC8O5rG62j%N3AN06/$8jO/cRRA3Bf`#8PW#Y=BJg0=BABq;G9PL4>Jb;s*t~>
+^Ae9e1-%Ao4p4GC8O5rG62j%N3AN06/$8jO/cRRA3Bf`#8PW#Y=BJg0=BABq;G9PL4>Jb;s*t~>
+]Di*f1,:jR5!_L555mSA1B/r+rsC,*/M](A3C,r#7fGs[:.bFSs$6]H1bHlMJ,~>
+]Di*f1,:jR5!_L555mSA1B/r+rsC,*/M](A3C,r#7fGs[:.bFSs$6]H1bHlMJ,~>
+]Di*f1,:jR5!_L555mSA1B/r+rsC,*/M](A3C,r#7fGs[:.bFSs$6]H1bHlMJ,~>
+\GlO\pG2_"V#LNE/M\pW1&s913W:f6/]dsB~>
+\GlO\pG2_"V#LNE/M\pW1&s913W:f6/]dsB~>
+\GlO\pG2_"V#LNE/M\pW1&s913W:f6/]dsB~>
+[/U=^-S6\n/LR.ioe",^J,~>
+[/U=^-S6\n/LR.ioe",^J,~>
+[/U=^-S6\n/LR.ioe",^J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+JcC<$J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/macros/latex/contrib/IEEEtran/extras/tux.pdf b/macros/latex/contrib/IEEEtran/extras/tux.pdf
new file mode 100644
index 0000000000..c690de7194
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/extras/tux.pdf
Binary files differ
diff --git a/macros/latex/contrib/IEEEtran/testflow/README b/macros/latex/contrib/IEEEtran/testflow/README
new file mode 100644
index 0000000000..61145c30c2
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/testflow/README
@@ -0,0 +1,82 @@
+
+January 10, 2007
+
+
+This is the "testflow" diagnostic suite which is designed to test LaTeX
+"print work flow" and to provide lots of helpful information to assist
+users in getting their LaTeX system configured and/or upgraded in order
+to produce good PS/PDF output.
+
+Although originally designed for IEEEtran users, testflow will be of
+interest to anyone who uses LaTeX to make PostScript or PDF output.
+
+Extensive usage documentation is contained in "testflow_doc.pdf"
+
+The control test reference files are available in both PostScript and PDF,
+each in A4 and US Letter paper sizes.
+
+
+For helpful tips, answers to frequently asked questions and other support,
+visit the testflow home page at my website:
+
+http://www.michaelshell.org/tex/testflow/
+
+
+Enjoy!
+
+Michael Shell
+http://www.michaelshell.org/
+
+*******
+Version 1.1 (2007/01/10) changes:
+
+ 1. New duplex page test.
+
+ 2. New test for Palladio hinting.
+
+ 3. Updated documentation to cover the newer systems.
+
+********************************* Files **********************************
+
+README - This file.
+
+testflow_doc.pdf - The user manual.
+
+testflow.tex - The LaTeX test file.
+
+testflow_ctl_LTR.ps - Control file in PostScript, US Letter paper format.
+
+testflow_ctl_LTR.pdf - Control file in PDF, US Letter paper format.
+
+testflow_ctl_A4.ps - Control file in PostScript, A4 paper format.
+
+testflow_ctl_A4.pdf - Control file in PDF, A4 paper format.
+
+***************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall the IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+
+File list of work: testflow_doc.pdf, testflow.tex, testflow_ctl_LTR.ps,
+ testflow_ctl_LTR.pdf, testflow_ctl_A4.ps,
+ testflow_ctl_A4.pdf
+
+***************************************************************************
diff --git a/macros/latex/contrib/IEEEtran/testflow/testflow.tex b/macros/latex/contrib/IEEEtran/testflow/testflow.tex
new file mode 100644
index 0000000000..550bb8379f
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/testflow/testflow.tex
@@ -0,0 +1,592 @@
+
+%% testflow.tex
+%% V1.1
+%% 2009/01/10
+%% Copyright (c) 2002-2009 by Michael Shell and The LaTeX3 Project
+%% See: http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% A test page based on Rainer Schoepf's testpage.tex which is part of the
+%% LaTeX2e system with added modifications to add tests to verify PS/PDF
+%% output by Michael Shell.
+%%
+%% For complete usage documentation, see the file testflow_doc.pdf
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/testflow/
+%% http://www.ctan.org/pkg/testflow
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: testflow.tex, testflow_ctl_A4.ps, testflow_ctl_A4.pdf,
+%% testflow_ctl_LTR.ps, testflow_ctl_LTR.pdf,
+%% testflow_doc.pdf
+%%*************************************************************************
+%
+% Changelog:
+%
+% 1.1 (2007/01/10)
+% 1. new duplex test
+% 2. tests for Palladio hinting
+%
+% 1.0 (2002/04/08) Initial release
+
+
+
+
+% ***** To prevent testflow from prompting user on the console, *****
+% ***** uncomment one each of the two pairs below: *****
+%
+% *** paper size (choose one) ***
+%\def\papertype{letterpaper}
+%\def\papertype{a4paper}
+%
+% *** duplex page test (choose one) ***
+%\def\makeduplexpage{yes}
+%\def\makeduplexpage{no}
+
+
+
+
+\def\docversion{1.1}
+\def\docbuildcode{0000}
+
+\newif\ifmakeduplextest
+\makeduplextestfalse
+\newif\ifneeduserresponse
+\needuserresponsetrue
+
+\def\useryesstring{yes}
+\def\usernostring{no}
+\def\userystring{y}
+\def\usernstring{n}
+
+\ifx\papertype\TESTFLOWundefined
+\typeout{}
+\typeout{ This is the testflow.tex (V\docversion) test page generator.}
+\typeout{ See the testflow_doc.pdf file for full documentation.}
+
+\typeout{}
+\typeout{**********************************************************}
+\typeout{* Enter paper type in form of document class option,%
+\space\space\space\space\space*}
+\typeout{* e.g., `a4paper' or `letterpaper' (without the quotes).\space*}
+\typein[\papertype]{******************************************%
+****************}
+\fi
+
+\ifx\makeduplexpage\TESTFLOWundefined
+\loop
+\typeout{}
+\typeout{**************************************************************}
+\typeout{* Do you wish to make a second page to test duplex printing?%
+\space*}
+\typeout{* Enter `yes' or `no' (without the quotes).%
+\space\space\space\space\space\space\space\space\space\space\space\space\space
+\space\space\space\space\space*}
+\typein[\makeduplexpage]{******************************************%
+********************}
+\ifx\makeduplexpage\useryesstring\makeduplextesttrue\needuserresponsefalse\fi
+\ifx\makeduplexpage\usernostring\makeduplextestfalse\needuserresponsefalse\fi
+\ifx\makeduplexpage\userystring\makeduplextesttrue\needuserresponsefalse\fi
+\ifx\makeduplexpage\usernstring\makeduplextestfalse\needuserresponsefalse\fi
+\ifneeduserresponse
+\repeat
+\else
+\ifx\makeduplexpage\useryesstring\makeduplextesttrue\fi
+\ifx\makeduplexpage\userystring\makeduplextesttrue\fi
+\fi
+
+
+
+% declare symbols for lasy test
+\DeclareSymbolFont{lasy}{U}{lasy}{m}{n}
+\SetSymbolFont{lasy}{bold}{U}{lasy}{b}{n}
+\DeclareMathSymbol\lasymho {\mathord}{lasy}{"30}
+\DeclareMathSymbol\lasyJoin {\mathrel}{lasy}{"31}
+\DeclareMathSymbol\lasyBox {\mathord}{lasy}{"32}
+\DeclareMathSymbol\lasyDiamond {\mathord}{lasy}{"33}
+\DeclareMathSymbol\lasyleadsto {\mathrel}{lasy}{"3B}
+\DeclareMathSymbol\lasysqsubset{\mathrel}{lasy}{"3C}
+\DeclareMathSymbol\lasysqsupset{\mathrel}{lasy}{"3D}
+\DeclareMathSymbol\lasylhd {\mathbin}{lasy}{"01}
+\DeclareMathSymbol\lasyunlhd {\mathbin}{lasy}{"02}
+\DeclareMathSymbol\lasyrhd {\mathbin}{lasy}{"03}
+\DeclareMathSymbol\lasyunrhd {\mathbin}{lasy}{"04}
+
+
+
+\documentclass[\papertype, 10pt]{article}
+
+\typeout{-- Option summary:}
+\typeout{-- Paper size: \papertype}
+\ifmakeduplextest
+\typeout{-- With duplex test page}
+\else
+\typeout{-- No duplex test page}
+\fi
+
+% enable Times fonts
+\renewcommand{\sfdefault}{phv}
+\renewcommand{\rmdefault}{ptm}
+\renewcommand{\ttdefault}{pcr}
+
+\def\fontsubfuzz{.9pt}
+
+\def\tenptsize{\fontsize{10}{12pt}\selectfont}
+\def\nineptsize{\fontsize{9}{11pt}\selectfont}
+\def\eightptsize{\fontsize{8}{10pt}\selectfont}
+\def\sevenptsize{\fontsize{7}{9pt}\selectfont}
+\def\sixptsize{\fontsize{6}{8pt}\selectfont}
+\def\fiveptsize{\fontsize{5}{7pt}\selectfont}
+
+
+\pagestyle{empty}
+\thispagestyle{empty}
+
+\nofiles
+
+\setlength{\oddsidemargin}{0pt}
+\setlength{\evensidemargin}{0pt}
+\setlength{\marginparwidth}{1in}
+\setlength{\marginparsep}{0pt}
+
+\setlength{\topmargin}{0pt}
+\setlength{\headheight}{0pt}
+\setlength{\headsep}{0pt}
+\setlength{\topskip}{0pt}
+
+\setlength{\footskip}{0pt}
+
+\setlength{\textwidth}{\paperwidth}
+\addtolength{\textwidth}{-2in}
+\setlength{\textheight}{\paperheight}
+\addtolength{\textheight}{-2in}
+
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{0pt}
+
+\setlength{\unitlength}{1sp}
+
+
+\newcounter{textheight}
+\newcounter{textwidth}
+
+\setcounter{textheight}{\textheight}
+\setcounter{textwidth}{\textwidth}
+
+
+
+\newlength{\help}
+
+\newcounter{help}
+
+\newcounter{in}
+\newcounter{halfin}
+\newcounter{fifthin}
+\newcounter{tenthin}
+\newcounter{twtin}
+
+\newcounter{mm}
+\newcounter{tmm}
+\newcounter{frmm}
+\newcounter{fvmm}
+\newcounter{tenmm}
+
+\newcounter{foo}
+
+\newcounter{x}
+\newcounter{y}
+
+\newcommand{\addtox}{\addtocounter{x}}
+\newcommand{\addtoy}{\addtocounter{y}}
+
+\newcommand{\putxy}{\put(\value{x},\value{y})}
+\newcommand{\multiputxy}{\multiput(\value{x},\value{y})}
+
+\newcommand{\sethelpcounter}[2]{%
+ \setlength{\help}{#2}\setcounter{#1}{\help}}
+
+
+\newenvironment{testflowpage}{\setlength{\help}{1in}
+\setcounter{in}{\help}
+
+\setlength{\help}{0.5in}
+\setcounter{halfin}{\help}
+
+\setlength{\help}{0.2in}
+\setcounter{fifthin}{\help}
+
+\setlength{\help}{0.1in}
+\setcounter{tenthin}{\help}
+
+\setlength{\help}{0.05in}
+\setcounter{twtin}{\help}
+
+
+\setlength{\help}{1mm}
+\setcounter{mm}{\help}
+
+\setlength{\help}{2mm}
+\setcounter{tmm}{\help}
+
+\setlength{\help}{4mm}
+\setcounter{frmm}{\help}
+
+\setlength{\help}{5mm}
+\setcounter{fvmm}{\help}
+
+\setlength{\help}{10mm}
+\setcounter{tenmm}{\help}
+
+
+\begin{picture}(0,0)
+\scriptsize
+
+\put(0,-\value{textheight}){%
+ \framebox(\value{textwidth},\value{textheight}){}}
+
+% left mm ruler
+\setcounter{x}{0}
+\sethelpcounter{y}{-0.45\textheight}
+\putxy{\line(-1,0){\value{in}}}
+
+
+\addtox{-\value{fvmm}}
+\addtoy{-\value{tmm}}
+\multiputxy(-\value{fvmm},0){5}{\line(0,1){\value{frmm}}}
+
+
+\addtoy{\value{mm}}
+\multiput(-\value{mm},\value{y})(-\value{mm},0){25}%
+ {\line(0,1){\value{tmm}}}
+
+\addtoy{\value{frmm}}
+\setcounter{foo}{5}
+\multiput(-\value{fvmm},\value{y})(-\value{fvmm},0){4}{%
+ \makebox(0,0){\arabic{foo}}\addtocounter{foo}{5}}
+
+
+% left in ruler
+\setcounter{x}{0}
+\sethelpcounter{y}{-0.55\textheight}
+\putxy{\line(-1,0){\value{in}}}
+
+\addtox{-\value{tenthin}}
+\addtoy{-\value{tenthin}}
+\multiputxy(-\value{tenthin},0){10}{\line(0,1){\value{fifthin}}}
+
+\addtox{\value{twtin}}
+\addtoy{\value{twtin}}
+\multiputxy(-\value{tenthin},0){10}{\line(0,1){\value{tenthin}}}
+
+\setcounter{foo}{1}
+
+\addtox{-\value{twtin}}
+\addtoy{\value{tenthin}}
+\addtoy{\value{tenthin}}
+\multiputxy(-\value{tenthin},0){9}{%
+ \makebox(0,0){\arabic{foo}}\addtocounter{foo}{1}}
+
+% right mm ruler
+\sethelpcounter{x}{\textwidth}
+\sethelpcounter{y}{-0.45\textheight}
+\putxy{\line(1,0){\value{in}}}
+
+\addtox{\value{mm}}
+\addtoy{-\value{mm}}
+\multiputxy(\value{mm},0){25}{\line(0,1){\value{tmm}}}
+
+\addtox{\value{frmm}}
+\addtoy{-\value{mm}}
+\multiputxy(\value{fvmm},0){5}{\line(0,1){\value{frmm}}}
+
+\addtoy{\value{fvmm}}
+\setcounter{foo}{5}
+\multiputxy(\value{fvmm},0){4}{%
+ \makebox(0,0){\arabic{foo}}\addtocounter{foo}{5}}
+
+% right in ruler
+\sethelpcounter{x}{\textwidth}
+\sethelpcounter{y}{-0.55\textheight}
+\putxy{\line(1,0){\value{in}}}
+
+\addtox{\value{tenthin}}
+\addtoy{-\value{tenthin}}
+\multiputxy(\value{tenthin},0){10}{%
+ \line(0,1){\value{fifthin}}}
+
+\addtox{-\value{twtin}}
+\addtoy{\value{twtin}}
+\multiputxy(\value{tenthin},0){10}{%
+ \line(0,1){\value{tenthin}}}
+
+\setcounter{foo}{1}
+\addtox{\value{twtin}}
+\addtoy{\value{tenthin}}
+\addtoy{\value{tenthin}}
+\multiputxy(\value{tenthin},0){9}{%
+ \makebox(0,0){\arabic{foo}}\addtocounter{foo}{1}}
+
+
+% top mm ruler
+\sethelpcounter{x}{0.45\textwidth}
+\setcounter{y}{0}
+\putxy{\line(0,1){\value{in}}}
+
+\addtox{-\value{tmm}}
+\addtoy{\value{fvmm}}
+\multiputxy(0,\value{fvmm}){5}{\line(1,0){\value{frmm}}}
+
+\addtox{\value{mm}}
+\addtoy{-\value{frmm}}
+\multiputxy(0,\value{mm}){25}{\line(1,0){\value{tmm}}}
+
+\setcounter{foo}{5}
+\addtox{-\value{tmm}}
+\addtoy{-\value{mm}}
+\addtoy{\value{fvmm}}
+\multiputxy(0,\value{fvmm}){4}{%
+ \makebox(0,0){\arabic{foo}\rule{5pt}{0pt}}\addtocounter{foo}{5}}
+
+% top in ruler
+\sethelpcounter{x}{0.55\textwidth}
+\setcounter{y}{0}
+\putxy{\line(0,1){\value{in}}}
+
+\addtox{-\value{tenthin}}
+\addtoy{\value{tenthin}}
+\multiputxy(0,\value{tenthin}){10}{\line(1,0){\value{fifthin}}}
+
+\addtox{\value{twtin}}
+\addtoy{-\value{twtin}}
+\multiputxy(0,\value{tenthin}){10}{\line(1,0){\value{tenthin}}}
+
+\setcounter{foo}{1}
+\addtox{-\value{tenthin}}
+\addtoy{\value{twtin}}
+\multiputxy(0,\value{tenthin}){9}{%
+ \makebox(0,0){\arabic{foo}}\addtocounter{foo}{1}}
+
+% bottom mm ruler
+\sethelpcounter{x}{0.45\textwidth}
+\setcounter{y}{-\textheight}
+\putxy{\line(0,-1){\value{in}}}
+
+\addtox{-\value{tmm}}
+\addtoy{-\value{fvmm}}
+\multiputxy(0,-\value{fvmm}){5}{\line(1,0){\value{frmm}}}
+
+\addtox{\value{mm}}
+\addtoy{\value{frmm}}
+\multiputxy(0,-\value{mm}){25}{\line(1,0){\value{tmm}}}
+
+\setcounter{foo}{5}
+\addtox{-\value{tmm}}
+\addtoy{\value{mm}}
+\addtoy{-\value{fvmm}}
+\multiputxy(0,-\value{fvmm}){4}{%
+ \makebox(0,0){\arabic{foo}\rule{5pt}{0pt}}\addtocounter{foo}{5}}
+
+
+% bottom in ruler
+\sethelpcounter{x}{0.55\textwidth}
+\setcounter{y}{-\textheight}
+\putxy{\line(0,-1){\value{in}}}
+
+\addtox{-\value{tenthin}}
+\addtoy{-\value{tenthin}}
+\multiputxy(0,-\value{tenthin}){10}{\line(1,0){\value{fifthin}}}
+
+\addtox{\value{twtin}}
+\addtoy{\value{twtin}}
+\multiputxy(0,-\value{tenthin}){10}{\line(1,0){\value{tenthin}}}
+
+\setcounter{foo}{1}
+\addtox{-\value{tenthin}}
+\addtoy{-\value{twtin}}
+\multiputxy(0,-\value{tenthin}){9}{%
+ \makebox(0,0){\arabic{foo}}\addtocounter{foo}{1}}
+
+
+\end{picture}
+
+\setlength{\help}{\textwidth}
+\addtolength{\help}{-1.25in}
+
+\vspace*{\baselineskip}
+\mbox{}\hfill
+\begin{minipage}{\help}\relax}
+% end of testpage environment
+{\end{minipage}\hfill\mbox{}\vfill\mbox{}}
+
+
+\begin{document}
+
+
+\begin{testflowpage}
+
+\centerline{\Huge A Test for \LaTeX\ PS/PDF Printing}
+\vspace{0.75\baselineskip}
+\centerline{\large Version \docversion\hspace{0.2in} Build Code: \docbuildcode}
+\vspace{0.75\baselineskip}
+\centerline{\large See the testflow home page for the latest news and FAQ:}
+\centerline{\texttt{\footnotesize http://www.michaelshell.org/tex/testflow/}}
+\vspace{1.5\baselineskip}
+\centerline{\large\bfseries\scshape Notes}
+\vspace{0.5\baselineskip}
+
+Document paper type selected under \LaTeX: \mbox{\ttfamily\papertype}\\
+Depends only on the base article.cls --- no other external packages are loaded.\\
+The main text font is Times Roman, the math font is Computer Modern.\\
+Imperial (0.1in) and metric (mm) rulers are provided to measure centering.\\
+The frame on this page should be centered on the paper and 1in (25.4mm) from the edges.\\
+To maintain accurate dimensions, do not scale page when printing.\\
+(i.e., deselect any ``fit to page" or ``shrink/expand page" options.)\\
+For complete usage information, read the \texttt{testflow\_doc.pdf} file.
+
+\vspace{1.0\baselineskip}
+\centerline{\large\bfseries\scshape Palladio Font Hinting Test}
+\vspace{0.5\baselineskip}
+
+\centerline{\renewcommand{\rmdefault}{ppl}\rmfamily\bfseries This is in bold Palatino/Palladio.}
+
+
+\vspace{1.0\baselineskip}
+\centerline{\large\bfseries\scshape Ligature Test}
+\vspace{0.5\baselineskip}
+
+\makebox[0.85in][l]{\textbf{Ligatures}} ---~~~The office was affected by the five flawed mufflers.
+
+\makebox[0.85in][l]{\textbf{No Ligatures}} ---~~~The of\/f\/ice was a\/f\/fected by the f\/ive f\/lawed muf\/f\/lers.
+
+
+\vspace{1.0\baselineskip}
+\centerline{\large\bfseries\scshape Math Tests}
+\vspace{0.5\baselineskip}
+
+\centerline{\normalsize\bfseries Large Delimiter and Operator Test}
+\begin{center}
+\begin{math}
+I = \left[
+ \begin{array}{cc}
+ 1 & 0\\
+ 0 & 1
+ \end{array}
+ \right]\quad \mbox{and}
+\quad\Bigg(\sum\limits_{i=0}^{2} 2^i = 7 \Bigg)
+\end{math}
+\end{center}
+
+\vspace{0.25\baselineskip}
+
+\centerline{\normalsize\bfseries Minus Sign Test}
+\begin{center}
+\begin{math}
+\mbox{If } a = 4\mbox{, then: } 2^{-a + 7} - 2^{a-3} = 2^{3} - 2^{1} = 6
+\end{math}
+\end{center}
+
+\vspace{0.1\baselineskip}
+\centerline{\normalsize\bfseries Problem Character, Times Roman and Font Kerning Tests}
+\vspace{0.5\baselineskip}
+% here is how we would directly access them within cmmi10
+%{\fontencoding{OML}\fontfamily{cmm}\fontshape{it}\selectfont
+%\symbol{0}\hspace{1ex}\symbol{9}\hspace{1ex}\symbol{10}\hspace{1ex}\symbol{13}
+%\hspace{1ex}\symbol{32}\hspace{1ex}\symbol{127}}
+\centerline{\normalfont Math italic glyphs: $\mathnormal{\Gamma,~\Psi,~\Omega,~\gamma,~\psi,~\mbox{\t{\mbox{}\mbox{}}}}$}
+\vspace{0.25\baselineskip}
+\centerline{Large Times Roman italic: {\LARGE \textit{z}}\qquad GS kerning test: {\footnotesize The ``Problematic" little quotes.}}
+
+\vspace{0.25\baselineskip}
+{\footnotesize\textbf{Note:} The math italic glyphs are in the control character positions
+0, 9, 10, 13, 32 and 127.\hfill\\
+i.e., \texttt{\string\Gamma}, \texttt{\string\Psi}, \texttt{\string\Omega},
+\texttt{\string\gamma}, \texttt{\string\psi}, and the \texttt{\string\t\{xx\}} tie-after accent, respectively.}
+
+
+\vspace{1.0\baselineskip}
+\centerline{\large\bfseries\scshape Picture and Lasy Fonts Test}
+\vspace{0.5\baselineskip}
+
+\def\lasyglyphs{\lasymho, \lasyJoin, \lasyBox,
+\lasyDiamond, \lasyleadsto, \lasysqsubset, \lasysqsupset,
+\lasylhd, \lasyunlhd, \lasyrhd, \lasyunrhd}
+
+\setlength{\unitlength}{1cm}
+
+\begin{center}
+
+\begin{picture}(12,2.4)
+\qbezier(0,2.4)(2.25,2.8)(4.5,2.4)
+\put(1,1.8){\oval(1,1)[tl]}
+\put(3.5,1.8){\oval(1,1)[tr]}
+\put(2.25,1.9){\oval(4,1)[t]}
+\put(.2,1.5){\oval(1,2.2)[l]}
+\put(1.5,1.5){\circle*{0.1}}
+\put(1.5,1.5){\circle{1.2}}
+\put(1.5,1.5){\vector(0,1){0.6}}
+\put(1.5,1.5){\vector(1,0){0.6}}
+\put(1.5,1.5){\vector(0,-1){0.6}}
+\put(1.5,1.5){\vector(-1,0){0.6}}
+\thicklines
+\qbezier(0,0.6)(2.25,0.2)(4.5,0.6)
+\put(0,0){\vector(1,0){11.5}}
+\put(3,1.5){\circle*{0.1}}
+\put(3,1.5){\circle{1.2}}
+\put(3,1.5){\vector(0,1){0.6}}
+\put(3,1.5){\vector(1,0){0.6}}
+\put(3,1.5){\vector(0,-1){0.6}}
+\put(3,1.5){\vector(-1,0){0.6}}
+\put(1,1.2){\oval(1,1)[bl]}
+\put(3.5,1.2){\oval(1,1)[br]}
+\put(2.25,1.1){\oval(4,1)[b]}
+\put(4.3,1.5){\oval(1,2.2)[r]}
+\put(4.9,2.4){\makebox[0.75in][r]{10pt bold:\hspace{0.1in}}\tenptsize\boldmath$\lasyglyphs$}
+\put(4.9,2.0){\makebox[0.75in][r]{10pt:\hspace{0.1in}}\tenptsize$\lasyglyphs$}
+\put(4.9,1.65){\makebox[0.75in][r]{\nineptsize9pt:\hspace{0.1in}}\nineptsize$\lasyglyphs$}
+\put(4.9,1.35){\makebox[0.75in][r]{\eightptsize8pt:\hspace{0.1in}}\eightptsize$\lasyglyphs$}
+\put(4.9,1.1){\makebox[0.75in][r]{\sevenptsize7pt:\hspace{0.1in}}\sevenptsize$\lasyglyphs$}
+\put(4.9,0.875){\makebox[0.75in][r]{\sixptsize6pt:\hspace{0.1in}}\sixptsize$\lasyglyphs$}
+\put(4.9,0.675){\makebox[0.75in][r]{\fiveptsize5pt:\hspace{0.1in}}\fiveptsize$\lasyglyphs$}
+\end{picture}
+\end{center}
+\end{testflowpage}
+
+
+% Optional duplex test page
+\ifmakeduplextest
+\newpage
+\begin{testflowpage}
+\centerline{\Huge A Test for \LaTeX\ PS/PDF Printing}
+\vspace{0.75\baselineskip}
+\centerline{\large Version \docversion\hspace{0.2in} Build Code: \docbuildcode}
+\vspace{1.0\baselineskip}
+\centerline{\large\bfseries\scshape Duplex Alignment Test Side}
+\mbox{}\vfill\mbox{}
+\end{testflowpage}
+\fi
+
+\end{document}
+
diff --git a/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_A4.pdf b/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_A4.pdf
new file mode 100644
index 0000000000..dc188be444
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_A4.pdf
Binary files differ
diff --git a/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_A4.ps b/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_A4.ps
new file mode 100644
index 0000000000..aea9717054
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_A4.ps
@@ -0,0 +1,3000 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
+%%Title: testflow.dvi
+%%Pages: 2
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 595 842
+%%DocumentFonts: Times-Roman Courier Times-Bold Palatino-Bold CMMI10
+%%+ CMR10 CMEX10 CMR7 CMMI7 CMSY7 CMSY10 Times-Italic CMSY8 LCIRCLE10
+%%+ LINE10 LINEW10 LCIRCLEW10 LASYB10 CMMIB10 LASY10 LASY9 CMMI9 LASY8
+%%+ CMMI8 LASY7 LASY6 CMMI6 LASY5 CMMI5
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -t A4size testflow
+%DVIPSParameters: dpi=7200
+%DVIPSSource: TeX output 2007.01.10:0228
+%%BeginProcSet: tex.pro 0 0
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: alt-rule.pro 0 0
+%!
+% Patch by TVZ
+% Makes dvips files draw rules with stroke rather than fill.
+% Makes narrow rules more predictable at low resolutions
+% after distilling to PDF.
+% May have unknown consequences for very thick rules.
+% Tested only with dvips 5.85(k).
+TeXDict begin
+/QV {
+ gsave newpath /ruleY X /ruleX X
+ Rx Ry gt
+ { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
+ { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
+ ifelse
+ setlinewidth 0 setlinecap stroke grestore
+} bind def
+end
+
+%%EndProcSet
+%%BeginProcSet: 8r.enc 0 0
+% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30
+%
+% @@psencodingfile@{
+% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry,
+% W. Schmidt, P. Lehman",
+% version = "2.0",
+% date = "30 October 2002",
+% filename = "8r.enc",
+% email = "tex-fonts@@tug.org",
+% docstring = "This is the encoding vector for Type1 and TrueType
+% fonts to be used with TeX. This file is part of the
+% PSNFSS bundle, version 9"
+% @}
+%
+% The idea is to have all the characters normally included in Type 1 fonts
+% available for typesetting. This is effectively the characters in Adobe
+% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol,
+% MacRoman, and some extra characters from Lucida.
+%
+% Character code assignments were made as follows:
+%
+% (1) the Windows ANSI characters are almost all in their Windows ANSI
+% positions, because some Windows users cannot easily reencode the
+% fonts, and it makes no difference on other systems. The only Windows
+% ANSI characters not available are those that make no sense for
+% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
+% (173). quotesingle and grave are moved just because it's such an
+% irritation not having them in TeX positions.
+%
+% (2) Remaining characters are assigned arbitrarily to the lower part
+% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
+%
+% (3) Y&Y Lucida Bright includes some extra text characters; in the
+% hopes that other PostScript fonts, perhaps created for public
+% consumption, will include them, they are included starting at 0x12.
+% These are /dotlessj /ff /ffi /ffl.
+%
+% (4) hyphen appears twice for compatibility with both ASCII and Windows.
+%
+% (5) /Euro was assigned to 128, as in Windows ANSI
+%
+% (6) Missing characters from MacRoman encoding incorporated as follows:
+%
+% PostScript MacRoman TeXBase1
+% -------------- -------------- --------------
+% /notequal 173 0x16
+% /infinity 176 0x17
+% /lessequal 178 0x18
+% /greaterequal 179 0x19
+% /partialdiff 182 0x1A
+% /summation 183 0x1B
+% /product 184 0x1C
+% /pi 185 0x1D
+% /integral 186 0x81
+% /Omega 189 0x8D
+% /radical 195 0x8E
+% /approxequal 197 0x8F
+% /Delta 198 0x9D
+% /lozenge 215 0x9E
+%
+/TeXBase1Encoding [
+% 0x00
+ /.notdef /dotaccent /fi /fl
+ /fraction /hungarumlaut /Lslash /lslash
+ /ogonek /ring /.notdef /breve
+ /minus /.notdef /Zcaron /zcaron
+% 0x10
+ /caron /dotlessi /dotlessj /ff
+ /ffi /ffl /notequal /infinity
+ /lessequal /greaterequal /partialdiff /summation
+ /product /pi /grave /quotesingle
+% 0x20
+ /space /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus
+ /comma /hyphen /period /slash
+% 0x30
+ /zero /one /two /three
+ /four /five /six /seven
+ /eight /nine /colon /semicolon
+ /less /equal /greater /question
+% 0x40
+ /at /A /B /C
+ /D /E /F /G
+ /H /I /J /K
+ /L /M /N /O
+% 0x50
+ /P /Q /R /S
+ /T /U /V /W
+ /X /Y /Z /bracketleft
+ /backslash /bracketright /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c
+ /d /e /f /g
+ /h /i /j /k
+ /l /m /n /o
+% 0x70
+ /p /q /r /s
+ /t /u /v /w
+ /x /y /z /braceleft
+ /bar /braceright /asciitilde /.notdef
+% 0x80
+ /Euro /integral /quotesinglbase /florin
+ /quotedblbase /ellipsis /dagger /daggerdbl
+ /circumflex /perthousand /Scaron /guilsinglleft
+ /OE /Omega /radical /approxequal
+% 0x90
+ /.notdef /.notdef /.notdef /quotedblleft
+ /quotedblright /bullet /endash /emdash
+ /tilde /trademark /scaron /guilsinglright
+ /oe /Delta /lozenge /Ydieresis
+% 0xA0
+ /.notdef /exclamdown /cent /sterling
+ /currency /yen /brokenbar /section
+ /dieresis /copyright /ordfeminine /guillemotleft
+ /logicalnot /hyphen /registered /macron
+% 0xD0
+ /degree /plusminus /twosuperior /threesuperior
+ /acute /mu /paragraph /periodcentered
+ /cedilla /onesuperior /ordmasculine /guillemotright
+ /onequarter /onehalf /threequarters /questiondown
+% 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde
+ /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+% 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /multiply
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /germandbls
+% 0xE0
+ /agrave /aacute /acircumflex /atilde
+ /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+ /igrave /iacute /icircumflex /idieresis
+% 0xF0
+ /eth /ntilde /ograve /oacute
+ /ocircumflex /otilde /odieresis /divide
+ /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /ydieresis
+] def
+
+
+%%EndProcSet
+%%BeginProcSet: texps.pro 0 0
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginFont: CMMI5
+%!PS-AdobeFont-1.1: CMMI5 1.100
+%%CreationDate: 1996 Aug 02 08:21:10
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{37 -250 1349 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA06DA87FC7163A5A2A756A598FAB07633
+89DE8BB201D5DB4627484A80A431B6AFDBBBF23D4157D4AFE17E6B1C853DD417
+25F84CD55402AB88AB7EEFDEDBF2C2C731BD25567C53B474CCF739188A930039
+098A197F9C4BE7594D79442B2C8A67447DE44698321145D7689B91EF235EA80E
+B600AA8E238064F154284096C4C2554EFE8DDF13AFF8D3CE30E0999375C0FEE6
+F992DEA5FC3897E2CC8B7A90238E61E41622DE80F438DD994C73275CC52249D9
+F6686F87F394FB7BB668138B210BEC9E46415A1B58C990B81E7D7DD301143517
+4C2A259D2A0A1E200F8101469C10D7D537B0D4D39296A9AB3F132DA9A3B459B0
+F850E2B3A03BDCB35AEF82285D19C38F474FB414F8EC971B994D1C7DD753B271
+2B71549DF497C665DF0F266988209D9EB616E4D9BA229FF984E7A886DB01FD21
+48ED2E4859FD6416C2CE52537464EA884C8C9C2D1083E2B83BE4B766474C23B6
+6E8EC5003200AB10514BB44D14CA700416AB6B2683E80862E7D5B49A05526A32
+554BB23AB8B0824BBA198E3825CE82380CC0FECF46651E3E5D77F09465E73164
+20342822F29572BC7F73F2C3BF95ED3BB6FDEADC20C6AC866C4F2C679594D7E8
+8D944704A3C5D771DC39503BECAB89F34D8CDB8FDB91AFE21F3F0260D05E90C5
+73E2C13DFA022C4522E5918EE25038A0498FBB530DA33B0AE238B1C6ED03FC04
+2BFED8236E07820C5BAB411EAE1B31D93A2FA7C374B1725FEC359ABCB88E2C89
+214529A263D795AACB0B95A3AB2F4E08EF350C282CE521716DBB06E5B8291B3F
+5D4ACA230FA192F64BC902A4C8842C0F916F92FBD002ADD408BF0401D0284FBB
+F05D4C6DB631420747CC902C5E1617E6573612FB26C8378DF41FFB5048D3CF06
+4893DBA48EF4B043D760F60C75712169D16C83EE020C45369E443E853E1809DD
+F395B812067D6FDBD26111B34F42C21036AF952D0D767FD17F6959D9FDD46005
+D64FFF54772B50BB9B173AE79702981F58F9F235C591F476A31852174DF0619C
+A470359153DC32610E782B204E7945515464DACE9099B81EEECC7EBD4B5126AF
+C3FD9DDFB329AF1C95C41FA4A5F6958869509A23BD7210386329771FA46FF926
+0E54AC35106253EE140449425A8670E1F92B178A02A58EB57540F4BD8110E548
+BB584EA6D625C5F5FE0124A98E49915F1A1B95D2125874360EED1C4379FEF3C6
+90E5780C20309F11F2F23FAD635C44BA030B39EFF083A3ECCDD2641DCC67E900
+CFE9B1E3FA03479C9040349B7C63F8F01B3C994320994053DAAB3419B2E6CBA8
+E77DEF65584F1F4A752C94405C2DA24429B01DFFF073D51672CA0A8BF163C25B
+C7AFF6B42D0D8F13B854E1B43BF742C0C0BA111246F359A77E20E4C02DAA44C5
+C82B5CD3EC0614AC95E8858FD216EC2E7056CA6DDCB26B1FBC1311F042069F8E
+6090C3DBB16F20899824250E71C0624499D399BD11D98456DC1D01C2C3A7D67E
+52B0EA1C05B3C84053063A00D7B13FA0693A2972FE41FC68189CB93D3A0153B3
+DE44D4A5793FCF48DFE13A598A7F835C0813750113F198B82D1B11F4BEAA2DFD
+9D350FFC391D202ABE1E79B3F9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY5
+%!PS-AdobeFont-1.1: LASY5 1.001
+%%CreationDate: 1992 Oct 23 20:19:18
+%%RevisionDate: 2001 Jun 05 20:19:18
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY5) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-27 -229 1292 719}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385
+B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A390AA21B4410ADD58DACB
+2AD42A79FFCEBF5BCCCE8A581D96D6AAD643D895F9774CAC00A6A8D92AEC08A4
+A02A0CCF0E3F08DD617A811251C16AA014A03299D338CE083FB15024B9310FF8
+3C47BDEB06495DDF0D030131A8A7B7822CBA94F7031AC034193DA32E0B879A08
+F7B293CE62094800D1697C3071AA70D84150146305AE27E4BE4F9685C4DADBA4
+C78C9F00B51306E2207591D26BE99860489DD7F7038A297BEBA7E766252EE188
+13BF110548F1192AFA92AF38439C96DBA9D81C3E790B13C21BE3A9830FED8E08
+A2AB325A34D0C54462D913082EF42CFA3A8925BEB4093453B70CD5AB250DC2B0
+442FC3B945786FE0F658560D1C7CD5411D0CBA01A7B265EB0E61FF1D2D8316AC
+BB4E7A5865AB5551C237C008620BF29979E675B59017F33D91D862D64AC41F63
+78A4CAA4330B0C158FB1C175E3509274B8DF6BB57E87EDD9F8F048376A86365F
+AB5AE3175A715741E8436F8C0E7C8A52886CF625A5DB1F04D63EB95C153DE099
+E3FDDF1E39ACD864EECD402C94DD619B4C18C4AB936CE584D9C00ACFD83CAEB7
+C7759365391141034FE4A44C1D8BFFAA97BFD658372B3737421D0E8CCE68CE92
+9E55AF96F0ADB1E2D41B3BDA3355AD51B409E0AC3E1B3203574B147976FBB04E
+6A3577A67D69CCAF94A1993A3B8E59FDCFB206827290F095DA482A4E8A524B59
+FBC30621718C5B349A0FE15B70F69B13BBA1A525E4E636DDD7491AF8341EFC7F
+1A3C3D3ADD5C7B2ABF2C1DD46557079A31906A4EC977243F6765A90D75650BE4
+A6EFA892E36DC414732AA6A35860D0B09CB66E52EE169C4DAE28C84120465F38
+3675032879D11AB7DF0A41574D6E03259574AEDCD9F1BDCAE2A7F31507CFAB79
+4147A907B32D602D74E4A90B31E59A7341A99B7D5778E99D873C284ED52D7BA9
+B10A1C4EB2CAD13870585C98D4A19533C91511ACC9C350A0D4F1210A1BD6161D
+CDE73158FE0DBBA9F278FA05C8441C97645FB55B63210DFC4C0A9AE41D7E8596
+B2B83512B3E02E59285FEBCCABCD33799C0A5549412E6D661FDD8527F527869C
+03B405A66C1D6169F0AEACDAD5689BF92E2BC87DA6BE16BB923F6B6C03C40867
+15E5F7A6BE5A28CE5823DC7A2805DCF47E58ABACF4335F40A788DFF5377F57DC
+CD7B122391C3CFB418B5B24881090AA3C74F04BDE083B6B104CEAF13CBE01BC2
+CA7E56FE3ECAD50FB69BDE76F29047E14660185F75C75EBE047DF8CEB1EE9C7E
+9CCCE9BC899D15AE2FE656382B01ED0702B6AD2BDEBEEFB62E09EE21658597BE
+61E80153A3E48A17AC512DF9142689A3C340976600A3337DCAE4EB9E878F54B8
+02FC8B352D2967A8D14289C751420A82A3C3643706B4DD5EE937A60B421646F0
+4C16A80A3EC6F0C0A3773613DA269A113EF1C6273DBE00D5CDCA9ADBF8D23BE1
+8E37110F48EEB2FDE277B26EE0D9FBE2ADA80879A235A15EA44DA444CA3DA312
+822B584D97107AB8E68C365678428513A5F81668D166908801E1D68E2314EA6C
+96AF9F161BBE8C53E03F2005F86B8E698CF3F6CA7AC0E06187D6C450BD635CEA
+5FB0A6AD71F6E2BC94847AAA6954D868E144E39423D51ECDCB9D12D68CD7F8D1
+4D1FA63DE0AADC8F6ECBA7F62427DB63FF1D957E20DF2657A631F47EED085AF8
+FE2A0CC8E1C45DA0C90F2A7A1C2276162816EE53AB70509572C3A364B357B2CC
+CA8DDB9AED0DAF7454E574BBB6BD5CF096D27A558041F249D08B8F3D193037F1
+D9331EA07ACD00C451D190BFD03116BF604096EA8BC078422F688B12C6B0677B
+0E338C5ED442949F4BD96CABC55D7607AF05119520BF06C02CBE6FDC28AF4C0F
+0F9A24B8DC987E3C59AFC8839EEC4216C95E06E2C1D82857C2657EFCC02D821E
+4AB5681B6254C24C4FBD31492D321D696C9198A6AEEABC6BF2C9F840D0EC0972
+3FF90FC8C523673D8C495C04B1EAC196B08125E38099B21BA9AB7069629AF56B
+55256D92FD6230CFCFA765E7C96C563473FB55EFDE3BC4DB2600A8E117CD2CC1
+EB4F554FC85A6CC5F5CDCF8B791BFD57F3CE49AD103B123837F27A0C17E4C93C
+9A8DC69149C0355D6C39DAC2DD81DB6C45AC4E0A2CFD0CA03C7D92EB325D9B36
+059B94A7BBAC18709CCB0AF1709F93E503439AF71D366AC175E2E546E67C79C0
+8C07C5360D85A57864D36FB1F5901450F08E59B7FDB2BE80E126BBCF0AABEE0F
+E025C2A63B91018157F189D143EEFB7298233EB521E22ACD332ECF47F884E13F
+446E292786E0240490B0E20C2173252F448808C425EAE6CFD69F5D684333044E
+200138C459498DE37A5E132EDC39FF39EE4132278045CCE81F933CD9C12B037C
+3F593CEF7D7985075503347B08BD3438656FD14758358BBF35658CA1388AD360
+00F75C631E7B38A460FFC64ED1F456949AB9C8805D280DDDCC0EAEC0EA8ED5A1
+19CAF622DD05ECAB3AA5C6385897257333C0231A38A5CD35A1EF7369614E5C0B
+8D3B4C71EA9940D3450C45E8F4D328414C054F20FC98BF20CF99C202601F974C
+30212E7F23F5F0D4EE870BEEC855B0B8BD58D2ED18B4AADF1D5E06B78D5F203E
+90242571A3921E24542F8E0E487CD857390656B354E9EB2252A304467DB6F94F
+EE1CAFC411C448754738751C2E3C98114549B64E817AB37CD04847E78ED21DF9
+294E20D298FD1A653172C57A33602A05819BEEEA5E3AC213C3DB962E794892D1
+25B27B0F5E79276A361B4E32F729A303E8D30D8376CB496B5D9A4A1606A3975A
+356D09711AF5A98FAA4C8524D5ED62A32B590B9F604B6EAB777C94E9C16ED18F
+908F3B5ED99F8BAFFD4AE02367F0EFCB86983CCB62C698168BC8F9AE5A4A15F9
+071BE99B1667210365FF2789A04199022CA08DBB9D7DC39CB6E99D41F460CEAE
+C5BE45EAD3F80922732197CD622680D7B4103EBBB4BDB0DB2A831C5D62016D23
+49A8A694709733A0A6D73CC6633E72F5E57A0F499D93F6521C31A55DE13C1301
+0622B1509C6FB6D123E6BCC083AA1F070D40B24C0E1BF96B8F2DEC1265A7D73C
+8461C573A424E83C809C2CE297EBAE4CF82376126E6CE96EE05437A2FFF38F2E
+D37EE9E86DB9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI6
+%!PS-AdobeFont-1.1: CMMI6 1.100
+%%CreationDate: 1996 Jul 23 07:53:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{11 -250 1241 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
+4391C9DF440285B8FC159D0E98D4258FC57892DDF0342CA1080743A076089583
+6AD6FB2DC4C13F077F17789476E48402796E685107AF60A63FB0DE0266D55CF1
+8D0AD65B9342CB686E564758C96164FFA711B11C1CE8C726F3C7BB1044BBD283
+9AA4675747DF61E130A55E297CA5F0182A3F12F9085AF2F503481071724077A9
+387E27879A9649AD5F186F33500FAC8F7FA26634BDCE1221EC0ED0E359E5EA5E
+6166526FEB90C30D30099FBDC1BC2F9B62EFEEC48345160804AA98F8D0AA54B7
+A480E715426651865C8E444EDB798C7E11040AF6E5A7ED1888653C6DBF5E6169
+70BCD9C063B63B561EF165BF3AF11F8E519F37C6FDA2827685739DE2C48B5ADE
+EE84F067D704D4511DBFA49E166D543CFD9ECD7417055D8A827F51E087CD2927
+BAFC7E6CFBD70B0FE969F890A11149D3D44D422C3370495DA9951AEE7253A49F
+3A9444C8CD9158D84117299F7F2332FEB0F94E6ED8BC7AA789A3219BC2F227D3
+3B5BC75FB53B55D72AF4A6A7BB613FA235B11BB37D059FD87127CEF73D5B3FBF
+9F91ABAD78BD9240BD9525EBA78095EA0BDB25D1A19E876F292882EAD5619D46
+D20317A345D931F4FF4EAE6216C27044CBA525E3B917CEA25A04C120466C4B93
+FC720E6BA832A06CCA0A3916CEF0968D49085AEBD243C41A448289A6F05CE3F5
+79148DC112A3CC7E8FF810B8C1A09E05F496C0F1EBA334E42E05C376C98F5F69
+C06C71BFC0A2F3AC9951CFBB143C66FB84F9C4ED27DF70869352D61BD5E11508
+0797B87C71AC58D7C35AB3247575482E538773F05A104B80EBB74DCEF9C44CFA
+82BA0C30DB282E2233AFCBAA7A2627ECDDE91AA975707FC767E0D13F1B940EEB
+60D1F1724715C239A413E36A5EFAB56A18ABDBD64D8ED5FC0D67E15607E5D4B5
+5EE67E98F80DE8B1E8ABFBA6468C2DE562A90F1A24A1E8237AE8F501B14B19B0
+F0BB6B32A40994A0BB3FD4910117649144DA32973BEC68476E383A859606DE4A
+7BC1A21C03D4132B724BD82AB8BCDF711410F53844B0D90C2F45A37ABBFE44FF
+EACA54C07A200E758D08D1547BCFF41CFA42215924B6384CEBCA425DD007B038
+11479D23AF3421EFBB54445CA5575940B7D07CF586
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY6
+%!PS-AdobeFont-1.1: LASY6 1.001
+%%CreationDate: 1992 Oct 23 20:19:18
+%%RevisionDate: 2001 Jun 05 20:19:18
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY6) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-25 -214 1157 702}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFD11CE
+A6A468ED59C5E8D61E071925A313CD724DB9AF18F4685B5AB09F99D492546242
+EC64939219938D6EFDF2A6AAE7108914A8EA6E0D72F2C341C43044B15BB57733
+0267A343F334FFF02502043997066A1A038A7DC53E9F134B7EA6E8666B2DAE4E
+C538B8188BE490BFAB4687853579DCB21D9C284E719FC00C4E6CA47E7B409E83
+544DE1C0B2B4B9CDA2BAD11A47FC4246A540175F087AF2A0F4C891C2C9D116E6
+67CA49E139EB7C6B564E6E70F36FFC1A705F3097F10CE51FD414F6AC2AC8E6E9
+5DCBC1DEF33CABD5DAC1C4492BC1D68F16DCEC027CCDB3C1925EE32CEC72EC59
+1515B38717A7372D0D8D933A3015AE1F92BD8C23F6325F63AD4656C5A22A11D6
+34915B5FD9A49E6CE8FC44CA04BAFAF2DC195F3C89C40B4EAA91D52FFB43DAB2
+A1E061A2949F85076D3802368FD2A6BAC734FF4FCCB63C3A7670ECB6FB858770
+0FD09ED49B58FB5BC7220C67DBBE72A519D4B9770EFA82F1F4D475604EFD02D9
+23883022DFED473D54B236568DB92608EAEFCA2AC014DB84BDAFECE809C12932
+958505D785FFE5FE36CEF9061EBF42EA2B893919DE58795541A4F135D7B046E4
+A3CE840FF31689C022FF348C6B9D67ED27A90EB433BC9E7BA427334A47BA6406
+6CCC93A58DE09326434DE576A4F10A8259B1C48C68A0C64E522131713B598990
+DA46A5B5B8B75A17DE7FE3573E9E6A9237C4DC8036E074170F623398C55A6A52
+683995825B90C6B901E5A2E0C3A0CA90683DEF996979D861394B47C70DE57CDC
+E3DB5DF5E76618EA773EE1FA040F9C34485E8EFFA57B0899151DF7E6C37F2DEC
+B3202DB12ECDD97BA814B10CB103ED7E8065674C4E7192F8E9563DF2BAECAC66
+1E6D6554499DC7B0C167694035E40139560285299687B2BD99724C163C563109
+FEC473583DAE1E9E7EC5B5EA8D8F54D5CF97B091550DE046B9F503D21FF39642
+465376FE0F4F25502755413B72AAE977A8E0BFAA13D89DE7D637343A5893A39A
+3AD67D500AFE8FA7768D6CE4C3258311539F90B1755D6F0FEC42AE55E2613544
+CCF7D77A995A23339073D85B79AF9E3312A218CB412485AC94EFC3205B8177CD
+1EEC825D6A0A7C282524DB50571F80D76B16337DA20C651DBE9153E92AC71C1F
+C40A7E582B0E3109D610BC3D0E0E4CE057FEFAD217B1873F240FC403DAFAD3A3
+E24625DC4EBBFAE70866722B038ABD1C56433EBE540FB3DAB8234AE447EC727B
+9A851D2049363C4D6060FCF6AA26DBF33A6383D50D87CADEB4CC5522D02925C9
+95871077165AD7988638C61C74996A3079A0BCB6A82ED01C0A375A4AB86AE809
+B6460AABB046389868BC540CB588D5837A5FE28D7B3307F30009E0F36B019965
+A06242C2A4B830AD3F2EDA1B15DBE11101FA1A1DFA048A334BFEE64A20AE1B64
+F56FB4D5227AC931FE297450FD1BA00DC0B86956BCF5C53D1A693204CC06E786
+7F2E3FDE1B2FF00899978D512C78C874285E4364989966696C358108A1B1AFBE
+97EC813B7AF5F11363EDE0C444D7928C9380FA1FAB619BDD3F008390B5393B87
+6EAB174F38F6AE46BE90E5AC7421E3537BD4DA8C0ED3E89C2B11E44A75679630
+6FA5FFC30AAC67645797355F3DF4ABE919517D504FB3F2EBA92E0C4D92C7C03D
+57424950FB8DCAF22D064247024F85F9CE2FCE0CB7D37ECC7549E1550EF9B6DC
+C53A50A77BC241066AFC952545F8D1013199812371E32CE5EF9B0B49F2C23BD6
+549CF426DFB46B41294E5CCE7CA6D5A3DB84C71060B06FD80BE2F9D3DEB6F6A5
+2188BC145EEEC74FF32B6BC58E9748AFEE06A53D689FB0570C2BF0F6D2D1D6D3
+629632E44CA9D082D0CF198220515D2D96FC743C80738C761B2751B9F0292BDB
+B0A41EDA10CCECD5173B33B9711B061B3C7A7BBE5697F08157479E79892D9E67
+EEAFBB78D45C116A9B8C86AC2D0CACCCA18CC9CE3C8D5C70992D22EE3915EC3E
+7887554856D511DBAD5338C88D19E20FFF9A6E1F769E60AE0A490EADED862097
+BC150C51358D39C6BE0FEE4AAAAA347549E7C8D48CF576CCDF84EB843BD313B1
+7564D3339A92B4B705A5283E3AE08F3CE831FBE8F0FA25A04162EA5BDDBC8571
+FC899AC5099DB53E52F1A6A3ED683DF325C5183E9DC96BF33DA09E493850227D
+5CDED23C8B91ADF5986EF631C506AD98FDA3C99F70158232968BC47395C9F619
+DDE8277FC6DC11033B5776631F7E6835963A31583D130EA93E441BB198A47607
+5684644FC170F51B5081517BE0CFEA848EA963249602627238B43C1C28EFA939
+0CF3CC7EBF1B43C04ACD882279C5AE6A69637D1A4FC536971E31B0FB62A048EE
+77B06E4EBC838531535D4FC76BD9C1996A897F9F3066C421D217954011CA8BDC
+52F89318A68864086E114CBA10C57950F8FEDAC24F96115EC11F3E711D710852
+2AB0510CFF52E897B75F97206ED8B7427169538FA265702C54C30EE3277E3E61
+A348E7EA0F9E7FA6328B12C20350F36E1537CE14BE5CF749412B68943CD21B2B
+85DAA2C273C550D3DF11CF4DD6E3252A6929E08473E1E533002EE44F665F73F1
+0E83063248942AC4B7DA6DA2E58049E9EBB6F3D714EF7330EAA07052C309BEE7
+A8652AD54CCA26C6AC8558D014275A8013A770364C61486B3EEBD991149B17D2
+54B84D67A868542345B1413EAF4CD5A1031FE1106A133673080B578C75F69FA1
+56C171707D99EEDAC297D8766E318D8345831306C3F749D6491E0BB99A5EC75D
+F56748B7A36A0EBA27372EFACBD2DF983E1DE42218245F3C512FBBBE449C1809
+B62546CED082944CD2147258DF2BC7A1C02F77FEB9C8846E5BCBC37CF2B2F588
+1A2AB3DD0242BF23A0D56B7003CD911DFC028FE17EC059A61BD5D3AA6CF468B9
+B4A59D7DA9BB6FBC83612F37F3DFB5ED995C4AF52FFE29477754529B4EF8EF62
+B7236DFD888385BC8A45A339D443709BFDC5D118632FAFD062128D509CF60FFE
+268D44959BF99BB67424490479553FE856072A3035FD322E1CFD46A294946853
+7037635FC069B33AB98716E4CAB017D671ADC01FC7985681A199B7CBAF7B82E1
+A7AE03B610AECACE29734930DF19405346B22B957EF25962B76A0779747CD40A
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY7
+%!PS-AdobeFont-1.1: LASY7 1.001
+%%CreationDate: 1992 Oct 23 20:19:18
+%%RevisionDate: 2001 Jun 05 20:19:18
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY7) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-23 -206 1077 685}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FEA5F6FE
+DB9D0AC1A487281E2A1B534501CCF5B67ADEF8A2C129B199CF24D46D7212A046
+CBBFAE80486200C6037B3F9E995C34C97AC775B527E2557CD1956CB28CFE63AC
+781572153003A49D0913ED58C88D0F946570FD9BEA98F7FEF6D5F7E05F69595C
+2E6FC1480027F2EB1FBBFDADB6D6DAB4C2AFEC00F2E996D8AC8B25C2C0F59D23
+C99F2767325EBA7F568C2F6C191F4ED92BB5A9B8681BB4C100C442465CB0B4DC
+6F99D91DEAC92D071470EC3E39A664CFBDF9A25B8147C9272AEAC2BDECF5F9CF
+4456450CD3958BE859995D22DCBDF4B291F1B149091DAFF47D5AEFA9496FA24C
+565554AF04D35E66B806C5E658A9406E215A8504858E744AC67FDBC2B68CFB12
+9CDB40F754A806D7FA078B911831FA2BB52F58C00DF6D43DC004780026BFACFA
+6488683940E88290FEC54CF5C92D9D07093F70736336F56C1723B3AEB01C18FE
+8021435F3744DC38CCB5706BCD226653750F9CEE0BBD15A0580678F2AA58D58F
+6578DB30979BA9BD10EB02BB37F2E4CB7F083B2C699C39F179820FB8C2DBD7A4
+E7EDF03E83F7536946A3F532650AC5CD48C10BA3AB8F67915EAC0053592CA317
+E0A8EFD1322398DB7D9B32ECE97791A00B49839C58E426531833D30F153863E9
+2A79516C2878AEE6916F0FA78F94714ED709C10DB24955FC0DE6769D34E4E1DB
+2ADED1775C5A5A6313C93B6A0195311B4A334B4D9B914EA59194239AAD1358BC
+269B8CBD35A7685ACB29282D46440A38083B9CB2258BB81E2489B5FBF551AEA1
+330D4DF70E9E650964A369CA2F77DEBD0CDBCECDD2DFE4EE609FBBCE90433716
+E03D3FF981EE21D92EC9C31C40517D441C6D94691DBA3D301224650AB66B633F
+53D1E9DDE55A114D0788337E57F5DDFAD75EFD564174BE30A5CB9B93ABF09D97
+438F5371BD9EC9E8823B5363CFA1ECA372E4903281DD93D5CA9F38F236D80F3F
+539E73FBD69EF7A8A0CDEFE0D40A07F10C5A8CF320B6AF2CDCEE2C0BC06BCE4B
+28B5810DEAA9954BEF2AA2394F5E3405E2B963501E5F17ED849B6B6C598B347F
+6849B42A813CE9B2AB83F7EC80AD6CB466A16262B6DA10D7D330622A30A1F31E
+C50BA84B0969F0CF412854C4C9A643BE43EC46CE6C80986F77B65432CB9BC8E9
+176F8C9574DEAF70972EDC9500B26C755EBC9CEC94F8B48D04A502FC35A33750
+21CBA447B7214F9DFE0DEEB104B9A5316DBE17875BD32869C6D45B79F3420C18
+BCE4CBBF4CF983AE79307FCD87D4C638E47EED790C1C102C0F21D8A7D50CACBD
+692EAE6D2F3E67ECF1B5955870E0FEB10784F91535052A2FB2CC7E507090208E
+B63AE57F1F5639D94B0178C9DF580238FD4DE699B0C2F3C17C38B45076F6ABFC
+193ED3B05A091114B9A435DB94F63100206A232B40697AF39FD16565203B0500
+9ADC01DA83032C66BE24EE0FCB6E3810B49E33A8E899B7375467F1549B8C2A5A
+0019D84045606746D5190789F3CF91475FDDDD1CC1A1FACF4F9AB6E0CB76B628
+3C430C337B27CBE624E02DDDAE7B84DC4F04C4BC506EE9DFF90A74B71FDB4E2E
+6635CA95F018D621CBD675954EB0C01194F52BC772371BCE712EA3B66B34594B
+067D4720DCBCCD123B7DA599062A44FB9C14D25488BA977E1239437AAA4CE569
+B0E1399A12662348A48D0A95512D09B66AF5E6750845D896931D138F61BAC384
+A04B43082C29B4503F10A447A27F6F6D9991A2AF52F8077C8E38FEE89C4B1974
+C4191AE20D636353A97E2D14A063739E60F9BBD908A7D52FCF6542A0D37FE038
+74EB39116D6106679597E9FC91837E16C146C9C9200D4C117C04FD4641A63BBF
+1F687789469283FB653FDB47D398B0FF5BBBD79EDA99E9133C83A7BC461BB732
+BAA66642565E7BEF23595655B04B31EF555C4DA7AE094CF28009B580F35000B6
+EE4A955E18F7D7E3B181700F3588BF866AF9A1A6FB58E7472C35F778EF01BB46
+7D7D78F022A2CE9230DBB90F56C59E0AB11D6DD15A3B0E4BAE986190DDEC8F59
+77E5787B463A8A4CCFCDA0AC183B711DAD5410628080EF997E5278945FB5BCC7
+EF0F4C9EA8F2ECA6B3F3C525A702153A100A5C4C49F7EB06554003FE331BE1A7
+45DC11F5708B6028641320B6F5990F2FE4542257FEA1A254B508B1EB34A8A642
+99ACCF98ECBDFB972E2A86ABB96B03966E3A38768A3B40EF6B03C880C0A29801
+603152BFF3A837615CD6B03B256A9C4E75C19C4923A61BEF7ECEB834383D901F
+244CBF6431A04E4A0627F4F1D7F595ECB58BF7069E3C2C810190E9BD784137CC
+984A1E9EDF8D295614506AF6309DBEB701952B4CA41E1F2592C2EA93FE08E3C4
+5021C82DFCE874AEEFECD40A6F82253CA4CF5EC6F63C364D156D98CF39C8ABF3
+9457E7063B88B1543220BE8F7988A6AE3C83A0DFC2D12DC48D16CCE5BE3A4FDD
+31FB3C0D9DBAA567D53D4812E6D2589E265D95C20B1F097B104AF01601E42D0D
+51BDBBBDCE58A4A7D8F37CC48AFC7561EA5138A0AF134FBA9EE976C6F2567C36
+5B621B27120D88AE4F5CFA90AAC76804248C59A37296E05DF032A7A884B93DF7
+A935437A1B168896BBD50080AA39E5293DA4BEC093CE1BE802D7A03828377267
+70BB66A164206872A5316D9824E43E308B5E0DF061798A494F09809E648C0698
+50136A54E95CD405638D443240937F6C13D6D8DF02F168206D6EFF2A9668F6C4
+9CC604275EF8D49ED2182D7EE0B0AC66428C7151239BE6AE126FC43D773CD7E7
+3455901C72581F38CFCECCD8FCCDD62C23C06814F4E6DDCE72644F49185A7C2E
+C7221AF9F1704B3491A44CB345AC39800370229028B2E8599573534764A0571F
+AC160D18CB0F4F4A74868B1DFEFFBFADB58964094F1012B557072A709EDAEC2E
+34125F050F342017648FE8E4ACD6481FD13CC1BC9C801E84B0507CD4E9893E06
+F4EA9DDD2BD5FC23A7DB3141C13C60D3C27D4F735DE32172DADEE46B203AC03D
+C1290C3AEF0F8470511C062A3119293620EBD0BE2321C3A7E783452A72455140
+5A84EE5CD856FBDE47EAAE9E905E6A881C0A22572A789A838EDEDD0A808586CD
+ABFCFBCBD9688C2188156A7C1FB437CE3A85A1EE3AF70D55B3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI8
+%!PS-AdobeFont-1.1: CMMI8 1.100
+%%CreationDate: 1996 Jul 23 07:53:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{-24 -250 1110 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
+4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
+788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
+C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
+617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
+D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
+532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
+5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
+4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
+DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
+B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
+A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
+8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
+D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
+AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
+AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
+A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
+AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
+85B385124C2B6534F3CD1866AF92009D93B97F763AA3C28584857D64C6AD5C24
+68B3330EC1F0EB0EBBB855EE71262417C4C15AFBAFAC26FDEFD63C49486338FE
+64211DEF7AFFBC82242BF22DD3AAD6FB1356B1FB6C464FFCBD266112D0F6D9EA
+7688B88321AC6512E7BA5425531791CB08FE6ADEEBA6A503974714F7EEE8420C
+9374BE70F06289C3D329DAC3A0D9696E451431465340E48CB3FC0DDEBB369028
+8DDA8A5D594537EE051D51CADBB0BAFC654AA9861BF12B3BDC5EEB6C04DA99CE
+CA42B984B7D75C783CCFCFBDF5DE550E10C82CFA1582DBDDE6C3AFD64496CC8D
+88C037E851FA71EC285D00266AF95D70F6E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY8
+%!PS-AdobeFont-1.1: LASY8 1.001
+%%CreationDate: 1992 Oct 23 20:19:19
+%%RevisionDate: 2001 Jun 05 20:19:19
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY8) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-22 -201 1003 683}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385
+B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915FC1B8F27464D2AF01
+2AF0993BB2C836AC0BD99FC99CD6A00B93838BFBD0A80D69042E191BA3FC87E8
+1D6EC6187753AB286E7FF4C23C4E829888749AA368CADB0540D525F05F029359
+94C4B4B8D6003C67944BA83866461C4A6BAF9FB97FAF084D2A7132624D138DDE
+195A5DE0A175C9CA4292C8670DFEA277C4C9DEE1D2F46517ACC059C064E58551
+4544B9BCA7CE84F1CDA0D901A37FFD838D77B790937A8B907A59786D65DE9B3C
+E6CFA78A484A3F0BC2F7D6F2DD4647F1C315B4182432A3158B76F7E61EB25B42
+70616F483FB9F72F513B878165CF003EF22731B797E19FE5AEF9C26D4D6F4155
+790CF91D9AD2CE583A3CE14D529FF0490FF7B6FA554E2EC883504B510BFC7344
+1786325BA895B507C892612129F31490EE255AD204F18A4B0B866C570D118AB8
+83816F6912AFF49E6A3C81BA8D791F3B912D1C1C9261B20CF3727EB1DBC3ECAB
+27B7E77D250A702A69AEC05DDD58524A90FC41169F74620CBE11884E27742059
+6DA249E7D125472C186C55489AE5DF7860E7A8EDC43314119AF74434D378E6A9
+D29EBCEED12CF0721AC18AB5D5C8FD89ABE49213BA35FABD5689291643525D4C
+84C939845959F59C9CA1CDAE95A22767B622690A18924781A4667836A44796BD
+B5DF0FF2AAE740226405A298AAAC09412B2DB12E5B8584AD015374BD13F1A804
+BD47E3E1FCE19D763E91AB70BC63616D3087C7825DAFA62094DDC378584E8F74
+491DA17DBE1671F3D3A8820777E56FC850ABDC7000BBDE7C1E1DA5724371DCFF
+20D85A2E81A866DC310F021062932402DA89D04FA651505CB64AE5EA5D7E9819
+7FD725C4CD38306946B6CAE358801AFAE8FBBB91A77D789C0951CAC7D5691334
+E21682E3623D4EEED1DB5D979615DC06118886BEA0CAA8D2AFEE921F98E1537A
+78FF7676B849EC47087027A349403169CC50A83E20AF46469D36EDE658D18974
+C2B98AC9BD62EA2387826D99171394650D6B8A3599EB016268F5BD75A04303B8
+C62F6E678DCBFDE719D9C602ADDEB996066D75215112E91A0A78493902ED6054
+C2F674D804B5D83CB89A5852181F96C82FCF32AA99CDC155F7C751D27E88B11A
+7AB207FF72C432AF80FCDB8795E3FE87D19BCAF4B32933B4A10628EBB33162D9
+8E543C1E5A1A6B492BE91D0EB669858E17E0B72274401D5A0932E732CF0F0341
+5DC3D0C8CD85D44EAA6DE02D199B746ABD99DFCE24689AD232D6656C8C479959
+172FB8D61AB547BDE06224C5A90B4F986C08674470342AACAEEC0610E68F6CCD
+57713A0B4228679A04958DB54DB8018E4AD4DAF84CF430F0CBBC2985EA0C6DCA
+B41100A728C243E09547C3D96A6A990FC26E8E75F7B6296D130E5418D1111F6C
+2E972620107A3C3E4D302F9025B3E391598CE7146B75254D73AFBE9FDA8F007B
+AF3BE01CAB4D9B3260C1AF89C532AA0638240BC3BF72E4A7BDA2D041256A4771
+2D9BB499BC9A12791DE95B0CEE9F0D3F083F85D84C24318581D31830EAE12722
+F914C69FB7DD78B7F0337BBD86ED9A06346C6C496356BA80253F7F539EC83C9E
+9C392D7CE22BF8C2BB86FF703D6A4EBFED80D2CAA8ECD6B4FCBE31C8723EA53A
+DE5EDEBF9338F444D495232F02EB76191ED13B43FD73E003642C15CC621A46A5
+FDAD57EB79BB15284AD83971D5761F9C7545362D4B40BD760BBB3831897A3808
+F76444223FE7938FECABAA74ECB5966872ACE92A8BB08D592ED7E94A8393A23A
+3DCC707F4DD90A5C3CDDEB5B7C74B892C55AF0E5E549E182EDE50B62650FC5AC
+8768421EE4B579DD959C59A0F569384723182AAEFCD2D3AF23CE3CD8B3DA8276
+B5BBB58542F62AF349AD34F244CCB4C2E7B5959FFF6040980D5147100371FF19
+CC132F643942671A59E37FC5D63F4AEECC7E8EA765B1C9A974E45E6FF76B8670
+2FE07EB1084C573964406A336D4D1267005E6D151782F141D054B0EEAD1CF732
+8519C04E106468A07BC1B9C77BB9050D1DDADEA977B48A2C74968C5D7B44E7D0
+434FF8EA175BF9AD9AAE82CD35779AF0BEBBD4785B73DA4CA1B6A2F34E98EB48
+79F0FBF795BF8E701DCB9CA4E7751D512A97608A605F1CA40B9464F066FB71AB
+BCB047B4B7DB1F5F9094982E8155BF6F51C938CFCB6DDE52942CBE8A47C92D7E
+49FB24ADF5BAD9346C7CCD8C4FBB7F38AEFF1FA392F63A606CDCD2A1537A10A1
+456FBD4FB52EA11882F28780CC6D57F854E64EE2F1F7EE3F827CAE2139782556
+B1D7A6843CAEDE8E2D0B7AE46C368A19120400743E5F75263AAB200E7677C51A
+CF72986272B6CE6C908379A823B3D27496D158A26EDB5D6DFA9619ED8F8DAB53
+93CF7ADE3CAFBA9E368566829D1C8491A47915D7FBAE76B19513C37F58F715BA
+3BB07BEF1B9B544A4800A44B98F9791307D56AB0C813844212BEF6D904CF3CDD
+6B312D854CABEBCDBCABD8E694D6E1D057382E75FD0E5C02413A1CEE37A40F1A
+0AB42BFE7594296D0DB89576CC9FCD3E5439D9DFF2714EE8D98E630F130DDE4D
+4D915FE7FD7D3F02E82ED66BB40201B169B2D1BD566148BBBB49DDF6CE8508BA
+5105163CDF6BCEF9AD5266F3D658A16C43781520C51DB84A517561554336B1BC
+DDD9A8B420F4042C34F7C45137F1E1222426ABD550CEA46E3894B7B617F0DF42
+AD840A710D0712F5F594BB9C2495688B5575AAFBDECCE88BFCCF9F4ED82C92FF
+B0841B72A4DD4A536F3A5DC1EBFFAF7CD73CEB85DB608CB9F188751767B63BC6
+FEB16752D78E15E23ED954607757A479168394980EBF669A21821690C028070E
+03BB88FB45895C7D36E1A86BB6B08F4551F8FF15E8558A08CC2B1D07E5CC4AB9
+E6380DCA0FD6534CD3165B0E1E1BDDBDC0CBDF40F5D5543816AB8E292756A440
+75DCE54A8BD62EC74FF9554F424809BE66F084647328368B164BCA458BD7EDB7
+CED8DDB8D9A19B9F8EE5478DDBBE3B7659EC77C2A8101FEA2B08F70467645555
+8ACE06AE9D392F31824BE35737459F0BCD16B842600F8F260EB5032127C4681D
+73801EE15512AB855E390E33A7163C6E87F87E3273444018800EBE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI9
+%!PS-AdobeFont-1.1: CMMI9 1.100
+%%CreationDate: 1996 Jul 23 07:53:55
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{-29 -250 1075 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D6F5CA5FED4F9AC9ADE41E04F9FC52E758C9F45A92BED935
+86F9CFDB57732045913A6422AD4206418610C81D882EE493DE9523CC1BFE1505
+DD1390B19BC1947A01B93BC668BE9B2A0E69A968554239B88C00AF9FBDF09CCD
+67D3B2094C11A04762FE8CC1E91D020A28B3C122D24BEAACF82313F4604F2FEF
+6E176D730A879BE45DD0D4996EF0247AEB1CA0AB08FF374D99F06D47B36F9554
+FAD9A2D3CE451B7791C3709D8A1DDDEFBD840C1B42AB824D5A0DFF0E0F15B0B7
+22AEEB877FF489581DA6FA8DA64944555101EB16F7AB0B717E148B7B98D8DBFD
+730C52937E226545CF8DC3E07C5BA30739BAFCD0F2B44275A6D503F582C0FB4F
+449963D0AD2FAFDE33BA3D77BCA9D1DF878DDAFCA2E22CC4BACD542B282164C7
+97C2BDE318AF9D501CA21F6E662E7AAB75A5F24D2C182E598D175D44E88AB19A
+E7CD59584F95B389183EE21B525BF52A3F23C0FE5383A5565A19361D716F508C
+AAB78411CA5A4D27552CC1C435760D5A89D535B71C593E755C616661363308DA
+A683F54ED0C23FB2C225A008392B0B719F66F11A946A090B7C00B662A3C69599
+B4ECB0CC70C85C4BBBF207E0026F6C7A19F2ACFB7A60804FC98A4BFFD7BFFF2B
+9529E6D9D4238002BBC255BC62959D6F3381FE06E0621B879D5FE5B541D45A1E
+759A6E7DC32B1D1632368D09A97039DF255B6492B1B2B7E2C1434E8306ECA7D3
+5A79B6D614B4979F10988BC76ED53A5F45315CD7DA216221F842FD0F3E050DD2
+BAC23C984D506D8F7D614BCB6B244F5F41321549BB0BD041FBF3053307168680
+3435E9C9445A59A7C666418C4F2512C32058B1CE1EA47F00930CB228EFA5C55F
+1E69458EA5F53CB64BB754DC25A4385A270A8C1F8BF2C9937A809D321BFE9605
+045746539B38DBFAE253A7B6C3483B6C6E9FC204AA9442E43459BEFAD40BB95E
+F2A5F14EA47F4B6C6CD1AB4D9EB6FADBE69EB375844376A0D2A670D9BF3D41B8
+14B8B8C20FB508255F1258E5266CA75DF1E985D977B4612F9C2C9CE406940E7D
+721BCFDAC2B2F23A07990E9AE02920D85F2BDAB24E186ACEE7582939E534AAD5
+47DEEFA1BC3B1AEE113C6BCA30B1C4C6101F628ADE2D83BBC0A2DDB3CCF8D2D1
+22B5F7C7D15B16159F180D5E507F2AD813089277
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY9
+%!PS-AdobeFont-1.1: LASY9 1.001
+%%CreationDate: 1992 Oct 23 20:19:19
+%%RevisionDate: 2001 Jun 05 20:19:19
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY9) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-20 -196 971 683}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385
+B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A39158A5EB4E1CBCDD814C
+9F326497D38C51A121C75E0BF2CD79ED11C7B1A5C36F6CBC2C127360675F3C6A
+FB3C478FBAB07212200E28C5071E1833E27D60FB815F448550C55F3317441B25
+406435197E11759CA6BE6B17AC8600E4653A99AFDAAF4FD54D28638136D701BB
+FD2CF4ACFBF28E48CA313CCF5ED2BE032B7C9A07ABBEC9E6F6D90AB799716358
+37ED7BFC195D7243880801BC54BA5EB6CA604BA4DB433EFBC4EEE710ECCEA919
+DEA0BEAEE68DD8C9204DA9FF4A4B9DF203432482904799DCDF46556C1E68AD87
+0E39714C510904F488AD722307DBF46063E8185CF7131A749844CB5CCC0284FF
+62A7EB6B0779800ABA08EF65FD4A17CD265E56C22DF32F6779BF6269B21F97AC
+9BEBB084D2E7C04244665182DC0E86CA91A8B1B8E28DEB6D7EEA105D839F1054
+ACA14DF8CCC8A94481ACECED1628987F65CF1B313C1588EF96342B837DCAFFC3
+AF8A8725C5E02DD1ACEDCE5391538883E699F8A7A101387F0753556A0B8061BE
+AE0B2899DCFDEFEEA6C97ED50D764F6C7312FA4E12750B3CDEB9934BFB02BBE6
+8B3EB028ABE584002EC7006627F116B1FE79A182D034DA8FD1C2D765D18C29F8
+FC8E7FC3EEFC23AF7CE0B17F3065602D472407D6547A5A02CF04715238B61A4A
+3DA50EBA90DA8EC4D2325FBC4D04F5760C9EEFAB81CB6F355F5988F91F9AB64F
+FA390EAA719D3B36C3167E6B6F6BBD25829C3FFCB837DDD66EEFB025D9767565
+7587E1F814E0470700130DFB255F9FD8BCBE749C16A9BA5F3ABCBCD7C1730051
+B31E35E1294161E7106EB9B0A4C9CBE5D1CF1AF0CDE7924F954A53C68FB862FA
+B1DAE3BCEAEF9C0553DDB16FB58507288348EC5CFD202E13E1CF2107F55A1AB6
+0747733A9630D97DF190D7987541E1EB8B142C88A9DA6DBD61F4AA0137582392
+C6CEC8015A8DD01EB17008ACED9AE89AFB55E1F053D9A57DB064F0661A3A54F5
+0F9EF0B432571E0565CECC5EC768C58FC54375B56C2EB92407142CCBAC358087
+6EBD860B184023A2B469208CFB18673BD1627C2270696D9F605F803918615C87
+C32B254325DECA4C05BB3A4BB56DEB2615437FC884B20E41013567E6E3F6273E
+94AF91B7F26725994AA70502B31BEEE4CEF862508CA3EC69E487D8FFD6B209D5
+41CD8362A667F7D3ECA63CF7596671827DE3266A9493992417B864029E331149
+CC0BAA82B67813CEE1EFB80CFF42F423F2609345045848E906C7C383243D22FA
+E951907F5F9D7CA0BB343C2691F63E87FA26D69AFB843F500536A1A5BCFA87E0
+8E303F81C8CED37B8C7AE7F495DC63A363E1622FE03D5F511A6A37280C8DAB61
+7F8FB45AFCF55A128C4FE17506AA8B9EF2C762F456481A0B900E04DBAD497D43
+64F3F49868A1A612C691517F8B7ED55C8F264B25C3B14E461B57620816E6EE94
+5C5B21A6D524D14485F398451A857E46B02FEB9A5A29116BE466FE0610CC9117
+0B1380A53B4E3048A759312ABB13460648EA241482686FD15C0F14D14E8B18DD
+C6112DFEDC9186E159ED1F25BA7DE4257C2EA8ADD8009A27F80801798E3AF985
+B89BBFD6AE47419EC46835C338F0802C5BBCE2DD5510D7BB6AD1DB035C70F0C2
+B4DF6A91E8DFD969543EF46D567F4C2259B4F98E3EAD4DC34E48CE05E226E32F
+3B0355A3946BDD4C2B3B0FC12433F8014059E2C62350AA90D7DF460424F95D19
+41EB697CA8FDFBF2CA202A90C71C9263D33F30CD2BFB7413E1D2F54A339D37D7
+9B79B21BC4CC20F73A235505A5AE0485795C42B1407DD35C34B727EA6FDF4EBD
+70CA2E3500734E805805D34624586A5B4F554574070DCB5AE202D83CB6611ACE
+7CE919EC17649DFA1B018AFEAC2D0E2A170B64897553109FA56EB8F00DB39F3F
+199E4BA2B2BF0F8B04A0725D89119C9B1412FBB75E22780489036B671F4CB1A3
+BFADB6D3BAF6944AFD9F1FAF255F5A47823CDE2083B09E92F80B11705C0244F8
+483F831EC5C3F7182820622A0D65B0354484D6FC684022D7779735BB8C4A1070
+56B60E54212EA04CFC91C0A612AE64A8231A9DF2C5B089748E98E43D901CB8D7
+B5C455530AED7CAD854A6CC7F17F5BE6A0B325B403A19BD707F133DEBFEB5673
+AB992D849D6028DCE251FA921D0FF03EF11BC8B687591DCB5363C7006C457DED
+973606DAB051CE39275495C248F4492A92B9FB47D20AD9CA9AB78FA07552859F
+DC03404B55CB61272E9D7DF8030CF71E944ECD9FD53C7701E3A16E56C389FD8F
+FAF72DB2DD460EFD71F22F63891A1DEF8138F04B675A9A84812C3FB0360EA240
+8E443BAD1CE453A7D2A1A9E3DB83355F504E8DFAD1EAA5BE9D5D3F073A05BD5D
+4B46B4EC44BF48DD1C06DB24B4E8200010CB6D2B029030F5AC572CE401318813
+618077AE44227BC4274310F3C2C2B063DBD1E60EDD1CBBC5181B7285538BF0DE
+04A5367E16FF20FB8639DEB1A14BA4BBBB6525F87AA245CA497FBABF87BC178B
+EA84591559B92AA8C737A635971F1C6FFFF4718A67D2F093FEE769CBDBCADCDE
+2C196EE4336241EBBD800B2D818E6C32ACFC930E568143A4F66AC3DFEFB0E7D9
+FFF01C888801244B51DF0FEA43EF74241BDEC11A5169B5C12534D7D8470C69E7
+86032C07027FDE7163B096628F0E55EA57AC62917FE696AE302E14EDA6ED05B9
+10CB7C6811972F115B542D2FE33D53805398D026F59363E189AD50A8D68EE97E
+BADCBEB1060BACFB4AE87649DDD3E28D1E93311FD00FA2975B564D8EF2BF109E
+94493D758F2C4CCAC7B1EFBB133219806ECAADC1FCCF85620A3A9C832BEC98CE
+9F94D119FA19A59748F5BEF4FE736C29EFD9A3E65FE287B548A37E41D7318E57
+73A375E8AF829400F19C618BCFE1BD93547C10A68F9B2EC73C8192180837F7C1
+AE6B659B937BB02F74624A08D8D40453EA90ACA9F65E6399D4A136A4747D1D44
+C48A4BC81E4F7902FE544E8A0CD2A0EC80CB601246DE2DAFDAAE34AB5A84FC11
+C0CDDEB26FC7F9F4193AB8936FF11C7D91FE416E979B6349398F92B7639C4160
+DEB1F3B2925E374A8CE1AD9B87DAF8B52352E22531ADD561
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY10
+%!PS-AdobeFont-1.1: LASY10 1.001
+%%CreationDate: 1992 Oct 23 20:19:17
+%%RevisionDate: 2001 Jun 05 20:19:17
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-19 -192 944 683}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385
+B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915AC9272AA4A7FC35A4
+93A7A0CA8BD1CFA4382085D949EE819A51062591606ECEB5B37419223CC0400E
+158F1A0849868CFAE0F71DA6B4FA47A636EDE756530425A6BFE45B8080808B59
+6B886D033437677B151285B047C84C2E2FCB71CCDF34E20E925269E5F1A210F0
+391066823D8F21E03746BF79AAC6FF91517631686722226462D6A9EC5FFCC806
+B959AED95F492481324749E00CA117821C347F9B924BEC8C64C954570252E909
+5C33AC8B1320BB1992A88C619DEA7A8FDDE42390EC82A07BD8BB7F0014A41EC8
+04225B5063D3F04723F51128DE8ADB79F62903E1955A7D49220223CA34FDC3EB
+8FB71700EB9CC40DF747C4CC60AD11D3FC038CB2051F7E97CF7C7F7D0F49CA1F
+E0FEFCE664544CD1F7C23B05BA649D373539E7BCC761611C17489084912F77C3
+5FB3BC1E91E2B4A47C27BF4989C7703E83C5A505108037DE5006D4F510B8FE1A
+570E42E4569FAEBF66058F9D9608A771BEACA2A8AB629DBE939CCBBC116E8BCD
+BEC3A33CBF185A68DB60CAC5B21AF4D9B46B3FF4FDFBD6BC3C8101BE15E79245
+F0CF8F670CFA19ABC08C34D85B10C17190497EACEF6E401F322B1E281C1755F0
+BBF9838AF83A0A1601D78E78FD599819762347A77C71374AB428093048E3F1C9
+40CFD63B86C7F70BCD2AC3092DDD3BC91CA714BA28263EB863D5E6E2DBD4FA08
+6B22C1D18B16D7042219B9F0BDF5BF10AADB658CBED51C8B272E4DFA11C5A603
+8B4A437EABAA699B86819EAA072F7D90A9CE1B52287DD3D26C4709118DF35E12
+0469EBEA32B0CE51ABF18261C05F5DE918AFB511D068E9C93599D6ECC7BD9817
+4405C7415A3EDE4D1BBA7F4E531877A52B452E82BAFB6D3CBCA727BECBCBE0DC
+857AAD0EA6CECBFC5369DFA26A3CF7BE1411E2C9D5008D225DDC74C115E9E61A
+22A05BFFABCF4C09F990DEDB89871E891462F9148215411E04E534DEA0C6E2C7
+CB336F2B55074F41E8A5E374BE10460B85BA7013AA381E029FF7E79E2920A2D8
+9E0B3B6009AD4DAC52D484DF03DA7BDD789BEC266538D4497F160A254FC47819
+9E62F847E78BFA82AB89A23206530E7932AD868C011726A1CF620A6C31115865
+A7601D2AF9A0F550D96D61954886A608C09DB8A450AB27E2803EBBBE944810ED
+556166FEE7E97860C0DE12B73DC2BD62D5E884903E2D1F7064D8B033F1288B1B
+D73BD481859F2587161C2888CB73D352FD30D9D54DB8945BD31EE6D81783BE8C
+EE2447DA85EC4C335E8EEB00FB628250B481501862CBE6BD46C78C12010320F3
+9F4E3B898D729E12540DED97F9FE75434B3BCF60AF517011BD17828F51A12D20
+110E546A9465C738CF7434CC1AD1E794019D382031F8F22409CC196AF36EFCD2
+607242AF2FEAA55057510795652F3DF14EAF755A81115CED9B45A3EA08F6E09E
+86790E3F68419D917D467E14423246BA39FD7CCE343EB5B070363C822C496886
+9EC83E78A7927D54A35E69D184AECE780F83B1BB3236FD0FA14BE4404C83A1E0
+730BB7D7A4F3DCD55C46BDC99D2747F22B5262C9C73D0C45C2D36BBFB3AC519F
+73730CE073FBDF32CE40FFC998EE3E8166557AB95B4745C84662DE96BA8E050F
+575A64B6158CDA1FD2B879192DC2AB04C391F1251AB4079F6E9C573D09F56C10
+AD76B7A719B0929FCA706492FB11BDF94C74B28D4EF85D2A6E31A67C22AE711D
+BC362445F011FB1407078262EFD924CF2B432AE5F738D3E69325F7A2A9EB68DD
+C8E2C769461B6F23F771700B59B9319810E08E9780DDBC5E12F0B4E66A3851A7
+EE0B6541246F3A8DF3CFED04913184B9218DA101D344D5BEE30DC9407E13AA6F
+C03C7D224824888878E923C7395C720FC4C73BAFEEC353C9038F73FA1E351DAD
+FC6AFDC0605FB2582BDAF76C95DC422AD5552917421AA575BA777C7B2D32A4A9
+8F8ABEC5E962718019CEB5F95B3E3DA769DEE7823299560DD96A151D4616CE2D
+51132E59A5BF099F6B9181EBA9227225C7ECE808F5471CB1C14AFD21795A0FF6
+51B86BF0A0BC78E4EB8279822795ECF262B7F6BD4FB6996489C89DBBA91CC8E8
+8A83255DB00D07B14074F8F120192EC20F7215DA07D0746F05A5FA07095BA30E
+B4A48DDEB6CC226D30EB6821197604D0A410C48A1F36D553071581D6DF4F9566
+6C396ADB79FA62F6FBB69AECBF0E285D3B4DE20F8F69A226BEF3B2B4A443EF90
+F02E2F0BBA084FE34F3C219D6DB7F77807D2534701835C5311134B999CA1A56F
+B45F88DB490F51591244FDBD2EEF4B450C43E3C898C1E65C109B9E2C79CCBE79
+5FC12E9E2E5EFF59C0185431138FE8D176E537D581E71D6B1FBDEB6E5BC663B6
+5AC4AB2220F96538A316B45870D7BFE87516E989693521268DA79586698F36BA
+B1A64106A30F8DE31668DC104D8BACE48DC0D27335791BFAF3181C863DAA5031
+E6E6A91F4F0FC0081642505FAC5B4EABB6DB35D2CB6ADC4BECFF2F9204D760EF
+BA2B35F46AAE49FEE196209E05982D0662399F5D395B3C8AA829A9C80B6EE87F
+4D937B8B52C0C8F71F8C735498B0A8CE7643E10690CF38D207790F41ECECBE5C
+E895C8AB40746A7DF24BCCE21B92B3C87FF8AF73BFD88C327ADC55EE733DBE13
+9F7D3974300C39B87B0B7C42F7691DFB7043084C20B4FD6E5D6A6952BC1C6B5E
+70F16F3C04BDDEF40EDBDA7B2BB4167714D985F6F85B694617136007711C0B4A
+A53362B6A8BF032DE663578C1D8B1CD875E62135D8DC28A37111D121FE71AEF5
+E3F4828D7B7303B90C10B297F5286BC281F9438218397DB2726683FA5BAF45BA
+62C33DBE987CAE28F2111ECC32CAF49386DCC598D2C5691EA4E4C39443081230
+9460B4F728C7B095C6ED1A7104227D1C2F5872BDB90DC4019F5BE37D8AC737A8
+467651520DDF5A7DC5C6E70D2F1E18762BE3C68DC11E49854C78360AB374BBC5
+9AC7BC3E081DFAD05109F19466F805611C8CE909D6F8543D48E7C72D705E94EF
+CAF420B795F0D42332D7C7DCC05F8B53744F9D5616C998D54DE2CA573D6BCF55
+C96FC1C213A7447B2AB9C7CBD58A4C9C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMIB10
+%!PS-AdobeFont-1.1: CMMIB10 1.100
+%%CreationDate: 1996 Jul 23 07:54:00
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMIB10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMIB10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{-15 -250 1216 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D004B836D34E88C25F6CE738846C8E2E59A2BCF
+4ACF80A26D78872E9343A0537BC3BD7715F32ACD958D5AAED865BFE129278935
+063A31C2634DE2F9077E0AAAAEB224466B779096D8E3FF0A12AD5157F6603DED
+1A82F3511359143311179080C510740B401C930C96270FD1AB3ECBCFEF5DE53F
+E846BAAE95828D5790922640EF8AB9D7CEBE7669FEA02B72F86872D3D8754A18
+A1629C40A7C00C956F140BC63362478279C36EE353638CD3E249897207A94504
+4400668C8E702058EBF7284C9BDF830A3FC79C7EE900CC4C3664F9767A237275
+CEE3671644A75F1E696DA906B4C66870DBE87F5B4A176920C078ADBE24F55C09
+3D18CDE21B5FBC1C6A8AB18E05EDBEF9D1C1C18B3E6377BA2A688579D4F708F9
+A5CF4F56C5E39E2726106E9713E638775E606464CD674E5DC25CE9A696A65806
+C8E9D206B421E246F18013ACC6C7B2985BA93B1B7D7745CCB25B09957F50128C
+B523A55ACA6A7A2A0193A536E590291ED9D577B527CAD0372E05BFCA1829FED1
+662D06144A5FFA628C587A4FA05B179F1A7E3B23B47765FDC054271A0DBF9C2B
+B4F4771F80D1F7AAD9024868C30DAD5CF728DB2A71D86D53B0E674996E8C01F7
+EF97B225A28872F8AD4752A466E078C2B020EB832F237CB9B5631EB2D2EDDB00
+709D3864CA3A6C3EF18085EAEABC011E9F35C9BE4B5D0B608361F329B5784DAC
+5557A602E9E3C204909D84DB988F0BAB914E87CD685C7DA55C5E0B9F0176184F
+FC39B570873BBF346A0D1DE3942DA05434949A65CE64D8BAB0A091C40F7FF47A
+4FC57CB4420221C7B3EB8B891044B5FB0227009F0F6028D3F28545E63C975F11
+6BCCB67C58A544AE706BA5309FE38161FE6933A744484ACD69323A57815F698F
+4D7BA144610B92EB815145A1A91BCFE06D5CA0BD65CB153CDED0244EE607AA93
+80B82B7870CC03C17EDFD45233B740A79F6F20393013964E1A814B95C94DD07F
+117BADF4346870F0797A95BF7ED1750F0CFBEA89D72485E4730E53332CB7F646
+6D8AB2DEBF2975B25A0FE0E17229F312D65CDA55295E56EF2563D8081B4B5AB5
+CAFB730FAA30CE0BC3EEDFAD90662D450CF84423EA97B05FA5890257FE048C20
+94494FA4DB24C9F1884379C2CD6D9F617B77A096C0BEDC532E5BEE56D876CF22
+2365AABD1D9849D383AADA380429
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASYB10
+%!PS-AdobeFont-1.1: LASYB10 1.00
+%%CreationDate: 1992 Oct 23 20:19:19
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASYB10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASYB10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-29 -219 1086 697}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D004AF59FCC17BC5C5BCDA248667E22DA632042
+ABD4C635E7F36234B8F3636DF1BFA55DE3992A3ABCEFD3552D6498DCD135A2E7
+A011D4A8CD3DA5B29BBECC5F953202635159476822C532ACB1795E3FEA442D50
+93CDEE47691ED4AFAEFF8E5198EC41B4FA50D35FA023941A223BAF64BFA0421A
+CFCAA3933D4583F7F0D643398BA49D509FE0747D40CE5EA3E2DB1611F0866666
+AC0781A2908568C97BA8097DBCEC3B935E9A2A69982991408D88D193AA24AF9B
+253E259A17C027EDB7ED4714112624646E3B8306531EB0D6BC7B9B653625CC1E
+7986B39DA8CE93CB6A27679C191DABFD83FC4D2B89C95023A25CA5D35E63127B
+7B2E4F010B18A0A5E368E89F93877A16A1ADD1ACECD405D326D83CA5D4A510F6
+A1A61AE86D385995F841F115E87DD81321E7E029CECD1E92559EB568AC63B327
+5C2798A34AF9956429D0A64C91F5BC7BF9E6F8E66BC4F0893ABCED929BDB3EA2
+FD7F44BB0CCE0866B26A890B0F659B9DA6E3EE324290D73BDBFB5448E9D71420
+36C0FE538F18E866A50DD23152E2C096E1045E7777888AF5CEFB83B1C6FCA18A
+26E83D75AB66291A5A5A285DBB1B952591D0EC3D575F3F4A5AEE28C9E96C27E8
+CC6C07665482BEED7820B8AAAEF9C37AEDF0067B541BEF8BC6D81970D870A885
+6E01F327E06CB06AA0C89EC142AA9CBE59EB4D90B5CDCCD81D289E4BE3F79899
+5040C25B7E807A854FD70F2770139C4B189855374CBC6B12B1A117898BDF1610
+74E3B41D991CA14C79092436BA31EC02D6CECA609739BBE5034D7B296BB0B6AA
+AD04510FA14F58D30A23A8EFE7A72F049E876BF97C50139E8C0FF468121D7350
+20084E64972D943EF60770C27E76D66CDF3629546945CCF703CB3CD7488155E0
+9AF648C75CE3A2530DE72775CC2D54F5083AEB25BE25E5E99347C781317DF5EF
+F125DDFBF7042C3BE25D2FBE51A683AD71072F708A8992284FD77AB101C2B884
+7AFBB58155C887E023877B2DFFDC471ED67AF4F57DAC50B68910A4883DB36A6E
+A36A7A021D115726CEB047B293C820E50E4CF4AB60675AAD91734859F48152D8
+751326488AB6C8FDEB582EBEE819CA48EB0D856D325733F81C9823A9EF812973
+90725E9B42758BBE03D21AA460EC0315E8F4FFB01E9D18D8F2BC668E301AB86E
+5FD600B498588B0FC322766DEB8EDA9E6AB1FE8D35255345399DC190C07F3A1A
+4A4B9697EEC854ACE5B7FB9E0B47925710DCD503908DCAB34BA90B3D40EB6826
+67B9F19EB0DF6223000CC089CFEB26DE0A60E17FFC485EAF1FB16FCE37CEEAD1
+12A727548BC30A4F387132B8099985FFA297343BF8FC80A2A3F43E2901E4BB77
+6AA49EA0881FA225721085B64CF4F346C4FBC6091343E429FEC9B8519664F1F4
+3FF811A845B1A29ECF5C84A84D14C6CF10CA76783A98F7E4B513C9E4BE35C952
+08869D25C13038238640ACB354237E3E2BF7B8C4C9F9919A547D1827321478BD
+DE45C7F88C5FDC02D424FF3DFA29EB6CAE3E9DBC0FD81079BCAF0C39E6BB6FC8
+ED4EC88DF341D25BB6681BB6604151DF7D6471754DF03495252928FEA96FE61E
+FC4B446D7DF6718264BF01F3F664CCD44D2C7EFF3A43ADAB173868B4AED27845
+2A36C5E8ECFC15752793B9AAE6A4A073FA656DE369CA316403185D7F13218687
+CF31CA7895210669AF05F9538BB11C01ECD6F5A2577B5711FA1A94768C81030E
+C59C76E0FF41D3ACF8A140E465636B5177A62BB05E358E9FCF123950BC3160CC
+5E5888C461AFD93B02F1CD092C72D5D0B99C3BE653A82F9E8C0FAFB0B2814D86
+CDFD4246FD7C9857F7FD817D988E8403C200154123DF221B2BD52E5CBC976813
+56F9A7F15F6E6B528AE4B7F75078CE540B85FC09DA861C4C0BFEBB936A740727
+45DA0DA3A78A0EEFD6CE771C5C0A4A4B1BAD3D67B9850F7FA718F9EFCF78007A
+FA8C1589AD9A41B4ED062463C6DEE2F8CC23DB5B55E35406387AC154DA99E87D
+BBBA967F23CD0BE17CFF0E70E110E3F170C593712B8F68C13A2DCAE8F7272FC4
+39BE8F52FEBC240D4B87062266CF2D10E6EEC8DB8C0200F3317645CF8A2EA21D
+2D00418E48FE2785BD40850560F76BA3BA03BE321B6B32A26011E810934ED873
+302A5CD77B60C72965C045D55F4666F3460377A3C0A01A28D33A2A1DCD1917A2
+A132B21DC8D5F0943C06AE2F6AA71A81CE43279725E72D4D6EA59BF8E4C727F5
+97FD04E536923FA04FBBE1F1D583992B64F4494EB6CC5C6D22A1FE1E6F28B2B4
+C49D2B202B55717CF0C05C7A05A079CE0C736BF093DBDCEB2429B5CB9DB1D9A4
+4E0AEF3CA4FE9F6F7E2AEDADCD3CD87744779829639EAC7D0EEB91D8A5F29B5F
+4D4FDCBF6A152ECDCB36AD5FF07AECB6EA4712D05A36A46065E8D1E2C362CF32
+749A0E97BADFF5FB06C08A60277BF04F13F1C6574A9F3BDDFCB4309886C645AD
+BCE7D3E059F458D8F5839FC314DD8C126BA18CB63038F532F8493301E04EC43C
+7BF51569D5CD6E4418483611F0A89ABE52429A5FD232E7DC04E4310862FE6EA5
+C838A7BAA5C7AB1F32266E0BC57BB3075EDC330A365B57EDDEACE0C50B586A5D
+AA3D5511E37A3754557AD8A562C6C8AFD3FE9DA735187613D117C244D27FEAEE
+46026C55651CC74065C0096EA4D0A5560F6034B16EBD958344FE41F8814D66D9
+5024939C21F0040AF789806BE8578E555F3317AB145DC5433A8F7F4F9EE68205
+076F2E857466D3DE8A8CCE9E8775416470D91F8F6C0D6A9C7FB674424B9B0183
+DEA2C9AB9D01B9F6AFC31FF875D56690F7DCF2573EC3512F81CAA269C9FF5506
+53CE1BC0864B46AE74CCAE3053D1D01FB8EFA66F63F0873717BC82E1101E179C
+87118D307EC20DA296FA404C29F0F3D4B5D5F6606A037DA21CE5DF09B69E0286
+A3406989C6FA312E82E14A983D3B7622E5D1EB9571319849E83423619CEF0925
+1F5F21B8DF07DAB6B3887D7D31482F33B0EE1A294045894721A4E181FCF12BC0
+9630F219950F4D25D87221BD2D81E3962C71C1C08F1F55EC0909356AD23C0443
+93C3C9A6562146691A00231390CCF7EA5C501EA52B5D39C6DF666F36DA5CAE17
+131F5D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LCIRCLEW10
+%!PS-AdobeFont-1.1: LCIRCLEW10 1.001
+%%CreationDate: 1992 Oct 23 20:22:00
+%%RevisionDate: 2001 Jun 05 20:22:00
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LCIRCLEW10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /LCIRCLEW10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 24 /a24 put
+dup 25 /a25 put
+dup 26 /a26 put
+dup 32 /a32 put
+dup 33 /a33 put
+dup 34 /a34 put
+dup 35 /a35 put
+dup 114 /a114 put
+readonly def
+/FontBBox{-2000 -2000 2080 2080}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21
+E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2
+0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495
+DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F
+98AAA04894F5487C279D2766B50B23E16D7F1023E387F60757E6C80FAE85A8AD
+149D104B38BABA49C58CCD52B719D635E892DCE74F3D283407537FE6CF45E192
+54BF678237D2B8B3C0AE474E96765078627EFAC8AA84DBF87784E5E755C587AB
+BE50DF55D35CDD05D96F562153E2016C3D23ED27DEF2C3908BD0BE882E838796
+BA837E4B671E2CEC2471BC438FAFA250F12170D86934A19C468D5EE6C8B2428C
+AF1EA0FBCE58BABD5BD3A354CB89003AFF34BB325334141E622CAC8CC29F962F
+E4E4FBB6C0C21D4B0835248F760476BE1B36948376B6A4FBB98E9D9F49D97132
+7166B1D32CB3E6590B11917FF0244AC94551E6EF79FCEB8FD65D947E2B209930
+4DEFA82AF22E5320B8A19C0B968D88806CCCC1FC5934ED4B8FCA05AA42A725B0
+1FB85D31D75E9F198EC6D3A0920C9298E2F1535FF124C0760E00054F631218AD
+BACF10F693891EFB272786596ABEA45AD4A2860C4E346515C79FCE68FE8B973D
+F54F8D267370670A62546B001E39136F45CC78192A31EF35C1415522DBB171A6
+E36B3DD83802C2305228A4989C062F84219987A9585C33DDBD17150A39A3CA2D
+A2A91BA35367D7A031E6F0965F920B26577B7FE34FD3EC315837EC1D91E1442C
+2C3515DE36B9FDAB2AB6C742C7D27B63843146711159C1202B67BFD05B61C2C2
+B9F2158FF806B504D8F4256A8A26071309DE213B55DC08BD1B7736E37FAAE154
+EEDC361EB417EECB1EE918BECA57231A7CB682134460003F1A5A5A0CCF2EE77A
+8C6C959F1AF74D9E45BE2A43EF45353FE77BD3C10551C1AAED678E41C6F2F945
+062E9032C955D3A49948FA8B283F9616C67B088FCF961587B0A3CED1CC259FD2
+CDAE3923B1C25546EF9E4844CE241657CFC15800889EDCDD1EC8D267E3BEF2B9
+BD1DCBC691635A3B532B740EDEEFCB1072701698E132897E2C0D9520F34018CF
+4C847B2A723DF0B8FFF546F5956C85784EF8986999149BF78996581277E43FE7
+9A4409A96954F8E6EDAB0134ACB5757F5F964150D8AD43EFF35A128AB3ED8A7B
+9DFBEEBFAA9D6272D7CF76CC59447B8EBF376F0E8F0D179B3BE9EF837388F6ED
+36F6E3AB3D64015D628A81A2EBEB2883B7BC71B9D26D7A7D228B06EAF48EDD31
+46FA23B7BE6D1340FFD5F2A2939AA1E3AD7FD9A3EC7289EA41E512008F4B95E5
+9FED4D04D94513B8DF20AE387A9B6A2EE41777802D8E66735F2C05DAD7583F6F
+D415B6833A8CB7483D1EB9BE08859581D805810D39694196933275D8528BA5F8
+AA24E1D17ACA093C04233120F1FAD8844E3CF04C3BB2CED0BDCACCB364426560
+AEADB3D02CFAF79979EAFF971346AF84BAEDCDE7F0A0C4768840711B90AB14A2
+00FB4544CF055E222330C8793C7AC675DA0DED5742B659CE5F0102C8267FAC42
+4E70B57C834085731F5BB4543AB491B0F04EDA0F018B9DC2A6BA373CB182AA61
+A97D0D24443EB61FBD49CA65B593B06989747A3BA4FBCC9093E3E2CDE322BB2F
+7304226C5CB5CD3015FA4CEA544AB7DED49AA97E9CFB7D6BE72491042F93507A
+449500F7AC14B4A2379098B5D1DB92B4D6AB1C4BFB4748F9FE8D96F324584D62
+69883FF22A868A141457533E5BDF09E1752DAEF5A2E09304D4D90A5D691E3929
+8E0627BF57634E6EDF30CF232953E3E52E8A01C6C0A1D21E123D45F71AC92285
+E5EC8B0124114B9CDF773A4ADFA4F8FE62CA8837AE701412EE763E433650A315
+06BCE11BA8F919CEF49C9C622B4AF84ACEF9973BA4FCF7FC85DAE67DB56CF1E2
+09ACAC211D2B636D49AE7CC6C64B98AD9FFD598C067F187CAF2ACEAA94E09E30
+683CC6DE3F0898111AC3BB3948239249489DAF1CECBC89DB509BCE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LINEW10
+%!PS-AdobeFont-1.1: LINEW10 1.001
+%%CreationDate: 1992 Oct 23 20:22:06
+%%RevisionDate: 2001 Jun 05 20:22:06
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LINEW10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /LINEW10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 27 /a27 put
+dup 45 /a45 put
+dup 54 /a54 put
+dup 63 /a63 put
+readonly def
+/FontBBox{-220 -220 1040 1040}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21
+E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2
+0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495
+DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F
+98AAA04894F5487C279D2766B50B23E16D7F1023E387F60757E6C80FAE85A8AD
+149D104B38BABA49C58CCD52B719D635E892DCE74F3D283407537FE6CF45E192
+54BF678237D2B8B3C0AE474E96765078627EFAC8AA84DBF87784E5E755C587AB
+BE50DF55D35CDD05D96F562153E2016C3D23ED27DEF2C3908BD0BE882E838796
+BA837E4B671E2CEC2471BC438FAFA0F4FA9D004C64F187F897B89212356640B3
+3661AB6C36FD6C98BB4FBCF5016D9C6ECC317E76CA0CB5E739017091C4F3BA9D
+AA0AC0CA3DE976094AA0C0DCB079008241EC2D1CD368958277386F52D7EF4AD3
+581A6658E5F46DA384CAC13208485723CAA3BB78E33D485D545EE7D9197E98E2
+53937C88E0A691E696912A9CF4D608936E212C18E3A1A792B4255891642599B8
+BF60A177C86186C00E2E0220FB80A0EEBB1D115B275FD94CBF960E1705EE0C4B
+6938170DF6725216E76A3BE36F23D1DD3530FDDB409E758352FB2EC5D2EF0265
+B48A2C566E252846ED6717686FD6E86946CE37C9A3493C521DF4EF527F87464A
+5E36DAD61032A752C75175660A559CFA480FF4A25C4B14BC7B27B42314218445
+FD3DB330A46DDB3C8A9F386855F555961A476077CCDDC68A26C1097AAEEFF530
+BEE89FC2850256D81DD96003533789A77B01967B7D0485CAB1FCF1977988257A
+0ACAE84A584F9424F39D2A31B1B8493F9991F4E01C0B6647A3A78B80EC6A0E25
+E6E3D2CA32C4C7389D7BBA57C12FC00B99594E3B7055A2E28E9E92976F49321E
+39418AE9FFF387C11FC1D88287F4C521283666FBD0A7516F160B29A1CFB55C35
+CEE54B5D7AC47E7A6C375C5B99135E310E5ED13697F9851ED930F2F412A3CD4D
+F379CB616448DD6DBECAA1E31682AFEB4C3717501D47CF4D7F73E29569991F79
+C8AE39FD330A405C3B78A986B36F0F44A365E7A7BC93FDCA330AF7E83B6ACB81
+1ABC7125005D32848E2EDF11B09DEFF84835CDC4BDB8BDF704DCC887D46D5103
+3A53331E5361C61521FA1C9EF48EAD7F694697257625753B9692017E07056933
+EEC2B12745507467FB8D215E88E5A9380E0A460F25633C9CBEF48EA0135BFD27
+2D4AEB7668A7512087063E9D516569D1AB04C29B03333D03547EE6BFB88197DC
+25052A260F8CA613F356FEF1D54B51F3A6D87DBC5D60904C49D244FFC336F892
+97AB11ADB3F954122F49687AA5037D4BAB26913EE95E54F0159945638F77CF2E
+2BF5505B977A88F15428BA611030589371675892AFC801206A33DD26CEE6AFD4
+3C82669E345D5FCD039C1DECEB790DD00C56463B4CAD236B3A6C702593FD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LINE10
+%!PS-AdobeFont-1.1: LINE10 1.001
+%%CreationDate: 1992 Oct 23 20:22:05
+%%RevisionDate: 2001 Jun 05 20:22:05
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LINE10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /LINE10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 27 /a27 put
+dup 45 /a45 put
+dup 54 /a54 put
+dup 63 /a63 put
+readonly def
+/FontBBox{-150 -150 1020 1020}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21
+E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2
+0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495
+DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F
+98AAA04894F5487C279D2766B50B23E16D7F1023E387FA4165DF522DB290D390
+B669550A43638C3C9CC38C7667A22D27F9DB1542620110A8671B2713C8DB93D3
+4C500474AC190831F9C7441DC4A7C27EE88DAEF10D7AEE6FDB22E7625E802B4C
+FCEE0DC79988734BDA39B9896B1833D4BEC4F91DB321F343F57B3FC5ECA13AEA
+AB108165934BDE65D2EB5A62BD395ABA20F0389A1B71270649CE1A93B29040EB
+B3166F9EBC3791671B6EDCEB171F3CCDAA90BBD5EE5042AAC2AD6D838F79E008
+43845E5FCF0B3D71E21543F491832420B45492BFE5D3E278268908D3CA704A48
+AF6C6954A03244409C49A178680D62BC6277BE6A8CF4DFFA69775BB8FCFE579F
+0DFD00493CC18A38F7AA197A43E96F5986EB21F77B0C955332C87B18A5F72982
+E3D0B0554AE03D86FF10237036E2CBE514A9BFC5A4F5B2C9E5667EE2B64AB536
+766C45D847C52B75FCF57652200536319F09D0FCEA025A5F5CA61CD63812083D
+CE11E82271251C41D0550CF754C13A32F847CC7ED53C14742D3C5AF8E412E542
+DAC233E8C9FA03A4ED4BB95A9B831AF45E02D31003517156A429F54B6E1B1727
+520DE349B22A26C73A2D3CCE0733F2E594DD8E091E2464A31B86C81CF3616399
+F042260B75E2F3010CC15E843A7F7388C01BA40AC4E4F1D50059A55BB5111089
+F167B796709EE54D544E1AF445A3E791EDC71A6D6F2F298A20014956D52138CE
+FB138CE99299A8B41905FF9AB01CC58A773478EB89C036BD3F552AE99E75F2AB
+712E4EF075F70AF9023B71BE2BFDBB7A7F16D5A307AF4857DBA61421ADFA1022
+8A26549AFC5E926D29195FE85B2E3C01EFB330D900B6A7FE4EA5AB8A0EA87E5D
+CD0AE684E50A59FEDD85337F87E8112CEA3F1236D33D5475FC3C473B34F423D2
+18E9BD7905C7F638D080A7C87D681237674701DB7D874937C92A5766AB3D53FC
+86C3B3D02964CD566127FD36EED5C9D2413BB626124E557A394FAC265E19DFA0
+CB28EDE6D30A2FE2D7CF5610EF919612948AFBA3DBDBE206510021065FB9E1DA
+C733F7C1E2D97BAE9E4C81432C4283BA9DCC3CC9E43515CD9001306FD22C8EEB
+EC175694CD7AAB61ED97092DD23E90EDAFD49026057E4890937B0C8C1FD883B7
+6BD6BD46C8E1E8B8932624E866182266AD0F2B48799CBDB75740EA228B54CB0E
+91AEAF0B47DAD7E20D073310870A011BAF598AFEAFD78189D389BFC646C74109
+E283A7493D4AF0078D7EBEC26FB7F170DECA32FA84461E7A2FD98884AFA22112
+10BE6EE680666313358632904C34E1936A14E9295B62CDC104
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LCIRCLE10
+%!PS-AdobeFont-1.1: LCIRCLE10 1.001
+%%CreationDate: 1992 Oct 23 20:21:59
+%%RevisionDate: 2001 Jun 05 20:21:59
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LCIRCLE10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /LCIRCLE10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 24 /a24 put
+dup 26 /a26 put
+dup 27 /a27 put
+dup 32 /a32 put
+dup 33 /a33 put
+dup 34 /a34 put
+dup 35 /a35 put
+dup 114 /a114 put
+readonly def
+/FontBBox{-2000 -2000 2040 2040}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21
+E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2
+0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495
+DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F
+98AAA04894F5487C279D2766B50B23E16D7F1023E387FA4165DF522DB290D390
+B669550A43638C3C9CC38C7667A22D27F9DB1542620110A8671B2713C8DB93D3
+4C500474AC190831F9C7441DC4A7C27EE88DAEF10D7AEE6FDB22E7625E802B4C
+FCEE0DC79988734BDA39B9896B1833D4BEC4F91DB321F343F57B3FC5ECA13AEA
+AB108165934BDE65D2EB5A62BD395AB84402D4A2703E3DC3BEC860D5A4EB785A
+1D8D0D1AE7D31BFCD3ABE3E9779B6BC28D93CFCFD8461032D969F1C9A53A6DCA
+321062C6750132DD47444F208275E5000794E261F842CA01FD5DCA6F8C92C7EA
+E2D8D66ADB1194BD8AC59E9191895A2FCA88F32DA2B27717F18C258EE2402C69
+5655EE4D15708452687828A90653E9FC2707F1E9ACA413DAD6E5EE607F6DCB97
+09B7195203A395C97CCC7390F38D69AEC6323A0AAE0A05958B7987701BBD6497
+F95D8653699C39F179820FB8C2DBD7A4E7EDF03E83F7536946A3F532650AC5CD
+48C10BA3AB8F67915EAC0053592CA317E0A8EFD1322398DB7D9B32ECE97791A0
+0B49839C58E426531833D30F153863E92A79516C2878AEE6916F0FA78F94714E
+D709C10DB24955FC0DE6769D34E4E1DB2ADED1775C5A5A6313C93B6A0195311B
+4A334B4D9B914EA59194239AAD1358BC269B8CBD35A7685ACB29282D46440A38
+083B9CB2258BB81E2489B5FBF551AEA1330D4DF70E9E650964A369CA2F77DEBD
+0CDBCECDD2DFE4EE609FBBC60FEEEB5B8FA0C5DE573D01F66FC2DCE43C59D271
+DE4E4A1D4F7B40829C8AFDFEBB82FA488594D463EC07C10B7CCDE49905AF4548
+661F6DAF2100FABC6C6C3B9FBE930B52938F62EDBA363D5459F4F3B3C88F8A0B
+307986D5B5335831F4E056065898A91CFCDC045E3D42547F2E48823892193319
+5EE7A40F554AEFF4633FF20604B551517BB0864CE5E026E1993BD62AFE305B8A
+E1AAD775B8A43AC253F0595790C870E673FBFA6632344346CC167C3F483FBFD4
+AE355BCD70D140D0F68DAF0652DD24559D22D450C8CD93B098B0A36C15749BA5
+10DE7C6042ED97289E7FC10496AB5A52CA2D63D6587D62F0AFB3BECDA71543A3
+92D76CDCDF1255604CAA309A3A68D742A8236D4BB6C642AD968251C4A5E2A8EB
+3468883996D08DDBD6EECAC0F8118E49BC1E546DC873F1C6EE34EE73D2A7562D
+6D5F480A66C7E499A0FFCBF6D576774A6D09FD7CA949759FD020584E1B11651B
+6467CC3E3E820C48A7E8BB8D5791959EBB1807C3930E0258AF3F94FD09F0FDB8
+1FA475069536022D94A5F955133EE7073F09618004191EF3F3C229056F90F9F3
+F2C4C1066ABD5AEEF32DA669EC69E8948C78627A3F642E7B87DD4A24938030CB
+BBBEC79625A309520BF01F8C0437021CDCEB7D7CD3D40466018E1D047E02617E
+AD4B817AE15F9CCAB54D42B6889851AD43AC8242FB150C8690784D4DAEF3BD5F
+0C0926D2EFC7C583A1C25D3AF881BAD3AC1F8915682DBB1A2484EC312A20411A
+131F2D583F33F44D221858ABFB2332F2A6B45B6534AADF25D623AEDBE7078AEC
+A4867B3BDFF10BF80226AA3F69BF8983C8CD040E99343243200F23D2D6452808
+31EF23568536C7F8BA3F5A10FB37FD0EB1A4BB7E067D3838CE4761D2C4ACB1DD
+53972F32D30B6027A89447D44035C935870B95A08A101A2DBB4E314A0EAF966A
+8A19520CA6F062C475F3540635C74747D6978F14F136416D760860F0C7FC066B
+AA68F64A016F7DF6ED638E291C45C6C9401330CAD6A495AD8110F0005357FB5D
+8027CBEBAA40C28F35D5E0F9C195F7DD67ADE1A89D018F15D18BD4E65B827017
+29DBC1DF2F48CB49FB0DBB8A9B834B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY8
+%!PS-AdobeFont-1.1: CMSY8 1.0
+%%CreationDate: 1991 Aug 15 07:22:10
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 102 /braceleft put
+dup 103 /braceright put
+readonly def
+/FontBBox{-30 -955 1185 779}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0
+5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F
+80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107
+1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB
+DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20
+9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1
+CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA
+F83C7D393392BCBC227771CDCB976E93302530FA3F4BEF341997D4302A48384A
+CEFFC1559BC244835D66BBD96C8A7AA401277C8B7017EA120CCBEF1CD6E00F0D
+22EFBE943B7863A7FDB62070671D966D5A13F9DE8E576861C9FE1BDB92A8BA02
+A44BAA2E1461DA7AA97AC9072EC691F74C0E1C03BD3CBC39870CF40AE25F6A80
+0D4B051AC8EB2274DB4856C1CA62C55B122A97CFD0AAA8B37F8D7DB642A58280
+CA5AF2B4BF2207AF703F8902A8BE19BFD9BBEECD63D362F819E71F6A02288C08
+050A7503B4C8BB5CEB75C33C47F25C641F119E55BBBC4AFFEFC6F5C138B24041
+DC0583260A33E4F75D0F14E5CCCA41E94233C670D1884554F334AA0A6C736077
+83445B1DDC9185AC8115B4F590ACDE1D473A52C89AED7F77DCBD773D8C3EADF7
+166D328526B01FBA4BEEBCF52E4B39490A3B3766730036ECFB481D255E317DF4
+79432A95C4F1125EB9903AA9FE1CAC8003EF0DDA0851215036449C3463822D0C
+6DCBF375FE062BCD746000DCA10035C3A3FD8371E83A4491256816081D9CE0C2
+8A645903FB0DAEF45CBDEE53BC6391F527A92AE5DC2F6C1555711280A7EF311F
+8BE208326B1E2D31D01387DCC5EB47808CF15D610D3D0EBC48EEB2905A86E2F7
+45804E51470A75A82FD5D9EE32BABDAB67F4C8F30E845BBB8FD4DDD885ED613B
+997D63DF0D6C5BBBBF249DE7CF3DE605B3EBE10CD5949B4D092860A4D35D8BF7
+BA9F53639E5CB4B0A8D044C5A606E7D9DC3AD3DD15ADFB6BACAAAEFD9ABEF05E
+1E0F2BCBD125A3D4F52634EF6C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /minus put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC5703711DA090312BA3FC00A08C453C609
+C627A8B1550654AD5E22C5F3F3CC8C1C0A6C7ADDAB55016A76EC46213FD9BAAF
+03F7A5FD261BF647FCA5049118033F809370A84AC3ADA3D5BE032CBB494D7851
+A6242E785CCC20D81FC5EE7871F1E588DA3E31BD321C67142C5D76BC6AC708DF
+C21616B4CC92F0F8B92BD37A4AB83E066D1245FAD89B480CB0AC192D4CAFA6AD
+241BD8DF7AD566A2022FBC67364AB89F33608554113D210FE5D27F8FB1B2B78A
+F22EC999DBAAFC9C60017101D5FB2A3B6E2BF4BE47B8E5E4662B8C41AB471DFC
+A31EE1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY7
+%!PS-AdobeFont-1.1: CMSY7 1.0
+%%CreationDate: 1991 Aug 15 07:21:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /minus put
+readonly def
+/FontBBox{-15 -951 1252 782}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949
+8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D
+F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443
+E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765
+424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8
+E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C
+C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63
+868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A
+089B2D24F47B9D66B677886B90AA787AD865B5F78EE434AA47B7B0F1244A4215
+251FDCC670FD01A92226E2C667C2344298D001575BDF782D969D836ECA11E229
+C7A17E28F70F9B17273FF243452DA885068A8BCB5165534F3996CBD8D97307DB
+593D606C197AFC259E691C242F6E1E651575B6852AAD54567905E6F542DCA109
+7F6DA24DC9112FBF7CE48B387953787B2BCB841873AED2DFA83339D39E14F4DD
+3A51584527AC3A93630D121E2AE0C89D9C3F2FFA767743B1276BE1E648041010
+0FD510F1A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI7
+%!PS-AdobeFont-1.1: CMMI7 1.100
+%%CreationDate: 1996 Jul 23 07:53:53
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+dup 97 /a put
+dup 105 /i put
+readonly def
+/FontBBox{0 -250 1171 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F
+C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B
+B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868
+DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811
+4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3
+FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB
+76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5
+123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770
+012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6
+A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413
+44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC
+4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050
+01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608
+D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3
+914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05
+261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615
+24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2
+A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663
+9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C
+889787CDC7AA8BEF7021B3C18A0A61A68CCEA80153A2E09D2E04ACE20306E501
+8CEECA860C3B2609D8785ED2C660E2777EA960ED94D28671B564A8AC85E362A8
+4BADC8FD99D47B66E2D64A8511225459A51B6B411E5205A28723D7C2B6753582
+A6D6A7A1A3F3519391F0A5DC76613810CF1D4FACF987E5ECB26C9B5D06C1F132
+1FDC76DD50C6E853DD21CF8646CFF217214B8DC0845821388C85A0E0A94AA20A
+B9FF39586D4AF6CF86F3945C5C699F59E2DEEBBF9EB318E86D57DA4EDEE69A6A
+5BDE5847570D4C6F1DD7A7E08A4DC932FDE320FBE0609A7889CC0DD2C982B5B9
+4237940CA4DF113D2174AD8ADF632B72D9208A36A60B9BAE2F0144B40EC76367
+3592BA37CDB5E19C3978A94A695F1E7D59F5D22D63EBC930A30076FC8D25637E
+389E725578D02CFD41C0214F4F835D2F0B05F7E63D4DA50A9D42C235DCC91C21
+F14A947FA7B8CD7CEEC5C0370D8619BE1941F9B8FA079B21B596F3BE90E1C9BC
+95F62B97009DA3905837583C002CDBCC955D687F1696A9E1F4CFC2F16405B048
+59AE381D6304A500CB183A3EEBF548E7D29B25D74A4A853E4BF1E443C1A0E1E3
+C72873A2194BC4A77EF47227A1D2E7E53EF1DAA1D9EA7FBB81F3BE0096C56647
+1EE33CB7D469AA2BAE35E8D1B282F2644E6F8567432158A6D5974493BD25398D
+40A1540FCEE52426BFDFB14CAC003CDD2986CA807ADCC5E49ECEB0A0077FF72E
+81F5FFD9C1BE1356E5321523BA9483C068C796EF9CC7EFA041976799557C3C3D
+4904A5F4861104ACA3C7F37BA10EB63ED467A8B9B1208A6E63D48F553AC0B323
+6DE4B2E58168AE7D031484CE1A30559EF373C5F27F57AB93F7901ED4A382A150
+C74C166DF19C4EC736F3FA95B0FEA6A1C5F616C5369A92721AC951D4E037C2F3
+8EF1C90AEB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.1: CMR7 1.0
+%%CreationDate: 1991 Aug 20 16:39:21
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 43 /plus put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 55 /seven put
+dup 61 /equal put
+readonly def
+/FontBBox{-27 -250 1122 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
+E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
+47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
+8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
+78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
+1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
+01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
+C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
+F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
+8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
+A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
+455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
+9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
+EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
+52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
+563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
+0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
+7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
+0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
+1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A47CD4FFE5D78
+D8A2086B7832F31FAFBCE07449C2DF202DEF9FC7CEAB4028A0FB788150A07C01
+D06A674C0E9FFCCCCF9D8E5F0D01A69402622894D12C1F675257EE11E4645236
+8EC81C2F2CE06B00CCB14868E8B56F2F030C58FF8CD99977A16B30DF54CED890
+6233C5DC2CECB317276E26258C30FB3784C3EA7BF0D42B5467D1464A673A2745
+BEB09F62635AA2A18E0FB226B7C1CBB5E65C8BD0DC206F1193EEE016CEAE7218
+F3D275E921CA71ECC6AB3F62B3B9AFDAF722729FCC68770AD30755ECF1631776
+E05F1AE202229D3D236EACCA4B9E83238556A0B1BD4CC6B36F099386715E1C9F
+AF33A3145F1FB901D3B599EF23E2ECDCFC9ED81A735F3807103DE90A6642CF96
+028CF5BD8F7A04C00819E2E6F322739540D3870343CB5B39C7ED68118F333757
+5506A675DAECCF35C60A1117DDB1F93A3C8C81B191C448B97E6F6EBB051D45CE
+42F601CB42E38505C48CA7FB58EEACBF1149F97079E4E907301A69E055E7195E
+BF14E05A1DFFCE96E93BD0FB1BE6BC613E24A147EDAE70B7C607CD99CB0D26D7
+0F75B64AA0BB773682726F9ECA2EB0A8FC9645A51A47C312797D3DAE3297B822
+48F8A312D8CB41E0286B4CB5D33B472CEFFB187334ED1D19612C54956F8F8F74
+71AA08249349A42692CCFD0CA8264791586B3FB43322242D29787127D528607D
+AFABA475F51EE5957FD253B461BD287A8833E14D70D3898203202717ABF07F95
+84F0CACA5561FA28F43FE398506C510C31B5C360504F9290546EB51CDC680EE6
+4BD5A1D0124630222E12ED2246F0126029D663A241FD9133BB45CE01D5A17BEF
+84FB68F1E0D53743AB920D8FA7DFD7A0E277AD4D21370D694A3B6497644D7BC6
+E5ADC73C819A0F7C10D9A9F18989D1E1120A3116D23B46FE38043CABBC616F4B
+756A1EA74C4F7A76878379092818666BC1BAC7446B4CD07631315AD0D1B3B8E9
+11B516348F2C640C1BA713EF67AA942601F05B17B735CAD4AD73179D5AF9519A
+C076FA154007B4A7F8C82EE14F8B9B4E86A9EFB41525B371AB1D896B1334BEE0
+388B23051401AEBA580D75F5E6B42C5804253E1124D473BD9B5F304AC904D352
+7C994DFB6648E0502AD5410742A1EDE3093A82E828691654DB2ABE3D23B7D29F
+42AF77DC7A6DA2F9F4E88FEE5C7D070AF352A9023B4D36BF0B7F927B64530D2D
+994AC5FA571F611FF1C2A9597CB738F08F955001280F203E9802CAC7D9CCCD58
+863234DF777F2DB93E88266B27CFD364A3D4B514DA6DE00F0F7734EB108D1843
+ED2518A2E76FA296EB0156E397A2AAB68E79B937AD2BEE3105C9D52E38D9CAAC
+1852F82B3C2A3CBC9FDC721E9D3283FE016157375C7D3058668EA9150F7F3F44
+2D8D13DD11EC661E095CFB39A4FD36E7EABD5D4BB61945E4328E9B2E3719BE62
+9DA6BFFFA2C96835D6CD465F88C20A849BDBC10331E56F68FC831D4B7C483F93
+3072AC40ABFF65556ED00843BC66D633ACCCF55187C07057FBA6408B55DEB19E
+05B94C9C42C4A0A34485A9A38C9C156BB5C2509DA87C259650858699ABD8CCE9
+87B106B70CB84940EBBADC7556025E244F2CC2FA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMEX10
+%!PS-AdobeFont-1.1: CMEX10 1.00
+%%CreationDate: 1992 Jul 23 21:22:48
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 20 /bracketleftbigg put
+dup 21 /bracketrightbigg put
+dup 32 /parenleftBigg put
+dup 33 /parenrightBigg put
+dup 80 /summationtext put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF5B8CAC6A7BEB5D02276E511FFAF2AE11910
+DE076F24311D94D07CACC323F360887F1EA11BDDA7927FF3325986FDB0ABDFC8
+8E4B40E7988921D551EC0867EBCA44C05657F0DC913E7B3004A5F3E1337B6987
+FEBC45F989C8DC6DC0AD577E903F05D0D54208A0AE7F28C734F130C133B48422
+BED48639A2B74E4C08F2E710E24A99F347E0F4394CE64EACB549576E89044E52
+EABE595BC964156D9D8C2BAB0F49664E951D7C1A3D1789C47F03C7051A63D5E8
+DF04FAAC47351E82CAE0794AA9692C6452688A74A7A6A7AD09B8A9783C235EC1
+EA2156261B8FB331827145DE315B6EC1B3D8B67B3323F761EAF4C223BB214C4C
+6B062D1B281F5041D068319F4911058376D8EFBA59884BA3318C5BC95684F281
+E0591BC0D1B2A4592A137FF301610019B8AC46AE6E48BC091E888E4487688350
+E9AD5074EE4848271CE4ACC38D8CBC8F3DB32813DDD5B341AF9A6601281ABA38
+4A978B98483A63FCC458D0E3BCE6FD830E7E09B0DB987A6B63B74638FC9F21A5
+8C68479E1A85225670D79CDDE5AC0B77F5A994CA700B5F0FF1F97FC63EFDE023
+8135F04A9D20C31998B12AE06676C362141AAAA395CDEF0A49E0141D335965F2
+FB4198499799CECCC8AA5D255264784CD30A3E8295888EFBC2060ADDD7BAC45A
+EEEECDFF7A47A88E69D84C9E572616C1AC69A34B5F0D0DE8EE4EDF9F4ADE0387
+680924D8D5B73EF04EAD7F45977CA8AD73D4DD45DE1966A3B8251C0386164C35
+5880DD2609C80E96D1AB861C9259748E98F6711D4E241A269ED51FF328344664
+3AF9F18DCE671611DB2F5D3EA77EE734D2BED623F973E6840B8DAD1E2C3C2666
+DD4DD1C1CC71EF3BE29E7C9EC47F20088C52CAEC511F532AA38EA262D7F21604
+53A8814BC9D3482F5488A9B7EF0E07CECB5D1765F7CD60783D511382F2076038
+EC078376A799AE7D7A65790775E52AE173C026C03FBB84439DA26AC9A9F86587
+82179141E89F8B1F13580C3D53CE8A6AD55129149E72AC871E1473958543975C
+6E9207F34DC1DBC269873A43F2D558D361A7FE23B5E20503499726EC5E5D2871
+2ECE403F04416E65391741B8C68483F93BAC92D26FF5EF49DAE60D468F81E03B
+CC41DF5200ABA9E94F165F535B09B495C45096445971C6B1F023E3916FD8C96E
+5D484D9CFD0B446D94C0A53B5EF8BB20D1721CFEDB3407DD6EA6C09F4F8EB886
+DD97EEF273E9C2D25BF4E56C8E6B3E047EA69C375C980AD7FCD06EB6F7A707B1
+BB18DD5F5F5846069FB1F99DF99AB77D94B2F820C162EF397DF57B472538CB6F
+182752C320F8C95A3D66B425D168FE953D2EDAD3266DB3C63CCC473068D4A7CC
+2203368C5577D006AE958E5E1C175091D33856E4C0121DAC7632E297D306B12C
+A395851BF91427E91781F72489154D81F2EBA26BBB9CC4AB22902B64A899B5B4
+91EC977AC91D557285F4CAA3402AD8374D63E85FD7E3A97B3ACAAC2544A5E457
+87D58EF5EA937F006D5FBC8858341065D471176E4D48DC99F9D748F3AF809D8C
+03717EECA2BEF2D9AD1F6BC052895337838AE56D73B997408A99A7E942D04D15
+689C519EB1BF6EE15BC28279091FF428A412E7883D19BA86F9E2153104728A2D
+1C0028788EA424CD688B780463696DC7094F44A8E56680EC9254DB12696D4D4E
+5EEFC50AC088C35B1D6A8E6E9BB8FA7ECE695B0D5444900A12E9EC534E322E1E
+D7455EE084477F0B875179C3114EBDB98E2F94C8C6D16E71C057612DF64DCC40
+4F152FAF5F8A258A465421362912D0B1CD03EE86125BE1B04F1BCADE0F48A5C3
+1465CAFD2E3805FE8D7273B8C531C20B7220EEE58694552062990231F694A0C9
+6FE5ADA173CB0B69A689847B96A064FF3FE4078FF1DE4553984FB926A37EA705
+AE71E27C1BC470A32C8FEF3EE4B2C43CC37CF12367B14AE661EDE6FFB9C20532
+01CDA9E19D9322D6D2A22EAA68A266AED711ABB7E06528E0D7A3D7922E56C29E
+55BF4200944565E8E302C0AB34F72BC429B8DF4741499E5B2C8BF473E85DF62E
+48F722769EC59D2BB1B5C23489B815A5859D12EBB1F2A72F3040EB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 52 /four put
+dup 54 /six put
+dup 55 /seven put
+dup 61 /equal put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3901F92CC2EC9BC842
+5EE578CF06846C7078E026DFCB18AD4D78023652F0165DE17C183E43752132BB
+19F361414774D5C13AD718B01F47E61745009D823C3996FB208C3A9D4B4F116E
+4D38E56725461BBA1FE17CDC27CD99AC7D748CF7750CA2C6E1EC5E4746AC85F5
+E8274DA59750A144AD5AEBE6C9A7CE843BD6837FE2A88078124AA1A94EFC1C50
+B811EAEB2679AD57294AB13E45AEEB8C6EA105696E341E4C14ECF573EEBB83E6
+F9DE39BD6CC376158231CA2A83D91F721ABD116A40698F26610853E7FD075472
+ED40CCE32031FCFAE2737B412807F7C9E6494D0B73B7AB13AFD20D5219A71562
+12A7B57DD9965B15AFB38BEDA28D35D73282D4F1F9A15C4403B7C69C7E80DF54
+C112D7813F7271A5474438A7CC380735F029CFDF4C0C30C3901A7E30F8B3B017
+B1A663CC9481C79B903806F30AF37522828FD5DE3EC220C719B63A90FB3CE72D
+AFC207F82CCD8250F4BA04D50D9B6D7AB78E87B456016CBC6273C129F6FBBF8B
+E0110ED803D94F55FCD6F5A81F5BDC9CFBBF7D2C5DE7842D72E7D6DB5E4CC7B1
+0FC6DCDCF41556C3BFE5E2EBEB423FB0BFCDFF7F0930304047C29F67368325C3
+BA8815E47A90C5F149FE37618E30A9ABE6FAF8644A1BA737BEABC99ECFAE98A3
+74E11C3C87971EA3AEFACE9E25179B67B1D19A71241E23F55D1FE4879967913F
+B679B98C6E9DCE63040F482A16253A09E74DC1A05FDB08C557D431D555FD688B
+44C00601B8B43A8C8E2063D24AF1D8EFFAB2CD91BAE023A7FBAE39A4CAA664EC
+AD0C0FAFB280B100C427881F8EBF4F8C03309D45F627F1241AB154E914F4BDD8
+DC81BC3D3B569637D3B28D1A6DCF92B17109177E18A3A9DEC32ED64719174F09
+F4945870BB984DF92073DCD619FD35C72E27AC107C62DE06BF7F27249958B6E6
+ADC6402CD366B2362BA3A2B867138B5DDC05566EB295A57D7249928E3AF1E318
+C1CA66E03D143AE09CB213C78B41FFD19422E09037BA93B53398BCBEF05CEFC1
+F10178357B0257D4FCA684100BB9F41720FEDFDD87C0DF34072035954E71D12E
+B50116BD6C7417C9D4F88D0A30BB0441D1DCD172361BE048B14BB44534C209EC
+3FEE42B7D20CAD2525313BD5009CDF8F4E62E21EEA094A24EE9DD135DD4D9DF1
+3E50027BE32B0B238C56FF8EA3D8BD01AE893A42D7420271228A6967FE708216
+D67FC7AEAE869DF6D4B2D240D426CF00A19A28295FC25D43E690A90ED3C4DE0E
+0138A6C80E4808490134D2D460FD752D51B6074064E05085527C2DF8D454D1EF
+119890298C63AC49AE079B447D41457DE8F5B5E5FA2776A4FD743860CC7F031F
+B0BE0C179D587D820EABABA2418D900D8DB0857ADAE3CFC66827EC5659588C8A
+2DE053EF8095246F68465BB4B15AD6E874146C4B531E5BB4BC1336BEFFF00C7E
+36707F9B9CC6D50BDF9B3B51BCD4D753A07306683AB726AB60196C3271091DF8
+D844BB3491CC5DAF09E0729F23ABA8C955BC6BCE41750A08931E1E0C1DE1F831
+EF7E62091008BCBAC673AEEB3E5BE063F291862154636CA1A6E2F56F005259B9
+DE447FEA11AB2FFF996EC9E96008D05D6ABFC0A6A7741CC21C720D97FF9190B8
+967849B5A90B57B6D0002574CDF5F57125C51516A1ECD47FEFD5DDBA01B228F7
+81ACE820AA6AA8726E345CDC5389EBC74CDE1E92F3556ADC03946AE4149C1DA0
+4E4431209ED0F3BB429CB8B7E4B45FF09F8CDFF144FFF8347448DB67CF236F73
+F18D913F88F7BF546A14756FB067C2038208E23A99AE10155981DAF13C262A50
+78D4E58A9A59BF71C69EDA8D560FF93AA99BAFD51EB50EE555BAA89DBA9680BD
+2839101D613FB26DB04A7C0648D72883AB4486362107A86B61AADC6D184EB0AC
+E5F195C6D5FD5F71D95558A62AA8767E5883690743BA86FA6D97912458C1967B
+F6A02F69C896401E85142D248E2C0B959CBF82732ACF63515DCE2A454C00ECAB
+5D7A74674A4AB84DC9E166FFBD46379AF9034F36D53EB398F2884FEF10D20512
+53E0939051501B59D199B288EF80418A650C215F7A329AAA92ACA64B87D4C8C8
+DD1DDC389F3BF0A295E67FFCE140E59E350B07A3EBC663B1EF5976C8F1FA3C15
+58C7C8DBD7900DB231BF0874082DAB39C0BD53FED49336F5EBB0AB67247B0359
+7CFA4D56D73AF2F9A0AEC27E570CE83C4DF2C2583C24445E9955E29B99899DC8
+EAF914F767A4AFD39FD61E3C40F8A37E2C9519C7ED15E0F922
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /Gamma put
+dup 9 /Psi put
+dup 10 /Omega put
+dup 13 /gamma put
+dup 32 /psi put
+dup 59 /comma put
+dup 73 /I put
+dup 97 /a put
+dup 127 /tie put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
+990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
+6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
+DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
+59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
+D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
+8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
+6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
+1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
+03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
+95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
+74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
+3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
+47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
+AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
+42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
+40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
+B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
+95601766758C197F327101A9C9BF396ED625E27A7791ADD341F284AE0094B0FA
+AF3771EC218AD799F17E51F1D165BAB43AC03DDC05E9960E8F55A678D087125A
+011E7463DB232C8E71A669156185B07C2F4AEE85C97621BB359EE50438911BE5
+F5E489524DD5BDDFD94DCC45CDD5CADF5804CF15027DFD5202CE70A4B325847B
+D93278A1C8701C3885F69918CB87CEBB1B03074C4F8B112742C1E276E51717D5
+1C1AE6EA74D8E5E88C0F3132E480887B8757B6955E646E245A8724D853053882
+F7A63D624A777C1FF06EF84908E4AD90BB4181E97942870D2B2083A6E96E5EEA
+96E8B7DDF401E0111DCCB062BD4248ACC44B91FB0BE28CA2E186AFE6EFE018C2
+54C8A55F7D1764558FBA7D02D316C7DC14BBD385D0FE932FF128320A787F1B59
+06336F751E1A1287BC7CA3E7836C1B13536E834484B56D68E6AA4A6D9557D7E7
+7B86906D9AE83708C4275C1DE5745843D3742CF9C1523214FE494EDB27991A04
+0CCE280C058B540DB07B57104F5065203EF22D5BF1E1FBB7CFB8A405F4B1EC0A
+B4D62C3272D58F29DF1A0E11BD00B40B91EE914EFFFA849D8761526CB5E6A8FE
+39D6C2E4BFC42D2299C0CEEC0917FEF69450595CF3963AAB28F3936B14814C84
+7ECBB3E02617BE47E46D09197280C2C3DE4E5581D4784079DDF75F3EFAB6C7E1
+E2581C87A7AAE944D403035CD72D6F9ABB170420C1BEA525F96E6C32F14C05FB
+239B90E8B293431985E94890E5EC33530D3C28F0552B1BC50DD6A323F5AF23B6
+0B642BF66D7B9724E40A88763755C023FEB0D86DF4B2889FD9D9624CD1FC25A5
+6542815B11A0425C3DB850CF3DF10A01F4043506ED8168ED041008361AEF5F7B
+FF64C14F876518BB1966739C2EBA7D13DBACDB62097BA9559233FEAB7F24CE43
+04BA24D8C2811BE126C10D95E865854E909AF53DD14288BED1BCE1474F14355C
+DDC981D19F334F6022F526BAAB962C21280F2DD576E11C6384C827021A7BC9EC
+031EDBB67FF653DDA96D971D3ABD3DAC46658D4E2E82784EE1288845ED640213
+9FC049A189FF16D4B32388D8D8B34308406A48B3512560DBECB7EBFE302BAE32
+B662ECB3688FA84330893FF7E388C728A0D1D4ED4200EE738242F69EA3C05C4C
+FFFEAD7982C9D38A073026BEF2FF507963B324DB20BDC3EE0CB8970C4865BADD
+FFD548C3B94CF328D0CAA5B09EED935060620AE1EB5F992A20C9C28368D597FB
+E87D90431DD8B15F501F0F5728568C4B56AF1EB8488DD00F51458EC9BF913F50
+9B764A8806B7E355FBAD1371170D88F6E16CAF36DE3D60FA0D6EE2A11B99498E
+75EACB5D36CD5B661BFDD4566540B5DE776BB533751DB730F22FEEE7952F9994
+384B9467EF83E8F102CDC890DEC2D3FF2CDBF1321F8C95BA20D04032F4597DE3
+5B32A143345838A45E59D1BBF86EF551227C2FEAEA6BBB1E7274AB8501C7876E
+C469FDAA6D3276CA2AE24B5FCCBD20F035DA8FDF58494291176427DD7FD3963E
+7523657694EFF0753E851633296789C206A13A4025EB4CB824B440124985F55E
+1E2D1B05BB91B9FEBD9F817611F6C308A20CE9195985A03811E49FD546EC4B61
+E88333C71137EBD177F737DCBDC8B1CB794D3425C0254ADB1FB20E6FBF9B2389
+DF4DCD721EE927CCD7A50DE9ABA53D5BA0212AB4ADAEA63B32D7F34756D2916E
+9393B97883C3A1D47E33C9267CCC878FF4D6F92F868FA0AD2C91A58F504D1355
+03B32C1A06E0AB06958E0756F7269608C355F3B413F0020261A289AC0B60DD7F
+A48C214F4D6775CD1A775C16F570E8A94FC39DF8A6067DF699450EE6FAB0838B
+65FDDB44856B7F5EF99579477AE35AB0962D5AF70E39A87510D634DFEC3E2B6C
+8305DAD403333791562F81283355B9FE2CF797EF92AD7112B3A6B52F6F4DBE94
+0AE39F242579B696D2F34E48E5F3E3338D46D03FE9FC5326FF68C72464407D74
+CFF0577EC2A259B26CD2D949603883F58482E29294A01044ACE5368D50B1BEF8
+6D2A57965BF1D721569383AD4783C0CD165733B17330BEAE252E48FE2E197A2C
+75B0385136797B7CE340A1F457A67B39C0E574B4BB32E159E908EA777711516E
+2A7AD9A5DFF904345898FCBDC062DDD1F57633D21F6D03546123F3E6146BF70A
+FA65D36D4154767C079E785FF681D14E3A9437671A33B84FAC7E5D2947B2BBE9
+52EA37E91C0D16354BA53A5360437877D2C5E8867214D20675FA2543CA81529C
+BDD2F516B9DE57C21D42A188514CEF691736A8C0CB1616A12436B301F31639B9
+96CA80870EB2AAD144FC32516F15FF42BC82570725B9C6033276E86495C8AF26
+F3BC53104B11F913A43EB37EB8CE3B2339069FFD6E4877638854D2E606EBC49E
+E350B5952B087AD2F74F5C6C0E6CA96A1861CF8A3B53919664C74A79B0D02721
+8059596698F8A958AA268605192952D350F3ACABE5BB75DD2EB48E3BFEDD42E3
+23CED2922651115F861378AAE277481B0BA61B163F0CAC42166880CD795F2A6D
+8C9267DA8454BB256D317166E0101F2E5FBE515670616BC8D4707E787EF24E03
+71B42BB08983CFE3EB92E9D5A84EF72604EA7890C0423D70D0B10B2609C65952
+8C02600DA310F9E0A3E7D59BD249FB704321708734C467140A9926FBFEE380DF
+4D7BAC80ACD62B824D236167CDD809EB757A060E3826B685B61F4CFDBBB1733E
+B99A5EC5E405A7ACD0BE1D8F3EE3352A4461665F8322FCA03C52CD6BF92A6310
+232273C994333C676D6B49E484F0481E129F2A32233D06139FABE693DA9F7BAE
+33C6E9E6C7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+TeXDict begin 39139632 55387786 1000 7200 7200 (testflow.dvi)
+@start /Fa 196[228 59[{}1 498.132 /CMMI5 rf /Fb 194[540
+540 678 7[464 455 505 505 43[540 540 540 540 1[{}11 498.132
+/LASY5 rf /Fc 139[138 3[249 53[138 4[249 53[{
+TeXBase1Encoding ReEncodeFont}4 498.132 /Times-Roman
+rf /Fd 196[227 59[{}1 597.758 /CMMI6 rf /Fe 194[576 576
+731 7[518 502 537 537 43[576 576 576 576 1[{}11 597.758
+/LASY6 rf /Ff 139[166 3[299 53[166 3[299 54[{
+TeXBase1Encoding ReEncodeFont}4 597.758 /Times-Roman
+rf /Fg 194[623 623 794 7[583 560 580 580 43[623 623 623
+623 1[{}11 697.385 /LASY7 rf /Fh 196[235 59[{}1 797.011
+/CMMI8 rf /Fi 194[659 659 847 7[637 607 612 612 43[659
+659 659 659 1[{}11 797.011 /LASY8 rf /Fj 196[256 59[{}1
+896.638 /CMMI9 rf /Fk 194[717 717 922 7[713 676 666 666
+43[717 717 717 717 1[{}11 896.638 /LASY9 rf /Fl 139[249
+3[448 53[249 448 57[{TeXBase1Encoding ReEncodeFont}4
+896.638 /Times-Roman rf /Fm 194[775 775 996 7[789 744
+720 720 43[775 775 775 775 1[{}11 996.264 /LASY10 rf
+/Fn 196[318 59[{}1 996.264 /CMMIB10 rf /Fo 194[891 891
+1146 7[805 778 827 827 43[891 891 891 891 1[{}11 996.264
+/LASYB10 rf /Fp 141[299 78[3587 3587 3587 3587 5[2790
+2790 2790 24[{}8 996.264 /LCIRCLEW10 rf /Fq 192[996 8[996
+8[996 17[996 27[{}4 996.264 /LINEW10 rf /Fr 192[996 8[996
+8[996 17[996 27[{}4 996.264 /LINE10 rf /Fs 141[299 78[3587
+3587 3587 3587 4[2790 2790 1[2790 24[{}8 996.264 /LCIRCLE10
+rf /Ft 152[423 423 102[{}2 797.011 /CMSY8 rf /Fu 139[265
+4[399 9[354 22[575 19[265 58[{TeXBase1Encoding ReEncodeFont}5
+797.011 /Times-Bold rf /Fv 107[354 354 25[399 2[399 399
+222 310 265 399 399 399 399 620 222 2[222 399 399 265
+354 399 354 399 354 12[487 3[443 21[222 399 399 399 3[399
+399 399 399 1[199 265 199 44[{TeXBase1Encoding ReEncodeFont}36
+797.011 /Times-Roman rf /Fw 133[670 122[{TeXBase1Encoding ReEncodeFont}
+1 1721.54 /Times-Italic rf /Fx 255[775{}1 996.264 /CMSY10
+rf /Fy 255[623{}1 697.385 /CMSY7 rf /Fz 150[282 7[432
+37[237 59[{}3 697.385 /CMMI7 rf /FA 194[612 5[397 3[397
+397 397 397 4[612 43[{}7 697.385 /CMR7 rf /FB 175[1052
+46[789 789 10[526 526 20[{}5 996.264 /CMEX10 rf /FC 194[775
+5[498 498 1[498 1[498 498 498 48[{}7 996.264 /CMR10 rf
+/FD 128[277 29[527 23[438 13[277 26[649 18[516 2[770
+610 8[613{}9 996.264 /CMMI10 rf /FE 138[554 332 388 442
+1[554 498 554 830 277 2[277 554 498 1[442 554 442 554
+498 12[665 554 719 1[609 775 719 940 665 775 4[609 1[719
+719 22[249 44[{TeXBase1Encoding ReEncodeFont}30 996.264
+/Times-Bold rf /FF 139[332 442 3[554 609 1[332 2[332
+609 3[609 1[609 498 12[665 3[609 32[295 249 46[{
+TeXBase1Encoding ReEncodeFont}14 996.264 /Palatino-Bold
+rf /FG 136[598 2[598 598 598 1[598 598 2[598 5[598 598
+598 598 1[598 44[598 5[598 46[{TeXBase1Encoding ReEncodeFont}14
+996.264 /Courier rf /FH 104[996 2[442 442 25[498 498
+719 498 498 277 388 332 1[498 498 498 775 277 498 1[277
+498 498 332 442 498 442 498 442 8[719 3[609 554 665 4[886
+609 2[332 1[719 554 609 719 665 8[277 4[498 498 1[498
+498 498 277 249 1[249 2[332 332 36[554 554 2[{
+TeXBase1Encoding ReEncodeFont}51 996.264 /Times-Roman
+rf /FI 171[797 665 2[730 1[863 1129 797 3[930 1[730 1[863
+2[863 65[{TeXBase1Encoding ReEncodeFont}10 1195.52 /Times-Bold
+rf /FJ 166[691 691 2[691 638 532 691 1[584 744 691 903
+638 2[372 744 744 1[638 691 691 1[691 65[{TeXBase1Encoding ReEncodeFont}
+18 956.413 /Times-Bold rf /FK 135[478 478 2[478 478 478
+1[478 478 1[478 478 2[478 478 478 478 478 1[478 1[478
+4[478 11[478 478 7[478 12[478 10[478 478 46[{
+TeXBase1Encoding ReEncodeFont}23 797.011 /Courier rf
+/FL 136[863 1[598 332 465 398 1[598 598 598 930 332 2[332
+598 598 398 531 598 2[531 10[863 2[665 1[863 10[665 2[797
+797 863 6[332 5[598 2[598 598 1[299 42[665 3[{
+TeXBase1Encoding ReEncodeFont}30 1195.52 /Times-Roman
+rf /FM 190[1492 65[{TeXBase1Encoding ReEncodeFont}1 2066.25
+/Times-Roman rf /FN 139[689 964 825 2[1239 1239 4[689
+1[1239 825 1101 12[1790 3[1514 1378 2[1378 3[1514 5[1378
+1514 1790 2[1790 17[689 47[{TeXBase1Encoding ReEncodeFont}19
+2478.71 /Times-Roman rf /FO 139[194 3[349 46[504 6[194
+349 349 349 349 349 349 349 349 349 349 48[{
+TeXBase1Encoding ReEncodeFont}14 697.385 /Times-Roman
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 7200dpi
+TeXDict begin
+%%PaperSize: A4
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop -40 0 45208 40 v -40 69789 40 69789
+v 45128 69789 V -40 69829 45208 40 v -7200 31425 7200
+40 v -1437 31972 40 1134 v -2855 31972 V -4272 31972
+V -5689 31972 V -7107 31972 V -303 31688 40 567 v -587
+31688 V -870 31688 V -1154 31688 V -1437 31688 V -1721
+31688 V -2004 31688 V -2288 31688 V -2571 31688 V -2855
+31688 V -3138 31688 V -3421 31688 V -3705 31688 V -3988
+31688 V -4272 31688 V -4555 31688 V -4839 31688 V -5122
+31688 V -5406 31688 V -5689 31688 V -5973 31688 V -6256
+31688 V -6540 31688 V -6823 31688 V -7107 31688 V -1592
+30787 a FO(5)-1940 b(10)-2116 b(15)h(20)p -7200 38404
+7200 40 v -740 39104 40 1440 v -1460 39104 V -2180 39104
+V -2900 39104 V -3620 39104 V -4340 39104 V -5060 39104
+V -5780 39104 V -6500 39104 V -7220 39104 V -380 38744
+40 721 v -1100 38744 V -1820 38744 V -2540 38744 V -3260
+38744 V -3980 38744 V -4700 38744 V -5420 38744 V -6140
+38744 V -6860 38744 V -894 37542 a(1)-1069 b(2)-2334
+37537 y(3)-3055 37542 y(4)-3775 37537 y(5)g(6)-5215 37534
+y(7)-5935 37537 y(8)-6655 37534 y(9)p 45128 31425 7200
+40 v 45391 31688 40 567 v 45675 31688 V 45958 31688 V
+46241 31688 V 46525 31688 V 46808 31688 V 47092 31688
+V 47375 31688 V 47659 31688 V 47942 31688 V 48226 31688
+V 48509 31688 V 48793 31688 V 49076 31688 V 49360 31688
+V 49643 31688 V 49927 31688 V 50210 31688 V 50493 31688
+V 50777 31688 V 51060 31688 V 51344 31688 V 51627 31688
+V 51911 31688 V 52194 31688 V 46525 31972 40 1134 v 47942
+31972 V 49360 31972 V 50777 31972 V 52194 31972 V 46371
+30787 a(5)894 b(10)719 b(15)g(20)p 45128 38404 7200 40
+v 45828 39104 40 1440 v 46548 39104 V 47268 39104 V 47988
+39104 V 48708 39104 V 49428 39104 V 50148 39104 V 50868
+39104 V 51588 39104 V 52308 39104 V 45468 38744 40 721
+v 46188 38744 V 46908 38744 V 47628 38744 V 48348 38744
+V 49068 38744 V 49788 38744 V 50508 38744 V 51228 38744
+V 51948 38744 V 45673 37542 a(1)371 b(2)47113 37537 y(3)47833
+37542 y(4)48553 37537 y(5)g(6)49994 37534 y(7)50714 37537
+y(8)51434 37534 y(9)p 20287 0 40 7200 v 19740 -1397 1134
+40 v 19740 -2815 V 19740 -4232 V 19740 -5649 V 19740
+-7067 V 20024 -264 567 40 v 20024 -547 V 20024 -830 V
+20024 -1114 V 20024 -1397 V 20024 -1681 V 20024 -1964
+V 20024 -2248 V 20024 -2531 V 20024 -2815 V 20024 -3098
+V 20024 -3382 V 20024 -3665 V 20024 -3949 V 20024 -4232
+V 20024 -4515 V 20024 -4799 V 20024 -5082 V 20024 -5366
+V 20024 -5649 V 20024 -5933 V 20024 -6216 V 20024 -6500
+V 20024 -6783 V 20024 -7067 V 19033 -1184 a(5)18859 -2602
+y(10)18859 -4019 y(15)18859 -5436 y(20)p 24800 0 40 7200
+v 24100 -700 1440 40 v 24100 -1420 V 24100 -2140 V 24100
+-2860 V 24100 -3580 V 24100 -4300 V 24100 -5020 V 24100
+-5740 V 24100 -6460 V 24100 -7181 V 24460 -340 721 40
+v 24460 -1060 V 24460 -1780 V 24460 -2500 V 24460 -3220
+V 24460 -3940 V 24460 -4660 V 24460 -5380 V 24460 -6100
+V 24460 -6820 V 23566 -482 a(1)23566 -1202 y(2)23566
+-1927 y(3)23566 -2642 y(4)23566 -3367 y(5)23566 -4087
+y(6)23566 -4810 y(7)23566 -5527 y(8)23566 -6250 y(9)p
+20287 76989 40 7200 v 19740 71226 1134 40 v 19740 72644
+V 19740 74061 V 19740 75478 V 19740 76896 V 20024 70092
+567 40 v 20024 70376 V 20024 70659 V 20024 70943 V 20024
+71226 V 20024 71510 V 20024 71793 V 20024 72077 V 20024
+72360 V 20024 72644 V 20024 72927 V 20024 73210 V 20024
+73494 V 20024 73777 V 20024 74061 V 20024 74344 V 20024
+74628 V 20024 74911 V 20024 75195 V 20024 75478 V 20024
+75762 V 20024 76045 V 20024 76329 V 20024 76612 V 20024
+76895 V 19033 71439 a(5)18859 72857 y(10)18859 74274
+y(15)18859 75691 y(20)p 24800 76989 40 7200 v 24100 70529
+1440 40 v 24100 71249 V 24100 71969 V 24100 72689 V 24100
+73409 V 24100 74129 V 24100 74849 V 24100 75569 V 24100
+76289 V 24100 77009 V 24460 70169 721 40 v 24460 70889
+V 24460 71609 V 24460 72329 V 24460 73049 V 24460 73769
+V 24460 74489 V 24460 75209 V 24460 75929 V 24460 76649
+V 23566 70747 a(1)23566 71467 y(2)23566 72182 y(3)23566
+72907 y(4)23566 73622 y(5)23566 74342 y(6)23566 75060
+y(7)23566 75782 y(8)23566 76499 y(9)5718 2986 y FN(A)620
+b(T)-173 b(est)619 b(for)i(L)16974 2710 y FM(A)18094
+2986 y FN(T)19195 3543 y(E)20400 2986 y(X)e(PS/PDF)h(Printing)14684
+5355 y FL(V)-133 b(ersion)300 b(1.1)1738 b(Build)299
+b(Code:)371 b(0004)9090 7447 y(See)299 b(the)f(test\003o)-30
+b(w)300 b(home)e(page)g(for)h(the)f(latest)i(ne)-30 b(ws)299
+b(and)f(F)-88 b(A)-66 b(Q:)12761 8643 y FK
+(http://www.michaelshell.org/tex/testflow/)20757 11631
+y FI(N)60 b FJ(O)22 b(T)60 b(E)g(S)4500 13425 y FH(Document)250
+b(paper)g(type)g(selected)g(under)f(L)19551 13225 y FO(A)19905
+13425 y FH(T)20348 13649 y(E)20832 13425 y(X:)309 b FG(a4paper)4500
+14620 y FH(Depends)250 b(only)f(on)h(the)f(base)h(article.cls)f(\227)g
+(no)h(other)f(e)-15 b(xternal)250 b(packages)h(are)e(loaded.)4500
+15816 y(The)g(main)h(te)-15 b(xt)249 b(font)g(is)g(T)-35
+b(imes)249 b(Roman,)g(the)h(math)f(font)g(is)g(Computer)g(Modern.)4500
+17011 y(Imperial)g(\(0.1in\))g(and)h(metric)f(\(mm\))g(rulers)g(are)g
+(pro)-15 b(vided)250 b(to)f(measure)h(centering.)4500
+18207 y(The)f(frame)h(on)f(this)g(page)h(should)f(be)g(centered)i(on)e
+(the)g(paper)h(and)g(1in)f(\(25.4mm\))g(from)g(the)h(edges.)4500
+19402 y(T)-80 b(o)249 b(maintain)h(accurate)h(dimensions,)e(do)g(not)g
+(scale)h(page)g(when)g(printing.)4500 20598 y(\(i.e.,)f(deselect)h(an)
+-15 b(y)250 b(\223\002t)f(to)g(page\224)i(or)e(\223shrink/e)-15
+b(xpand)250 b(page\224)g(options.\))4500 21793 y(F)-15
+b(or)249 b(complete)h(usage)g(information,)f(read)h(the)f
+FG(testflow)p 26013 21793 299 40 v 357 w(doc.pdf)e FH(\002le.)13984
+24184 y FI(P)-19 b FJ(A)60 b(L)g(L)g(A)g(D)g(I)g(O)352
+b FI(F)60 b FJ(O)g(N)g(T)356 b FI(H)60 b FJ(I)g(N)g(T)g(I)g(N)g(G)353
+b FI(T)60 b FJ(E)g(S)g(T)15098 25978 y FF(This)249 b(is)g(in)f(bold)h
+(Palatino/Palladio.)18201 28369 y FI(L)60 b FJ(I)g(G)g(A)-31
+b(T)60 b(U)g(R)g(E)352 b FI(T)60 b FJ(E)g(S)g(T)4500
+30162 y FE(Ligatur)-18 b(es)2291 b FH(\227)748 b(The)249
+b(of)-25 b(\002ce)249 b(w)-10 b(as)250 b(af)-25 b(fected)250
+b(by)f(the)h(\002)-25 b(v)-15 b(e)249 b(\003a)-15 b(wed)250
+b(muf)-25 b(\003ers.)4500 31357 y FE(No)249 b(Ligatur)-18
+b(es)825 b FH(\227)748 b(The)249 b(office)g(w)-10 b(as)249
+b(affected)h(by)g(the)f(fi)-25 b(v)-15 b(e)250 b(fla)-15
+b(wed)250 b(mufflers.)19054 33748 y FI(M)60 b FJ(A)-31
+b(T)60 b(H)356 b FI(T)60 b FJ(E)g(S)g(T)g(S)15116 35542
+y FE(Lar)-10 b(ge)250 b(Delimiter)g(and)f(Operator)h(T)-92
+b(est)14895 38584 y FD(I)354 b FC(=)16739 37179 y FB(\024)17763
+37976 y FC(1)996 b(0)17763 39172 y(0)g(1)20254 37179
+y FB(\025)21942 38584 y FH(and)24377 36880 y FB( )25778
+37637 y FA(2)25451 37837 y FB(P)25331 39460 y Fz(i)p
+FA(=0)26788 38584 y FC(2)27286 38222 y Fz(i)27895 38584
+y FC(=)276 b(7)29444 36880 y FB(!)19150 41910 y FE(Minus)248
+b(Sign)h(T)-92 b(est)13485 44102 y FH(If)249 b FD(a)276
+b FC(=)h(4)p FH(,)249 b(then:)310 b FC(2)20049 43741
+y Fy(\000)p Fz(a)p FA(+7)22383 44102 y Fx(\000)222 b
+FC(2)23878 43741 y Fz(a)p Fy(\000)p FA(3)25656 44102
+y FC(=)277 b(2)27206 43741 y FA(3)27874 44102 y Fx(\000)222
+b FC(2)29369 43741 y FA(1)30092 44102 y FC(=)277 b(6)10170
+46413 y FE(Pr)-18 b(oblem)250 b(Character)-92 b(,)251
+b(T)-18 b(imes)248 b(Roman)i(and)f(F)-25 b(ont)248 b(K)-25
+b(er)-15 b(ning)250 b(T)-92 b(ests)15087 48207 y FH(Math)250
+b(italic)f(glyphs:)309 b FD(\000)28 b(;)414 b(\011)54
+b(;)415 b(\012)50 b(;)415 b(\015)55 b(;)415 b( )36 b(;)414
+b(\177)7294 49701 y FH(Lar)-18 b(ge)249 b(T)-35 b(imes)249
+b(Roman)g(italic:)309 b Fw(z)1993 b FH(GS)249 b(k)-10
+b(erning)250 b(test:)308 b Fv(The)199 b(\223Problematic\224)e(little)g
+(quotes.)4500 51196 y Fu(Note:)248 b Fv(The)198 b(math)h(italic)e
+(glyphs)g(are)i(in)f(the)h(control)e(character)h(positions)e(0,)j(9,)g
+(10,)g(13,)f(32)h(and)f(127.)4500 52391 y(i.e.,)h FK(\\Gamma)p
+Fv(,)i FK(\\Psi)p Fv(,)g FK(\\Omega)p Fv(,)f FK(\\gamma)p
+Fv(,)h FK(\\psi)p Fv(,)f(and)e(the)h FK(\\t)p Ft(f)p
+FK(xx)p Ft(g)i Fv(tie-after)d(accent,)g(respecti)-20
+b(v)-12 b(ely)-52 b(.)13730 54782 y FI(P)60 b FJ(I)g(C)g(T)g(U)g(R)g(E)
+352 b(A)60 b(N)g(D)355 b FI(L)60 b FJ(A)g(S)g(Y)354 b
+FI(F)60 b FJ(O)g(N)g(T)g(S)355 b FI(T)60 b FJ(E)g(S)g(T)p
+5536 56514 40 40 v 5562 56510 V 5587 56505 V 5613 56501
+V 5638 56496 V 5664 56492 V 5689 56487 V 5715 56483 V
+5740 56478 V 5766 56474 V 5791 56470 V 5817 56465 V 5842
+56461 V 5868 56457 V 5893 56452 V 5919 56448 V 5944 56444
+V 5970 56440 V 5995 56435 V 6021 56431 V 6046 56427 V
+6072 56423 V 6097 56419 V 6123 56415 V 6148 56411 V 6174
+56406 V 6199 56402 V 6225 56398 V 6250 56394 V 6276 56390
+V 6301 56386 V 6327 56382 V 6352 56378 V 6378 56374 V
+6403 56370 V 6429 56367 V 6454 56363 V 6480 56359 V 6505
+56355 V 6531 56351 V 6556 56347 V 6582 56344 V 6607 56340
+V 6633 56336 V 6659 56332 V 6684 56328 V 6710 56325 V
+6735 56321 V 6761 56317 V 6786 56314 V 6812 56310 V 6837
+56306 V 6863 56303 V 6888 56299 V 6914 56296 V 6939 56292
+V 6965 56289 V 6990 56285 V 7016 56282 V 7041 56278 V
+7067 56275 V 7092 56271 V 7118 56268 V 7143 56264 V 7169
+56261 V 7194 56258 V 7220 56254 V 7245 56251 V 7271 56248
+V 7296 56244 V 7322 56241 V 7347 56238 V 7373 56235 V
+7398 56231 V 7424 56228 V 7449 56225 V 7475 56222 V 7500
+56219 V 7526 56216 V 7551 56212 V 7577 56209 V 7602 56206
+V 7628 56203 V 7653 56200 V 7679 56197 V 7704 56194 V
+7730 56191 V 7756 56188 V 7781 56185 V 7807 56182 V 7832
+56180 V 7858 56177 V 7883 56174 V 7909 56171 V 7934 56168
+V 7960 56165 V 7985 56162 V 8011 56160 V 8036 56157 V
+8062 56154 V 8087 56151 V 8113 56149 V 8138 56146 V 8164
+56143 V 8189 56141 V 8215 56138 V 8240 56135 V 8266 56133
+V 8291 56130 V 8317 56128 V 8342 56125 V 8368 56123 V
+8393 56120 V 8419 56118 V 8444 56115 V 8470 56113 V 8495
+56110 V 8521 56108 V 8546 56105 V 8572 56103 V 8597 56101
+V 8623 56098 V 8648 56096 V 8674 56094 V 8699 56091 V
+8725 56089 V 8750 56087 V 8776 56085 V 8801 56082 V 8827
+56080 V 8853 56078 V 8878 56076 V 8904 56074 V 8929 56071
+V 8955 56069 V 8980 56067 V 9006 56065 V 9031 56063 V
+9057 56061 V 9082 56059 V 9108 56057 V 9133 56055 V 9159
+56053 V 9184 56051 V 9210 56049 V 9235 56047 V 9261 56045
+V 9286 56044 V 9312 56042 V 9337 56040 V 9363 56038 V
+9388 56036 V 9414 56034 V 9439 56033 V 9465 56031 V 9490
+56029 V 9516 56028 V 9541 56026 V 9567 56024 V 9592 56023
+V 9618 56021 V 9643 56019 V 9669 56017 V 9694 56016 V
+9720 56014 V 9745 56013 V 9771 56011 V 9796 56010 V 9822
+56008 V 9847 56007 V 9873 56005 V 9898 56004 V 9924 56002
+V 9950 56001 V 9975 56000 V 10001 55998 V 10026 55997
+V 10052 55996 V 10077 55994 V 10103 55993 V 10128 55992
+V 10154 55991 V 10179 55989 V 10205 55988 V 10230 55987
+V 10256 55986 V 10281 55985 V 10307 55983 V 10332 55982
+V 10358 55981 V 10383 55980 V 10409 55979 V 10434 55978
+V 10460 55977 V 10485 55976 V 10511 55975 V 10536 55974
+V 10562 55973 V 10587 55972 V 10613 55971 V 10638 55970
+V 10664 55969 V 10689 55968 V 10715 55967 V 10740 55966
+V 10766 55966 V 10791 55965 V 10817 55964 V 10842 55963
+V 10868 55963 V 10893 55962 V 10919 55961 V 10944 55960
+V 10970 55960 V 10995 55959 V 11021 55959 V 11047 55958
+V 11072 55957 V 11098 55957 V 11123 55956 V 11149 55955
+V 11174 55955 V 11200 55954 V 11225 55954 V 11251 55953
+V 11276 55953 V 11302 55952 V 11327 55952 V 11353 55952
+V 11378 55951 V 11404 55951 V 11429 55951 V 11455 55950
+V 11480 55950 V 11506 55950 V 11531 55949 V 11557 55949
+V 11582 55949 V 11608 55949 V 11633 55948 V 11659 55948
+V 11684 55948 V 11710 55948 V 11735 55948 V 11761 55948
+V 11786 55948 V 11812 55948 V 11837 55948 V 11863 55948
+V 11888 55947 V 11914 55947 V 11939 55947 V 11965 55947
+V 11990 55947 V 12016 55947 V 12041 55947 V 12067 55948
+V 12092 55948 V 12118 55948 V 12144 55948 V 12169 55948
+V 12195 55948 V 12220 55949 V 12246 55949 V 12271 55949
+V 12297 55949 V 12322 55950 V 12348 55950 V 12373 55950
+V 12399 55951 V 12424 55951 V 12450 55951 V 12475 55952
+V 12501 55952 V 12526 55953 V 12552 55953 V 12577 55954
+V 12603 55954 V 12628 55954 V 12654 55955 V 12679 55955
+V 12705 55956 V 12730 55956 V 12756 55957 V 12781 55958
+V 12807 55958 V 12832 55959 V 12858 55960 V 12883 55960
+V 12909 55961 V 12934 55962 V 12960 55963 V 12985 55963
+V 13011 55964 V 13036 55965 V 13062 55966 V 13087 55967
+V 13113 55967 V 13138 55968 V 13164 55969 V 13189 55970
+V 13215 55971 V 13241 55972 V 13266 55973 V 13292 55974
+V 13317 55975 V 13343 55976 V 13368 55977 V 13394 55978
+V 13419 55979 V 13445 55980 V 13470 55981 V 13496 55982
+V 13521 55983 V 13547 55984 V 13572 55986 V 13598 55987
+V 13623 55988 V 13649 55989 V 13674 55990 V 13700 55992
+V 13725 55993 V 13751 55994 V 13776 55996 V 13802 55997
+V 13827 55998 V 13853 56000 V 13878 56001 V 13904 56003
+V 13929 56004 V 13955 56005 V 13980 56007 V 14006 56008
+V 14031 56010 V 14057 56012 V 14082 56013 V 14108 56015
+V 14133 56016 V 14159 56017 V 14184 56019 V 14210 56021
+V 14235 56022 V 14261 56024 V 14286 56026 V 14312 56027
+V 14338 56029 V 14363 56031 V 14389 56033 V 14414 56034
+V 14440 56036 V 14465 56038 V 14491 56040 V 14516 56042
+V 14542 56044 V 14567 56045 V 14593 56047 V 14618 56049
+V 14644 56051 V 14669 56053 V 14695 56055 V 14720 56057
+V 14746 56059 V 14771 56061 V 14797 56063 V 14822 56065
+V 14848 56067 V 14873 56070 V 14899 56071 V 14924 56073
+V 14950 56076 V 14975 56078 V 15001 56080 V 15026 56082
+V 15052 56084 V 15077 56087 V 15103 56089 V 15128 56091
+V 15154 56094 V 15179 56096 V 15205 56098 V 15230 56101
+V 15256 56103 V 15281 56105 V 15307 56108 V 15332 56110
+V 15358 56113 V 15383 56115 V 15409 56118 V 15435 56120
+V 15460 56123 V 15486 56125 V 15511 56128 V 15537 56130
+V 15562 56133 V 15588 56136 V 15613 56138 V 15639 56140
+V 15664 56143 V 15690 56146 V 15715 56148 V 15741 56151
+V 15766 56154 V 15792 56157 V 15817 56159 V 15843 56162
+V 15868 56165 V 15894 56168 V 15919 56171 V 15945 56174
+V 15970 56177 V 15996 56179 V 16021 56182 V 16047 56185
+V 16072 56188 V 16098 56191 V 16123 56194 V 16149 56197
+V 16174 56200 V 16200 56203 V 16225 56207 V 16251 56210
+V 16276 56213 V 16302 56216 V 16327 56219 V 16353 56222
+V 16378 56225 V 16404 56228 V 16429 56231 V 16455 56234
+V 16480 56238 V 16506 56241 V 16532 56244 V 16557 56248
+V 16583 56251 V 16608 56254 V 16634 56258 V 16659 56261
+V 16685 56264 V 16710 56268 V 16736 56271 V 16761 56275
+V 16787 56278 V 16812 56282 V 16838 56285 V 16863 56289
+V 16889 56292 V 16914 56296 V 16940 56299 V 16965 56303
+V 16991 56307 V 17016 56310 V 17042 56314 V 17067 56318
+V 17093 56321 V 17118 56325 V 17144 56328 V 17169 56332
+V 17195 56336 V 17220 56339 V 17246 56343 V 17271 56347
+V 17297 56351 V 17322 56355 V 17348 56359 V 17373 56363
+V 17399 56366 V 17424 56370 V 17450 56374 V 17475 56378
+V 17501 56382 V 17526 56386 V 17552 56390 V 17577 56394
+V 17603 56398 V 17629 56402 V 17654 56407 V 17680 56411
+V 17705 56415 V 17731 56419 V 17756 56423 V 17782 56427
+V 17807 56432 V 17833 56436 V 17858 56440 V 17884 56444
+V 17909 56448 V 17935 56452 V 17960 56456 V 17986 56461
+V 18011 56465 V 18037 56469 V 18062 56474 V 18088 56478
+V 18113 56483 V 18139 56487 V 18164 56492 V 18190 56496
+V 18215 56501 V 18241 56505 V 18266 56510 V 18292 56514
+V 6953 56798 a Fs(\033)p 6953 58195 40 23 v 8368 56798
+23 40 v 7132 w(\030)p 16875 58195 40 23 v 15477 56798
+23 40 v 6245 56514 a(\033)p 6245 57912 40 23 v 8548 w(\030)p
+17583 57912 V 7659 56514 8550 40 v 4686 55947 a(\033)p
+4686 60769 40 3447 v 4686 62183 a(\032)p 6100 62183 23
+40 v 6100 55947 V 9808 59045 a(r)7995 60859 y("!)7995
+57272 y(#)o( )p 9788 59045 40 1701 v 9808 58341 a Fr(6)p
+9808 59065 1701 40 v 10512 59045 a(-)p 9788 60746 40
+1701 v 9808 60746 a(?)p 8107 59065 1701 40 v 8107 59045
+a(\033)p 5516 61636 80 80 v 5556 61643 V 5596 61650 V
+5636 61657 V 5676 61664 V 5715 61671 V 5755 61678 V 5795
+61685 V 5835 61692 V 5875 61698 V 5915 61705 V 5955 61712
+V 5994 61718 V 6034 61725 V 6074 61731 V 6114 61738 V
+6154 61744 V 6194 61750 V 6234 61757 V 6273 61763 V 6313
+61769 V 6353 61775 V 6393 61782 V 6433 61788 V 6473 61794
+V 6513 61800 V 6552 61806 V 6592 61812 V 6632 61817 V
+6672 61823 V 6712 61829 V 6752 61835 V 6792 61840 V 6832
+61846 V 6871 61852 V 6911 61857 V 6951 61863 V 6991 61868
+V 7031 61874 V 7071 61879 V 7111 61884 V 7150 61890 V
+7190 61895 V 7230 61900 V 7270 61905 V 7310 61910 V 7350
+61915 V 7390 61921 V 7429 61926 V 7469 61930 V 7509 61935
+V 7549 61940 V 7589 61945 V 7629 61950 V 7669 61955 V
+7708 61959 V 7748 61964 V 7788 61968 V 7828 61973 V 7868
+61977 V 7908 61982 V 7948 61986 V 7988 61991 V 8027 61995
+V 8067 61999 V 8107 62004 V 8147 62008 V 8187 62012 V
+8227 62016 V 8267 62020 V 8306 62024 V 8346 62028 V 8386
+62032 V 8426 62036 V 8466 62039 V 8506 62043 V 8546 62047
+V 8585 62051 V 8625 62054 V 8665 62058 V 8705 62062 V
+8745 62065 V 8785 62069 V 8825 62072 V 8864 62075 V 8904
+62079 V 8944 62082 V 8984 62085 V 9024 62089 V 9064 62092
+V 9104 62095 V 9144 62098 V 9183 62101 V 9223 62104 V
+9263 62107 V 9303 62110 V 9343 62113 V 9383 62115 V 9423
+62118 V 9462 62121 V 9502 62124 V 9542 62126 V 9582 62129
+V 9622 62131 V 9662 62134 V 9702 62136 V 9741 62139 V
+9781 62141 V 9821 62143 V 9861 62146 V 9901 62148 V 9941
+62150 V 9981 62152 V 10020 62154 V 10060 62156 V 10100
+62158 V 10140 62161 V 10180 62162 V 10220 62164 V 10260
+62166 V 10300 62168 V 10339 62170 V 10379 62171 V 10419
+62173 V 10459 62175 V 10499 62176 V 10539 62178 V 10579
+62179 V 10618 62181 V 10658 62182 V 10698 62183 V 10738
+62185 V 10778 62186 V 10818 62187 V 10858 62188 V 10897
+62189 V 10937 62190 V 10977 62192 V 11017 62193 V 11057
+62194 V 11097 62194 V 11137 62195 V 11176 62196 V 11216
+62197 V 11256 62198 V 11296 62198 V 11336 62199 V 11376
+62200 V 11416 62200 V 11456 62201 V 11495 62201 V 11535
+62202 V 11575 62202 V 11615 62202 V 11655 62202 V 11695
+62203 V 11735 62203 V 11774 62203 V 11814 62203 V 11854
+62203 V 11894 62203 V 11934 62203 V 11974 62203 V 12014
+62203 V 12053 62203 V 12093 62203 V 12133 62202 V 12173
+62202 V 12213 62202 V 12253 62202 V 12293 62201 V 12332
+62201 V 12372 62200 V 12412 62199 V 12452 62199 V 12492
+62198 V 12532 62198 V 12572 62197 V 12612 62196 V 12651
+62195 V 12691 62194 V 12731 62194 V 12771 62193 V 12811
+62192 V 12851 62191 V 12891 62190 V 12930 62188 V 12970
+62187 V 13010 62186 V 13050 62185 V 13090 62183 V 13130
+62182 V 13170 62181 V 13209 62179 V 13249 62178 V 13289
+62176 V 13329 62175 V 13369 62173 V 13409 62171 V 13449
+62170 V 13488 62168 V 13528 62166 V 13568 62164 V 13608
+62162 V 13648 62161 V 13688 62158 V 13728 62157 V 13768
+62154 V 13807 62152 V 13847 62150 V 13887 62148 V 13927
+62146 V 13967 62143 V 14007 62141 V 14047 62139 V 14086
+62136 V 14126 62134 V 14166 62132 V 14206 62129 V 14246
+62126 V 14286 62124 V 14326 62121 V 14365 62118 V 14405
+62115 V 14445 62113 V 14485 62110 V 14525 62107 V 14565
+62104 V 14605 62101 V 14644 62098 V 14684 62095 V 14724
+62092 V 14764 62089 V 14804 62086 V 14844 62082 V 14884
+62079 V 14924 62076 V 14963 62072 V 15003 62069 V 15043
+62065 V 15083 62062 V 15123 62058 V 15163 62054 V 15203
+62051 V 15242 62047 V 15282 62043 V 15322 62040 V 15362
+62036 V 15402 62032 V 15442 62028 V 15482 62024 V 15521
+62020 V 15561 62016 V 15601 62012 V 15641 62008 V 15681
+62004 V 15721 62000 V 15761 61995 V 15800 61991 V 15840
+61986 V 15880 61982 V 15920 61978 V 15960 61973 V 16000
+61969 V 16040 61964 V 16080 61959 V 16119 61955 V 16159
+61950 V 16199 61945 V 16239 61940 V 16279 61936 V 16319
+61931 V 16359 61925 V 16398 61921 V 16438 61915 V 16478
+61911 V 16518 61905 V 16558 61900 V 16598 61895 V 16638
+61890 V 16677 61885 V 16717 61879 V 16757 61874 V 16797
+61868 V 16837 61863 V 16877 61857 V 16917 61852 V 16956
+61846 V 16996 61840 V 17036 61835 V 17076 61829 V 17116
+61824 V 17156 61818 V 17196 61812 V 17236 61806 V 17275
+61800 V 17315 61794 V 17355 61788 V 17395 61782 V 17435
+61776 V 17475 61770 V 17515 61763 V 17554 61757 V 17594
+61751 V 17634 61744 V 17674 61738 V 17714 61731 V 17754
+61725 V 17794 61718 V 17833 61712 V 17873 61705 V 17913
+61698 V 17953 61692 V 17993 61685 V 18033 61678 V 18073
+61671 V 18112 61665 V 18152 61658 V 18192 61650 V 18232
+61644 V 18272 61636 V 5556 63337 32599 80 v 37158 63297
+a Fq(-)14060 59045 y Fp(r)12227 60879 y("!)12227 57292
+y(#)o( )p 14020 59045 80 1701 v 14060 58341 a Fq(6)p
+14060 59085 1701 80 v 14764 59045 a(-)p 14020 60746 80
+1701 v 14060 60746 a(?)p 12359 59085 1701 80 v 12359
+59045 a(\033)p 6933 59918 80 23 v 6933 61353 a Fp(\032)p
+8368 61353 23 80 v 16855 59918 80 23 v 7132 w(\031)p
+15477 61353 23 80 v 6225 60202 80 23 v 6225 61636 a(\032)p
+17563 60202 V 8548 w(\031)p 7659 61636 8550 80 v 19122
+55967 a(\030)p 19122 60769 80 3447 v 19122 62203 a(\031)p
+17745 62203 23 80 v 17745 55967 V 20057 56494 a FH(10pt)249
+b(bold:)721 b Fo(0)p Fn(;)191 b Fo(1)p Fn(;)h Fo(2)p
+Fn(;)f Fo(3)p Fn(;)g Fo(;)p Fn(;)g Fo(<)p Fn(;)g Fo(=)p
+Fn(;)h Fo(\001)p Fn(;)f Fo(\002)p Fn(;)g Fo(\003)p Fn(;)h
+Fo(\004)22077 57628 y FH(10pt:)721 b Fm(0)p FD(;)166
+b Fm(1)p FD(;)g Fm(2)p FD(;)g Fm(3)p FD(;)g Fm(;)p FD(;)g
+Fm(<)p FD(;)g Fm(=)p FD(;)g Fm(\001)p FD(;)g Fm(\002)p
+FD(;)g Fm(\003)p FD(;)g Fm(\004)22730 58620 y Fl(9pt:)722
+b Fk(0)p Fj(;)153 b Fk(1)p Fj(;)g Fk(2)p Fj(;)g Fk(3)p
+Fj(;)g Fk(;)p Fj(;)g Fk(<)p Fj(;)h Fk(=)p Fj(;)f Fk(\001)p
+Fj(;)g Fk(\002)p Fj(;)h Fk(\003)p Fj(;)f Fk(\004)22885
+59471 y Fv(8pt:)719 b Fi(0)p Fh(;)141 b Fi(1)p Fh(;)g
+Fi(2)p Fh(;)g Fi(3)p Fh(;)f Fi(;)p Fh(;)i Fi(<)p Fh(;)f
+Fi(=)p Fh(;)g Fi(\001)p Fh(;)g Fi(\002)p Fh(;)g Fi(\003)p
+Fh(;)g Fi(\004)23040 60179 y FO(7pt:)720 b Fg(0)p Fz(;)135
+b Fg(1)p Fz(;)h Fg(2)p Fz(;)f Fg(3)p Fz(;)g Fg(;)p Fz(;)h
+Fg(<)p Fz(;)g Fg(=)p Fz(;)f Fg(\001)p Fz(;)g Fg(\002)p
+Fz(;)h Fg(\003)p Fz(;)f Fg(\004)23196 60817 y Ff(6pt:)720
+b Fe(0)p Fd(;)127 b Fe(1)p Fd(;)g Fe(2)p Fd(;)g Fe(3)p
+Fd(;)g Fe(;)p Fd(;)g Fe(<)p Fd(;)f Fe(=)p Fd(;)h Fe(\001)p
+Fd(;)g Fe(\002)p Fd(;)g Fe(\003)p Fd(;)g Fe(\004)23351
+61384 y Fc(5pt:)721 b Fb(0)p Fa(;)122 b Fb(1)p Fa(;)h
+Fb(2)p Fa(;)g Fb(3)p Fa(;)f Fb(;)p Fa(;)g Fb(<)p Fa(;)g
+Fb(=)p Fa(;)h Fb(\001)p Fa(;)f Fb(\002)p Fa(;)g Fb(\003)p
+Fa(;)g Fb(\004)p eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop -40 0 45208 40 v -40 69789 40 69789
+v 45128 69789 V -40 69829 45208 40 v -7200 31425 7200
+40 v -1437 31972 40 1134 v -2855 31972 V -4272 31972
+V -5689 31972 V -7107 31972 V -303 31688 40 567 v -587
+31688 V -870 31688 V -1154 31688 V -1437 31688 V -1721
+31688 V -2004 31688 V -2288 31688 V -2571 31688 V -2855
+31688 V -3138 31688 V -3421 31688 V -3705 31688 V -3988
+31688 V -4272 31688 V -4555 31688 V -4839 31688 V -5122
+31688 V -5406 31688 V -5689 31688 V -5973 31688 V -6256
+31688 V -6540 31688 V -6823 31688 V -7107 31688 V -1592
+30787 a FO(5)-1940 b(10)-2116 b(15)h(20)p -7200 38404
+7200 40 v -740 39104 40 1440 v -1460 39104 V -2180 39104
+V -2900 39104 V -3620 39104 V -4340 39104 V -5060 39104
+V -5780 39104 V -6500 39104 V -7220 39104 V -380 38744
+40 721 v -1100 38744 V -1820 38744 V -2540 38744 V -3260
+38744 V -3980 38744 V -4700 38744 V -5420 38744 V -6140
+38744 V -6860 38744 V -894 37542 a(1)-1069 b(2)-2334
+37537 y(3)-3055 37542 y(4)-3775 37537 y(5)g(6)-5215 37534
+y(7)-5935 37537 y(8)-6655 37534 y(9)p 45128 31425 7200
+40 v 45391 31688 40 567 v 45675 31688 V 45958 31688 V
+46241 31688 V 46525 31688 V 46808 31688 V 47092 31688
+V 47375 31688 V 47659 31688 V 47942 31688 V 48226 31688
+V 48509 31688 V 48793 31688 V 49076 31688 V 49360 31688
+V 49643 31688 V 49927 31688 V 50210 31688 V 50493 31688
+V 50777 31688 V 51060 31688 V 51344 31688 V 51627 31688
+V 51911 31688 V 52194 31688 V 46525 31972 40 1134 v 47942
+31972 V 49360 31972 V 50777 31972 V 52194 31972 V 46371
+30787 a(5)894 b(10)719 b(15)g(20)p 45128 38404 7200 40
+v 45828 39104 40 1440 v 46548 39104 V 47268 39104 V 47988
+39104 V 48708 39104 V 49428 39104 V 50148 39104 V 50868
+39104 V 51588 39104 V 52308 39104 V 45468 38744 40 721
+v 46188 38744 V 46908 38744 V 47628 38744 V 48348 38744
+V 49068 38744 V 49788 38744 V 50508 38744 V 51228 38744
+V 51948 38744 V 45673 37542 a(1)371 b(2)47113 37537 y(3)47833
+37542 y(4)48553 37537 y(5)g(6)49994 37534 y(7)50714 37537
+y(8)51434 37534 y(9)p 20287 0 40 7200 v 19740 -1397 1134
+40 v 19740 -2815 V 19740 -4232 V 19740 -5649 V 19740
+-7067 V 20024 -264 567 40 v 20024 -547 V 20024 -830 V
+20024 -1114 V 20024 -1397 V 20024 -1681 V 20024 -1964
+V 20024 -2248 V 20024 -2531 V 20024 -2815 V 20024 -3098
+V 20024 -3382 V 20024 -3665 V 20024 -3949 V 20024 -4232
+V 20024 -4515 V 20024 -4799 V 20024 -5082 V 20024 -5366
+V 20024 -5649 V 20024 -5933 V 20024 -6216 V 20024 -6500
+V 20024 -6783 V 20024 -7067 V 19033 -1184 a(5)18859 -2602
+y(10)18859 -4019 y(15)18859 -5436 y(20)p 24800 0 40 7200
+v 24100 -700 1440 40 v 24100 -1420 V 24100 -2140 V 24100
+-2860 V 24100 -3580 V 24100 -4300 V 24100 -5020 V 24100
+-5740 V 24100 -6460 V 24100 -7181 V 24460 -340 721 40
+v 24460 -1060 V 24460 -1780 V 24460 -2500 V 24460 -3220
+V 24460 -3940 V 24460 -4660 V 24460 -5380 V 24460 -6100
+V 24460 -6820 V 23566 -482 a(1)23566 -1202 y(2)23566
+-1927 y(3)23566 -2642 y(4)23566 -3367 y(5)23566 -4087
+y(6)23566 -4810 y(7)23566 -5527 y(8)23566 -6250 y(9)p
+20287 76989 40 7200 v 19740 71226 1134 40 v 19740 72644
+V 19740 74061 V 19740 75478 V 19740 76896 V 20024 70092
+567 40 v 20024 70376 V 20024 70659 V 20024 70943 V 20024
+71226 V 20024 71510 V 20024 71793 V 20024 72077 V 20024
+72360 V 20024 72644 V 20024 72927 V 20024 73210 V 20024
+73494 V 20024 73777 V 20024 74061 V 20024 74344 V 20024
+74628 V 20024 74911 V 20024 75195 V 20024 75478 V 20024
+75762 V 20024 76045 V 20024 76329 V 20024 76612 V 20024
+76895 V 19033 71439 a(5)18859 72857 y(10)18859 74274
+y(15)18859 75691 y(20)p 24800 76989 40 7200 v 24100 70529
+1440 40 v 24100 71249 V 24100 71969 V 24100 72689 V 24100
+73409 V 24100 74129 V 24100 74849 V 24100 75569 V 24100
+76289 V 24100 77009 V 24460 70169 721 40 v 24460 70889
+V 24460 71609 V 24460 72329 V 24460 73049 V 24460 73769
+V 24460 74489 V 24460 75209 V 24460 75929 V 24460 76649
+V 23566 70747 a(1)23566 71467 y(2)23566 72182 y(3)23566
+72907 y(4)23566 73622 y(5)23566 74342 y(6)23566 75060
+y(7)23566 75782 y(8)23566 76499 y(9)5718 2986 y FN(A)620
+b(T)-173 b(est)619 b(for)i(L)16974 2710 y FM(A)18094
+2986 y FN(T)19195 3543 y(E)20400 2986 y(X)e(PS/PDF)h(Printing)14684
+5355 y FL(V)-133 b(ersion)300 b(1.1)1738 b(Build)299
+b(Code:)371 b(0004)13838 7746 y FI(D)60 b FJ(U)g(P)g(L)g(E)g(X)354
+b FI(A)60 b FJ(L)g(I)g(G)g(N)g(M)g(E)g(N)g(T)351 b FI(T)60
+b FJ(E)g(S)g(T)355 b FI(S)60 b FJ(I)g(D)g(E)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_LTR.pdf b/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_LTR.pdf
new file mode 100644
index 0000000000..4f6427e211
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_LTR.pdf
Binary files differ
diff --git a/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_LTR.ps b/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_LTR.ps
new file mode 100644
index 0000000000..adb5426490
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/testflow/testflow_ctl_LTR.ps
@@ -0,0 +1,3001 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
+%%Title: testflow.dvi
+%%Pages: 2
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: Times-Roman Courier Times-Bold Palatino-Bold CMMI10
+%%+ CMR10 CMEX10 CMR7 CMMI7 CMSY7 CMSY10 Times-Italic CMSY8 LCIRCLE10
+%%+ LINE10 LINEW10 LCIRCLEW10 LASYB10 CMMIB10 LASY10 LASY9 CMMI9 LASY8
+%%+ CMMI8 LASY7 LASY6 CMMI6 LASY5 CMMI5
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips testflow
+%DVIPSParameters: dpi=7200
+%DVIPSSource: TeX output 2007.01.10:0227
+%%BeginProcSet: tex.pro 0 0
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: alt-rule.pro 0 0
+%!
+% Patch by TVZ
+% Makes dvips files draw rules with stroke rather than fill.
+% Makes narrow rules more predictable at low resolutions
+% after distilling to PDF.
+% May have unknown consequences for very thick rules.
+% Tested only with dvips 5.85(k).
+TeXDict begin
+/QV {
+ gsave newpath /ruleY X /ruleX X
+ Rx Ry gt
+ { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
+ { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
+ ifelse
+ setlinewidth 0 setlinecap stroke grestore
+} bind def
+end
+
+%%EndProcSet
+%%BeginProcSet: 8r.enc 0 0
+% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30
+%
+% @@psencodingfile@{
+% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry,
+% W. Schmidt, P. Lehman",
+% version = "2.0",
+% date = "30 October 2002",
+% filename = "8r.enc",
+% email = "tex-fonts@@tug.org",
+% docstring = "This is the encoding vector for Type1 and TrueType
+% fonts to be used with TeX. This file is part of the
+% PSNFSS bundle, version 9"
+% @}
+%
+% The idea is to have all the characters normally included in Type 1 fonts
+% available for typesetting. This is effectively the characters in Adobe
+% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol,
+% MacRoman, and some extra characters from Lucida.
+%
+% Character code assignments were made as follows:
+%
+% (1) the Windows ANSI characters are almost all in their Windows ANSI
+% positions, because some Windows users cannot easily reencode the
+% fonts, and it makes no difference on other systems. The only Windows
+% ANSI characters not available are those that make no sense for
+% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
+% (173). quotesingle and grave are moved just because it's such an
+% irritation not having them in TeX positions.
+%
+% (2) Remaining characters are assigned arbitrarily to the lower part
+% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
+%
+% (3) Y&Y Lucida Bright includes some extra text characters; in the
+% hopes that other PostScript fonts, perhaps created for public
+% consumption, will include them, they are included starting at 0x12.
+% These are /dotlessj /ff /ffi /ffl.
+%
+% (4) hyphen appears twice for compatibility with both ASCII and Windows.
+%
+% (5) /Euro was assigned to 128, as in Windows ANSI
+%
+% (6) Missing characters from MacRoman encoding incorporated as follows:
+%
+% PostScript MacRoman TeXBase1
+% -------------- -------------- --------------
+% /notequal 173 0x16
+% /infinity 176 0x17
+% /lessequal 178 0x18
+% /greaterequal 179 0x19
+% /partialdiff 182 0x1A
+% /summation 183 0x1B
+% /product 184 0x1C
+% /pi 185 0x1D
+% /integral 186 0x81
+% /Omega 189 0x8D
+% /radical 195 0x8E
+% /approxequal 197 0x8F
+% /Delta 198 0x9D
+% /lozenge 215 0x9E
+%
+/TeXBase1Encoding [
+% 0x00
+ /.notdef /dotaccent /fi /fl
+ /fraction /hungarumlaut /Lslash /lslash
+ /ogonek /ring /.notdef /breve
+ /minus /.notdef /Zcaron /zcaron
+% 0x10
+ /caron /dotlessi /dotlessj /ff
+ /ffi /ffl /notequal /infinity
+ /lessequal /greaterequal /partialdiff /summation
+ /product /pi /grave /quotesingle
+% 0x20
+ /space /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus
+ /comma /hyphen /period /slash
+% 0x30
+ /zero /one /two /three
+ /four /five /six /seven
+ /eight /nine /colon /semicolon
+ /less /equal /greater /question
+% 0x40
+ /at /A /B /C
+ /D /E /F /G
+ /H /I /J /K
+ /L /M /N /O
+% 0x50
+ /P /Q /R /S
+ /T /U /V /W
+ /X /Y /Z /bracketleft
+ /backslash /bracketright /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c
+ /d /e /f /g
+ /h /i /j /k
+ /l /m /n /o
+% 0x70
+ /p /q /r /s
+ /t /u /v /w
+ /x /y /z /braceleft
+ /bar /braceright /asciitilde /.notdef
+% 0x80
+ /Euro /integral /quotesinglbase /florin
+ /quotedblbase /ellipsis /dagger /daggerdbl
+ /circumflex /perthousand /Scaron /guilsinglleft
+ /OE /Omega /radical /approxequal
+% 0x90
+ /.notdef /.notdef /.notdef /quotedblleft
+ /quotedblright /bullet /endash /emdash
+ /tilde /trademark /scaron /guilsinglright
+ /oe /Delta /lozenge /Ydieresis
+% 0xA0
+ /.notdef /exclamdown /cent /sterling
+ /currency /yen /brokenbar /section
+ /dieresis /copyright /ordfeminine /guillemotleft
+ /logicalnot /hyphen /registered /macron
+% 0xD0
+ /degree /plusminus /twosuperior /threesuperior
+ /acute /mu /paragraph /periodcentered
+ /cedilla /onesuperior /ordmasculine /guillemotright
+ /onequarter /onehalf /threequarters /questiondown
+% 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde
+ /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+% 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /multiply
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /germandbls
+% 0xE0
+ /agrave /aacute /acircumflex /atilde
+ /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+ /igrave /iacute /icircumflex /idieresis
+% 0xF0
+ /eth /ntilde /ograve /oacute
+ /ocircumflex /otilde /odieresis /divide
+ /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /ydieresis
+] def
+
+
+%%EndProcSet
+%%BeginProcSet: texps.pro 0 0
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginFont: CMMI5
+%!PS-AdobeFont-1.1: CMMI5 1.100
+%%CreationDate: 1996 Aug 02 08:21:10
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{37 -250 1349 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA06DA87FC7163A5A2A756A598FAB07633
+89DE8BB201D5DB4627484A80A431B6AFDBBBF23D4157D4AFE17E6B1C853DD417
+25F84CD55402AB88AB7EEFDEDBF2C2C731BD25567C53B474CCF739188A930039
+098A197F9C4BE7594D79442B2C8A67447DE44698321145D7689B91EF235EA80E
+B600AA8E238064F154284096C4C2554EFE8DDF13AFF8D3CE30E0999375C0FEE6
+F992DEA5FC3897E2CC8B7A90238E61E41622DE80F438DD994C73275CC52249D9
+F6686F87F394FB7BB668138B210BEC9E46415A1B58C990B81E7D7DD301143517
+4C2A259D2A0A1E200F8101469C10D7D537B0D4D39296A9AB3F132DA9A3B459B0
+F850E2B3A03BDCB35AEF82285D19C38F474FB414F8EC971B994D1C7DD753B271
+2B71549DF497C665DF0F266988209D9EB616E4D9BA229FF984E7A886DB01FD21
+48ED2E4859FD6416C2CE52537464EA884C8C9C2D1083E2B83BE4B766474C23B6
+6E8EC5003200AB10514BB44D14CA700416AB6B2683E80862E7D5B49A05526A32
+554BB23AB8B0824BBA198E3825CE82380CC0FECF46651E3E5D77F09465E73164
+20342822F29572BC7F73F2C3BF95ED3BB6FDEADC20C6AC866C4F2C679594D7E8
+8D944704A3C5D771DC39503BECAB89F34D8CDB8FDB91AFE21F3F0260D05E90C5
+73E2C13DFA022C4522E5918EE25038A0498FBB530DA33B0AE238B1C6ED03FC04
+2BFED8236E07820C5BAB411EAE1B31D93A2FA7C374B1725FEC359ABCB88E2C89
+214529A263D795AACB0B95A3AB2F4E08EF350C282CE521716DBB06E5B8291B3F
+5D4ACA230FA192F64BC902A4C8842C0F916F92FBD002ADD408BF0401D0284FBB
+F05D4C6DB631420747CC902C5E1617E6573612FB26C8378DF41FFB5048D3CF06
+4893DBA48EF4B043D760F60C75712169D16C83EE020C45369E443E853E1809DD
+F395B812067D6FDBD26111B34F42C21036AF952D0D767FD17F6959D9FDD46005
+D64FFF54772B50BB9B173AE79702981F58F9F235C591F476A31852174DF0619C
+A470359153DC32610E782B204E7945515464DACE9099B81EEECC7EBD4B5126AF
+C3FD9DDFB329AF1C95C41FA4A5F6958869509A23BD7210386329771FA46FF926
+0E54AC35106253EE140449425A8670E1F92B178A02A58EB57540F4BD8110E548
+BB584EA6D625C5F5FE0124A98E49915F1A1B95D2125874360EED1C4379FEF3C6
+90E5780C20309F11F2F23FAD635C44BA030B39EFF083A3ECCDD2641DCC67E900
+CFE9B1E3FA03479C9040349B7C63F8F01B3C994320994053DAAB3419B2E6CBA8
+E77DEF65584F1F4A752C94405C2DA24429B01DFFF073D51672CA0A8BF163C25B
+C7AFF6B42D0D8F13B854E1B43BF742C0C0BA111246F359A77E20E4C02DAA44C5
+C82B5CD3EC0614AC95E8858FD216EC2E7056CA6DDCB26B1FBC1311F042069F8E
+6090C3DBB16F20899824250E71C0624499D399BD11D98456DC1D01C2C3A7D67E
+52B0EA1C05B3C84053063A00D7B13FA0693A2972FE41FC68189CB93D3A0153B3
+DE44D4A5793FCF48DFE13A598A7F835C0813750113F198B82D1B11F4BEAA2DFD
+9D350FFC391D202ABE1E79B3F9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY5
+%!PS-AdobeFont-1.1: LASY5 1.001
+%%CreationDate: 1992 Oct 23 20:19:18
+%%RevisionDate: 2001 Jun 05 20:19:18
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY5) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-27 -229 1292 719}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385
+B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A390AA21B4410ADD58DACB
+2AD42A79FFCEBF5BCCCE8A581D96D6AAD643D895F9774CAC00A6A8D92AEC08A4
+A02A0CCF0E3F08DD617A811251C16AA014A03299D338CE083FB15024B9310FF8
+3C47BDEB06495DDF0D030131A8A7B7822CBA94F7031AC034193DA32E0B879A08
+F7B293CE62094800D1697C3071AA70D84150146305AE27E4BE4F9685C4DADBA4
+C78C9F00B51306E2207591D26BE99860489DD7F7038A297BEBA7E766252EE188
+13BF110548F1192AFA92AF38439C96DBA9D81C3E790B13C21BE3A9830FED8E08
+A2AB325A34D0C54462D913082EF42CFA3A8925BEB4093453B70CD5AB250DC2B0
+442FC3B945786FE0F658560D1C7CD5411D0CBA01A7B265EB0E61FF1D2D8316AC
+BB4E7A5865AB5551C237C008620BF29979E675B59017F33D91D862D64AC41F63
+78A4CAA4330B0C158FB1C175E3509274B8DF6BB57E87EDD9F8F048376A86365F
+AB5AE3175A715741E8436F8C0E7C8A52886CF625A5DB1F04D63EB95C153DE099
+E3FDDF1E39ACD864EECD402C94DD619B4C18C4AB936CE584D9C00ACFD83CAEB7
+C7759365391141034FE4A44C1D8BFFAA97BFD658372B3737421D0E8CCE68CE92
+9E55AF96F0ADB1E2D41B3BDA3355AD51B409E0AC3E1B3203574B147976FBB04E
+6A3577A67D69CCAF94A1993A3B8E59FDCFB206827290F095DA482A4E8A524B59
+FBC30621718C5B349A0FE15B70F69B13BBA1A525E4E636DDD7491AF8341EFC7F
+1A3C3D3ADD5C7B2ABF2C1DD46557079A31906A4EC977243F6765A90D75650BE4
+A6EFA892E36DC414732AA6A35860D0B09CB66E52EE169C4DAE28C84120465F38
+3675032879D11AB7DF0A41574D6E03259574AEDCD9F1BDCAE2A7F31507CFAB79
+4147A907B32D602D74E4A90B31E59A7341A99B7D5778E99D873C284ED52D7BA9
+B10A1C4EB2CAD13870585C98D4A19533C91511ACC9C350A0D4F1210A1BD6161D
+CDE73158FE0DBBA9F278FA05C8441C97645FB55B63210DFC4C0A9AE41D7E8596
+B2B83512B3E02E59285FEBCCABCD33799C0A5549412E6D661FDD8527F527869C
+03B405A66C1D6169F0AEACDAD5689BF92E2BC87DA6BE16BB923F6B6C03C40867
+15E5F7A6BE5A28CE5823DC7A2805DCF47E58ABACF4335F40A788DFF5377F57DC
+CD7B122391C3CFB418B5B24881090AA3C74F04BDE083B6B104CEAF13CBE01BC2
+CA7E56FE3ECAD50FB69BDE76F29047E14660185F75C75EBE047DF8CEB1EE9C7E
+9CCCE9BC899D15AE2FE656382B01ED0702B6AD2BDEBEEFB62E09EE21658597BE
+61E80153A3E48A17AC512DF9142689A3C340976600A3337DCAE4EB9E878F54B8
+02FC8B352D2967A8D14289C751420A82A3C3643706B4DD5EE937A60B421646F0
+4C16A80A3EC6F0C0A3773613DA269A113EF1C6273DBE00D5CDCA9ADBF8D23BE1
+8E37110F48EEB2FDE277B26EE0D9FBE2ADA80879A235A15EA44DA444CA3DA312
+822B584D97107AB8E68C365678428513A5F81668D166908801E1D68E2314EA6C
+96AF9F161BBE8C53E03F2005F86B8E698CF3F6CA7AC0E06187D6C450BD635CEA
+5FB0A6AD71F6E2BC94847AAA6954D868E144E39423D51ECDCB9D12D68CD7F8D1
+4D1FA63DE0AADC8F6ECBA7F62427DB63FF1D957E20DF2657A631F47EED085AF8
+FE2A0CC8E1C45DA0C90F2A7A1C2276162816EE53AB70509572C3A364B357B2CC
+CA8DDB9AED0DAF7454E574BBB6BD5CF096D27A558041F249D08B8F3D193037F1
+D9331EA07ACD00C451D190BFD03116BF604096EA8BC078422F688B12C6B0677B
+0E338C5ED442949F4BD96CABC55D7607AF05119520BF06C02CBE6FDC28AF4C0F
+0F9A24B8DC987E3C59AFC8839EEC4216C95E06E2C1D82857C2657EFCC02D821E
+4AB5681B6254C24C4FBD31492D321D696C9198A6AEEABC6BF2C9F840D0EC0972
+3FF90FC8C523673D8C495C04B1EAC196B08125E38099B21BA9AB7069629AF56B
+55256D92FD6230CFCFA765E7C96C563473FB55EFDE3BC4DB2600A8E117CD2CC1
+EB4F554FC85A6CC5F5CDCF8B791BFD57F3CE49AD103B123837F27A0C17E4C93C
+9A8DC69149C0355D6C39DAC2DD81DB6C45AC4E0A2CFD0CA03C7D92EB325D9B36
+059B94A7BBAC18709CCB0AF1709F93E503439AF71D366AC175E2E546E67C79C0
+8C07C5360D85A57864D36FB1F5901450F08E59B7FDB2BE80E126BBCF0AABEE0F
+E025C2A63B91018157F189D143EEFB7298233EB521E22ACD332ECF47F884E13F
+446E292786E0240490B0E20C2173252F448808C425EAE6CFD69F5D684333044E
+200138C459498DE37A5E132EDC39FF39EE4132278045CCE81F933CD9C12B037C
+3F593CEF7D7985075503347B08BD3438656FD14758358BBF35658CA1388AD360
+00F75C631E7B38A460FFC64ED1F456949AB9C8805D280DDDCC0EAEC0EA8ED5A1
+19CAF622DD05ECAB3AA5C6385897257333C0231A38A5CD35A1EF7369614E5C0B
+8D3B4C71EA9940D3450C45E8F4D328414C054F20FC98BF20CF99C202601F974C
+30212E7F23F5F0D4EE870BEEC855B0B8BD58D2ED18B4AADF1D5E06B78D5F203E
+90242571A3921E24542F8E0E487CD857390656B354E9EB2252A304467DB6F94F
+EE1CAFC411C448754738751C2E3C98114549B64E817AB37CD04847E78ED21DF9
+294E20D298FD1A653172C57A33602A05819BEEEA5E3AC213C3DB962E794892D1
+25B27B0F5E79276A361B4E32F729A303E8D30D8376CB496B5D9A4A1606A3975A
+356D09711AF5A98FAA4C8524D5ED62A32B590B9F604B6EAB777C94E9C16ED18F
+908F3B5ED99F8BAFFD4AE02367F0EFCB86983CCB62C698168BC8F9AE5A4A15F9
+071BE99B1667210365FF2789A04199022CA08DBB9D7DC39CB6E99D41F460CEAE
+C5BE45EAD3F80922732197CD622680D7B4103EBBB4BDB0DB2A831C5D62016D23
+49A8A694709733A0A6D73CC6633E72F5E57A0F499D93F6521C31A55DE13C1301
+0622B1509C6FB6D123E6BCC083AA1F070D40B24C0E1BF96B8F2DEC1265A7D73C
+8461C573A424E83C809C2CE297EBAE4CF82376126E6CE96EE05437A2FFF38F2E
+D37EE9E86DB9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI6
+%!PS-AdobeFont-1.1: CMMI6 1.100
+%%CreationDate: 1996 Jul 23 07:53:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{11 -250 1241 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
+4391C9DF440285B8FC159D0E98D4258FC57892DDF0342CA1080743A076089583
+6AD6FB2DC4C13F077F17789476E48402796E685107AF60A63FB0DE0266D55CF1
+8D0AD65B9342CB686E564758C96164FFA711B11C1CE8C726F3C7BB1044BBD283
+9AA4675747DF61E130A55E297CA5F0182A3F12F9085AF2F503481071724077A9
+387E27879A9649AD5F186F33500FAC8F7FA26634BDCE1221EC0ED0E359E5EA5E
+6166526FEB90C30D30099FBDC1BC2F9B62EFEEC48345160804AA98F8D0AA54B7
+A480E715426651865C8E444EDB798C7E11040AF6E5A7ED1888653C6DBF5E6169
+70BCD9C063B63B561EF165BF3AF11F8E519F37C6FDA2827685739DE2C48B5ADE
+EE84F067D704D4511DBFA49E166D543CFD9ECD7417055D8A827F51E087CD2927
+BAFC7E6CFBD70B0FE969F890A11149D3D44D422C3370495DA9951AEE7253A49F
+3A9444C8CD9158D84117299F7F2332FEB0F94E6ED8BC7AA789A3219BC2F227D3
+3B5BC75FB53B55D72AF4A6A7BB613FA235B11BB37D059FD87127CEF73D5B3FBF
+9F91ABAD78BD9240BD9525EBA78095EA0BDB25D1A19E876F292882EAD5619D46
+D20317A345D931F4FF4EAE6216C27044CBA525E3B917CEA25A04C120466C4B93
+FC720E6BA832A06CCA0A3916CEF0968D49085AEBD243C41A448289A6F05CE3F5
+79148DC112A3CC7E8FF810B8C1A09E05F496C0F1EBA334E42E05C376C98F5F69
+C06C71BFC0A2F3AC9951CFBB143C66FB84F9C4ED27DF70869352D61BD5E11508
+0797B87C71AC58D7C35AB3247575482E538773F05A104B80EBB74DCEF9C44CFA
+82BA0C30DB282E2233AFCBAA7A2627ECDDE91AA975707FC767E0D13F1B940EEB
+60D1F1724715C239A413E36A5EFAB56A18ABDBD64D8ED5FC0D67E15607E5D4B5
+5EE67E98F80DE8B1E8ABFBA6468C2DE562A90F1A24A1E8237AE8F501B14B19B0
+F0BB6B32A40994A0BB3FD4910117649144DA32973BEC68476E383A859606DE4A
+7BC1A21C03D4132B724BD82AB8BCDF711410F53844B0D90C2F45A37ABBFE44FF
+EACA54C07A200E758D08D1547BCFF41CFA42215924B6384CEBCA425DD007B038
+11479D23AF3421EFBB54445CA5575940B7D07CF586
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY6
+%!PS-AdobeFont-1.1: LASY6 1.001
+%%CreationDate: 1992 Oct 23 20:19:18
+%%RevisionDate: 2001 Jun 05 20:19:18
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY6) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-25 -214 1157 702}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFD11CE
+A6A468ED59C5E8D61E071925A313CD724DB9AF18F4685B5AB09F99D492546242
+EC64939219938D6EFDF2A6AAE7108914A8EA6E0D72F2C341C43044B15BB57733
+0267A343F334FFF02502043997066A1A038A7DC53E9F134B7EA6E8666B2DAE4E
+C538B8188BE490BFAB4687853579DCB21D9C284E719FC00C4E6CA47E7B409E83
+544DE1C0B2B4B9CDA2BAD11A47FC4246A540175F087AF2A0F4C891C2C9D116E6
+67CA49E139EB7C6B564E6E70F36FFC1A705F3097F10CE51FD414F6AC2AC8E6E9
+5DCBC1DEF33CABD5DAC1C4492BC1D68F16DCEC027CCDB3C1925EE32CEC72EC59
+1515B38717A7372D0D8D933A3015AE1F92BD8C23F6325F63AD4656C5A22A11D6
+34915B5FD9A49E6CE8FC44CA04BAFAF2DC195F3C89C40B4EAA91D52FFB43DAB2
+A1E061A2949F85076D3802368FD2A6BAC734FF4FCCB63C3A7670ECB6FB858770
+0FD09ED49B58FB5BC7220C67DBBE72A519D4B9770EFA82F1F4D475604EFD02D9
+23883022DFED473D54B236568DB92608EAEFCA2AC014DB84BDAFECE809C12932
+958505D785FFE5FE36CEF9061EBF42EA2B893919DE58795541A4F135D7B046E4
+A3CE840FF31689C022FF348C6B9D67ED27A90EB433BC9E7BA427334A47BA6406
+6CCC93A58DE09326434DE576A4F10A8259B1C48C68A0C64E522131713B598990
+DA46A5B5B8B75A17DE7FE3573E9E6A9237C4DC8036E074170F623398C55A6A52
+683995825B90C6B901E5A2E0C3A0CA90683DEF996979D861394B47C70DE57CDC
+E3DB5DF5E76618EA773EE1FA040F9C34485E8EFFA57B0899151DF7E6C37F2DEC
+B3202DB12ECDD97BA814B10CB103ED7E8065674C4E7192F8E9563DF2BAECAC66
+1E6D6554499DC7B0C167694035E40139560285299687B2BD99724C163C563109
+FEC473583DAE1E9E7EC5B5EA8D8F54D5CF97B091550DE046B9F503D21FF39642
+465376FE0F4F25502755413B72AAE977A8E0BFAA13D89DE7D637343A5893A39A
+3AD67D500AFE8FA7768D6CE4C3258311539F90B1755D6F0FEC42AE55E2613544
+CCF7D77A995A23339073D85B79AF9E3312A218CB412485AC94EFC3205B8177CD
+1EEC825D6A0A7C282524DB50571F80D76B16337DA20C651DBE9153E92AC71C1F
+C40A7E582B0E3109D610BC3D0E0E4CE057FEFAD217B1873F240FC403DAFAD3A3
+E24625DC4EBBFAE70866722B038ABD1C56433EBE540FB3DAB8234AE447EC727B
+9A851D2049363C4D6060FCF6AA26DBF33A6383D50D87CADEB4CC5522D02925C9
+95871077165AD7988638C61C74996A3079A0BCB6A82ED01C0A375A4AB86AE809
+B6460AABB046389868BC540CB588D5837A5FE28D7B3307F30009E0F36B019965
+A06242C2A4B830AD3F2EDA1B15DBE11101FA1A1DFA048A334BFEE64A20AE1B64
+F56FB4D5227AC931FE297450FD1BA00DC0B86956BCF5C53D1A693204CC06E786
+7F2E3FDE1B2FF00899978D512C78C874285E4364989966696C358108A1B1AFBE
+97EC813B7AF5F11363EDE0C444D7928C9380FA1FAB619BDD3F008390B5393B87
+6EAB174F38F6AE46BE90E5AC7421E3537BD4DA8C0ED3E89C2B11E44A75679630
+6FA5FFC30AAC67645797355F3DF4ABE919517D504FB3F2EBA92E0C4D92C7C03D
+57424950FB8DCAF22D064247024F85F9CE2FCE0CB7D37ECC7549E1550EF9B6DC
+C53A50A77BC241066AFC952545F8D1013199812371E32CE5EF9B0B49F2C23BD6
+549CF426DFB46B41294E5CCE7CA6D5A3DB84C71060B06FD80BE2F9D3DEB6F6A5
+2188BC145EEEC74FF32B6BC58E9748AFEE06A53D689FB0570C2BF0F6D2D1D6D3
+629632E44CA9D082D0CF198220515D2D96FC743C80738C761B2751B9F0292BDB
+B0A41EDA10CCECD5173B33B9711B061B3C7A7BBE5697F08157479E79892D9E67
+EEAFBB78D45C116A9B8C86AC2D0CACCCA18CC9CE3C8D5C70992D22EE3915EC3E
+7887554856D511DBAD5338C88D19E20FFF9A6E1F769E60AE0A490EADED862097
+BC150C51358D39C6BE0FEE4AAAAA347549E7C8D48CF576CCDF84EB843BD313B1
+7564D3339A92B4B705A5283E3AE08F3CE831FBE8F0FA25A04162EA5BDDBC8571
+FC899AC5099DB53E52F1A6A3ED683DF325C5183E9DC96BF33DA09E493850227D
+5CDED23C8B91ADF5986EF631C506AD98FDA3C99F70158232968BC47395C9F619
+DDE8277FC6DC11033B5776631F7E6835963A31583D130EA93E441BB198A47607
+5684644FC170F51B5081517BE0CFEA848EA963249602627238B43C1C28EFA939
+0CF3CC7EBF1B43C04ACD882279C5AE6A69637D1A4FC536971E31B0FB62A048EE
+77B06E4EBC838531535D4FC76BD9C1996A897F9F3066C421D217954011CA8BDC
+52F89318A68864086E114CBA10C57950F8FEDAC24F96115EC11F3E711D710852
+2AB0510CFF52E897B75F97206ED8B7427169538FA265702C54C30EE3277E3E61
+A348E7EA0F9E7FA6328B12C20350F36E1537CE14BE5CF749412B68943CD21B2B
+85DAA2C273C550D3DF11CF4DD6E3252A6929E08473E1E533002EE44F665F73F1
+0E83063248942AC4B7DA6DA2E58049E9EBB6F3D714EF7330EAA07052C309BEE7
+A8652AD54CCA26C6AC8558D014275A8013A770364C61486B3EEBD991149B17D2
+54B84D67A868542345B1413EAF4CD5A1031FE1106A133673080B578C75F69FA1
+56C171707D99EEDAC297D8766E318D8345831306C3F749D6491E0BB99A5EC75D
+F56748B7A36A0EBA27372EFACBD2DF983E1DE42218245F3C512FBBBE449C1809
+B62546CED082944CD2147258DF2BC7A1C02F77FEB9C8846E5BCBC37CF2B2F588
+1A2AB3DD0242BF23A0D56B7003CD911DFC028FE17EC059A61BD5D3AA6CF468B9
+B4A59D7DA9BB6FBC83612F37F3DFB5ED995C4AF52FFE29477754529B4EF8EF62
+B7236DFD888385BC8A45A339D443709BFDC5D118632FAFD062128D509CF60FFE
+268D44959BF99BB67424490479553FE856072A3035FD322E1CFD46A294946853
+7037635FC069B33AB98716E4CAB017D671ADC01FC7985681A199B7CBAF7B82E1
+A7AE03B610AECACE29734930DF19405346B22B957EF25962B76A0779747CD40A
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY7
+%!PS-AdobeFont-1.1: LASY7 1.001
+%%CreationDate: 1992 Oct 23 20:19:18
+%%RevisionDate: 2001 Jun 05 20:19:18
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY7) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-23 -206 1077 685}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FEA5F6FE
+DB9D0AC1A487281E2A1B534501CCF5B67ADEF8A2C129B199CF24D46D7212A046
+CBBFAE80486200C6037B3F9E995C34C97AC775B527E2557CD1956CB28CFE63AC
+781572153003A49D0913ED58C88D0F946570FD9BEA98F7FEF6D5F7E05F69595C
+2E6FC1480027F2EB1FBBFDADB6D6DAB4C2AFEC00F2E996D8AC8B25C2C0F59D23
+C99F2767325EBA7F568C2F6C191F4ED92BB5A9B8681BB4C100C442465CB0B4DC
+6F99D91DEAC92D071470EC3E39A664CFBDF9A25B8147C9272AEAC2BDECF5F9CF
+4456450CD3958BE859995D22DCBDF4B291F1B149091DAFF47D5AEFA9496FA24C
+565554AF04D35E66B806C5E658A9406E215A8504858E744AC67FDBC2B68CFB12
+9CDB40F754A806D7FA078B911831FA2BB52F58C00DF6D43DC004780026BFACFA
+6488683940E88290FEC54CF5C92D9D07093F70736336F56C1723B3AEB01C18FE
+8021435F3744DC38CCB5706BCD226653750F9CEE0BBD15A0580678F2AA58D58F
+6578DB30979BA9BD10EB02BB37F2E4CB7F083B2C699C39F179820FB8C2DBD7A4
+E7EDF03E83F7536946A3F532650AC5CD48C10BA3AB8F67915EAC0053592CA317
+E0A8EFD1322398DB7D9B32ECE97791A00B49839C58E426531833D30F153863E9
+2A79516C2878AEE6916F0FA78F94714ED709C10DB24955FC0DE6769D34E4E1DB
+2ADED1775C5A5A6313C93B6A0195311B4A334B4D9B914EA59194239AAD1358BC
+269B8CBD35A7685ACB29282D46440A38083B9CB2258BB81E2489B5FBF551AEA1
+330D4DF70E9E650964A369CA2F77DEBD0CDBCECDD2DFE4EE609FBBCE90433716
+E03D3FF981EE21D92EC9C31C40517D441C6D94691DBA3D301224650AB66B633F
+53D1E9DDE55A114D0788337E57F5DDFAD75EFD564174BE30A5CB9B93ABF09D97
+438F5371BD9EC9E8823B5363CFA1ECA372E4903281DD93D5CA9F38F236D80F3F
+539E73FBD69EF7A8A0CDEFE0D40A07F10C5A8CF320B6AF2CDCEE2C0BC06BCE4B
+28B5810DEAA9954BEF2AA2394F5E3405E2B963501E5F17ED849B6B6C598B347F
+6849B42A813CE9B2AB83F7EC80AD6CB466A16262B6DA10D7D330622A30A1F31E
+C50BA84B0969F0CF412854C4C9A643BE43EC46CE6C80986F77B65432CB9BC8E9
+176F8C9574DEAF70972EDC9500B26C755EBC9CEC94F8B48D04A502FC35A33750
+21CBA447B7214F9DFE0DEEB104B9A5316DBE17875BD32869C6D45B79F3420C18
+BCE4CBBF4CF983AE79307FCD87D4C638E47EED790C1C102C0F21D8A7D50CACBD
+692EAE6D2F3E67ECF1B5955870E0FEB10784F91535052A2FB2CC7E507090208E
+B63AE57F1F5639D94B0178C9DF580238FD4DE699B0C2F3C17C38B45076F6ABFC
+193ED3B05A091114B9A435DB94F63100206A232B40697AF39FD16565203B0500
+9ADC01DA83032C66BE24EE0FCB6E3810B49E33A8E899B7375467F1549B8C2A5A
+0019D84045606746D5190789F3CF91475FDDDD1CC1A1FACF4F9AB6E0CB76B628
+3C430C337B27CBE624E02DDDAE7B84DC4F04C4BC506EE9DFF90A74B71FDB4E2E
+6635CA95F018D621CBD675954EB0C01194F52BC772371BCE712EA3B66B34594B
+067D4720DCBCCD123B7DA599062A44FB9C14D25488BA977E1239437AAA4CE569
+B0E1399A12662348A48D0A95512D09B66AF5E6750845D896931D138F61BAC384
+A04B43082C29B4503F10A447A27F6F6D9991A2AF52F8077C8E38FEE89C4B1974
+C4191AE20D636353A97E2D14A063739E60F9BBD908A7D52FCF6542A0D37FE038
+74EB39116D6106679597E9FC91837E16C146C9C9200D4C117C04FD4641A63BBF
+1F687789469283FB653FDB47D398B0FF5BBBD79EDA99E9133C83A7BC461BB732
+BAA66642565E7BEF23595655B04B31EF555C4DA7AE094CF28009B580F35000B6
+EE4A955E18F7D7E3B181700F3588BF866AF9A1A6FB58E7472C35F778EF01BB46
+7D7D78F022A2CE9230DBB90F56C59E0AB11D6DD15A3B0E4BAE986190DDEC8F59
+77E5787B463A8A4CCFCDA0AC183B711DAD5410628080EF997E5278945FB5BCC7
+EF0F4C9EA8F2ECA6B3F3C525A702153A100A5C4C49F7EB06554003FE331BE1A7
+45DC11F5708B6028641320B6F5990F2FE4542257FEA1A254B508B1EB34A8A642
+99ACCF98ECBDFB972E2A86ABB96B03966E3A38768A3B40EF6B03C880C0A29801
+603152BFF3A837615CD6B03B256A9C4E75C19C4923A61BEF7ECEB834383D901F
+244CBF6431A04E4A0627F4F1D7F595ECB58BF7069E3C2C810190E9BD784137CC
+984A1E9EDF8D295614506AF6309DBEB701952B4CA41E1F2592C2EA93FE08E3C4
+5021C82DFCE874AEEFECD40A6F82253CA4CF5EC6F63C364D156D98CF39C8ABF3
+9457E7063B88B1543220BE8F7988A6AE3C83A0DFC2D12DC48D16CCE5BE3A4FDD
+31FB3C0D9DBAA567D53D4812E6D2589E265D95C20B1F097B104AF01601E42D0D
+51BDBBBDCE58A4A7D8F37CC48AFC7561EA5138A0AF134FBA9EE976C6F2567C36
+5B621B27120D88AE4F5CFA90AAC76804248C59A37296E05DF032A7A884B93DF7
+A935437A1B168896BBD50080AA39E5293DA4BEC093CE1BE802D7A03828377267
+70BB66A164206872A5316D9824E43E308B5E0DF061798A494F09809E648C0698
+50136A54E95CD405638D443240937F6C13D6D8DF02F168206D6EFF2A9668F6C4
+9CC604275EF8D49ED2182D7EE0B0AC66428C7151239BE6AE126FC43D773CD7E7
+3455901C72581F38CFCECCD8FCCDD62C23C06814F4E6DDCE72644F49185A7C2E
+C7221AF9F1704B3491A44CB345AC39800370229028B2E8599573534764A0571F
+AC160D18CB0F4F4A74868B1DFEFFBFADB58964094F1012B557072A709EDAEC2E
+34125F050F342017648FE8E4ACD6481FD13CC1BC9C801E84B0507CD4E9893E06
+F4EA9DDD2BD5FC23A7DB3141C13C60D3C27D4F735DE32172DADEE46B203AC03D
+C1290C3AEF0F8470511C062A3119293620EBD0BE2321C3A7E783452A72455140
+5A84EE5CD856FBDE47EAAE9E905E6A881C0A22572A789A838EDEDD0A808586CD
+ABFCFBCBD9688C2188156A7C1FB437CE3A85A1EE3AF70D55B3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI8
+%!PS-AdobeFont-1.1: CMMI8 1.100
+%%CreationDate: 1996 Jul 23 07:53:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{-24 -250 1110 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
+4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
+788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
+C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
+617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
+D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
+532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
+5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
+4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
+DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
+B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
+A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
+8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
+D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
+AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
+AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
+A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
+AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
+85B385124C2B6534F3CD1866AF92009D93B97F763AA3C28584857D64C6AD5C24
+68B3330EC1F0EB0EBBB855EE71262417C4C15AFBAFAC26FDEFD63C49486338FE
+64211DEF7AFFBC82242BF22DD3AAD6FB1356B1FB6C464FFCBD266112D0F6D9EA
+7688B88321AC6512E7BA5425531791CB08FE6ADEEBA6A503974714F7EEE8420C
+9374BE70F06289C3D329DAC3A0D9696E451431465340E48CB3FC0DDEBB369028
+8DDA8A5D594537EE051D51CADBB0BAFC654AA9861BF12B3BDC5EEB6C04DA99CE
+CA42B984B7D75C783CCFCFBDF5DE550E10C82CFA1582DBDDE6C3AFD64496CC8D
+88C037E851FA71EC285D00266AF95D70F6E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY8
+%!PS-AdobeFont-1.1: LASY8 1.001
+%%CreationDate: 1992 Oct 23 20:19:19
+%%RevisionDate: 2001 Jun 05 20:19:19
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY8) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-22 -201 1003 683}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385
+B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915FC1B8F27464D2AF01
+2AF0993BB2C836AC0BD99FC99CD6A00B93838BFBD0A80D69042E191BA3FC87E8
+1D6EC6187753AB286E7FF4C23C4E829888749AA368CADB0540D525F05F029359
+94C4B4B8D6003C67944BA83866461C4A6BAF9FB97FAF084D2A7132624D138DDE
+195A5DE0A175C9CA4292C8670DFEA277C4C9DEE1D2F46517ACC059C064E58551
+4544B9BCA7CE84F1CDA0D901A37FFD838D77B790937A8B907A59786D65DE9B3C
+E6CFA78A484A3F0BC2F7D6F2DD4647F1C315B4182432A3158B76F7E61EB25B42
+70616F483FB9F72F513B878165CF003EF22731B797E19FE5AEF9C26D4D6F4155
+790CF91D9AD2CE583A3CE14D529FF0490FF7B6FA554E2EC883504B510BFC7344
+1786325BA895B507C892612129F31490EE255AD204F18A4B0B866C570D118AB8
+83816F6912AFF49E6A3C81BA8D791F3B912D1C1C9261B20CF3727EB1DBC3ECAB
+27B7E77D250A702A69AEC05DDD58524A90FC41169F74620CBE11884E27742059
+6DA249E7D125472C186C55489AE5DF7860E7A8EDC43314119AF74434D378E6A9
+D29EBCEED12CF0721AC18AB5D5C8FD89ABE49213BA35FABD5689291643525D4C
+84C939845959F59C9CA1CDAE95A22767B622690A18924781A4667836A44796BD
+B5DF0FF2AAE740226405A298AAAC09412B2DB12E5B8584AD015374BD13F1A804
+BD47E3E1FCE19D763E91AB70BC63616D3087C7825DAFA62094DDC378584E8F74
+491DA17DBE1671F3D3A8820777E56FC850ABDC7000BBDE7C1E1DA5724371DCFF
+20D85A2E81A866DC310F021062932402DA89D04FA651505CB64AE5EA5D7E9819
+7FD725C4CD38306946B6CAE358801AFAE8FBBB91A77D789C0951CAC7D5691334
+E21682E3623D4EEED1DB5D979615DC06118886BEA0CAA8D2AFEE921F98E1537A
+78FF7676B849EC47087027A349403169CC50A83E20AF46469D36EDE658D18974
+C2B98AC9BD62EA2387826D99171394650D6B8A3599EB016268F5BD75A04303B8
+C62F6E678DCBFDE719D9C602ADDEB996066D75215112E91A0A78493902ED6054
+C2F674D804B5D83CB89A5852181F96C82FCF32AA99CDC155F7C751D27E88B11A
+7AB207FF72C432AF80FCDB8795E3FE87D19BCAF4B32933B4A10628EBB33162D9
+8E543C1E5A1A6B492BE91D0EB669858E17E0B72274401D5A0932E732CF0F0341
+5DC3D0C8CD85D44EAA6DE02D199B746ABD99DFCE24689AD232D6656C8C479959
+172FB8D61AB547BDE06224C5A90B4F986C08674470342AACAEEC0610E68F6CCD
+57713A0B4228679A04958DB54DB8018E4AD4DAF84CF430F0CBBC2985EA0C6DCA
+B41100A728C243E09547C3D96A6A990FC26E8E75F7B6296D130E5418D1111F6C
+2E972620107A3C3E4D302F9025B3E391598CE7146B75254D73AFBE9FDA8F007B
+AF3BE01CAB4D9B3260C1AF89C532AA0638240BC3BF72E4A7BDA2D041256A4771
+2D9BB499BC9A12791DE95B0CEE9F0D3F083F85D84C24318581D31830EAE12722
+F914C69FB7DD78B7F0337BBD86ED9A06346C6C496356BA80253F7F539EC83C9E
+9C392D7CE22BF8C2BB86FF703D6A4EBFED80D2CAA8ECD6B4FCBE31C8723EA53A
+DE5EDEBF9338F444D495232F02EB76191ED13B43FD73E003642C15CC621A46A5
+FDAD57EB79BB15284AD83971D5761F9C7545362D4B40BD760BBB3831897A3808
+F76444223FE7938FECABAA74ECB5966872ACE92A8BB08D592ED7E94A8393A23A
+3DCC707F4DD90A5C3CDDEB5B7C74B892C55AF0E5E549E182EDE50B62650FC5AC
+8768421EE4B579DD959C59A0F569384723182AAEFCD2D3AF23CE3CD8B3DA8276
+B5BBB58542F62AF349AD34F244CCB4C2E7B5959FFF6040980D5147100371FF19
+CC132F643942671A59E37FC5D63F4AEECC7E8EA765B1C9A974E45E6FF76B8670
+2FE07EB1084C573964406A336D4D1267005E6D151782F141D054B0EEAD1CF732
+8519C04E106468A07BC1B9C77BB9050D1DDADEA977B48A2C74968C5D7B44E7D0
+434FF8EA175BF9AD9AAE82CD35779AF0BEBBD4785B73DA4CA1B6A2F34E98EB48
+79F0FBF795BF8E701DCB9CA4E7751D512A97608A605F1CA40B9464F066FB71AB
+BCB047B4B7DB1F5F9094982E8155BF6F51C938CFCB6DDE52942CBE8A47C92D7E
+49FB24ADF5BAD9346C7CCD8C4FBB7F38AEFF1FA392F63A606CDCD2A1537A10A1
+456FBD4FB52EA11882F28780CC6D57F854E64EE2F1F7EE3F827CAE2139782556
+B1D7A6843CAEDE8E2D0B7AE46C368A19120400743E5F75263AAB200E7677C51A
+CF72986272B6CE6C908379A823B3D27496D158A26EDB5D6DFA9619ED8F8DAB53
+93CF7ADE3CAFBA9E368566829D1C8491A47915D7FBAE76B19513C37F58F715BA
+3BB07BEF1B9B544A4800A44B98F9791307D56AB0C813844212BEF6D904CF3CDD
+6B312D854CABEBCDBCABD8E694D6E1D057382E75FD0E5C02413A1CEE37A40F1A
+0AB42BFE7594296D0DB89576CC9FCD3E5439D9DFF2714EE8D98E630F130DDE4D
+4D915FE7FD7D3F02E82ED66BB40201B169B2D1BD566148BBBB49DDF6CE8508BA
+5105163CDF6BCEF9AD5266F3D658A16C43781520C51DB84A517561554336B1BC
+DDD9A8B420F4042C34F7C45137F1E1222426ABD550CEA46E3894B7B617F0DF42
+AD840A710D0712F5F594BB9C2495688B5575AAFBDECCE88BFCCF9F4ED82C92FF
+B0841B72A4DD4A536F3A5DC1EBFFAF7CD73CEB85DB608CB9F188751767B63BC6
+FEB16752D78E15E23ED954607757A479168394980EBF669A21821690C028070E
+03BB88FB45895C7D36E1A86BB6B08F4551F8FF15E8558A08CC2B1D07E5CC4AB9
+E6380DCA0FD6534CD3165B0E1E1BDDBDC0CBDF40F5D5543816AB8E292756A440
+75DCE54A8BD62EC74FF9554F424809BE66F084647328368B164BCA458BD7EDB7
+CED8DDB8D9A19B9F8EE5478DDBBE3B7659EC77C2A8101FEA2B08F70467645555
+8ACE06AE9D392F31824BE35737459F0BCD16B842600F8F260EB5032127C4681D
+73801EE15512AB855E390E33A7163C6E87F87E3273444018800EBE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI9
+%!PS-AdobeFont-1.1: CMMI9 1.100
+%%CreationDate: 1996 Jul 23 07:53:55
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{-29 -250 1075 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D6F5CA5FED4F9AC9ADE41E04F9FC52E758C9F45A92BED935
+86F9CFDB57732045913A6422AD4206418610C81D882EE493DE9523CC1BFE1505
+DD1390B19BC1947A01B93BC668BE9B2A0E69A968554239B88C00AF9FBDF09CCD
+67D3B2094C11A04762FE8CC1E91D020A28B3C122D24BEAACF82313F4604F2FEF
+6E176D730A879BE45DD0D4996EF0247AEB1CA0AB08FF374D99F06D47B36F9554
+FAD9A2D3CE451B7791C3709D8A1DDDEFBD840C1B42AB824D5A0DFF0E0F15B0B7
+22AEEB877FF489581DA6FA8DA64944555101EB16F7AB0B717E148B7B98D8DBFD
+730C52937E226545CF8DC3E07C5BA30739BAFCD0F2B44275A6D503F582C0FB4F
+449963D0AD2FAFDE33BA3D77BCA9D1DF878DDAFCA2E22CC4BACD542B282164C7
+97C2BDE318AF9D501CA21F6E662E7AAB75A5F24D2C182E598D175D44E88AB19A
+E7CD59584F95B389183EE21B525BF52A3F23C0FE5383A5565A19361D716F508C
+AAB78411CA5A4D27552CC1C435760D5A89D535B71C593E755C616661363308DA
+A683F54ED0C23FB2C225A008392B0B719F66F11A946A090B7C00B662A3C69599
+B4ECB0CC70C85C4BBBF207E0026F6C7A19F2ACFB7A60804FC98A4BFFD7BFFF2B
+9529E6D9D4238002BBC255BC62959D6F3381FE06E0621B879D5FE5B541D45A1E
+759A6E7DC32B1D1632368D09A97039DF255B6492B1B2B7E2C1434E8306ECA7D3
+5A79B6D614B4979F10988BC76ED53A5F45315CD7DA216221F842FD0F3E050DD2
+BAC23C984D506D8F7D614BCB6B244F5F41321549BB0BD041FBF3053307168680
+3435E9C9445A59A7C666418C4F2512C32058B1CE1EA47F00930CB228EFA5C55F
+1E69458EA5F53CB64BB754DC25A4385A270A8C1F8BF2C9937A809D321BFE9605
+045746539B38DBFAE253A7B6C3483B6C6E9FC204AA9442E43459BEFAD40BB95E
+F2A5F14EA47F4B6C6CD1AB4D9EB6FADBE69EB375844376A0D2A670D9BF3D41B8
+14B8B8C20FB508255F1258E5266CA75DF1E985D977B4612F9C2C9CE406940E7D
+721BCFDAC2B2F23A07990E9AE02920D85F2BDAB24E186ACEE7582939E534AAD5
+47DEEFA1BC3B1AEE113C6BCA30B1C4C6101F628ADE2D83BBC0A2DDB3CCF8D2D1
+22B5F7C7D15B16159F180D5E507F2AD813089277
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY9
+%!PS-AdobeFont-1.1: LASY9 1.001
+%%CreationDate: 1992 Oct 23 20:19:19
+%%RevisionDate: 2001 Jun 05 20:19:19
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY9) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-20 -196 971 683}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385
+B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A39158A5EB4E1CBCDD814C
+9F326497D38C51A121C75E0BF2CD79ED11C7B1A5C36F6CBC2C127360675F3C6A
+FB3C478FBAB07212200E28C5071E1833E27D60FB815F448550C55F3317441B25
+406435197E11759CA6BE6B17AC8600E4653A99AFDAAF4FD54D28638136D701BB
+FD2CF4ACFBF28E48CA313CCF5ED2BE032B7C9A07ABBEC9E6F6D90AB799716358
+37ED7BFC195D7243880801BC54BA5EB6CA604BA4DB433EFBC4EEE710ECCEA919
+DEA0BEAEE68DD8C9204DA9FF4A4B9DF203432482904799DCDF46556C1E68AD87
+0E39714C510904F488AD722307DBF46063E8185CF7131A749844CB5CCC0284FF
+62A7EB6B0779800ABA08EF65FD4A17CD265E56C22DF32F6779BF6269B21F97AC
+9BEBB084D2E7C04244665182DC0E86CA91A8B1B8E28DEB6D7EEA105D839F1054
+ACA14DF8CCC8A94481ACECED1628987F65CF1B313C1588EF96342B837DCAFFC3
+AF8A8725C5E02DD1ACEDCE5391538883E699F8A7A101387F0753556A0B8061BE
+AE0B2899DCFDEFEEA6C97ED50D764F6C7312FA4E12750B3CDEB9934BFB02BBE6
+8B3EB028ABE584002EC7006627F116B1FE79A182D034DA8FD1C2D765D18C29F8
+FC8E7FC3EEFC23AF7CE0B17F3065602D472407D6547A5A02CF04715238B61A4A
+3DA50EBA90DA8EC4D2325FBC4D04F5760C9EEFAB81CB6F355F5988F91F9AB64F
+FA390EAA719D3B36C3167E6B6F6BBD25829C3FFCB837DDD66EEFB025D9767565
+7587E1F814E0470700130DFB255F9FD8BCBE749C16A9BA5F3ABCBCD7C1730051
+B31E35E1294161E7106EB9B0A4C9CBE5D1CF1AF0CDE7924F954A53C68FB862FA
+B1DAE3BCEAEF9C0553DDB16FB58507288348EC5CFD202E13E1CF2107F55A1AB6
+0747733A9630D97DF190D7987541E1EB8B142C88A9DA6DBD61F4AA0137582392
+C6CEC8015A8DD01EB17008ACED9AE89AFB55E1F053D9A57DB064F0661A3A54F5
+0F9EF0B432571E0565CECC5EC768C58FC54375B56C2EB92407142CCBAC358087
+6EBD860B184023A2B469208CFB18673BD1627C2270696D9F605F803918615C87
+C32B254325DECA4C05BB3A4BB56DEB2615437FC884B20E41013567E6E3F6273E
+94AF91B7F26725994AA70502B31BEEE4CEF862508CA3EC69E487D8FFD6B209D5
+41CD8362A667F7D3ECA63CF7596671827DE3266A9493992417B864029E331149
+CC0BAA82B67813CEE1EFB80CFF42F423F2609345045848E906C7C383243D22FA
+E951907F5F9D7CA0BB343C2691F63E87FA26D69AFB843F500536A1A5BCFA87E0
+8E303F81C8CED37B8C7AE7F495DC63A363E1622FE03D5F511A6A37280C8DAB61
+7F8FB45AFCF55A128C4FE17506AA8B9EF2C762F456481A0B900E04DBAD497D43
+64F3F49868A1A612C691517F8B7ED55C8F264B25C3B14E461B57620816E6EE94
+5C5B21A6D524D14485F398451A857E46B02FEB9A5A29116BE466FE0610CC9117
+0B1380A53B4E3048A759312ABB13460648EA241482686FD15C0F14D14E8B18DD
+C6112DFEDC9186E159ED1F25BA7DE4257C2EA8ADD8009A27F80801798E3AF985
+B89BBFD6AE47419EC46835C338F0802C5BBCE2DD5510D7BB6AD1DB035C70F0C2
+B4DF6A91E8DFD969543EF46D567F4C2259B4F98E3EAD4DC34E48CE05E226E32F
+3B0355A3946BDD4C2B3B0FC12433F8014059E2C62350AA90D7DF460424F95D19
+41EB697CA8FDFBF2CA202A90C71C9263D33F30CD2BFB7413E1D2F54A339D37D7
+9B79B21BC4CC20F73A235505A5AE0485795C42B1407DD35C34B727EA6FDF4EBD
+70CA2E3500734E805805D34624586A5B4F554574070DCB5AE202D83CB6611ACE
+7CE919EC17649DFA1B018AFEAC2D0E2A170B64897553109FA56EB8F00DB39F3F
+199E4BA2B2BF0F8B04A0725D89119C9B1412FBB75E22780489036B671F4CB1A3
+BFADB6D3BAF6944AFD9F1FAF255F5A47823CDE2083B09E92F80B11705C0244F8
+483F831EC5C3F7182820622A0D65B0354484D6FC684022D7779735BB8C4A1070
+56B60E54212EA04CFC91C0A612AE64A8231A9DF2C5B089748E98E43D901CB8D7
+B5C455530AED7CAD854A6CC7F17F5BE6A0B325B403A19BD707F133DEBFEB5673
+AB992D849D6028DCE251FA921D0FF03EF11BC8B687591DCB5363C7006C457DED
+973606DAB051CE39275495C248F4492A92B9FB47D20AD9CA9AB78FA07552859F
+DC03404B55CB61272E9D7DF8030CF71E944ECD9FD53C7701E3A16E56C389FD8F
+FAF72DB2DD460EFD71F22F63891A1DEF8138F04B675A9A84812C3FB0360EA240
+8E443BAD1CE453A7D2A1A9E3DB83355F504E8DFAD1EAA5BE9D5D3F073A05BD5D
+4B46B4EC44BF48DD1C06DB24B4E8200010CB6D2B029030F5AC572CE401318813
+618077AE44227BC4274310F3C2C2B063DBD1E60EDD1CBBC5181B7285538BF0DE
+04A5367E16FF20FB8639DEB1A14BA4BBBB6525F87AA245CA497FBABF87BC178B
+EA84591559B92AA8C737A635971F1C6FFFF4718A67D2F093FEE769CBDBCADCDE
+2C196EE4336241EBBD800B2D818E6C32ACFC930E568143A4F66AC3DFEFB0E7D9
+FFF01C888801244B51DF0FEA43EF74241BDEC11A5169B5C12534D7D8470C69E7
+86032C07027FDE7163B096628F0E55EA57AC62917FE696AE302E14EDA6ED05B9
+10CB7C6811972F115B542D2FE33D53805398D026F59363E189AD50A8D68EE97E
+BADCBEB1060BACFB4AE87649DDD3E28D1E93311FD00FA2975B564D8EF2BF109E
+94493D758F2C4CCAC7B1EFBB133219806ECAADC1FCCF85620A3A9C832BEC98CE
+9F94D119FA19A59748F5BEF4FE736C29EFD9A3E65FE287B548A37E41D7318E57
+73A375E8AF829400F19C618BCFE1BD93547C10A68F9B2EC73C8192180837F7C1
+AE6B659B937BB02F74624A08D8D40453EA90ACA9F65E6399D4A136A4747D1D44
+C48A4BC81E4F7902FE544E8A0CD2A0EC80CB601246DE2DAFDAAE34AB5A84FC11
+C0CDDEB26FC7F9F4193AB8936FF11C7D91FE416E979B6349398F92B7639C4160
+DEB1F3B2925E374A8CE1AD9B87DAF8B52352E22531ADD561
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASY10
+%!PS-AdobeFont-1.1: LASY10 1.001
+%%CreationDate: 1992 Oct 23 20:19:17
+%%RevisionDate: 2001 Jun 05 20:19:17
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASY10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-19 -192 944 683}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C
+705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4
+B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458
+99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646
+87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385
+B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915AC9272AA4A7FC35A4
+93A7A0CA8BD1CFA4382085D949EE819A51062591606ECEB5B37419223CC0400E
+158F1A0849868CFAE0F71DA6B4FA47A636EDE756530425A6BFE45B8080808B59
+6B886D033437677B151285B047C84C2E2FCB71CCDF34E20E925269E5F1A210F0
+391066823D8F21E03746BF79AAC6FF91517631686722226462D6A9EC5FFCC806
+B959AED95F492481324749E00CA117821C347F9B924BEC8C64C954570252E909
+5C33AC8B1320BB1992A88C619DEA7A8FDDE42390EC82A07BD8BB7F0014A41EC8
+04225B5063D3F04723F51128DE8ADB79F62903E1955A7D49220223CA34FDC3EB
+8FB71700EB9CC40DF747C4CC60AD11D3FC038CB2051F7E97CF7C7F7D0F49CA1F
+E0FEFCE664544CD1F7C23B05BA649D373539E7BCC761611C17489084912F77C3
+5FB3BC1E91E2B4A47C27BF4989C7703E83C5A505108037DE5006D4F510B8FE1A
+570E42E4569FAEBF66058F9D9608A771BEACA2A8AB629DBE939CCBBC116E8BCD
+BEC3A33CBF185A68DB60CAC5B21AF4D9B46B3FF4FDFBD6BC3C8101BE15E79245
+F0CF8F670CFA19ABC08C34D85B10C17190497EACEF6E401F322B1E281C1755F0
+BBF9838AF83A0A1601D78E78FD599819762347A77C71374AB428093048E3F1C9
+40CFD63B86C7F70BCD2AC3092DDD3BC91CA714BA28263EB863D5E6E2DBD4FA08
+6B22C1D18B16D7042219B9F0BDF5BF10AADB658CBED51C8B272E4DFA11C5A603
+8B4A437EABAA699B86819EAA072F7D90A9CE1B52287DD3D26C4709118DF35E12
+0469EBEA32B0CE51ABF18261C05F5DE918AFB511D068E9C93599D6ECC7BD9817
+4405C7415A3EDE4D1BBA7F4E531877A52B452E82BAFB6D3CBCA727BECBCBE0DC
+857AAD0EA6CECBFC5369DFA26A3CF7BE1411E2C9D5008D225DDC74C115E9E61A
+22A05BFFABCF4C09F990DEDB89871E891462F9148215411E04E534DEA0C6E2C7
+CB336F2B55074F41E8A5E374BE10460B85BA7013AA381E029FF7E79E2920A2D8
+9E0B3B6009AD4DAC52D484DF03DA7BDD789BEC266538D4497F160A254FC47819
+9E62F847E78BFA82AB89A23206530E7932AD868C011726A1CF620A6C31115865
+A7601D2AF9A0F550D96D61954886A608C09DB8A450AB27E2803EBBBE944810ED
+556166FEE7E97860C0DE12B73DC2BD62D5E884903E2D1F7064D8B033F1288B1B
+D73BD481859F2587161C2888CB73D352FD30D9D54DB8945BD31EE6D81783BE8C
+EE2447DA85EC4C335E8EEB00FB628250B481501862CBE6BD46C78C12010320F3
+9F4E3B898D729E12540DED97F9FE75434B3BCF60AF517011BD17828F51A12D20
+110E546A9465C738CF7434CC1AD1E794019D382031F8F22409CC196AF36EFCD2
+607242AF2FEAA55057510795652F3DF14EAF755A81115CED9B45A3EA08F6E09E
+86790E3F68419D917D467E14423246BA39FD7CCE343EB5B070363C822C496886
+9EC83E78A7927D54A35E69D184AECE780F83B1BB3236FD0FA14BE4404C83A1E0
+730BB7D7A4F3DCD55C46BDC99D2747F22B5262C9C73D0C45C2D36BBFB3AC519F
+73730CE073FBDF32CE40FFC998EE3E8166557AB95B4745C84662DE96BA8E050F
+575A64B6158CDA1FD2B879192DC2AB04C391F1251AB4079F6E9C573D09F56C10
+AD76B7A719B0929FCA706492FB11BDF94C74B28D4EF85D2A6E31A67C22AE711D
+BC362445F011FB1407078262EFD924CF2B432AE5F738D3E69325F7A2A9EB68DD
+C8E2C769461B6F23F771700B59B9319810E08E9780DDBC5E12F0B4E66A3851A7
+EE0B6541246F3A8DF3CFED04913184B9218DA101D344D5BEE30DC9407E13AA6F
+C03C7D224824888878E923C7395C720FC4C73BAFEEC353C9038F73FA1E351DAD
+FC6AFDC0605FB2582BDAF76C95DC422AD5552917421AA575BA777C7B2D32A4A9
+8F8ABEC5E962718019CEB5F95B3E3DA769DEE7823299560DD96A151D4616CE2D
+51132E59A5BF099F6B9181EBA9227225C7ECE808F5471CB1C14AFD21795A0FF6
+51B86BF0A0BC78E4EB8279822795ECF262B7F6BD4FB6996489C89DBBA91CC8E8
+8A83255DB00D07B14074F8F120192EC20F7215DA07D0746F05A5FA07095BA30E
+B4A48DDEB6CC226D30EB6821197604D0A410C48A1F36D553071581D6DF4F9566
+6C396ADB79FA62F6FBB69AECBF0E285D3B4DE20F8F69A226BEF3B2B4A443EF90
+F02E2F0BBA084FE34F3C219D6DB7F77807D2534701835C5311134B999CA1A56F
+B45F88DB490F51591244FDBD2EEF4B450C43E3C898C1E65C109B9E2C79CCBE79
+5FC12E9E2E5EFF59C0185431138FE8D176E537D581E71D6B1FBDEB6E5BC663B6
+5AC4AB2220F96538A316B45870D7BFE87516E989693521268DA79586698F36BA
+B1A64106A30F8DE31668DC104D8BACE48DC0D27335791BFAF3181C863DAA5031
+E6E6A91F4F0FC0081642505FAC5B4EABB6DB35D2CB6ADC4BECFF2F9204D760EF
+BA2B35F46AAE49FEE196209E05982D0662399F5D395B3C8AA829A9C80B6EE87F
+4D937B8B52C0C8F71F8C735498B0A8CE7643E10690CF38D207790F41ECECBE5C
+E895C8AB40746A7DF24BCCE21B92B3C87FF8AF73BFD88C327ADC55EE733DBE13
+9F7D3974300C39B87B0B7C42F7691DFB7043084C20B4FD6E5D6A6952BC1C6B5E
+70F16F3C04BDDEF40EDBDA7B2BB4167714D985F6F85B694617136007711C0B4A
+A53362B6A8BF032DE663578C1D8B1CD875E62135D8DC28A37111D121FE71AEF5
+E3F4828D7B7303B90C10B297F5286BC281F9438218397DB2726683FA5BAF45BA
+62C33DBE987CAE28F2111ECC32CAF49386DCC598D2C5691EA4E4C39443081230
+9460B4F728C7B095C6ED1A7104227D1C2F5872BDB90DC4019F5BE37D8AC737A8
+467651520DDF5A7DC5C6E70D2F1E18762BE3C68DC11E49854C78360AB374BBC5
+9AC7BC3E081DFAD05109F19466F805611C8CE909D6F8543D48E7C72D705E94EF
+CAF420B795F0D42332D7C7DCC05F8B53744F9D5616C998D54DE2CA573D6BCF55
+C96FC1C213A7447B2AB9C7CBD58A4C9C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMIB10
+%!PS-AdobeFont-1.1: CMMIB10 1.100
+%%CreationDate: 1996 Jul 23 07:54:00
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMIB10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMIB10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+readonly def
+/FontBBox{-15 -250 1216 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D004B836D34E88C25F6CE738846C8E2E59A2BCF
+4ACF80A26D78872E9343A0537BC3BD7715F32ACD958D5AAED865BFE129278935
+063A31C2634DE2F9077E0AAAAEB224466B779096D8E3FF0A12AD5157F6603DED
+1A82F3511359143311179080C510740B401C930C96270FD1AB3ECBCFEF5DE53F
+E846BAAE95828D5790922640EF8AB9D7CEBE7669FEA02B72F86872D3D8754A18
+A1629C40A7C00C956F140BC63362478279C36EE353638CD3E249897207A94504
+4400668C8E702058EBF7284C9BDF830A3FC79C7EE900CC4C3664F9767A237275
+CEE3671644A75F1E696DA906B4C66870DBE87F5B4A176920C078ADBE24F55C09
+3D18CDE21B5FBC1C6A8AB18E05EDBEF9D1C1C18B3E6377BA2A688579D4F708F9
+A5CF4F56C5E39E2726106E9713E638775E606464CD674E5DC25CE9A696A65806
+C8E9D206B421E246F18013ACC6C7B2985BA93B1B7D7745CCB25B09957F50128C
+B523A55ACA6A7A2A0193A536E590291ED9D577B527CAD0372E05BFCA1829FED1
+662D06144A5FFA628C587A4FA05B179F1A7E3B23B47765FDC054271A0DBF9C2B
+B4F4771F80D1F7AAD9024868C30DAD5CF728DB2A71D86D53B0E674996E8C01F7
+EF97B225A28872F8AD4752A466E078C2B020EB832F237CB9B5631EB2D2EDDB00
+709D3864CA3A6C3EF18085EAEABC011E9F35C9BE4B5D0B608361F329B5784DAC
+5557A602E9E3C204909D84DB988F0BAB914E87CD685C7DA55C5E0B9F0176184F
+FC39B570873BBF346A0D1DE3942DA05434949A65CE64D8BAB0A091C40F7FF47A
+4FC57CB4420221C7B3EB8B891044B5FB0227009F0F6028D3F28545E63C975F11
+6BCCB67C58A544AE706BA5309FE38161FE6933A744484ACD69323A57815F698F
+4D7BA144610B92EB815145A1A91BCFE06D5CA0BD65CB153CDED0244EE607AA93
+80B82B7870CC03C17EDFD45233B740A79F6F20393013964E1A814B95C94DD07F
+117BADF4346870F0797A95BF7ED1750F0CFBEA89D72485E4730E53332CB7F646
+6D8AB2DEBF2975B25A0FE0E17229F312D65CDA55295E56EF2563D8081B4B5AB5
+CAFB730FAA30CE0BC3EEDFAD90662D450CF84423EA97B05FA5890257FE048C20
+94494FA4DB24C9F1884379C2CD6D9F617B77A096C0BEDC532E5BEE56D876CF22
+2365AABD1D9849D383AADA380429
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LASYB10
+%!PS-AdobeFont-1.1: LASYB10 1.00
+%%CreationDate: 1992 Oct 23 20:19:19
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LASYB10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /LASYB10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /a1 put
+dup 2 /a2 put
+dup 3 /a3 put
+dup 4 /a4 put
+dup 48 /a48 put
+dup 49 /a49 put
+dup 50 /a50 put
+dup 51 /a51 put
+dup 59 /a59 put
+dup 60 /a60 put
+dup 61 /a61 put
+readonly def
+/FontBBox{-29 -219 1086 697}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D004AF59FCC17BC5C5BCDA248667E22DA632042
+ABD4C635E7F36234B8F3636DF1BFA55DE3992A3ABCEFD3552D6498DCD135A2E7
+A011D4A8CD3DA5B29BBECC5F953202635159476822C532ACB1795E3FEA442D50
+93CDEE47691ED4AFAEFF8E5198EC41B4FA50D35FA023941A223BAF64BFA0421A
+CFCAA3933D4583F7F0D643398BA49D509FE0747D40CE5EA3E2DB1611F0866666
+AC0781A2908568C97BA8097DBCEC3B935E9A2A69982991408D88D193AA24AF9B
+253E259A17C027EDB7ED4714112624646E3B8306531EB0D6BC7B9B653625CC1E
+7986B39DA8CE93CB6A27679C191DABFD83FC4D2B89C95023A25CA5D35E63127B
+7B2E4F010B18A0A5E368E89F93877A16A1ADD1ACECD405D326D83CA5D4A510F6
+A1A61AE86D385995F841F115E87DD81321E7E029CECD1E92559EB568AC63B327
+5C2798A34AF9956429D0A64C91F5BC7BF9E6F8E66BC4F0893ABCED929BDB3EA2
+FD7F44BB0CCE0866B26A890B0F659B9DA6E3EE324290D73BDBFB5448E9D71420
+36C0FE538F18E866A50DD23152E2C096E1045E7777888AF5CEFB83B1C6FCA18A
+26E83D75AB66291A5A5A285DBB1B952591D0EC3D575F3F4A5AEE28C9E96C27E8
+CC6C07665482BEED7820B8AAAEF9C37AEDF0067B541BEF8BC6D81970D870A885
+6E01F327E06CB06AA0C89EC142AA9CBE59EB4D90B5CDCCD81D289E4BE3F79899
+5040C25B7E807A854FD70F2770139C4B189855374CBC6B12B1A117898BDF1610
+74E3B41D991CA14C79092436BA31EC02D6CECA609739BBE5034D7B296BB0B6AA
+AD04510FA14F58D30A23A8EFE7A72F049E876BF97C50139E8C0FF468121D7350
+20084E64972D943EF60770C27E76D66CDF3629546945CCF703CB3CD7488155E0
+9AF648C75CE3A2530DE72775CC2D54F5083AEB25BE25E5E99347C781317DF5EF
+F125DDFBF7042C3BE25D2FBE51A683AD71072F708A8992284FD77AB101C2B884
+7AFBB58155C887E023877B2DFFDC471ED67AF4F57DAC50B68910A4883DB36A6E
+A36A7A021D115726CEB047B293C820E50E4CF4AB60675AAD91734859F48152D8
+751326488AB6C8FDEB582EBEE819CA48EB0D856D325733F81C9823A9EF812973
+90725E9B42758BBE03D21AA460EC0315E8F4FFB01E9D18D8F2BC668E301AB86E
+5FD600B498588B0FC322766DEB8EDA9E6AB1FE8D35255345399DC190C07F3A1A
+4A4B9697EEC854ACE5B7FB9E0B47925710DCD503908DCAB34BA90B3D40EB6826
+67B9F19EB0DF6223000CC089CFEB26DE0A60E17FFC485EAF1FB16FCE37CEEAD1
+12A727548BC30A4F387132B8099985FFA297343BF8FC80A2A3F43E2901E4BB77
+6AA49EA0881FA225721085B64CF4F346C4FBC6091343E429FEC9B8519664F1F4
+3FF811A845B1A29ECF5C84A84D14C6CF10CA76783A98F7E4B513C9E4BE35C952
+08869D25C13038238640ACB354237E3E2BF7B8C4C9F9919A547D1827321478BD
+DE45C7F88C5FDC02D424FF3DFA29EB6CAE3E9DBC0FD81079BCAF0C39E6BB6FC8
+ED4EC88DF341D25BB6681BB6604151DF7D6471754DF03495252928FEA96FE61E
+FC4B446D7DF6718264BF01F3F664CCD44D2C7EFF3A43ADAB173868B4AED27845
+2A36C5E8ECFC15752793B9AAE6A4A073FA656DE369CA316403185D7F13218687
+CF31CA7895210669AF05F9538BB11C01ECD6F5A2577B5711FA1A94768C81030E
+C59C76E0FF41D3ACF8A140E465636B5177A62BB05E358E9FCF123950BC3160CC
+5E5888C461AFD93B02F1CD092C72D5D0B99C3BE653A82F9E8C0FAFB0B2814D86
+CDFD4246FD7C9857F7FD817D988E8403C200154123DF221B2BD52E5CBC976813
+56F9A7F15F6E6B528AE4B7F75078CE540B85FC09DA861C4C0BFEBB936A740727
+45DA0DA3A78A0EEFD6CE771C5C0A4A4B1BAD3D67B9850F7FA718F9EFCF78007A
+FA8C1589AD9A41B4ED062463C6DEE2F8CC23DB5B55E35406387AC154DA99E87D
+BBBA967F23CD0BE17CFF0E70E110E3F170C593712B8F68C13A2DCAE8F7272FC4
+39BE8F52FEBC240D4B87062266CF2D10E6EEC8DB8C0200F3317645CF8A2EA21D
+2D00418E48FE2785BD40850560F76BA3BA03BE321B6B32A26011E810934ED873
+302A5CD77B60C72965C045D55F4666F3460377A3C0A01A28D33A2A1DCD1917A2
+A132B21DC8D5F0943C06AE2F6AA71A81CE43279725E72D4D6EA59BF8E4C727F5
+97FD04E536923FA04FBBE1F1D583992B64F4494EB6CC5C6D22A1FE1E6F28B2B4
+C49D2B202B55717CF0C05C7A05A079CE0C736BF093DBDCEB2429B5CB9DB1D9A4
+4E0AEF3CA4FE9F6F7E2AEDADCD3CD87744779829639EAC7D0EEB91D8A5F29B5F
+4D4FDCBF6A152ECDCB36AD5FF07AECB6EA4712D05A36A46065E8D1E2C362CF32
+749A0E97BADFF5FB06C08A60277BF04F13F1C6574A9F3BDDFCB4309886C645AD
+BCE7D3E059F458D8F5839FC314DD8C126BA18CB63038F532F8493301E04EC43C
+7BF51569D5CD6E4418483611F0A89ABE52429A5FD232E7DC04E4310862FE6EA5
+C838A7BAA5C7AB1F32266E0BC57BB3075EDC330A365B57EDDEACE0C50B586A5D
+AA3D5511E37A3754557AD8A562C6C8AFD3FE9DA735187613D117C244D27FEAEE
+46026C55651CC74065C0096EA4D0A5560F6034B16EBD958344FE41F8814D66D9
+5024939C21F0040AF789806BE8578E555F3317AB145DC5433A8F7F4F9EE68205
+076F2E857466D3DE8A8CCE9E8775416470D91F8F6C0D6A9C7FB674424B9B0183
+DEA2C9AB9D01B9F6AFC31FF875D56690F7DCF2573EC3512F81CAA269C9FF5506
+53CE1BC0864B46AE74CCAE3053D1D01FB8EFA66F63F0873717BC82E1101E179C
+87118D307EC20DA296FA404C29F0F3D4B5D5F6606A037DA21CE5DF09B69E0286
+A3406989C6FA312E82E14A983D3B7622E5D1EB9571319849E83423619CEF0925
+1F5F21B8DF07DAB6B3887D7D31482F33B0EE1A294045894721A4E181FCF12BC0
+9630F219950F4D25D87221BD2D81E3962C71C1C08F1F55EC0909356AD23C0443
+93C3C9A6562146691A00231390CCF7EA5C501EA52B5D39C6DF666F36DA5CAE17
+131F5D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LCIRCLEW10
+%!PS-AdobeFont-1.1: LCIRCLEW10 1.001
+%%CreationDate: 1992 Oct 23 20:22:00
+%%RevisionDate: 2001 Jun 05 20:22:00
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LCIRCLEW10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /LCIRCLEW10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 24 /a24 put
+dup 25 /a25 put
+dup 26 /a26 put
+dup 32 /a32 put
+dup 33 /a33 put
+dup 34 /a34 put
+dup 35 /a35 put
+dup 114 /a114 put
+readonly def
+/FontBBox{-2000 -2000 2080 2080}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21
+E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2
+0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495
+DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F
+98AAA04894F5487C279D2766B50B23E16D7F1023E387F60757E6C80FAE85A8AD
+149D104B38BABA49C58CCD52B719D635E892DCE74F3D283407537FE6CF45E192
+54BF678237D2B8B3C0AE474E96765078627EFAC8AA84DBF87784E5E755C587AB
+BE50DF55D35CDD05D96F562153E2016C3D23ED27DEF2C3908BD0BE882E838796
+BA837E4B671E2CEC2471BC438FAFA250F12170D86934A19C468D5EE6C8B2428C
+AF1EA0FBCE58BABD5BD3A354CB89003AFF34BB325334141E622CAC8CC29F962F
+E4E4FBB6C0C21D4B0835248F760476BE1B36948376B6A4FBB98E9D9F49D97132
+7166B1D32CB3E6590B11917FF0244AC94551E6EF79FCEB8FD65D947E2B209930
+4DEFA82AF22E5320B8A19C0B968D88806CCCC1FC5934ED4B8FCA05AA42A725B0
+1FB85D31D75E9F198EC6D3A0920C9298E2F1535FF124C0760E00054F631218AD
+BACF10F693891EFB272786596ABEA45AD4A2860C4E346515C79FCE68FE8B973D
+F54F8D267370670A62546B001E39136F45CC78192A31EF35C1415522DBB171A6
+E36B3DD83802C2305228A4989C062F84219987A9585C33DDBD17150A39A3CA2D
+A2A91BA35367D7A031E6F0965F920B26577B7FE34FD3EC315837EC1D91E1442C
+2C3515DE36B9FDAB2AB6C742C7D27B63843146711159C1202B67BFD05B61C2C2
+B9F2158FF806B504D8F4256A8A26071309DE213B55DC08BD1B7736E37FAAE154
+EEDC361EB417EECB1EE918BECA57231A7CB682134460003F1A5A5A0CCF2EE77A
+8C6C959F1AF74D9E45BE2A43EF45353FE77BD3C10551C1AAED678E41C6F2F945
+062E9032C955D3A49948FA8B283F9616C67B088FCF961587B0A3CED1CC259FD2
+CDAE3923B1C25546EF9E4844CE241657CFC15800889EDCDD1EC8D267E3BEF2B9
+BD1DCBC691635A3B532B740EDEEFCB1072701698E132897E2C0D9520F34018CF
+4C847B2A723DF0B8FFF546F5956C85784EF8986999149BF78996581277E43FE7
+9A4409A96954F8E6EDAB0134ACB5757F5F964150D8AD43EFF35A128AB3ED8A7B
+9DFBEEBFAA9D6272D7CF76CC59447B8EBF376F0E8F0D179B3BE9EF837388F6ED
+36F6E3AB3D64015D628A81A2EBEB2883B7BC71B9D26D7A7D228B06EAF48EDD31
+46FA23B7BE6D1340FFD5F2A2939AA1E3AD7FD9A3EC7289EA41E512008F4B95E5
+9FED4D04D94513B8DF20AE387A9B6A2EE41777802D8E66735F2C05DAD7583F6F
+D415B6833A8CB7483D1EB9BE08859581D805810D39694196933275D8528BA5F8
+AA24E1D17ACA093C04233120F1FAD8844E3CF04C3BB2CED0BDCACCB364426560
+AEADB3D02CFAF79979EAFF971346AF84BAEDCDE7F0A0C4768840711B90AB14A2
+00FB4544CF055E222330C8793C7AC675DA0DED5742B659CE5F0102C8267FAC42
+4E70B57C834085731F5BB4543AB491B0F04EDA0F018B9DC2A6BA373CB182AA61
+A97D0D24443EB61FBD49CA65B593B06989747A3BA4FBCC9093E3E2CDE322BB2F
+7304226C5CB5CD3015FA4CEA544AB7DED49AA97E9CFB7D6BE72491042F93507A
+449500F7AC14B4A2379098B5D1DB92B4D6AB1C4BFB4748F9FE8D96F324584D62
+69883FF22A868A141457533E5BDF09E1752DAEF5A2E09304D4D90A5D691E3929
+8E0627BF57634E6EDF30CF232953E3E52E8A01C6C0A1D21E123D45F71AC92285
+E5EC8B0124114B9CDF773A4ADFA4F8FE62CA8837AE701412EE763E433650A315
+06BCE11BA8F919CEF49C9C622B4AF84ACEF9973BA4FCF7FC85DAE67DB56CF1E2
+09ACAC211D2B636D49AE7CC6C64B98AD9FFD598C067F187CAF2ACEAA94E09E30
+683CC6DE3F0898111AC3BB3948239249489DAF1CECBC89DB509BCE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LINEW10
+%!PS-AdobeFont-1.1: LINEW10 1.001
+%%CreationDate: 1992 Oct 23 20:22:06
+%%RevisionDate: 2001 Jun 05 20:22:06
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LINEW10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /LINEW10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 27 /a27 put
+dup 45 /a45 put
+dup 54 /a54 put
+dup 63 /a63 put
+readonly def
+/FontBBox{-220 -220 1040 1040}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21
+E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2
+0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495
+DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F
+98AAA04894F5487C279D2766B50B23E16D7F1023E387F60757E6C80FAE85A8AD
+149D104B38BABA49C58CCD52B719D635E892DCE74F3D283407537FE6CF45E192
+54BF678237D2B8B3C0AE474E96765078627EFAC8AA84DBF87784E5E755C587AB
+BE50DF55D35CDD05D96F562153E2016C3D23ED27DEF2C3908BD0BE882E838796
+BA837E4B671E2CEC2471BC438FAFA0F4FA9D004C64F187F897B89212356640B3
+3661AB6C36FD6C98BB4FBCF5016D9C6ECC317E76CA0CB5E739017091C4F3BA9D
+AA0AC0CA3DE976094AA0C0DCB079008241EC2D1CD368958277386F52D7EF4AD3
+581A6658E5F46DA384CAC13208485723CAA3BB78E33D485D545EE7D9197E98E2
+53937C88E0A691E696912A9CF4D608936E212C18E3A1A792B4255891642599B8
+BF60A177C86186C00E2E0220FB80A0EEBB1D115B275FD94CBF960E1705EE0C4B
+6938170DF6725216E76A3BE36F23D1DD3530FDDB409E758352FB2EC5D2EF0265
+B48A2C566E252846ED6717686FD6E86946CE37C9A3493C521DF4EF527F87464A
+5E36DAD61032A752C75175660A559CFA480FF4A25C4B14BC7B27B42314218445
+FD3DB330A46DDB3C8A9F386855F555961A476077CCDDC68A26C1097AAEEFF530
+BEE89FC2850256D81DD96003533789A77B01967B7D0485CAB1FCF1977988257A
+0ACAE84A584F9424F39D2A31B1B8493F9991F4E01C0B6647A3A78B80EC6A0E25
+E6E3D2CA32C4C7389D7BBA57C12FC00B99594E3B7055A2E28E9E92976F49321E
+39418AE9FFF387C11FC1D88287F4C521283666FBD0A7516F160B29A1CFB55C35
+CEE54B5D7AC47E7A6C375C5B99135E310E5ED13697F9851ED930F2F412A3CD4D
+F379CB616448DD6DBECAA1E31682AFEB4C3717501D47CF4D7F73E29569991F79
+C8AE39FD330A405C3B78A986B36F0F44A365E7A7BC93FDCA330AF7E83B6ACB81
+1ABC7125005D32848E2EDF11B09DEFF84835CDC4BDB8BDF704DCC887D46D5103
+3A53331E5361C61521FA1C9EF48EAD7F694697257625753B9692017E07056933
+EEC2B12745507467FB8D215E88E5A9380E0A460F25633C9CBEF48EA0135BFD27
+2D4AEB7668A7512087063E9D516569D1AB04C29B03333D03547EE6BFB88197DC
+25052A260F8CA613F356FEF1D54B51F3A6D87DBC5D60904C49D244FFC336F892
+97AB11ADB3F954122F49687AA5037D4BAB26913EE95E54F0159945638F77CF2E
+2BF5505B977A88F15428BA611030589371675892AFC801206A33DD26CEE6AFD4
+3C82669E345D5FCD039C1DECEB790DD00C56463B4CAD236B3A6C702593FD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LINE10
+%!PS-AdobeFont-1.1: LINE10 1.001
+%%CreationDate: 1992 Oct 23 20:22:05
+%%RevisionDate: 2001 Jun 05 20:22:05
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LINE10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /LINE10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 27 /a27 put
+dup 45 /a45 put
+dup 54 /a54 put
+dup 63 /a63 put
+readonly def
+/FontBBox{-150 -150 1020 1020}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21
+E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2
+0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495
+DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F
+98AAA04894F5487C279D2766B50B23E16D7F1023E387FA4165DF522DB290D390
+B669550A43638C3C9CC38C7667A22D27F9DB1542620110A8671B2713C8DB93D3
+4C500474AC190831F9C7441DC4A7C27EE88DAEF10D7AEE6FDB22E7625E802B4C
+FCEE0DC79988734BDA39B9896B1833D4BEC4F91DB321F343F57B3FC5ECA13AEA
+AB108165934BDE65D2EB5A62BD395ABA20F0389A1B71270649CE1A93B29040EB
+B3166F9EBC3791671B6EDCEB171F3CCDAA90BBD5EE5042AAC2AD6D838F79E008
+43845E5FCF0B3D71E21543F491832420B45492BFE5D3E278268908D3CA704A48
+AF6C6954A03244409C49A178680D62BC6277BE6A8CF4DFFA69775BB8FCFE579F
+0DFD00493CC18A38F7AA197A43E96F5986EB21F77B0C955332C87B18A5F72982
+E3D0B0554AE03D86FF10237036E2CBE514A9BFC5A4F5B2C9E5667EE2B64AB536
+766C45D847C52B75FCF57652200536319F09D0FCEA025A5F5CA61CD63812083D
+CE11E82271251C41D0550CF754C13A32F847CC7ED53C14742D3C5AF8E412E542
+DAC233E8C9FA03A4ED4BB95A9B831AF45E02D31003517156A429F54B6E1B1727
+520DE349B22A26C73A2D3CCE0733F2E594DD8E091E2464A31B86C81CF3616399
+F042260B75E2F3010CC15E843A7F7388C01BA40AC4E4F1D50059A55BB5111089
+F167B796709EE54D544E1AF445A3E791EDC71A6D6F2F298A20014956D52138CE
+FB138CE99299A8B41905FF9AB01CC58A773478EB89C036BD3F552AE99E75F2AB
+712E4EF075F70AF9023B71BE2BFDBB7A7F16D5A307AF4857DBA61421ADFA1022
+8A26549AFC5E926D29195FE85B2E3C01EFB330D900B6A7FE4EA5AB8A0EA87E5D
+CD0AE684E50A59FEDD85337F87E8112CEA3F1236D33D5475FC3C473B34F423D2
+18E9BD7905C7F638D080A7C87D681237674701DB7D874937C92A5766AB3D53FC
+86C3B3D02964CD566127FD36EED5C9D2413BB626124E557A394FAC265E19DFA0
+CB28EDE6D30A2FE2D7CF5610EF919612948AFBA3DBDBE206510021065FB9E1DA
+C733F7C1E2D97BAE9E4C81432C4283BA9DCC3CC9E43515CD9001306FD22C8EEB
+EC175694CD7AAB61ED97092DD23E90EDAFD49026057E4890937B0C8C1FD883B7
+6BD6BD46C8E1E8B8932624E866182266AD0F2B48799CBDB75740EA228B54CB0E
+91AEAF0B47DAD7E20D073310870A011BAF598AFEAFD78189D389BFC646C74109
+E283A7493D4AF0078D7EBEC26FB7F170DECA32FA84461E7A2FD98884AFA22112
+10BE6EE680666313358632904C34E1936A14E9295B62CDC104
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: LCIRCLE10
+%!PS-AdobeFont-1.1: LCIRCLE10 1.001
+%%CreationDate: 1992 Oct 23 20:21:59
+%%RevisionDate: 2001 Jun 05 20:21:59
+% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.001) readonly def
+/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (LCIRCLE10) readonly def
+/FamilyName (LaTeX) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /LCIRCLE10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 24 /a24 put
+dup 26 /a26 put
+dup 27 /a27 put
+dup 32 /a32 put
+dup 33 /a33 put
+dup 34 /a34 put
+dup 35 /a35 put
+dup 114 /a114 put
+readonly def
+/FontBBox{-2000 -2000 2040 2040}readonly def
+currentdict end
+currentfile eexec
+D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E
+F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9
+1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538
+497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21
+E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2
+0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495
+DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F
+98AAA04894F5487C279D2766B50B23E16D7F1023E387FA4165DF522DB290D390
+B669550A43638C3C9CC38C7667A22D27F9DB1542620110A8671B2713C8DB93D3
+4C500474AC190831F9C7441DC4A7C27EE88DAEF10D7AEE6FDB22E7625E802B4C
+FCEE0DC79988734BDA39B9896B1833D4BEC4F91DB321F343F57B3FC5ECA13AEA
+AB108165934BDE65D2EB5A62BD395AB84402D4A2703E3DC3BEC860D5A4EB785A
+1D8D0D1AE7D31BFCD3ABE3E9779B6BC28D93CFCFD8461032D969F1C9A53A6DCA
+321062C6750132DD47444F208275E5000794E261F842CA01FD5DCA6F8C92C7EA
+E2D8D66ADB1194BD8AC59E9191895A2FCA88F32DA2B27717F18C258EE2402C69
+5655EE4D15708452687828A90653E9FC2707F1E9ACA413DAD6E5EE607F6DCB97
+09B7195203A395C97CCC7390F38D69AEC6323A0AAE0A05958B7987701BBD6497
+F95D8653699C39F179820FB8C2DBD7A4E7EDF03E83F7536946A3F532650AC5CD
+48C10BA3AB8F67915EAC0053592CA317E0A8EFD1322398DB7D9B32ECE97791A0
+0B49839C58E426531833D30F153863E92A79516C2878AEE6916F0FA78F94714E
+D709C10DB24955FC0DE6769D34E4E1DB2ADED1775C5A5A6313C93B6A0195311B
+4A334B4D9B914EA59194239AAD1358BC269B8CBD35A7685ACB29282D46440A38
+083B9CB2258BB81E2489B5FBF551AEA1330D4DF70E9E650964A369CA2F77DEBD
+0CDBCECDD2DFE4EE609FBBC60FEEEB5B8FA0C5DE573D01F66FC2DCE43C59D271
+DE4E4A1D4F7B40829C8AFDFEBB82FA488594D463EC07C10B7CCDE49905AF4548
+661F6DAF2100FABC6C6C3B9FBE930B52938F62EDBA363D5459F4F3B3C88F8A0B
+307986D5B5335831F4E056065898A91CFCDC045E3D42547F2E48823892193319
+5EE7A40F554AEFF4633FF20604B551517BB0864CE5E026E1993BD62AFE305B8A
+E1AAD775B8A43AC253F0595790C870E673FBFA6632344346CC167C3F483FBFD4
+AE355BCD70D140D0F68DAF0652DD24559D22D450C8CD93B098B0A36C15749BA5
+10DE7C6042ED97289E7FC10496AB5A52CA2D63D6587D62F0AFB3BECDA71543A3
+92D76CDCDF1255604CAA309A3A68D742A8236D4BB6C642AD968251C4A5E2A8EB
+3468883996D08DDBD6EECAC0F8118E49BC1E546DC873F1C6EE34EE73D2A7562D
+6D5F480A66C7E499A0FFCBF6D576774A6D09FD7CA949759FD020584E1B11651B
+6467CC3E3E820C48A7E8BB8D5791959EBB1807C3930E0258AF3F94FD09F0FDB8
+1FA475069536022D94A5F955133EE7073F09618004191EF3F3C229056F90F9F3
+F2C4C1066ABD5AEEF32DA669EC69E8948C78627A3F642E7B87DD4A24938030CB
+BBBEC79625A309520BF01F8C0437021CDCEB7D7CD3D40466018E1D047E02617E
+AD4B817AE15F9CCAB54D42B6889851AD43AC8242FB150C8690784D4DAEF3BD5F
+0C0926D2EFC7C583A1C25D3AF881BAD3AC1F8915682DBB1A2484EC312A20411A
+131F2D583F33F44D221858ABFB2332F2A6B45B6534AADF25D623AEDBE7078AEC
+A4867B3BDFF10BF80226AA3F69BF8983C8CD040E99343243200F23D2D6452808
+31EF23568536C7F8BA3F5A10FB37FD0EB1A4BB7E067D3838CE4761D2C4ACB1DD
+53972F32D30B6027A89447D44035C935870B95A08A101A2DBB4E314A0EAF966A
+8A19520CA6F062C475F3540635C74747D6978F14F136416D760860F0C7FC066B
+AA68F64A016F7DF6ED638E291C45C6C9401330CAD6A495AD8110F0005357FB5D
+8027CBEBAA40C28F35D5E0F9C195F7DD67ADE1A89D018F15D18BD4E65B827017
+29DBC1DF2F48CB49FB0DBB8A9B834B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY8
+%!PS-AdobeFont-1.1: CMSY8 1.0
+%%CreationDate: 1991 Aug 15 07:22:10
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 102 /braceleft put
+dup 103 /braceright put
+readonly def
+/FontBBox{-30 -955 1185 779}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0
+5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F
+80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107
+1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB
+DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20
+9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1
+CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA
+F83C7D393392BCBC227771CDCB976E93302530FA3F4BEF341997D4302A48384A
+CEFFC1559BC244835D66BBD96C8A7AA401277C8B7017EA120CCBEF1CD6E00F0D
+22EFBE943B7863A7FDB62070671D966D5A13F9DE8E576861C9FE1BDB92A8BA02
+A44BAA2E1461DA7AA97AC9072EC691F74C0E1C03BD3CBC39870CF40AE25F6A80
+0D4B051AC8EB2274DB4856C1CA62C55B122A97CFD0AAA8B37F8D7DB642A58280
+CA5AF2B4BF2207AF703F8902A8BE19BFD9BBEECD63D362F819E71F6A02288C08
+050A7503B4C8BB5CEB75C33C47F25C641F119E55BBBC4AFFEFC6F5C138B24041
+DC0583260A33E4F75D0F14E5CCCA41E94233C670D1884554F334AA0A6C736077
+83445B1DDC9185AC8115B4F590ACDE1D473A52C89AED7F77DCBD773D8C3EADF7
+166D328526B01FBA4BEEBCF52E4B39490A3B3766730036ECFB481D255E317DF4
+79432A95C4F1125EB9903AA9FE1CAC8003EF0DDA0851215036449C3463822D0C
+6DCBF375FE062BCD746000DCA10035C3A3FD8371E83A4491256816081D9CE0C2
+8A645903FB0DAEF45CBDEE53BC6391F527A92AE5DC2F6C1555711280A7EF311F
+8BE208326B1E2D31D01387DCC5EB47808CF15D610D3D0EBC48EEB2905A86E2F7
+45804E51470A75A82FD5D9EE32BABDAB67F4C8F30E845BBB8FD4DDD885ED613B
+997D63DF0D6C5BBBBF249DE7CF3DE605B3EBE10CD5949B4D092860A4D35D8BF7
+BA9F53639E5CB4B0A8D044C5A606E7D9DC3AD3DD15ADFB6BACAAAEFD9ABEF05E
+1E0F2BCBD125A3D4F52634EF6C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /minus put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC5703711DA090312BA3FC00A08C453C609
+C627A8B1550654AD5E22C5F3F3CC8C1C0A6C7ADDAB55016A76EC46213FD9BAAF
+03F7A5FD261BF647FCA5049118033F809370A84AC3ADA3D5BE032CBB494D7851
+A6242E785CCC20D81FC5EE7871F1E588DA3E31BD321C67142C5D76BC6AC708DF
+C21616B4CC92F0F8B92BD37A4AB83E066D1245FAD89B480CB0AC192D4CAFA6AD
+241BD8DF7AD566A2022FBC67364AB89F33608554113D210FE5D27F8FB1B2B78A
+F22EC999DBAAFC9C60017101D5FB2A3B6E2BF4BE47B8E5E4662B8C41AB471DFC
+A31EE1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY7
+%!PS-AdobeFont-1.1: CMSY7 1.0
+%%CreationDate: 1991 Aug 15 07:21:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /minus put
+readonly def
+/FontBBox{-15 -951 1252 782}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949
+8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D
+F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443
+E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765
+424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8
+E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C
+C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63
+868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A
+089B2D24F47B9D66B677886B90AA787AD865B5F78EE434AA47B7B0F1244A4215
+251FDCC670FD01A92226E2C667C2344298D001575BDF782D969D836ECA11E229
+C7A17E28F70F9B17273FF243452DA885068A8BCB5165534F3996CBD8D97307DB
+593D606C197AFC259E691C242F6E1E651575B6852AAD54567905E6F542DCA109
+7F6DA24DC9112FBF7CE48B387953787B2BCB841873AED2DFA83339D39E14F4DD
+3A51584527AC3A93630D121E2AE0C89D9C3F2FFA767743B1276BE1E648041010
+0FD510F1A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI7
+%!PS-AdobeFont-1.1: CMMI7 1.100
+%%CreationDate: 1996 Jul 23 07:53:53
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+dup 97 /a put
+dup 105 /i put
+readonly def
+/FontBBox{0 -250 1171 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F
+C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B
+B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868
+DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811
+4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3
+FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB
+76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5
+123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770
+012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6
+A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413
+44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC
+4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050
+01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608
+D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3
+914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05
+261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615
+24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2
+A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663
+9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C
+889787CDC7AA8BEF7021B3C18A0A61A68CCEA80153A2E09D2E04ACE20306E501
+8CEECA860C3B2609D8785ED2C660E2777EA960ED94D28671B564A8AC85E362A8
+4BADC8FD99D47B66E2D64A8511225459A51B6B411E5205A28723D7C2B6753582
+A6D6A7A1A3F3519391F0A5DC76613810CF1D4FACF987E5ECB26C9B5D06C1F132
+1FDC76DD50C6E853DD21CF8646CFF217214B8DC0845821388C85A0E0A94AA20A
+B9FF39586D4AF6CF86F3945C5C699F59E2DEEBBF9EB318E86D57DA4EDEE69A6A
+5BDE5847570D4C6F1DD7A7E08A4DC932FDE320FBE0609A7889CC0DD2C982B5B9
+4237940CA4DF113D2174AD8ADF632B72D9208A36A60B9BAE2F0144B40EC76367
+3592BA37CDB5E19C3978A94A695F1E7D59F5D22D63EBC930A30076FC8D25637E
+389E725578D02CFD41C0214F4F835D2F0B05F7E63D4DA50A9D42C235DCC91C21
+F14A947FA7B8CD7CEEC5C0370D8619BE1941F9B8FA079B21B596F3BE90E1C9BC
+95F62B97009DA3905837583C002CDBCC955D687F1696A9E1F4CFC2F16405B048
+59AE381D6304A500CB183A3EEBF548E7D29B25D74A4A853E4BF1E443C1A0E1E3
+C72873A2194BC4A77EF47227A1D2E7E53EF1DAA1D9EA7FBB81F3BE0096C56647
+1EE33CB7D469AA2BAE35E8D1B282F2644E6F8567432158A6D5974493BD25398D
+40A1540FCEE52426BFDFB14CAC003CDD2986CA807ADCC5E49ECEB0A0077FF72E
+81F5FFD9C1BE1356E5321523BA9483C068C796EF9CC7EFA041976799557C3C3D
+4904A5F4861104ACA3C7F37BA10EB63ED467A8B9B1208A6E63D48F553AC0B323
+6DE4B2E58168AE7D031484CE1A30559EF373C5F27F57AB93F7901ED4A382A150
+C74C166DF19C4EC736F3FA95B0FEA6A1C5F616C5369A92721AC951D4E037C2F3
+8EF1C90AEB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.1: CMR7 1.0
+%%CreationDate: 1991 Aug 20 16:39:21
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 43 /plus put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 55 /seven put
+dup 61 /equal put
+readonly def
+/FontBBox{-27 -250 1122 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
+E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
+47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
+8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
+78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
+1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
+01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
+C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
+F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
+8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
+A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
+455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
+9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
+EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
+52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
+563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
+0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
+7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
+0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
+1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A47CD4FFE5D78
+D8A2086B7832F31FAFBCE07449C2DF202DEF9FC7CEAB4028A0FB788150A07C01
+D06A674C0E9FFCCCCF9D8E5F0D01A69402622894D12C1F675257EE11E4645236
+8EC81C2F2CE06B00CCB14868E8B56F2F030C58FF8CD99977A16B30DF54CED890
+6233C5DC2CECB317276E26258C30FB3784C3EA7BF0D42B5467D1464A673A2745
+BEB09F62635AA2A18E0FB226B7C1CBB5E65C8BD0DC206F1193EEE016CEAE7218
+F3D275E921CA71ECC6AB3F62B3B9AFDAF722729FCC68770AD30755ECF1631776
+E05F1AE202229D3D236EACCA4B9E83238556A0B1BD4CC6B36F099386715E1C9F
+AF33A3145F1FB901D3B599EF23E2ECDCFC9ED81A735F3807103DE90A6642CF96
+028CF5BD8F7A04C00819E2E6F322739540D3870343CB5B39C7ED68118F333757
+5506A675DAECCF35C60A1117DDB1F93A3C8C81B191C448B97E6F6EBB051D45CE
+42F601CB42E38505C48CA7FB58EEACBF1149F97079E4E907301A69E055E7195E
+BF14E05A1DFFCE96E93BD0FB1BE6BC613E24A147EDAE70B7C607CD99CB0D26D7
+0F75B64AA0BB773682726F9ECA2EB0A8FC9645A51A47C312797D3DAE3297B822
+48F8A312D8CB41E0286B4CB5D33B472CEFFB187334ED1D19612C54956F8F8F74
+71AA08249349A42692CCFD0CA8264791586B3FB43322242D29787127D528607D
+AFABA475F51EE5957FD253B461BD287A8833E14D70D3898203202717ABF07F95
+84F0CACA5561FA28F43FE398506C510C31B5C360504F9290546EB51CDC680EE6
+4BD5A1D0124630222E12ED2246F0126029D663A241FD9133BB45CE01D5A17BEF
+84FB68F1E0D53743AB920D8FA7DFD7A0E277AD4D21370D694A3B6497644D7BC6
+E5ADC73C819A0F7C10D9A9F18989D1E1120A3116D23B46FE38043CABBC616F4B
+756A1EA74C4F7A76878379092818666BC1BAC7446B4CD07631315AD0D1B3B8E9
+11B516348F2C640C1BA713EF67AA942601F05B17B735CAD4AD73179D5AF9519A
+C076FA154007B4A7F8C82EE14F8B9B4E86A9EFB41525B371AB1D896B1334BEE0
+388B23051401AEBA580D75F5E6B42C5804253E1124D473BD9B5F304AC904D352
+7C994DFB6648E0502AD5410742A1EDE3093A82E828691654DB2ABE3D23B7D29F
+42AF77DC7A6DA2F9F4E88FEE5C7D070AF352A9023B4D36BF0B7F927B64530D2D
+994AC5FA571F611FF1C2A9597CB738F08F955001280F203E9802CAC7D9CCCD58
+863234DF777F2DB93E88266B27CFD364A3D4B514DA6DE00F0F7734EB108D1843
+ED2518A2E76FA296EB0156E397A2AAB68E79B937AD2BEE3105C9D52E38D9CAAC
+1852F82B3C2A3CBC9FDC721E9D3283FE016157375C7D3058668EA9150F7F3F44
+2D8D13DD11EC661E095CFB39A4FD36E7EABD5D4BB61945E4328E9B2E3719BE62
+9DA6BFFFA2C96835D6CD465F88C20A849BDBC10331E56F68FC831D4B7C483F93
+3072AC40ABFF65556ED00843BC66D633ACCCF55187C07057FBA6408B55DEB19E
+05B94C9C42C4A0A34485A9A38C9C156BB5C2509DA87C259650858699ABD8CCE9
+87B106B70CB84940EBBADC7556025E244F2CC2FA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMEX10
+%!PS-AdobeFont-1.1: CMEX10 1.00
+%%CreationDate: 1992 Jul 23 21:22:48
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 20 /bracketleftbigg put
+dup 21 /bracketrightbigg put
+dup 32 /parenleftBigg put
+dup 33 /parenrightBigg put
+dup 80 /summationtext put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF5B8CAC6A7BEB5D02276E511FFAF2AE11910
+DE076F24311D94D07CACC323F360887F1EA11BDDA7927FF3325986FDB0ABDFC8
+8E4B40E7988921D551EC0867EBCA44C05657F0DC913E7B3004A5F3E1337B6987
+FEBC45F989C8DC6DC0AD577E903F05D0D54208A0AE7F28C734F130C133B48422
+BED48639A2B74E4C08F2E710E24A99F347E0F4394CE64EACB549576E89044E52
+EABE595BC964156D9D8C2BAB0F49664E951D7C1A3D1789C47F03C7051A63D5E8
+DF04FAAC47351E82CAE0794AA9692C6452688A74A7A6A7AD09B8A9783C235EC1
+EA2156261B8FB331827145DE315B6EC1B3D8B67B3323F761EAF4C223BB214C4C
+6B062D1B281F5041D068319F4911058376D8EFBA59884BA3318C5BC95684F281
+E0591BC0D1B2A4592A137FF301610019B8AC46AE6E48BC091E888E4487688350
+E9AD5074EE4848271CE4ACC38D8CBC8F3DB32813DDD5B341AF9A6601281ABA38
+4A978B98483A63FCC458D0E3BCE6FD830E7E09B0DB987A6B63B74638FC9F21A5
+8C68479E1A85225670D79CDDE5AC0B77F5A994CA700B5F0FF1F97FC63EFDE023
+8135F04A9D20C31998B12AE06676C362141AAAA395CDEF0A49E0141D335965F2
+FB4198499799CECCC8AA5D255264784CD30A3E8295888EFBC2060ADDD7BAC45A
+EEEECDFF7A47A88E69D84C9E572616C1AC69A34B5F0D0DE8EE4EDF9F4ADE0387
+680924D8D5B73EF04EAD7F45977CA8AD73D4DD45DE1966A3B8251C0386164C35
+5880DD2609C80E96D1AB861C9259748E98F6711D4E241A269ED51FF328344664
+3AF9F18DCE671611DB2F5D3EA77EE734D2BED623F973E6840B8DAD1E2C3C2666
+DD4DD1C1CC71EF3BE29E7C9EC47F20088C52CAEC511F532AA38EA262D7F21604
+53A8814BC9D3482F5488A9B7EF0E07CECB5D1765F7CD60783D511382F2076038
+EC078376A799AE7D7A65790775E52AE173C026C03FBB84439DA26AC9A9F86587
+82179141E89F8B1F13580C3D53CE8A6AD55129149E72AC871E1473958543975C
+6E9207F34DC1DBC269873A43F2D558D361A7FE23B5E20503499726EC5E5D2871
+2ECE403F04416E65391741B8C68483F93BAC92D26FF5EF49DAE60D468F81E03B
+CC41DF5200ABA9E94F165F535B09B495C45096445971C6B1F023E3916FD8C96E
+5D484D9CFD0B446D94C0A53B5EF8BB20D1721CFEDB3407DD6EA6C09F4F8EB886
+DD97EEF273E9C2D25BF4E56C8E6B3E047EA69C375C980AD7FCD06EB6F7A707B1
+BB18DD5F5F5846069FB1F99DF99AB77D94B2F820C162EF397DF57B472538CB6F
+182752C320F8C95A3D66B425D168FE953D2EDAD3266DB3C63CCC473068D4A7CC
+2203368C5577D006AE958E5E1C175091D33856E4C0121DAC7632E297D306B12C
+A395851BF91427E91781F72489154D81F2EBA26BBB9CC4AB22902B64A899B5B4
+91EC977AC91D557285F4CAA3402AD8374D63E85FD7E3A97B3ACAAC2544A5E457
+87D58EF5EA937F006D5FBC8858341065D471176E4D48DC99F9D748F3AF809D8C
+03717EECA2BEF2D9AD1F6BC052895337838AE56D73B997408A99A7E942D04D15
+689C519EB1BF6EE15BC28279091FF428A412E7883D19BA86F9E2153104728A2D
+1C0028788EA424CD688B780463696DC7094F44A8E56680EC9254DB12696D4D4E
+5EEFC50AC088C35B1D6A8E6E9BB8FA7ECE695B0D5444900A12E9EC534E322E1E
+D7455EE084477F0B875179C3114EBDB98E2F94C8C6D16E71C057612DF64DCC40
+4F152FAF5F8A258A465421362912D0B1CD03EE86125BE1B04F1BCADE0F48A5C3
+1465CAFD2E3805FE8D7273B8C531C20B7220EEE58694552062990231F694A0C9
+6FE5ADA173CB0B69A689847B96A064FF3FE4078FF1DE4553984FB926A37EA705
+AE71E27C1BC470A32C8FEF3EE4B2C43CC37CF12367B14AE661EDE6FFB9C20532
+01CDA9E19D9322D6D2A22EAA68A266AED711ABB7E06528E0D7A3D7922E56C29E
+55BF4200944565E8E302C0AB34F72BC429B8DF4741499E5B2C8BF473E85DF62E
+48F722769EC59D2BB1B5C23489B815A5859D12EBB1F2A72F3040EB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 52 /four put
+dup 54 /six put
+dup 55 /seven put
+dup 61 /equal put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3901F92CC2EC9BC842
+5EE578CF06846C7078E026DFCB18AD4D78023652F0165DE17C183E43752132BB
+19F361414774D5C13AD718B01F47E61745009D823C3996FB208C3A9D4B4F116E
+4D38E56725461BBA1FE17CDC27CD99AC7D748CF7750CA2C6E1EC5E4746AC85F5
+E8274DA59750A144AD5AEBE6C9A7CE843BD6837FE2A88078124AA1A94EFC1C50
+B811EAEB2679AD57294AB13E45AEEB8C6EA105696E341E4C14ECF573EEBB83E6
+F9DE39BD6CC376158231CA2A83D91F721ABD116A40698F26610853E7FD075472
+ED40CCE32031FCFAE2737B412807F7C9E6494D0B73B7AB13AFD20D5219A71562
+12A7B57DD9965B15AFB38BEDA28D35D73282D4F1F9A15C4403B7C69C7E80DF54
+C112D7813F7271A5474438A7CC380735F029CFDF4C0C30C3901A7E30F8B3B017
+B1A663CC9481C79B903806F30AF37522828FD5DE3EC220C719B63A90FB3CE72D
+AFC207F82CCD8250F4BA04D50D9B6D7AB78E87B456016CBC6273C129F6FBBF8B
+E0110ED803D94F55FCD6F5A81F5BDC9CFBBF7D2C5DE7842D72E7D6DB5E4CC7B1
+0FC6DCDCF41556C3BFE5E2EBEB423FB0BFCDFF7F0930304047C29F67368325C3
+BA8815E47A90C5F149FE37618E30A9ABE6FAF8644A1BA737BEABC99ECFAE98A3
+74E11C3C87971EA3AEFACE9E25179B67B1D19A71241E23F55D1FE4879967913F
+B679B98C6E9DCE63040F482A16253A09E74DC1A05FDB08C557D431D555FD688B
+44C00601B8B43A8C8E2063D24AF1D8EFFAB2CD91BAE023A7FBAE39A4CAA664EC
+AD0C0FAFB280B100C427881F8EBF4F8C03309D45F627F1241AB154E914F4BDD8
+DC81BC3D3B569637D3B28D1A6DCF92B17109177E18A3A9DEC32ED64719174F09
+F4945870BB984DF92073DCD619FD35C72E27AC107C62DE06BF7F27249958B6E6
+ADC6402CD366B2362BA3A2B867138B5DDC05566EB295A57D7249928E3AF1E318
+C1CA66E03D143AE09CB213C78B41FFD19422E09037BA93B53398BCBEF05CEFC1
+F10178357B0257D4FCA684100BB9F41720FEDFDD87C0DF34072035954E71D12E
+B50116BD6C7417C9D4F88D0A30BB0441D1DCD172361BE048B14BB44534C209EC
+3FEE42B7D20CAD2525313BD5009CDF8F4E62E21EEA094A24EE9DD135DD4D9DF1
+3E50027BE32B0B238C56FF8EA3D8BD01AE893A42D7420271228A6967FE708216
+D67FC7AEAE869DF6D4B2D240D426CF00A19A28295FC25D43E690A90ED3C4DE0E
+0138A6C80E4808490134D2D460FD752D51B6074064E05085527C2DF8D454D1EF
+119890298C63AC49AE079B447D41457DE8F5B5E5FA2776A4FD743860CC7F031F
+B0BE0C179D587D820EABABA2418D900D8DB0857ADAE3CFC66827EC5659588C8A
+2DE053EF8095246F68465BB4B15AD6E874146C4B531E5BB4BC1336BEFFF00C7E
+36707F9B9CC6D50BDF9B3B51BCD4D753A07306683AB726AB60196C3271091DF8
+D844BB3491CC5DAF09E0729F23ABA8C955BC6BCE41750A08931E1E0C1DE1F831
+EF7E62091008BCBAC673AEEB3E5BE063F291862154636CA1A6E2F56F005259B9
+DE447FEA11AB2FFF996EC9E96008D05D6ABFC0A6A7741CC21C720D97FF9190B8
+967849B5A90B57B6D0002574CDF5F57125C51516A1ECD47FEFD5DDBA01B228F7
+81ACE820AA6AA8726E345CDC5389EBC74CDE1E92F3556ADC03946AE4149C1DA0
+4E4431209ED0F3BB429CB8B7E4B45FF09F8CDFF144FFF8347448DB67CF236F73
+F18D913F88F7BF546A14756FB067C2038208E23A99AE10155981DAF13C262A50
+78D4E58A9A59BF71C69EDA8D560FF93AA99BAFD51EB50EE555BAA89DBA9680BD
+2839101D613FB26DB04A7C0648D72883AB4486362107A86B61AADC6D184EB0AC
+E5F195C6D5FD5F71D95558A62AA8767E5883690743BA86FA6D97912458C1967B
+F6A02F69C896401E85142D248E2C0B959CBF82732ACF63515DCE2A454C00ECAB
+5D7A74674A4AB84DC9E166FFBD46379AF9034F36D53EB398F2884FEF10D20512
+53E0939051501B59D199B288EF80418A650C215F7A329AAA92ACA64B87D4C8C8
+DD1DDC389F3BF0A295E67FFCE140E59E350B07A3EBC663B1EF5976C8F1FA3C15
+58C7C8DBD7900DB231BF0874082DAB39C0BD53FED49336F5EBB0AB67247B0359
+7CFA4D56D73AF2F9A0AEC27E570CE83C4DF2C2583C24445E9955E29B99899DC8
+EAF914F767A4AFD39FD61E3C40F8A37E2C9519C7ED15E0F922
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /Gamma put
+dup 9 /Psi put
+dup 10 /Omega put
+dup 13 /gamma put
+dup 32 /psi put
+dup 59 /comma put
+dup 73 /I put
+dup 97 /a put
+dup 127 /tie put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
+990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
+6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
+DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
+59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
+D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
+8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
+6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
+1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
+03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
+95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
+74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
+3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
+47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
+AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
+42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
+40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
+B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
+95601766758C197F327101A9C9BF396ED625E27A7791ADD341F284AE0094B0FA
+AF3771EC218AD799F17E51F1D165BAB43AC03DDC05E9960E8F55A678D087125A
+011E7463DB232C8E71A669156185B07C2F4AEE85C97621BB359EE50438911BE5
+F5E489524DD5BDDFD94DCC45CDD5CADF5804CF15027DFD5202CE70A4B325847B
+D93278A1C8701C3885F69918CB87CEBB1B03074C4F8B112742C1E276E51717D5
+1C1AE6EA74D8E5E88C0F3132E480887B8757B6955E646E245A8724D853053882
+F7A63D624A777C1FF06EF84908E4AD90BB4181E97942870D2B2083A6E96E5EEA
+96E8B7DDF401E0111DCCB062BD4248ACC44B91FB0BE28CA2E186AFE6EFE018C2
+54C8A55F7D1764558FBA7D02D316C7DC14BBD385D0FE932FF128320A787F1B59
+06336F751E1A1287BC7CA3E7836C1B13536E834484B56D68E6AA4A6D9557D7E7
+7B86906D9AE83708C4275C1DE5745843D3742CF9C1523214FE494EDB27991A04
+0CCE280C058B540DB07B57104F5065203EF22D5BF1E1FBB7CFB8A405F4B1EC0A
+B4D62C3272D58F29DF1A0E11BD00B40B91EE914EFFFA849D8761526CB5E6A8FE
+39D6C2E4BFC42D2299C0CEEC0917FEF69450595CF3963AAB28F3936B14814C84
+7ECBB3E02617BE47E46D09197280C2C3DE4E5581D4784079DDF75F3EFAB6C7E1
+E2581C87A7AAE944D403035CD72D6F9ABB170420C1BEA525F96E6C32F14C05FB
+239B90E8B293431985E94890E5EC33530D3C28F0552B1BC50DD6A323F5AF23B6
+0B642BF66D7B9724E40A88763755C023FEB0D86DF4B2889FD9D9624CD1FC25A5
+6542815B11A0425C3DB850CF3DF10A01F4043506ED8168ED041008361AEF5F7B
+FF64C14F876518BB1966739C2EBA7D13DBACDB62097BA9559233FEAB7F24CE43
+04BA24D8C2811BE126C10D95E865854E909AF53DD14288BED1BCE1474F14355C
+DDC981D19F334F6022F526BAAB962C21280F2DD576E11C6384C827021A7BC9EC
+031EDBB67FF653DDA96D971D3ABD3DAC46658D4E2E82784EE1288845ED640213
+9FC049A189FF16D4B32388D8D8B34308406A48B3512560DBECB7EBFE302BAE32
+B662ECB3688FA84330893FF7E388C728A0D1D4ED4200EE738242F69EA3C05C4C
+FFFEAD7982C9D38A073026BEF2FF507963B324DB20BDC3EE0CB8970C4865BADD
+FFD548C3B94CF328D0CAA5B09EED935060620AE1EB5F992A20C9C28368D597FB
+E87D90431DD8B15F501F0F5728568C4B56AF1EB8488DD00F51458EC9BF913F50
+9B764A8806B7E355FBAD1371170D88F6E16CAF36DE3D60FA0D6EE2A11B99498E
+75EACB5D36CD5B661BFDD4566540B5DE776BB533751DB730F22FEEE7952F9994
+384B9467EF83E8F102CDC890DEC2D3FF2CDBF1321F8C95BA20D04032F4597DE3
+5B32A143345838A45E59D1BBF86EF551227C2FEAEA6BBB1E7274AB8501C7876E
+C469FDAA6D3276CA2AE24B5FCCBD20F035DA8FDF58494291176427DD7FD3963E
+7523657694EFF0753E851633296789C206A13A4025EB4CB824B440124985F55E
+1E2D1B05BB91B9FEBD9F817611F6C308A20CE9195985A03811E49FD546EC4B61
+E88333C71137EBD177F737DCBDC8B1CB794D3425C0254ADB1FB20E6FBF9B2389
+DF4DCD721EE927CCD7A50DE9ABA53D5BA0212AB4ADAEA63B32D7F34756D2916E
+9393B97883C3A1D47E33C9267CCC878FF4D6F92F868FA0AD2C91A58F504D1355
+03B32C1A06E0AB06958E0756F7269608C355F3B413F0020261A289AC0B60DD7F
+A48C214F4D6775CD1A775C16F570E8A94FC39DF8A6067DF699450EE6FAB0838B
+65FDDB44856B7F5EF99579477AE35AB0962D5AF70E39A87510D634DFEC3E2B6C
+8305DAD403333791562F81283355B9FE2CF797EF92AD7112B3A6B52F6F4DBE94
+0AE39F242579B696D2F34E48E5F3E3338D46D03FE9FC5326FF68C72464407D74
+CFF0577EC2A259B26CD2D949603883F58482E29294A01044ACE5368D50B1BEF8
+6D2A57965BF1D721569383AD4783C0CD165733B17330BEAE252E48FE2E197A2C
+75B0385136797B7CE340A1F457A67B39C0E574B4BB32E159E908EA777711516E
+2A7AD9A5DFF904345898FCBDC062DDD1F57633D21F6D03546123F3E6146BF70A
+FA65D36D4154767C079E785FF681D14E3A9437671A33B84FAC7E5D2947B2BBE9
+52EA37E91C0D16354BA53A5360437877D2C5E8867214D20675FA2543CA81529C
+BDD2F516B9DE57C21D42A188514CEF691736A8C0CB1616A12436B301F31639B9
+96CA80870EB2AAD144FC32516F15FF42BC82570725B9C6033276E86495C8AF26
+F3BC53104B11F913A43EB37EB8CE3B2339069FFD6E4877638854D2E606EBC49E
+E350B5952B087AD2F74F5C6C0E6CA96A1861CF8A3B53919664C74A79B0D02721
+8059596698F8A958AA268605192952D350F3ACABE5BB75DD2EB48E3BFEDD42E3
+23CED2922651115F861378AAE277481B0BA61B163F0CAC42166880CD795F2A6D
+8C9267DA8454BB256D317166E0101F2E5FBE515670616BC8D4707E787EF24E03
+71B42BB08983CFE3EB92E9D5A84EF72604EA7890C0423D70D0B10B2609C65952
+8C02600DA310F9E0A3E7D59BD249FB704321708734C467140A9926FBFEE380DF
+4D7BAC80ACD62B824D236167CDD809EB757A060E3826B685B61F4CFDBBB1733E
+B99A5EC5E405A7ACD0BE1D8F3EE3352A4461665F8322FCA03C52CD6BF92A6310
+232273C994333C676D6B49E484F0481E129F2A32233D06139FABE693DA9F7BAE
+33C6E9E6C7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+TeXDict begin 40258431 52099146 1000 7200 7200 (testflow.dvi)
+@start /Fa 196[228 59[{}1 498.132 /CMMI5 rf /Fb 194[540
+540 678 7[464 455 505 505 43[540 540 540 540 1[{}11 498.132
+/LASY5 rf /Fc 139[138 3[249 53[138 4[249 53[{
+TeXBase1Encoding ReEncodeFont}4 498.132 /Times-Roman
+rf /Fd 196[227 59[{}1 597.758 /CMMI6 rf /Fe 194[576 576
+731 7[518 502 537 537 43[576 576 576 576 1[{}11 597.758
+/LASY6 rf /Ff 139[166 3[299 53[166 3[299 54[{
+TeXBase1Encoding ReEncodeFont}4 597.758 /Times-Roman
+rf /Fg 194[623 623 794 7[583 560 580 580 43[623 623 623
+623 1[{}11 697.385 /LASY7 rf /Fh 196[235 59[{}1 797.011
+/CMMI8 rf /Fi 194[659 659 847 7[637 607 612 612 43[659
+659 659 659 1[{}11 797.011 /LASY8 rf /Fj 196[256 59[{}1
+896.638 /CMMI9 rf /Fk 194[717 717 922 7[713 676 666 666
+43[717 717 717 717 1[{}11 896.638 /LASY9 rf /Fl 139[249
+3[448 53[249 448 57[{TeXBase1Encoding ReEncodeFont}4
+896.638 /Times-Roman rf /Fm 194[775 775 996 7[789 744
+720 720 43[775 775 775 775 1[{}11 996.264 /LASY10 rf
+/Fn 196[318 59[{}1 996.264 /CMMIB10 rf /Fo 194[891 891
+1146 7[805 778 827 827 43[891 891 891 891 1[{}11 996.264
+/LASYB10 rf /Fp 141[299 78[3587 3587 3587 3587 5[2790
+2790 2790 24[{}8 996.264 /LCIRCLEW10 rf /Fq 192[996 8[996
+8[996 17[996 27[{}4 996.264 /LINEW10 rf /Fr 192[996 8[996
+8[996 17[996 27[{}4 996.264 /LINE10 rf /Fs 141[299 78[3587
+3587 3587 3587 4[2790 2790 1[2790 24[{}8 996.264 /LCIRCLE10
+rf /Ft 152[423 423 102[{}2 797.011 /CMSY8 rf /Fu 139[265
+4[399 9[354 22[575 19[265 58[{TeXBase1Encoding ReEncodeFont}5
+797.011 /Times-Bold rf /Fv 107[354 354 25[399 2[399 399
+222 310 265 399 399 399 399 620 222 2[222 399 399 265
+354 399 354 399 354 12[487 3[443 21[222 399 399 399 3[399
+399 399 399 1[199 265 199 44[{TeXBase1Encoding ReEncodeFont}36
+797.011 /Times-Roman rf /Fw 133[670 122[{TeXBase1Encoding ReEncodeFont}
+1 1721.54 /Times-Italic rf /Fx 255[775{}1 996.264 /CMSY10
+rf /Fy 255[623{}1 697.385 /CMSY7 rf /Fz 150[282 7[432
+37[237 59[{}3 697.385 /CMMI7 rf /FA 194[612 5[397 3[397
+397 397 397 4[612 43[{}7 697.385 /CMR7 rf /FB 175[1052
+46[789 789 10[526 526 20[{}5 996.264 /CMEX10 rf /FC 194[775
+5[498 498 1[498 1[498 498 498 48[{}7 996.264 /CMR10 rf
+/FD 128[277 29[527 23[438 13[277 26[649 18[516 2[770
+610 8[613{}9 996.264 /CMMI10 rf /FE 138[554 332 388 442
+1[554 498 554 830 277 2[277 554 498 1[442 554 442 554
+498 12[665 554 719 1[609 775 719 940 665 775 4[609 1[719
+719 22[249 44[{TeXBase1Encoding ReEncodeFont}30 996.264
+/Times-Bold rf /FF 139[332 442 3[554 609 1[332 2[332
+609 3[609 1[609 498 12[665 3[609 32[295 249 46[{
+TeXBase1Encoding ReEncodeFont}14 996.264 /Palatino-Bold
+rf /FG 136[598 2[598 598 598 1[598 598 2[598 5[598 598
+598 598 1[598 50[598 46[{TeXBase1Encoding ReEncodeFont}13
+996.264 /Courier rf /FH 104[996 2[442 442 25[498 498
+719 498 498 277 388 332 1[498 498 498 775 277 498 1[277
+498 498 332 442 498 442 498 442 8[719 3[609 554 665 4[886
+609 2[332 1[719 554 609 719 665 8[277 4[498 498 1[498
+498 498 277 249 1[249 2[332 332 36[554 554 2[{
+TeXBase1Encoding ReEncodeFont}51 996.264 /Times-Roman
+rf /FI 171[797 665 2[730 1[863 1129 797 3[930 1[730 1[863
+2[863 65[{TeXBase1Encoding ReEncodeFont}10 1195.52 /Times-Bold
+rf /FJ 166[691 691 2[691 638 532 691 1[584 744 691 903
+638 2[372 744 744 1[638 691 691 1[691 65[{TeXBase1Encoding ReEncodeFont}
+18 956.413 /Times-Bold rf /FK 135[478 478 2[478 478 478
+1[478 478 1[478 478 2[478 478 478 478 478 1[478 1[478
+4[478 11[478 478 7[478 12[478 10[478 478 46[{
+TeXBase1Encoding ReEncodeFont}23 797.011 /Courier rf
+/FL 136[863 1[598 332 465 398 1[598 598 598 930 332 2[332
+598 598 398 531 598 2[531 10[863 2[665 1[863 10[665 2[797
+797 863 6[332 5[598 2[598 598 1[299 42[665 3[{
+TeXBase1Encoding ReEncodeFont}30 1195.52 /Times-Roman
+rf /FM 190[1492 65[{TeXBase1Encoding ReEncodeFont}1 2066.25
+/Times-Roman rf /FN 139[689 964 825 2[1239 1239 4[689
+1[1239 825 1101 12[1790 3[1514 1378 2[1378 3[1514 5[1378
+1514 1790 2[1790 17[689 47[{TeXBase1Encoding ReEncodeFont}19
+2478.71 /Times-Roman rf /FO 139[194 3[349 46[504 6[194
+349 349 349 349 349 349 349 349 349 349 48[{
+TeXBase1Encoding ReEncodeFont}14 697.385 /Times-Roman
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 7200dpi
+TeXDict begin
+%%PaperSize: Letter
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop -40 0 46880 40 v -40 64800 40 64800
+v 46800 64800 V -40 64840 46880 40 v -7200 29180 7200
+40 v -1437 29727 40 1134 v -2855 29727 V -4272 29727
+V -5689 29727 V -7107 29727 V -303 29443 40 567 v -587
+29443 V -870 29443 V -1154 29443 V -1437 29443 V -1721
+29443 V -2004 29443 V -2288 29443 V -2571 29443 V -2855
+29443 V -3138 29443 V -3421 29443 V -3705 29443 V -3988
+29443 V -4272 29443 V -4555 29443 V -4839 29443 V -5122
+29443 V -5406 29443 V -5689 29443 V -5973 29443 V -6256
+29443 V -6540 29443 V -6823 29443 V -7107 29443 V -1592
+28542 a FO(5)-1940 b(10)-2116 b(15)h(20)p -7200 35660
+7200 40 v -740 36360 40 1440 v -1460 36360 V -2180 36360
+V -2900 36360 V -3620 36360 V -4340 36360 V -5060 36360
+V -5780 36360 V -6500 36360 V -7220 36360 V -380 36000
+40 721 v -1100 36000 V -1820 36000 V -2540 36000 V -3260
+36000 V -3980 36000 V -4700 36000 V -5420 36000 V -6140
+36000 V -6860 36000 V -894 34798 a(1)-1069 b(2)-2334
+34793 y(3)-3055 34798 y(4)-3775 34793 y(5)g(6)-5215 34790
+y(7)-5935 34793 y(8)-6655 34790 y(9)p 46800 29180 7200
+40 v 47064 29443 40 567 v 47347 29443 V 47630 29443 V
+47914 29443 V 48197 29443 V 48481 29443 V 48764 29443
+V 49048 29443 V 49331 29443 V 49615 29443 V 49898 29443
+V 50182 29443 V 50465 29443 V 50749 29443 V 51032 29443
+V 51315 29443 V 51599 29443 V 51882 29443 V 52166 29443
+V 52449 29443 V 52733 29443 V 53016 29443 V 53300 29443
+V 53583 29443 V 53867 29443 V 48197 29727 40 1134 v 49615
+29727 V 51032 29727 V 52449 29727 V 53867 29727 V 48043
+28542 a(5)894 b(10)719 b(15)h(20)p 46800 35660 7200 40
+v 47500 36360 40 1440 v 48220 36360 V 48940 36360 V 49660
+36360 V 50380 36360 V 51100 36360 V 51820 36360 V 52540
+36360 V 53260 36360 V 53981 36360 V 47140 36000 40 721
+v 47860 36000 V 48580 36000 V 49300 36000 V 50020 36000
+V 50740 36000 V 51460 36000 V 52180 36000 V 52900 36000
+V 53620 36000 V 47346 34798 a(1)371 b(2)48786 34793 y(3)49506
+34798 y(4)50226 34793 y(5)g(6)51666 34790 y(7)52386 34793
+y(8)53106 34790 y(9)p 21040 0 40 7200 v 20493 -1397 1134
+40 v 20493 -2815 V 20493 -4232 V 20493 -5649 V 20493
+-7067 V 20776 -264 567 40 v 20776 -547 V 20776 -830 V
+20776 -1114 V 20776 -1397 V 20776 -1681 V 20776 -1964
+V 20776 -2248 V 20776 -2531 V 20776 -2815 V 20776 -3098
+V 20776 -3382 V 20776 -3665 V 20776 -3949 V 20776 -4232
+V 20776 -4515 V 20776 -4799 V 20776 -5082 V 20776 -5366
+V 20776 -5649 V 20776 -5933 V 20776 -6216 V 20776 -6500
+V 20776 -6783 V 20776 -7067 V 19786 -1184 a(5)19612 -2602
+y(10)19612 -4019 y(15)19612 -5436 y(20)p 25720 0 40 7200
+v 25020 -700 1440 40 v 25020 -1420 V 25020 -2140 V 25020
+-2860 V 25020 -3580 V 25020 -4300 V 25020 -5020 V 25020
+-5740 V 25020 -6460 V 25020 -7181 V 25380 -340 721 40
+v 25380 -1060 V 25380 -1780 V 25380 -2500 V 25380 -3220
+V 25380 -3940 V 25380 -4660 V 25380 -5380 V 25380 -6100
+V 25380 -6820 V 24486 -482 a(1)24486 -1202 y(2)24486
+-1927 y(3)24486 -2642 y(4)24486 -3367 y(5)24486 -4087
+y(6)24486 -4810 y(7)24486 -5527 y(8)24486 -6250 y(9)p
+21040 72000 40 7200 v 20493 66237 1134 40 v 20493 67655
+V 20493 69072 V 20493 70489 V 20493 71907 V 20776 65103
+567 40 v 20776 65387 V 20776 65670 V 20776 65954 V 20776
+66237 V 20776 66521 V 20776 66804 V 20776 67088 V 20776
+67371 V 20776 67655 V 20776 67938 V 20776 68221 V 20776
+68505 V 20776 68788 V 20776 69072 V 20776 69355 V 20776
+69639 V 20776 69922 V 20776 70206 V 20776 70489 V 20776
+70773 V 20776 71056 V 20776 71340 V 20776 71623 V 20776
+71907 V 19786 66450 a(5)19612 67868 y(10)19612 69285
+y(15)19612 70702 y(20)p 25720 72000 40 7200 v 25020 65540
+1440 40 v 25020 66260 V 25020 66980 V 25020 67700 V 25020
+68420 V 25020 69140 V 25020 69860 V 25020 70580 V 25020
+71300 V 25020 72020 V 25380 65180 721 40 v 25380 65900
+V 25380 66620 V 25380 67340 V 25380 68060 V 25380 68780
+V 25380 69500 V 25380 70220 V 25380 70940 V 25380 71660
+V 24486 65758 a(1)24486 66478 y(2)24486 67193 y(3)24486
+67918 y(4)24486 68633 y(5)24486 69353 y(6)24486 70071
+y(7)24486 70793 y(8)24486 71511 y(9)6555 2986 y FN(A)619
+b(T)-173 b(est)619 b(for)i(L)17810 2710 y FM(A)18930
+2986 y FN(T)20031 3543 y(E)21236 2986 y(X)f(PS/PDF)g(Printing)15521
+5355 y FL(V)-133 b(ersion)299 b(1.1)1738 b(Build)300
+b(Code:)370 b(0004)9927 7447 y(See)298 b(the)h(test\003o)-30
+b(w)299 b(home)f(page)g(for)h(the)g(latest)g(ne)-30 b(ws)299
+b(and)f(F)-88 b(A)-66 b(Q:)13597 8643 y FK
+(http://www.michaelshell.org/tex/testflow/)21594 11631
+y FI(N)60 b FJ(O)22 b(T)60 b(E)g(S)4500 13425 y FH(Document)250
+b(paper)g(type)g(selected)g(under)f(L)19551 13225 y FO(A)19905
+13425 y FH(T)20348 13649 y(E)20832 13425 y(X:)309 b FG(letterpaper)4500
+14620 y FH(Depends)250 b(only)f(on)h(the)f(base)h(article.cls)f(\227)g
+(no)h(other)f(e)-15 b(xternal)250 b(packages)h(are)e(loaded.)4500
+15816 y(The)g(main)h(te)-15 b(xt)249 b(font)g(is)g(T)-35
+b(imes)249 b(Roman,)g(the)h(math)f(font)g(is)g(Computer)g(Modern.)4500
+17011 y(Imperial)g(\(0.1in\))g(and)h(metric)f(\(mm\))g(rulers)g(are)g
+(pro)-15 b(vided)250 b(to)f(measure)h(centering.)4500
+18207 y(The)f(frame)h(on)f(this)g(page)h(should)f(be)g(centered)i(on)e
+(the)g(paper)h(and)g(1in)f(\(25.4mm\))g(from)g(the)h(edges.)4500
+19402 y(T)-80 b(o)249 b(maintain)h(accurate)h(dimensions,)e(do)g(not)g
+(scale)h(page)g(when)g(printing.)4500 20598 y(\(i.e.,)f(deselect)h(an)
+-15 b(y)250 b(\223\002t)f(to)g(page\224)i(or)e(\223shrink/e)-15
+b(xpand)250 b(page\224)g(options.\))4500 21793 y(F)-15
+b(or)249 b(complete)h(usage)g(information,)f(read)h(the)f
+FG(testflow)p 26013 21793 299 40 v 357 w(doc.pdf)e FH(\002le.)14820
+24184 y FI(P)-19 b FJ(A)60 b(L)g(L)g(A)g(D)g(I)g(O)352
+b FI(F)60 b FJ(O)g(N)g(T)356 b FI(H)60 b FJ(I)g(N)g(T)g(I)g(N)g(G)353
+b FI(T)60 b FJ(E)g(S)g(T)15935 25978 y FF(This)248 b(is)h(in)g(bold)f
+(Palatino/Palladio.)19038 28369 y FI(L)60 b FJ(I)g(G)g(A)-31
+b(T)60 b(U)g(R)g(E)352 b FI(T)60 b FJ(E)g(S)g(T)4500
+30162 y FE(Ligatur)-18 b(es)2291 b FH(\227)748 b(The)249
+b(of)-25 b(\002ce)249 b(w)-10 b(as)250 b(af)-25 b(fected)250
+b(by)f(the)h(\002)-25 b(v)-15 b(e)249 b(\003a)-15 b(wed)250
+b(muf)-25 b(\003ers.)4500 31357 y FE(No)249 b(Ligatur)-18
+b(es)825 b FH(\227)748 b(The)249 b(office)g(w)-10 b(as)249
+b(affected)h(by)g(the)f(fi)-25 b(v)-15 b(e)250 b(fla)-15
+b(wed)250 b(mufflers.)19891 33748 y FI(M)60 b FJ(A)-31
+b(T)60 b(H)355 b FI(T)60 b FJ(E)g(S)g(T)g(S)15953 35542
+y FE(Lar)-10 b(ge)249 b(Delimiter)h(and)f(Operator)h(T)-92
+b(est)15731 38584 y FD(I)355 b FC(=)17575 37179 y FB(\024)18599
+37976 y FC(1)997 b(0)18599 39172 y(0)g(1)21090 37179
+y FB(\025)22778 38584 y FH(and)25213 36880 y FB( )26614
+37637 y FA(2)26287 37837 y FB(P)26168 39460 y Fz(i)p
+FA(=0)27624 38584 y FC(2)28122 38222 y Fz(i)28731 38584
+y FC(=)276 b(7)30280 36880 y FB(!)19986 41910 y FE(Minus)249
+b(Sign)g(T)-92 b(est)14322 44102 y FH(If)248 b FD(a)277
+b FC(=)f(4)p FH(,)249 b(then:)310 b FC(2)20885 43741
+y Fy(\000)p Fz(a)p FA(+7)23220 44102 y Fx(\000)221 b
+FC(2)24714 43741 y Fz(a)p Fy(\000)p FA(3)26493 44102
+y FC(=)276 b(2)28042 43741 y FA(3)28711 44102 y Fx(\000)221
+b FC(2)30205 43741 y FA(1)30929 44102 y FC(=)276 b(6)11007
+46413 y FE(Pr)-18 b(oblem)249 b(Character)-92 b(,)251
+b(T)-18 b(imes)248 b(Roman)i(and)f(F)-25 b(ont)249 b(K)-25
+b(er)-15 b(ning)249 b(T)-92 b(ests)15924 48207 y FH(Math)249
+b(italic)g(glyphs:)309 b FD(\000)28 b(;)415 b(\011)54
+b(;)415 b(\012)50 b(;)414 b(\015)55 b(;)415 b( )36 b(;)415
+b(\177)8130 49701 y FH(Lar)-18 b(ge)249 b(T)-35 b(imes)249
+b(Roman)g(italic:)310 b Fw(z)1992 b FH(GS)249 b(k)-10
+b(erning)250 b(test:)308 b Fv(The)199 b(\223Problematic\224)e(little)g
+(quotes.)4500 51196 y Fu(Note:)248 b Fv(The)198 b(math)h(italic)e
+(glyphs)g(are)i(in)f(the)h(control)e(character)h(positions)e(0,)j(9,)g
+(10,)g(13,)f(32)h(and)f(127.)4500 52391 y(i.e.,)h FK(\\Gamma)p
+Fv(,)i FK(\\Psi)p Fv(,)g FK(\\Omega)p Fv(,)f FK(\\gamma)p
+Fv(,)h FK(\\psi)p Fv(,)f(and)e(the)h FK(\\t)p Ft(f)p
+FK(xx)p Ft(g)i Fv(tie-after)d(accent,)g(respecti)-20
+b(v)-12 b(ely)-52 b(.)14566 54782 y FI(P)60 b FJ(I)g(C)g(T)g(U)g(R)g(E)
+352 b(A)60 b(N)g(D)355 b FI(L)60 b FJ(A)g(S)g(Y)355 b
+FI(F)60 b FJ(O)g(N)g(T)g(S)354 b FI(T)60 b FJ(E)g(S)g(T)p
+6372 56514 40 40 v 6398 56510 V 6423 56505 V 6449 56501
+V 6474 56496 V 6500 56492 V 6525 56487 V 6551 56483 V
+6576 56478 V 6602 56474 V 6627 56470 V 6653 56465 V 6678
+56461 V 6704 56457 V 6729 56452 V 6755 56448 V 6780 56444
+V 6806 56440 V 6831 56435 V 6857 56431 V 6882 56427 V
+6908 56423 V 6933 56419 V 6959 56415 V 6984 56411 V 7010
+56406 V 7036 56402 V 7061 56398 V 7087 56394 V 7112 56390
+V 7138 56386 V 7163 56382 V 7189 56378 V 7214 56374 V
+7240 56370 V 7265 56367 V 7291 56363 V 7316 56359 V 7342
+56355 V 7367 56351 V 7393 56347 V 7418 56344 V 7444 56340
+V 7469 56336 V 7495 56332 V 7520 56328 V 7546 56325 V
+7571 56321 V 7597 56317 V 7622 56314 V 7648 56310 V 7673
+56306 V 7699 56303 V 7724 56299 V 7750 56296 V 7775 56292
+V 7801 56289 V 7826 56285 V 7852 56282 V 7877 56278 V
+7903 56275 V 7928 56271 V 7954 56268 V 7979 56264 V 8005
+56261 V 8030 56258 V 8056 56254 V 8081 56251 V 8107 56248
+V 8133 56244 V 8158 56241 V 8184 56238 V 8209 56235 V
+8235 56231 V 8260 56228 V 8286 56225 V 8311 56222 V 8337
+56219 V 8362 56216 V 8388 56212 V 8413 56209 V 8439 56206
+V 8464 56203 V 8490 56200 V 8515 56197 V 8541 56194 V
+8566 56191 V 8592 56188 V 8617 56185 V 8643 56182 V 8668
+56180 V 8694 56177 V 8719 56174 V 8745 56171 V 8770 56168
+V 8796 56165 V 8821 56162 V 8847 56160 V 8872 56157 V
+8898 56154 V 8923 56151 V 8949 56149 V 8974 56146 V 9000
+56143 V 9025 56141 V 9051 56138 V 9076 56135 V 9102 56133
+V 9127 56130 V 9153 56128 V 9178 56125 V 9204 56123 V
+9230 56120 V 9255 56118 V 9281 56115 V 9306 56113 V 9332
+56110 V 9357 56108 V 9383 56105 V 9408 56103 V 9434 56101
+V 9459 56098 V 9485 56096 V 9510 56094 V 9536 56091 V
+9561 56089 V 9587 56087 V 9612 56085 V 9638 56082 V 9663
+56080 V 9689 56078 V 9714 56076 V 9740 56074 V 9765 56071
+V 9791 56069 V 9816 56067 V 9842 56065 V 9867 56063 V
+9893 56061 V 9918 56059 V 9944 56057 V 9969 56055 V 9995
+56053 V 10020 56051 V 10046 56049 V 10071 56047 V 10097
+56045 V 10122 56044 V 10148 56042 V 10173 56040 V 10199
+56038 V 10224 56036 V 10250 56034 V 10275 56033 V 10301
+56031 V 10327 56029 V 10352 56028 V 10378 56026 V 10403
+56024 V 10429 56023 V 10454 56021 V 10480 56019 V 10505
+56017 V 10531 56016 V 10556 56014 V 10582 56013 V 10607
+56011 V 10633 56010 V 10658 56008 V 10684 56007 V 10709
+56005 V 10735 56004 V 10760 56002 V 10786 56001 V 10811
+56000 V 10837 55998 V 10862 55997 V 10888 55996 V 10913
+55994 V 10939 55993 V 10964 55992 V 10990 55991 V 11015
+55989 V 11041 55988 V 11066 55987 V 11092 55986 V 11117
+55985 V 11143 55983 V 11168 55982 V 11194 55981 V 11219
+55980 V 11245 55979 V 11270 55978 V 11296 55977 V 11321
+55976 V 11347 55975 V 11372 55974 V 11398 55973 V 11424
+55972 V 11449 55971 V 11475 55970 V 11500 55969 V 11526
+55968 V 11551 55967 V 11577 55966 V 11602 55966 V 11628
+55965 V 11653 55964 V 11679 55963 V 11704 55963 V 11730
+55962 V 11755 55961 V 11781 55960 V 11806 55960 V 11832
+55959 V 11857 55959 V 11883 55958 V 11908 55957 V 11934
+55957 V 11959 55956 V 11985 55955 V 12010 55955 V 12036
+55954 V 12061 55954 V 12087 55953 V 12112 55953 V 12138
+55952 V 12163 55952 V 12189 55952 V 12214 55951 V 12240
+55951 V 12265 55951 V 12291 55950 V 12316 55950 V 12342
+55950 V 12367 55949 V 12393 55949 V 12418 55949 V 12444
+55949 V 12469 55948 V 12495 55948 V 12521 55948 V 12546
+55948 V 12572 55948 V 12597 55948 V 12623 55948 V 12648
+55948 V 12674 55948 V 12699 55948 V 12725 55947 V 12750
+55947 V 12776 55947 V 12801 55947 V 12827 55947 V 12852
+55947 V 12878 55947 V 12903 55948 V 12929 55948 V 12954
+55948 V 12980 55948 V 13005 55948 V 13031 55948 V 13056
+55949 V 13082 55949 V 13107 55949 V 13133 55949 V 13158
+55950 V 13184 55950 V 13209 55950 V 13235 55951 V 13260
+55951 V 13286 55951 V 13311 55952 V 13337 55952 V 13362
+55953 V 13388 55953 V 13413 55954 V 13439 55954 V 13464
+55954 V 13490 55955 V 13515 55955 V 13541 55956 V 13566
+55956 V 13592 55957 V 13618 55958 V 13643 55958 V 13669
+55959 V 13694 55960 V 13720 55960 V 13745 55961 V 13771
+55962 V 13796 55963 V 13822 55963 V 13847 55964 V 13873
+55965 V 13898 55966 V 13924 55967 V 13949 55967 V 13975
+55968 V 14000 55969 V 14026 55970 V 14051 55971 V 14077
+55972 V 14102 55973 V 14128 55974 V 14153 55975 V 14179
+55976 V 14204 55977 V 14230 55978 V 14255 55979 V 14281
+55980 V 14306 55981 V 14332 55982 V 14357 55983 V 14383
+55984 V 14408 55986 V 14434 55987 V 14459 55988 V 14485
+55989 V 14510 55990 V 14536 55992 V 14561 55993 V 14587
+55994 V 14612 55996 V 14638 55997 V 14663 55998 V 14689
+56000 V 14715 56001 V 14740 56003 V 14766 56004 V 14791
+56005 V 14817 56007 V 14842 56008 V 14868 56010 V 14893
+56012 V 14919 56013 V 14944 56015 V 14970 56016 V 14995
+56017 V 15021 56019 V 15046 56021 V 15072 56022 V 15097
+56024 V 15123 56026 V 15148 56027 V 15174 56029 V 15199
+56031 V 15225 56033 V 15250 56034 V 15276 56036 V 15301
+56038 V 15327 56040 V 15352 56042 V 15378 56044 V 15403
+56045 V 15429 56047 V 15454 56049 V 15480 56051 V 15505
+56053 V 15531 56055 V 15556 56057 V 15582 56059 V 15607
+56061 V 15633 56063 V 15658 56065 V 15684 56067 V 15709
+56070 V 15735 56071 V 15760 56073 V 15786 56076 V 15812
+56078 V 15837 56080 V 15863 56082 V 15888 56084 V 15914
+56087 V 15939 56089 V 15965 56091 V 15990 56094 V 16016
+56096 V 16041 56098 V 16067 56101 V 16092 56103 V 16118
+56105 V 16143 56108 V 16169 56110 V 16194 56113 V 16220
+56115 V 16245 56118 V 16271 56120 V 16296 56123 V 16322
+56125 V 16347 56128 V 16373 56130 V 16398 56133 V 16424
+56136 V 16449 56138 V 16475 56140 V 16500 56143 V 16526
+56146 V 16551 56148 V 16577 56151 V 16602 56154 V 16628
+56157 V 16653 56159 V 16679 56162 V 16704 56165 V 16730
+56168 V 16755 56171 V 16781 56174 V 16806 56177 V 16832
+56179 V 16857 56182 V 16883 56185 V 16909 56188 V 16934
+56191 V 16960 56194 V 16985 56197 V 17011 56200 V 17036
+56203 V 17062 56207 V 17087 56210 V 17113 56213 V 17138
+56216 V 17164 56219 V 17189 56222 V 17215 56225 V 17240
+56228 V 17266 56231 V 17291 56234 V 17317 56238 V 17342
+56241 V 17368 56244 V 17393 56248 V 17419 56251 V 17444
+56254 V 17470 56258 V 17495 56261 V 17521 56264 V 17546
+56268 V 17572 56271 V 17597 56275 V 17623 56278 V 17648
+56282 V 17674 56285 V 17699 56289 V 17725 56292 V 17750
+56296 V 17776 56299 V 17801 56303 V 17827 56307 V 17852
+56310 V 17878 56314 V 17903 56318 V 17929 56321 V 17954
+56325 V 17980 56328 V 18006 56332 V 18031 56336 V 18057
+56339 V 18082 56343 V 18108 56347 V 18133 56351 V 18159
+56355 V 18184 56359 V 18210 56363 V 18235 56366 V 18261
+56370 V 18286 56374 V 18312 56378 V 18337 56382 V 18363
+56386 V 18388 56390 V 18414 56394 V 18439 56398 V 18465
+56402 V 18490 56407 V 18516 56411 V 18541 56415 V 18567
+56419 V 18592 56423 V 18618 56427 V 18643 56432 V 18669
+56436 V 18694 56440 V 18720 56444 V 18745 56448 V 18771
+56452 V 18796 56456 V 18822 56461 V 18847 56465 V 18873
+56469 V 18898 56474 V 18924 56478 V 18949 56483 V 18975
+56487 V 19000 56492 V 19026 56496 V 19051 56501 V 19077
+56505 V 19103 56510 V 19128 56514 V 7790 56798 a Fs(\033)p
+7790 58195 40 23 v 9204 56798 23 40 v 7131 w(\030)p 17711
+58195 40 23 v 16313 56798 23 40 v 7081 56514 a(\033)p
+7081 57912 40 23 v 8548 w(\030)p 18419 57912 V 8496 56514
+8550 40 v 5522 55947 a(\033)p 5522 60769 40 3447 v 5522
+62183 a(\032)p 6937 62183 23 40 v 6937 55947 V 10644
+59045 a(r)8831 60859 y("!)8831 57272 y(#)o( )p 10624
+59045 40 1701 v 10644 58341 a Fr(6)p 10644 59065 1701
+40 v 11349 59045 a(-)p 10624 60746 40 1701 v 10644 60746
+a(?)p 8943 59065 1701 40 v 8943 59045 a(\033)p 6352 61636
+80 80 v 6392 61643 V 6432 61650 V 6472 61657 V 6512 61664
+V 6552 61671 V 6591 61678 V 6631 61685 V 6671 61692 V
+6711 61698 V 6751 61705 V 6791 61712 V 6831 61718 V 6870
+61725 V 6910 61731 V 6950 61738 V 6990 61744 V 7030 61750
+V 7070 61757 V 7110 61763 V 7150 61769 V 7189 61775 V
+7229 61782 V 7269 61788 V 7309 61794 V 7349 61800 V 7389
+61806 V 7429 61812 V 7468 61817 V 7508 61823 V 7548 61829
+V 7588 61835 V 7628 61840 V 7668 61846 V 7708 61852 V
+7747 61857 V 7787 61863 V 7827 61868 V 7867 61874 V 7907
+61879 V 7947 61884 V 7987 61890 V 8026 61895 V 8066 61900
+V 8106 61905 V 8146 61910 V 8186 61915 V 8226 61921 V
+8266 61926 V 8306 61930 V 8345 61935 V 8385 61940 V 8425
+61945 V 8465 61950 V 8505 61955 V 8545 61959 V 8585 61964
+V 8624 61968 V 8664 61973 V 8704 61977 V 8744 61982 V
+8784 61986 V 8824 61991 V 8864 61995 V 8903 61999 V 8943
+62004 V 8983 62008 V 9023 62012 V 9063 62016 V 9103 62020
+V 9143 62024 V 9182 62028 V 9222 62032 V 9262 62036 V
+9302 62039 V 9342 62043 V 9382 62047 V 9422 62051 V 9462
+62054 V 9501 62058 V 9541 62062 V 9581 62065 V 9621 62069
+V 9661 62072 V 9701 62075 V 9741 62079 V 9780 62082 V
+9820 62085 V 9860 62089 V 9900 62092 V 9940 62095 V 9980
+62098 V 10020 62101 V 10059 62104 V 10099 62107 V 10139
+62110 V 10179 62113 V 10219 62115 V 10259 62118 V 10299
+62121 V 10338 62124 V 10378 62126 V 10418 62129 V 10458
+62131 V 10498 62134 V 10538 62136 V 10578 62139 V 10618
+62141 V 10657 62143 V 10697 62146 V 10737 62148 V 10777
+62150 V 10817 62152 V 10857 62154 V 10897 62156 V 10936
+62158 V 10976 62161 V 11016 62162 V 11056 62164 V 11096
+62166 V 11136 62168 V 11176 62170 V 11215 62171 V 11255
+62173 V 11295 62175 V 11335 62176 V 11375 62178 V 11415
+62179 V 11455 62181 V 11494 62182 V 11534 62183 V 11574
+62185 V 11614 62186 V 11654 62187 V 11694 62188 V 11734
+62189 V 11774 62190 V 11813 62192 V 11853 62193 V 11893
+62194 V 11933 62194 V 11973 62195 V 12013 62196 V 12053
+62197 V 12092 62198 V 12132 62198 V 12172 62199 V 12212
+62200 V 12252 62200 V 12292 62201 V 12332 62201 V 12371
+62202 V 12411 62202 V 12451 62202 V 12491 62202 V 12531
+62203 V 12571 62203 V 12611 62203 V 12650 62203 V 12690
+62203 V 12730 62203 V 12770 62203 V 12810 62203 V 12850
+62203 V 12890 62203 V 12930 62203 V 12969 62202 V 13009
+62202 V 13049 62202 V 13089 62202 V 13129 62201 V 13169
+62201 V 13209 62200 V 13248 62199 V 13288 62199 V 13328
+62198 V 13368 62198 V 13408 62197 V 13448 62196 V 13488
+62195 V 13527 62194 V 13567 62194 V 13607 62193 V 13647
+62192 V 13687 62191 V 13727 62190 V 13767 62188 V 13806
+62187 V 13846 62186 V 13886 62185 V 13926 62183 V 13966
+62182 V 14006 62181 V 14046 62179 V 14086 62178 V 14125
+62176 V 14165 62175 V 14205 62173 V 14245 62171 V 14285
+62170 V 14325 62168 V 14365 62166 V 14404 62164 V 14444
+62162 V 14484 62161 V 14524 62158 V 14564 62157 V 14604
+62154 V 14644 62152 V 14683 62150 V 14723 62148 V 14763
+62146 V 14803 62143 V 14843 62141 V 14883 62139 V 14923
+62136 V 14963 62134 V 15002 62132 V 15042 62129 V 15082
+62126 V 15122 62124 V 15162 62121 V 15202 62118 V 15242
+62115 V 15281 62113 V 15321 62110 V 15361 62107 V 15401
+62104 V 15441 62101 V 15481 62098 V 15521 62095 V 15560
+62092 V 15600 62089 V 15640 62086 V 15680 62082 V 15720
+62079 V 15760 62076 V 15800 62072 V 15839 62069 V 15879
+62065 V 15919 62062 V 15959 62058 V 15999 62054 V 16039
+62051 V 16079 62047 V 16119 62043 V 16158 62040 V 16198
+62036 V 16238 62032 V 16278 62028 V 16318 62024 V 16358
+62020 V 16398 62016 V 16437 62012 V 16477 62008 V 16517
+62004 V 16557 62000 V 16597 61995 V 16637 61991 V 16677
+61986 V 16716 61982 V 16756 61978 V 16796 61973 V 16836
+61969 V 16876 61964 V 16916 61959 V 16956 61955 V 16995
+61950 V 17035 61945 V 17075 61940 V 17115 61936 V 17155
+61931 V 17195 61925 V 17235 61921 V 17275 61915 V 17314
+61911 V 17354 61905 V 17394 61900 V 17434 61895 V 17474
+61890 V 17514 61885 V 17554 61879 V 17593 61874 V 17633
+61868 V 17673 61863 V 17713 61857 V 17753 61852 V 17793
+61846 V 17833 61840 V 17872 61835 V 17912 61829 V 17952
+61824 V 17992 61818 V 18032 61812 V 18072 61806 V 18112
+61800 V 18151 61794 V 18191 61788 V 18231 61782 V 18271
+61776 V 18311 61770 V 18351 61763 V 18391 61757 V 18431
+61751 V 18470 61744 V 18510 61738 V 18550 61731 V 18590
+61725 V 18630 61718 V 18670 61712 V 18710 61705 V 18749
+61698 V 18789 61692 V 18829 61685 V 18869 61678 V 18909
+61671 V 18949 61665 V 18989 61658 V 19028 61650 V 19068
+61644 V 19108 61636 V 6392 63337 32599 80 v 37994 63297
+a Fq(-)14896 59045 y Fp(r)13063 60879 y("!)13063 57292
+y(#)o( )p 14856 59045 80 1701 v 14896 58341 a Fq(6)p
+14896 59085 1701 80 v 15601 59045 a(-)p 14856 60746 80
+1701 v 14896 60746 a(?)p 13195 59085 1701 80 v 13195
+59045 a(\033)p 7770 59918 80 23 v 7770 61353 a Fp(\032)p
+9204 61353 23 80 v 17691 59918 80 23 v 7131 w(\031)p
+16313 61353 23 80 v 7061 60202 80 23 v 7061 61636 a(\032)p
+18400 60202 V 8549 w(\031)p 8496 61636 8550 80 v 19959
+55967 a(\030)p 19959 60769 80 3447 v 19959 62203 a(\031)p
+18581 62203 23 80 v 18581 55967 V 20893 56494 a FH(10pt)250
+b(bold:)720 b Fo(0)p Fn(;)192 b Fo(1)p Fn(;)f Fo(2)p
+Fn(;)g Fo(3)p Fn(;)h Fo(;)p Fn(;)e Fo(<)p Fn(;)i Fo(=)p
+Fn(;)f Fo(\001)p Fn(;)g Fo(\002)p Fn(;)h Fo(\003)p Fn(;)f
+Fo(\004)22914 57628 y FH(10pt:)720 b Fm(0)p FD(;)166
+b Fm(1)p FD(;)g Fm(2)p FD(;)g Fm(3)p FD(;)g Fm(;)p FD(;)g
+Fm(<)p FD(;)g Fm(=)p FD(;)g Fm(\001)p FD(;)g Fm(\002)p
+FD(;)g Fm(\003)p FD(;)g Fm(\004)23567 58620 y Fl(9pt:)721
+b Fk(0)p Fj(;)153 b Fk(1)p Fj(;)g Fk(2)p Fj(;)g Fk(3)p
+Fj(;)g Fk(;)p Fj(;)h Fk(<)p Fj(;)f Fk(=)p Fj(;)g Fk(\001)p
+Fj(;)g Fk(\002)p Fj(;)h Fk(\003)p Fj(;)f Fk(\004)23722
+59471 y Fv(8pt:)718 b Fi(0)p Fh(;)141 b Fi(1)p Fh(;)g
+Fi(2)p Fh(;)g Fi(3)p Fh(;)g Fi(;)p Fh(;)g Fi(<)p Fh(;)g
+Fi(=)p Fh(;)g Fi(\001)p Fh(;)g Fi(\002)p Fh(;)g Fi(\003)p
+Fh(;)g Fi(\004)23877 60179 y FO(7pt:)719 b Fg(0)p Fz(;)135
+b Fg(1)p Fz(;)h Fg(2)p Fz(;)f Fg(3)p Fz(;)h Fg(;)p Fz(;)f
+Fg(<)p Fz(;)h Fg(=)p Fz(;)f Fg(\001)p Fz(;)g Fg(\002)p
+Fz(;)h Fg(\003)p Fz(;)f Fg(\004)24032 60817 y Ff(6pt:)720
+b Fe(0)p Fd(;)127 b Fe(1)p Fd(;)g Fe(2)p Fd(;)g Fe(3)p
+Fd(;)g Fe(;)p Fd(;)g Fe(<)p Fd(;)g Fe(=)p Fd(;)g Fe(\001)p
+Fd(;)f Fe(\002)p Fd(;)h Fe(\003)p Fd(;)g Fe(\004)24187
+61384 y Fc(5pt:)721 b Fb(0)p Fa(;)122 b Fb(1)p Fa(;)h
+Fb(2)p Fa(;)g Fb(3)p Fa(;)f Fb(;)p Fa(;)g Fb(<)p Fa(;)h
+Fb(=)p Fa(;)f Fb(\001)p Fa(;)g Fb(\002)p Fa(;)g Fb(\003)p
+Fa(;)g Fb(\004)p eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop -40 0 46880 40 v -40 64800 40 64800
+v 46800 64800 V -40 64840 46880 40 v -7200 29180 7200
+40 v -1437 29727 40 1134 v -2855 29727 V -4272 29727
+V -5689 29727 V -7107 29727 V -303 29443 40 567 v -587
+29443 V -870 29443 V -1154 29443 V -1437 29443 V -1721
+29443 V -2004 29443 V -2288 29443 V -2571 29443 V -2855
+29443 V -3138 29443 V -3421 29443 V -3705 29443 V -3988
+29443 V -4272 29443 V -4555 29443 V -4839 29443 V -5122
+29443 V -5406 29443 V -5689 29443 V -5973 29443 V -6256
+29443 V -6540 29443 V -6823 29443 V -7107 29443 V -1592
+28542 a FO(5)-1940 b(10)-2116 b(15)h(20)p -7200 35660
+7200 40 v -740 36360 40 1440 v -1460 36360 V -2180 36360
+V -2900 36360 V -3620 36360 V -4340 36360 V -5060 36360
+V -5780 36360 V -6500 36360 V -7220 36360 V -380 36000
+40 721 v -1100 36000 V -1820 36000 V -2540 36000 V -3260
+36000 V -3980 36000 V -4700 36000 V -5420 36000 V -6140
+36000 V -6860 36000 V -894 34798 a(1)-1069 b(2)-2334
+34793 y(3)-3055 34798 y(4)-3775 34793 y(5)g(6)-5215 34790
+y(7)-5935 34793 y(8)-6655 34790 y(9)p 46800 29180 7200
+40 v 47064 29443 40 567 v 47347 29443 V 47630 29443 V
+47914 29443 V 48197 29443 V 48481 29443 V 48764 29443
+V 49048 29443 V 49331 29443 V 49615 29443 V 49898 29443
+V 50182 29443 V 50465 29443 V 50749 29443 V 51032 29443
+V 51315 29443 V 51599 29443 V 51882 29443 V 52166 29443
+V 52449 29443 V 52733 29443 V 53016 29443 V 53300 29443
+V 53583 29443 V 53867 29443 V 48197 29727 40 1134 v 49615
+29727 V 51032 29727 V 52449 29727 V 53867 29727 V 48043
+28542 a(5)894 b(10)719 b(15)h(20)p 46800 35660 7200 40
+v 47500 36360 40 1440 v 48220 36360 V 48940 36360 V 49660
+36360 V 50380 36360 V 51100 36360 V 51820 36360 V 52540
+36360 V 53260 36360 V 53981 36360 V 47140 36000 40 721
+v 47860 36000 V 48580 36000 V 49300 36000 V 50020 36000
+V 50740 36000 V 51460 36000 V 52180 36000 V 52900 36000
+V 53620 36000 V 47346 34798 a(1)371 b(2)48786 34793 y(3)49506
+34798 y(4)50226 34793 y(5)g(6)51666 34790 y(7)52386 34793
+y(8)53106 34790 y(9)p 21040 0 40 7200 v 20493 -1397 1134
+40 v 20493 -2815 V 20493 -4232 V 20493 -5649 V 20493
+-7067 V 20776 -264 567 40 v 20776 -547 V 20776 -830 V
+20776 -1114 V 20776 -1397 V 20776 -1681 V 20776 -1964
+V 20776 -2248 V 20776 -2531 V 20776 -2815 V 20776 -3098
+V 20776 -3382 V 20776 -3665 V 20776 -3949 V 20776 -4232
+V 20776 -4515 V 20776 -4799 V 20776 -5082 V 20776 -5366
+V 20776 -5649 V 20776 -5933 V 20776 -6216 V 20776 -6500
+V 20776 -6783 V 20776 -7067 V 19786 -1184 a(5)19612 -2602
+y(10)19612 -4019 y(15)19612 -5436 y(20)p 25720 0 40 7200
+v 25020 -700 1440 40 v 25020 -1420 V 25020 -2140 V 25020
+-2860 V 25020 -3580 V 25020 -4300 V 25020 -5020 V 25020
+-5740 V 25020 -6460 V 25020 -7181 V 25380 -340 721 40
+v 25380 -1060 V 25380 -1780 V 25380 -2500 V 25380 -3220
+V 25380 -3940 V 25380 -4660 V 25380 -5380 V 25380 -6100
+V 25380 -6820 V 24486 -482 a(1)24486 -1202 y(2)24486
+-1927 y(3)24486 -2642 y(4)24486 -3367 y(5)24486 -4087
+y(6)24486 -4810 y(7)24486 -5527 y(8)24486 -6250 y(9)p
+21040 72000 40 7200 v 20493 66237 1134 40 v 20493 67655
+V 20493 69072 V 20493 70489 V 20493 71907 V 20776 65103
+567 40 v 20776 65387 V 20776 65670 V 20776 65954 V 20776
+66237 V 20776 66521 V 20776 66804 V 20776 67088 V 20776
+67371 V 20776 67655 V 20776 67938 V 20776 68221 V 20776
+68505 V 20776 68788 V 20776 69072 V 20776 69355 V 20776
+69639 V 20776 69922 V 20776 70206 V 20776 70489 V 20776
+70773 V 20776 71056 V 20776 71340 V 20776 71623 V 20776
+71907 V 19786 66450 a(5)19612 67868 y(10)19612 69285
+y(15)19612 70702 y(20)p 25720 72000 40 7200 v 25020 65540
+1440 40 v 25020 66260 V 25020 66980 V 25020 67700 V 25020
+68420 V 25020 69140 V 25020 69860 V 25020 70580 V 25020
+71300 V 25020 72020 V 25380 65180 721 40 v 25380 65900
+V 25380 66620 V 25380 67340 V 25380 68060 V 25380 68780
+V 25380 69500 V 25380 70220 V 25380 70940 V 25380 71660
+V 24486 65758 a(1)24486 66478 y(2)24486 67193 y(3)24486
+67918 y(4)24486 68633 y(5)24486 69353 y(6)24486 70071
+y(7)24486 70793 y(8)24486 71511 y(9)6555 2986 y FN(A)619
+b(T)-173 b(est)619 b(for)i(L)17810 2710 y FM(A)18930
+2986 y FN(T)20031 3543 y(E)21236 2986 y(X)f(PS/PDF)g(Printing)15521
+5355 y FL(V)-133 b(ersion)299 b(1.1)1738 b(Build)300
+b(Code:)370 b(0004)14675 7746 y FI(D)60 b FJ(U)g(P)g(L)g(E)g(X)353
+b FI(A)60 b FJ(L)g(I)g(G)g(N)g(M)g(E)g(N)g(T)351 b FI(T)60
+b FJ(E)g(S)g(T)356 b FI(S)60 b FJ(I)g(D)g(E)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/macros/latex/contrib/IEEEtran/testflow/testflow_doc.pdf b/macros/latex/contrib/IEEEtran/testflow/testflow_doc.pdf
new file mode 100644
index 0000000000..5440773d59
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/testflow/testflow_doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/IEEEtran/tools/IEEEtrantools.sty b/macros/latex/contrib/IEEEtran/tools/IEEEtrantools.sty
new file mode 100644
index 0000000000..e4a808cc5c
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/tools/IEEEtrantools.sty
@@ -0,0 +1,2799 @@
+%%
+%% IEEEtrantools.sty 2015/08/26 version V1.5
+%%
+%%
+%% This package provides several popular and unique commands from the
+%% IEEEtran.cls class (version 1.8b) file.
+%%
+%% The provided commands include \IEEEPARstart, \IEEEitemize, \IEEEenumerate,
+%% \IEEEdescription as well as the \IEEEeqnarray, \IEEEeqnarraybox family
+%% of commands including support commands such as \IEEEstrut, the IEEEproof
+%% environment and its support commands and the \IEEEauthorrefmark command.
+%% Also provides the \bstctlcite command for the control entry types of
+%% IEEEtran.bst V1.00 and later, as well as \IEEEnoauxwrite.
+%%
+%% IEEEtrantools.sty should not be used with IEEEtran.cls.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/pkg/ieeetran
+%%
+%%
+%% Copyright (c) 2002-2015 by Michael Shell
+%% See: http://www.michaelshell.org/
+%% for current contact information.
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall the IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: IEEEtrantools.sty, IEEEtrantools_doc.txt
+%%*************************************************************************
+%%
+%%
+%%
+%% Available package options (e.g., \usepackage[redeflists]{IEEEtrantools}
+%%
+%% redeflists
+%% Causes IEEEtrantools to redefine the standard itemize, enumerate and
+%% description (IED) list environments to their IEEE versions.
+%% IEEEitemize, IEEEenumerate and IEEEdescription remain available in any
+%% case. This option may not be compatible with packages that alter the
+%% standard IED list environments.
+%%
+%%
+%%**********************************************************************
+
+
+\ProvidesPackage{IEEEtrantools}[2015/08/26 V1.5 by Michael Shell]
+\typeout{-- See the "IEEEtrantools_doc.txt" manual for usage information.}
+\typeout{-- http://www.michaelshell.org/tex/ieeetran/tools/}
+\NeedsTeXFormat{LaTeX2e}
+
+
+% If \@IEEEeqnarray is detected, error.
+{\@ifundefined{@IEEEeqnarray}{\relax}{%
+\PackageError{IEEEtrantools}{The IEEEtrantools package is not for use\MessageBreak
+ with classes that already provide it}%
+ {Do not load IEEEtrantools - you don't need it.}%
+}}
+
+
+% hook to allow easy changeover to IEEEtran.cls/tools.sty error reporting
+\def\@IEEEclspkgerror{\PackageError{IEEEtrantools}}
+
+
+% define needed flags to indicate document options
+\newif\if@IEEETOOLSredeflists
+\global\@IEEETOOLSredeflistsfalse
+
+
+% IEEEtran class scratch pad registers
+% dimen
+\newdimen\@IEEEtrantmpdimenA
+\newdimen\@IEEEtrantmpdimenB
+\newdimen\@IEEEtrantmpdimenC
+% count
+\newcount\@IEEEtrantmpcountA
+\newcount\@IEEEtrantmpcountB
+\newcount\@IEEEtrantmpcountC
+% token list
+\newtoks\@IEEEtrantmptoksA
+
+
+% declare the options
+\DeclareOption{redeflists}{\@IEEETOOLSredefliststrue}
+% provide legacy support for retainorgcmds which does nothing now.
+\DeclareOption{retainorgcmds}{\@IEEETOOLSredeflistsfalse}
+
+% get and process any supplied options
+\ProcessOptions
+
+
+% store the nominal value of jot
+\newdimen\IEEEnormaljot
+\IEEEnormaljot\jot\relax
+% V1.4 allow for other packages that later change \jot
+\AtBeginDocument{\IEEEnormaljot\jot\relax}
+
+
+
+
+%% -- Command Argument Scanning Support Functions --
+
+% Sets the category codes for punctuation to their normal values.
+% For local use with argument scanning.
+\def\IEEEnormalcatcodespunct{\catcode`\!=12 \catcode`\,=12 \catcode`\:=12
+\catcode`\;=12 \catcode`\`=12 \catcode`\'=12 \catcode`\"=12 \catcode`\.=12
+\catcode`\/=12 \catcode`\?=12 \catcode`\*=12 \catcode`\+=12 \catcode`\-=12
+\catcode`\<=12 \catcode`\>=12 \catcode`\(=12 \catcode`\)=12 \catcode`\[=12
+\catcode`\]=12 \catcode`\==12 \catcode`\|=12}
+% Sets the category codes for numbers to their normal values.
+% For local use with argument scanning.
+\def\IEEEnormalcatcodesnum{\catcode`\0=12 \catcode`\1=12 \catcode`\2=12
+\catcode`\3=12 \catcode`\4=12 \catcode`\5=12 \catcode`\6=12 \catcode`\7=12
+\catcode`\8=12 \catcode`\9=12}
+% combined action of \IEEEnormalcatcodespunct and \IEEEnormalcatcodesnum
+\def\IEEEnormalcatcodes{\IEEEnormalcatcodespunct\IEEEnormalcatcodesnum}
+
+
+% usage: \@IEEEstripouterbraces*{}
+% \@IEEEstripouterbraces fully expands its argument (which it then stores
+% in \@IEEEstripouterbracesarg) via \edef, then removes any outer enclosing
+% braces, and finally stores the result in the macro
+% \@IEEEstrippedouterbraces.
+%
+% For example:
+% \@IEEEstripouterbraces{{{{ab}c}}}
+% results in:
+%
+% \@IEEEstripouterbracesarg ==> a macro containing {{{ab}c}}
+% \@IEEEstrippedouterbraces ==> a macro containing {ab}c
+%
+% the *-star form,\@IEEEstripouterbraces*, does not expand the argument
+% contents during processing
+\def\@IEEEstripouterbraces{\@ifstar{\let\@IEEEstripouterbracesdef=\def\@@IEEEstripouterbraces}{\let\@IEEEstripouterbracesdef=\edef\@@IEEEstripouterbraces}}
+
+\def\@@IEEEstripouterbraces#1{\@IEEEstripouterbracesdef\@IEEEstripouterbracesarg{#1}\relax
+% If the macro is unchanged after being acquired as a single delimited
+% argument, we know we have one sequence of tokens without any enclosing
+% braces. Loop until this is true.
+\loop
+ \expandafter\@@@IEEEstripouterbraces\@IEEEstripouterbracesarg\@IEEEgeneralsequenceDELIMITER
+\ifx\@IEEEstrippedouterbraces\@IEEEstripouterbracesarg
+\else
+ \let\@IEEEstripouterbracesarg\@IEEEstrippedouterbraces
+\repeat}
+
+\def\@@@IEEEstripouterbraces#1\@IEEEgeneralsequenceDELIMITER{\def\@IEEEstrippedouterbraces{#1}}
+
+
+
+% usage: \@IEEEextractgroup*{}
+% \@IEEEextractgroup fully expands its argument (which it then stores in
+% \@IEEEextractgrouparg) via \edef and then assigns the first "brace group"
+% of tokens to the macro \@IEEEextractedgroup.
+% The remaining groups, if any, are stored in the macro
+% \@IEEEextractedgroupremain. If the argument does not contain the requisite
+% groups, the respective macros will be defined to be empty.
+% There is an asymmetry in that \@IEEEextractedgroup is stripped of its first
+% outer grouping while \@IEEEextractedgroupremain retains even the outer
+% grouping (if present) that originally identified it as a group.
+%
+% For example:
+% \@IEEEextractgroup{{{ab}}{c{de}}}
+% results in:
+%
+% \@IEEEextractgrouparg ==> a macro containing {{ab}}{c{de}}
+% \@IEEEextractedgroup ==> a macro containing {ab}
+% \@IEEEextractedgroupremain ==> a macro containing {c{de}}
+%
+% The *-star form, \@IEEEextractgroup*, does not expand its argument
+% contents during processing.
+\def\@IEEEextractgroup{\@ifstar{\let\@IEEEextractgroupdef=\def\@@IEEEextractgroup}{\let\@IEEEextractgroupdef=\edef\@@IEEEextractgroup}}
+
+\def\@@IEEEextractgroup#1{\@IEEEextractgroupdef\@IEEEextractgrouparg{#1}\relax
+% trap the case of an empty extracted group as this would cause problems with
+% \@IEEEextractgroupremain's argument acquisition
+\ifx\@IEEEextractgrouparg\@empty
+ \def\@IEEEextractedgroup{}\relax
+ \def\@IEEEextractedgroupremain{}\relax
+\else
+ % We have to use some dirty tricks here. We want to insert {} around
+ % whatever remains after the first group so that TeX's argument scanner
+ % will preserve any originally enclosing braces as well as provide an
+ % empty argument to acquire even if there isn't a second group.
+ % In this first of two dirty tricks, we put a } at the end of the structure
+ % we are going to extract from. The \ifnum0=`{\fi keeps TeX happy to allow
+ % what would otherwise be an unbalanced macro definition for
+ % \@@IEEEextractgroup to be acceptable to it.
+ \ifnum0=`{\fi\expandafter\@IEEEextractgroupremain\@IEEEextractgrouparg}\relax
+\fi}
+
+% In the second part of the dirty tricks, we insert a leading { right after
+% the first group is acquired, but before the remainder is. Again, the
+% \ifnum0=`}\fi keeps TeX happy during definition time, but will disappear
+% during run time.
+\def\@IEEEextractgroupremain#1{\def\@IEEEextractedgroup{#1}\expandafter\@@IEEEextractgroupremain\expandafter{\ifnum0=`}\fi}
+
+\def\@@IEEEextractgroupremain#1{\def\@IEEEextractedgroupremain{#1}}
+
+
+
+% usage: \@IEEEextracttoken*{}
+% \@IEEEextracttoken fully expands its argument (which it then stores in
+% \@IEEEextracttokenarg) via \edef and then the meaning of the first
+% nonbrace (but including the empty group) token found is assigned via \let
+% to \@IEEEextractedtoken as well as stored in the macro
+% \@IEEEextractedtokenmacro. Tokens that would otherwise be discarded during
+% the acquisition of the first are stored in \@IEEEextractedtokensdiscarded,
+% however their original relative brace nesting depths are not guaranteed to
+% be preserved.
+% If the argument is empty, or if a first nonbrace token does not exist (or
+% is an empty group), \@IEEEextractedtoken will be \relax and
+% \@IEEEextractedtokenmacro and \@IEEEextractedtokensdiscarded will be empty.
+%
+% For example:
+% \@IEEEextracttoken{{{ab}{cd}}{{ef}g}}
+% results in:
+%
+% \@IEEEextracttokenarg ==> a macro containing {{ab}{cd}}{{ef}g}
+% \@IEEEextractedtoken ==> the letter a
+% \@IEEEextractedtokenmacro ==> a macro containing a
+% \@IEEEextractedtokensdiscarded ==> a macro containing bcd{ef}g
+%
+% the *-star form, \@IEEEextracttoken*, does not expand its argument
+% contents during processing.
+\def\@IEEEextracttoken{\@ifstar{\let\@IEEEextracttokendef=\def\@@IEEEextracttoken}{\let\@IEEEextracttokendef=\edef\@@IEEEextracttoken}}
+
+\def\@@IEEEextracttoken#1{\@IEEEextracttokendef\@IEEEextracttokenarg{#1}\relax
+\def\@IEEEextractedtokensdiscarded{}\relax % initialize to empty
+% if the macro is unchanged after being acquired as a single undelimited argument
+% with anything after it being stripped off as a delimited argument
+% we know we have one token without any enclosing braces. loop until this is true.
+\let\@IEEEextracttokencurgroup\@IEEEextracttokenarg
+\loop
+ % trap case of an empty argument as this would cause a problem with
+ % \@@@IEEEextracttoken's first (nondelimited) argument acquisition
+ \ifx\@IEEEextracttokencurgroup\@empty
+ \def\@IEEEextractedtokenmacro{}\relax
+ \else
+ \expandafter\@@@IEEEextracttoken\@IEEEextracttokencurgroup\@IEEEgeneralsequenceDELIMITER\relax
+ \fi
+ \ifx\@IEEEextractedtokenmacro\@IEEEextracttokencurgroup
+ \else
+ \let\@IEEEextracttokencurgroup=\@IEEEextractedtokenmacro
+\repeat
+% we can safely do a \let= here because there should be at most one token
+% the relax is needed to handle the case of no token found
+\expandafter\let\expandafter\@IEEEextractedtoken\@IEEEextractedtokenmacro\relax}
+
+\def\@@@IEEEextracttoken#1#2\@IEEEgeneralsequenceDELIMITER{\def\@IEEEextractedtokenmacro{#1}\relax
+\def\@@IEEEextractedtokensdiscarded{#2}\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter
+\@IEEEextractedtokensdiscarded\expandafter\expandafter\expandafter
+{\expandafter\@@IEEEextractedtokensdiscarded\@IEEEextractedtokensdiscarded}}
+
+
+
+% usage: \@IEEEextracttokengroups*{}
+% \@IEEEextracttokengroups fully expands its argument (which it then stores
+% in \@IEEEextracttokengroupsarg) and then assigns the first "brace group" of
+% tokens (with the outermost braces removed) to the macro
+% \@IEEEextractedfirstgroup.
+% The meaning of the first nonbrace (but including the empty group) token
+% within this first group is assigned via \let to \@IEEEextractedfirsttoken
+% as well as stored in the macro \@IEEEextractedfirsttokenmacro. If a first
+% nonbrace token does not exist (or is an empty group), these will be \relax
+% and empty, respectively. Tokens that would otherwise be discarded during
+% the acquisition of the first token in the first group are stored in
+% \@IEEEextractedfirsttokensdiscarded, however their original relative brace
+% nesting depths are not guaranteed to be preserved.
+% The first group within this first group is stored in the macro
+% \@IEEEextractedfirstfirstgroup.
+% Likewise for the next group after the first: \@IEEEextractednextgroup,
+% \@IEEEextractednextfirstgroup, \@IEEEextractednextgroupfirsttoken,
+% \@IEEEextractednextgroupfirsttokenmacro, and
+% \@IEEEextractednextfirsttokensdiscarded.
+% All tokens/groups after the first group, including any enclosing braces,
+% are stored in the macro \@IEEEextractedafterfirstgroupremain which will
+% be empty if none exist.
+%
+% For example:
+% \@IEEEextracttokengroups{{{ab}{cd}}{{ef}g}}
+% will result in:
+%
+% \@IEEEextracttokengroupsarg ==> a macro containing {{ab}{cd}}{{ef}g}
+% \@IEEEextractedfirstgroup ==> a macro containing {ab}{cd}
+% \@IEEEextractedafterfirstgroupremain ==> a macro containing {{ef}g}
+% \@IEEEextractedfirsttoken ==> the letter a
+% \@IEEEextractedfirsttokenmacro ==> a macro containing a
+% \@IEEEextractedfirsttokensdiscarded ==> a macro containing bcd
+% \@IEEEextractedfirstfirstgroup ==> a macro containing ab
+% \@IEEEextractednextgroup ==> a macro containing {ef}g
+% \@IEEEextractednextfirsttoken ==> the letter e
+% \@IEEEextractednextfirsttokenmacro ==> a macro containing e
+% \@IEEEextractednextfirsttokensdiscarded ==> a macro containing fg
+% \@IEEEextractednextfirstgroup ==> a macro containing ef
+%
+% If given an empty argument, \@IEEEextractedfirsttoken and
+% \@IEEEextractednextfirsttoken will be set to \relax
+% and all the macros will be empty.
+% the *-star form, \@IEEEextracttokengroups*, does not expand its argument
+% contents during processing.
+%
+% Depends on: \@IEEEextractgroup, \@IEEEextracttoken
+\def\@IEEEextracttokengroups{\@ifstar{\let\@IEEEextracttokengroupsdef=\def\@@IEEEextracttokengroups}{\let\@IEEEextracttokengroupsdef=\edef\@@IEEEextracttokengroups}}
+\def\@@IEEEextracttokengroups#1{\@IEEEextracttokengroupsdef\@IEEEextracttokengroupsarg{#1}\relax
+% begin extraction, these functions are safe with empty arguments
+% first group
+\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextracttokengroupsarg}\relax
+\let\@IEEEextractedfirstgroup\@IEEEextractedgroup
+\let\@IEEEextractedafterfirstgroupremain\@IEEEextractedgroupremain
+\expandafter\@IEEEextracttoken\expandafter*\expandafter{\@IEEEextractedfirstgroup}\relax
+\let\@IEEEextractedfirsttoken\@IEEEextractedtoken
+\let\@IEEEextractedfirsttokenmacro\@IEEEextractedtokenmacro
+\let\@IEEEextractedfirsttokensdiscarded\@IEEEextractedtokensdiscarded
+% first first group
+\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractedfirstgroup}\relax
+\let\@IEEEextractedfirstfirstgroup\@IEEEextractedgroup
+% next group
+\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractedafterfirstgroupremain}\relax
+\let\@IEEEextractednextgroup\@IEEEextractedgroup
+\expandafter\@IEEEextracttoken\expandafter*\expandafter{\@IEEEextractednextgroup}\relax
+\let\@IEEEextractednextfirsttoken\@IEEEextractedtoken
+\let\@IEEEextractednextfirsttokenmacro\@IEEEextractedtokenmacro
+\let\@IEEEextractednextfirsttokensdiscarded\@IEEEextractedtokensdiscarded
+% next first group
+\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractednextgroup}\relax
+\let\@IEEEextractednextfirstgroup\@IEEEextractedgroup}
+
+
+%%
+%% -- End of Command Argument Scanning Support Functions --
+
+
+
+
+% -- page setup commands --
+
+% The default sample text for calculating margins
+\def\IEEEdefaultsampletext{\normalfont\normalsize gT}
+\def\IEEEdefaultheadersampletext{\normalfont\normalsize T}
+\def\IEEEdefaultfootersampletext{\normalfont\normalsize gT}
+
+
+
+% usage: \IEEEsettextwidth{inner margin}{outer margin}
+% Sets \textwidth to allow the specified inner and outer margins
+% for the current \paperwidth.
+\def\IEEEsettextwidth#1#2{\@IEEEtrantmpdimenA\paperwidth
+\@IEEEtrantmpdimenB#1\relax
+\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB
+\@IEEEtrantmpdimenB#2\relax
+\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB
+\textwidth\@IEEEtrantmpdimenA}
+
+
+
+% usage: \IEEEsetsidemargin{mode: i, o, c, a}{margin/offset}
+% Sets \oddsidemargin and \evensidemargin to yield the specified margin
+% of the given mode.
+% The available modes are:
+% i = inner margin
+% o = outer margin
+% c = centered, with the given offset
+% a = adjust the margins using the given offset
+% For the offsets, positive values increase the inner margin.
+% \textwidth should be set properly for the given margins before calling this
+% function.
+\def\IEEEsetsidemargin#1#2{\@IEEEtrantmpdimenA #2\relax
+\@IEEEextracttoken{#1}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEsetsidemargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `i'}{Valid modes for \string\IEEEsetsidemargin\space are: i, o, c and a.}\relax
+ \let\@IEEEextractedtoken=i\relax
+ \def\@IEEEextractedtokenmacro{i}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEsetsidemargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% handle each mode
+\if\@IEEEextractedtoken a\relax
+ \advance\oddsidemargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken c\relax
+ \oddsidemargin\paperwidth
+ \advance\oddsidemargin by -\textwidth
+ \divide\oddsidemargin by 2\relax
+ \advance\oddsidemargin by -1in\relax
+ \advance\oddsidemargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken o\relax
+ \oddsidemargin\paperwidth
+ \advance\oddsidemargin by -\textwidth
+ \advance\oddsidemargin by -\@IEEEtrantmpdimenA
+ \advance\oddsidemargin by -1in\relax
+\else
+ \if\@IEEEextractedtoken i\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetsidemargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `i'}%
+ {Valid modes for \string\IEEEsetsidemargin\space are: i, o, c and a.}%
+ \fi
+ \oddsidemargin\@IEEEtrantmpdimenA
+ \advance\oddsidemargin by -1in\relax
+\fi\fi\fi
+% odd and even side margins both mean "inner" for single sided pages
+\evensidemargin\oddsidemargin
+% but are mirrors of each other when twosided is in effect
+\if@twoside
+ \evensidemargin\paperwidth
+ \advance\evensidemargin by -\textwidth
+ \advance\evensidemargin by -\oddsidemargin
+ % have to compensate for both the builtin 1in LaTex offset
+ % and the fact we already subtracted this offset from \oddsidemargin
+ \advance\evensidemargin -2in\relax
+\fi}
+
+
+
+% usage: \IEEEsettextheight[sample text]{top text margin}{bottom text margin}
+% Sets \textheight based on the specified top margin and bottom margin.
+% Takes into consideration \paperheight, \topskip, and (by default) the
+% the actual height and depth of the \IEEEdefaultsampletext text.
+\def\IEEEsettextheight{\@ifnextchar [{\@IEEEsettextheight}{\@IEEEsettextheight[\IEEEdefaultsampletext]}}
+\def\@IEEEsettextheight[#1]#2#3{\textheight\paperheight\relax
+ \@IEEEtrantmpdimenA #2\relax
+ \advance \textheight by -\@IEEEtrantmpdimenA% subtract top margin
+ \@IEEEtrantmpdimenA #3\relax
+ \advance \textheight by -\@IEEEtrantmpdimenA% subtract bottom margin
+ \advance \textheight by \topskip% add \topskip
+ % subtract off everything above the top, and below the bottom, baselines
+ \settoheight{\@IEEEtrantmpdimenA}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance \textheight by -\@IEEEtrantmpdimenA
+ \settodepth{\@IEEEtrantmpdimenA}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance \textheight by -\@IEEEtrantmpdimenA}
+
+
+
+\newdimen\IEEEquantizedlength
+\IEEEquantizedlength 0sp\relax
+\newdimen\IEEEquantizedlengthdiff
+\IEEEquantizedlengthdiff 0sp\relax
+\def\IEEEquantizedlengthint{0}
+
+% usage: \IEEEquantizelength{mode: d, c, i}{base unit}{length}
+% Sets the length \IEEEquantizedlength to be an integer multiple of the given
+% (nonzero) base unit such that \IEEEquantizedlength approximates the given
+% length.
+% \IEEEquantizedlengthdiff is a length equal to the difference between the
+% \IEEEquantizedlength and the given length.
+% \IEEEquantizedlengthint is a macro containing the integer number of base units
+% in \IEEEquantizedlength.
+% i.e., \IEEEquantizedlength = \IEEEquantizedlengthint * base unit
+% The mode determines how \IEEEquantizedlength is quantized:
+% d = always decrease (always round down \IEEEquantizeint)
+% c = use the closest match
+% i = always increase (always round up \IEEEquantizeint)
+% In anycase, if the given length is already quantized,
+% \IEEEquantizedlengthdiff will be set to zero.
+\def\IEEEquantizelength#1#2#3{\begingroup
+% work in isolation so as not to externally disturb the \@IEEEtrantmp
+% variables
+% load the argument values indirectly via \IEEEquantizedlengthdiff
+% in case the user refers to our \@IEEEtrantmpdimenX, \IEEEquantizedlength,
+% etc. in the arguments. we also will work with these as counters,
+% i.e., in sp units
+% A has the base unit
+\IEEEquantizedlengthdiff #2\relax\relax\relax\relax
+\@IEEEtrantmpcountA\IEEEquantizedlengthdiff
+% B has the input length
+\IEEEquantizedlengthdiff #3\relax\relax\relax\relax
+\@IEEEtrantmpcountB\IEEEquantizedlengthdiff
+\@IEEEtrantmpdimenA\the\@IEEEtrantmpcountA sp\relax
+\@IEEEtrantmpdimenB\the\@IEEEtrantmpcountB sp\relax
+% \@IEEEtrantmpcountC will have the quantized int
+% \IEEEquantizedlength will have the quantized length
+% \@IEEEtrantmpdimenC will have the quantized diff
+% initialize them to zero as this is what will be
+% exported if an error occurs
+\@IEEEtrantmpcountC 0\relax
+\IEEEquantizedlength 0sp\relax
+\@IEEEtrantmpdimenC 0sp\relax
+% extract mode
+\@IEEEextracttoken{#1}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `d'}{Valid modes for \string\IEEEquantizelength\space are: d, c and i.}\relax
+ \let\@IEEEextractedtoken=d\relax
+ \def\@IEEEextractedtokenmacro{d}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEquantizelength\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% check for base unit is zero error
+\ifnum\@IEEEtrantmpcountA=0\relax
+\@IEEEclspkgerror{Base unit is zero in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak
+ \string\IEEEquantizedlength\space and \string\IEEEquantizedlengthdiff\space are set to zero}{Division by zero is not allowed.}\relax
+\else% base unit is nonzero
+ % \@IEEEtrantmpcountC carries the number of integer units
+ % in the quantized length (integer length \ base)
+ \@IEEEtrantmpcountC\@IEEEtrantmpcountB\relax
+ \divide\@IEEEtrantmpcountC by \@IEEEtrantmpcountA\relax
+ % \IEEEquantizedlength has the (rounded down) quantized length
+ % = base * int
+ \IEEEquantizedlength\@IEEEtrantmpdimenA\relax
+ \multiply\IEEEquantizedlength by \@IEEEtrantmpcountC\relax
+ % \@IEEEtrantmpdimenC has the difference
+ % = quantized length - length
+ \@IEEEtrantmpdimenC\IEEEquantizedlength\relax
+ \advance\@IEEEtrantmpdimenC by -\@IEEEtrantmpdimenB\relax
+ % trap special case of length being already quantized
+ % to avoid a roundup under i option
+ \ifdim\@IEEEtrantmpdimenC=0sp\relax
+ \else % length not is already quantized
+ % set dimenA to carry the upper quantized (absolute value) difference:
+ % quantizedlength + base - length
+ \advance\@IEEEtrantmpdimenA by \IEEEquantizedlength\relax
+ \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB\relax
+ % set dimenB to carry the lower quantized (absolute value) difference:
+ % length - quantizedlength
+ \advance\@IEEEtrantmpdimenB by -\IEEEquantizedlength\relax
+ % handle each mode
+ \if\@IEEEextractedtoken c\relax
+ % compare upper and lower amounts, select upper if lower > upper
+ \ifdim\@IEEEtrantmpdimenB>\@IEEEtrantmpdimenA\relax
+ % use upper
+ \advance\IEEEquantizedlength by \the\@IEEEtrantmpcountA sp\relax
+ \advance\@IEEEtrantmpcountC by 1\relax
+ \@IEEEtrantmpdimenC\@IEEEtrantmpdimenA
+ \else% <=. uselower
+ % no need to do anything for lower, use output values already setup
+ \fi
+ \else% not mode c
+ \if\@IEEEextractedtoken i\relax
+ % always round up under i mode
+ \advance\IEEEquantizedlength by \the\@IEEEtrantmpcountA sp\relax
+ \advance\@IEEEtrantmpcountC by 1\relax
+ \@IEEEtrantmpdimenC\@IEEEtrantmpdimenA
+ \else
+ \if\@IEEEextractedtoken d\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `d'}%
+ {Valid modes for \string\IEEEquantizelength\space are: d, c, and i.}\relax
+ \fi % if d
+ % no need to do anything for d, use output values already setup
+ \fi\fi % if i, c
+ \fi % if length is already quantized
+\fi% if base unit is zero
+% globally assign the results to macros we use here to escape the enclosing
+% group without needing to call \global on any of the \@IEEEtrantmp variables.
+% \@IEEEtrantmpcountC has the quantized int
+% \IEEEquantizedlength has the quantized length
+% \@IEEEtrantmpdimenC has the quantized diff
+\xdef\@IEEEquantizedlengthintmacro{\the\@IEEEtrantmpcountC}\relax
+\@IEEEtrantmpcountC\IEEEquantizedlength\relax
+\xdef\@IEEEquantizedlengthmacro{\the\@IEEEtrantmpcountC}\relax
+\@IEEEtrantmpcountC\@IEEEtrantmpdimenC\relax
+\xdef\@IEEEquantizedlengthdiffmacro{\the\@IEEEtrantmpcountC}\relax
+\endgroup
+% locally assign the outputs here from the macros
+\expandafter\IEEEquantizedlength\@IEEEquantizedlengthmacro sp\relax
+\expandafter\IEEEquantizedlengthdiff\@IEEEquantizedlengthdiffmacro sp\relax
+\edef\IEEEquantizedlengthint{\@IEEEquantizedlengthintmacro}\relax}
+
+
+
+\newdimen\IEEEquantizedtextheightdiff
+\IEEEquantizedtextheightdiff 0sp\relax
+
+% usage: \IEEEquantizetextheight[base unit]{mode: d, c, i}
+% Sets \textheight to be an integer multiple of the current \baselineskip
+% (or the optionally specified base unit) plus the first (\topskip) line.
+% \IEEEquantizedtextheightdiff is a length equal to the difference between
+% the new quantized and original \textheight.
+% \IEEEquantizedtextheightlpc is a macro containing the integer number of
+% lines per column under the quantized \textheight. i.e.,
+% \textheight = \IEEEquantizedtextheightlpc * \baselineskip + \topskip
+% The mode determines how \textheight is quantized:
+% d = always decrease (always round down the number of lines per column)
+% c = use the closest match
+% i = always increase (always round up the number of lines per column)
+% In anycase, if \textheight is already quantized, it will remain unchanged,
+% and \IEEEquantizedtextheightdiff will be set to zero.
+% Depends on: \IEEEquantizelength
+\def\IEEEquantizetextheight{\@ifnextchar [{\@IEEEquantizetextheight}{\@IEEEquantizetextheight[\baselineskip]}}
+\def\@IEEEquantizetextheight[#1]#2{\begingroup
+% use our \IEEEquantizedtextheightdiff as a scratch pad
+% we need to subtract off \topskip before quantization
+\IEEEquantizedtextheightdiff\textheight
+\advance\IEEEquantizedtextheightdiff by -\topskip\relax
+\IEEEquantizelength{#2}{#1}{\IEEEquantizedtextheightdiff}
+% add back \topskip line
+\advance\IEEEquantizedlength by \topskip
+\@IEEEtrantmpcountC\IEEEquantizedlengthint\relax
+\advance\@IEEEtrantmpcountC by 1\relax
+% globally assign the results to macros we use here to escape the enclosing
+% group without needing to call \global on any of the \@IEEEtrantmp variables.
+\xdef\@IEEEquantizedtextheightlpcmacro{\the\@IEEEtrantmpcountC}\relax
+\@IEEEtrantmpcountC\IEEEquantizedlength\relax
+\xdef\@IEEEquantizedtextheightmacro{\the\@IEEEtrantmpcountC}\relax
+\@IEEEtrantmpcountC\IEEEquantizedlengthdiff\relax
+\xdef\@IEEEquantizedtextheightdiffmacro{\the\@IEEEtrantmpcountC}\relax
+\endgroup
+% locally assign the outputs here from the macros
+\textheight\@IEEEquantizedtextheightmacro sp\relax
+\IEEEquantizedtextheightdiff\@IEEEquantizedtextheightdiffmacro sp\relax
+\edef\IEEEquantizedtextheightlpc{\@IEEEquantizedtextheightlpcmacro}}
+
+
+
+% usage: \IEEEsettopmargin[sample text]{mode: t, b, c, a, q}{margin/offset}
+% Sets \topmargin based on the specified vertical margin.
+% Takes into consideration the base 1in offset, \headheight, \headsep,
+% \topskip, and (by default) the the actual height (or, for the bottom, depth)
+% of the \IEEEdefaultsampletext text.
+% The available modes are:
+% t = top margin
+% b = bottom margin
+% c = vertically centered, with the given offset
+% a = adjust the vertical margins using the given offset
+% q = adjust the margins using \IEEEquantizedtextheightdiff and the given offset
+% For the offsets, positive values increase the top margin.
+% \headheight, \headsep, \topskip and \textheight should be set properly for the
+% given margins before calling this function.
+\def\IEEEsettopmargin{\@ifnextchar [{\@IEEEsettopmargin}{\@IEEEsettopmargin[\IEEEdefaultsampletext]}}
+\def\@IEEEsettopmargin[#1]#2#3{\@IEEEtrantmpdimenA #3\relax
+\@IEEEextracttoken{#2}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEsettopmargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}{Valid modes for \string\IEEEsettopmargin\space are: t, b, c, a and q.}\relax
+ \let\@IEEEextractedtoken=t\relax
+ \def\@IEEEextractedtokenmacro{t}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEsettopmargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% handle each mode
+\if\@IEEEextractedtoken a\relax
+ \advance\topmargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken q\relax
+ % we need to adjust by half the \IEEEquantizedtextheightdiff value
+ \@IEEEtrantmpdimenB\IEEEquantizedtextheightdiff\relax
+ \divide\@IEEEtrantmpdimenB by 2\relax
+ % a positive \IEEEquantizedtextheightdiff means we need to reduce \topmargin
+ % because \textheight has been lenghtened
+ \advance\topmargin by -\@IEEEtrantmpdimenB\relax
+ \advance\topmargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken c\relax
+ \topmargin\paperheight
+ \advance\topmargin by -\textheight
+ % \textheight includes \topskip, but we should not count topskip whitespace here, backout
+ \advance \topmargin by \topskip
+ \settoheight{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\topmargin by -\@IEEEtrantmpdimenB\relax
+ \settodepth{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\topmargin by -\@IEEEtrantmpdimenB\relax
+ \divide\topmargin by 2\relax
+ \advance\topmargin by \@IEEEtrantmpdimenA\relax
+\else
+\if\@IEEEextractedtoken b\relax
+ \topmargin\paperheight
+ \advance\topmargin by -\textheight
+ % \textheight includes \topskip, but we should not count topskip whitespace here, backout
+ \advance \topmargin by \topskip
+ \settodepth{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\topmargin by -\@IEEEtrantmpdimenB\relax
+ \advance\topmargin by -\@IEEEtrantmpdimenA\relax
+\else
+ \if\@IEEEextractedtoken t\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsettopmargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}%
+ {Valid modes for \string\IEEEsettopmargin\space are: t, b, c, a and q.}\relax
+ \fi
+ \topmargin\@IEEEtrantmpdimenA\relax
+ \settoheight{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\topmargin by \@IEEEtrantmpdimenB\relax
+\fi\fi % if t, b, c
+% convert desired top margin into actual \topmargin
+% this is not done for the q or a modes because they are only adjustments
+\advance \topmargin by -\topskip
+\advance \topmargin by -1in
+\advance \topmargin by -\headheight
+\advance \topmargin by -\headsep
+\fi\fi % if q, a
+}
+
+
+
+% usage: \IEEEsetheadermargin[header sample][text sample]{mode: t, b, c, a}{margin/offset}
+% Differentially adjusts \topmargin and \headsep (such that their sum is unchanged)
+% based on the specified header margin.
+% Takes into consideration the base 1in offset, \headheight, \topskip, and (by default)
+% the actual height (or depth) of the \IEEEdefaultheadersampletext and
+% \IEEEdefaultsampletext text.
+% The available modes are:
+% t = top margin (top of the header text to the top of the page)
+% b = bottom margin (bottom of the header text to the top of the main text)
+% c = vertically centered between the main text and the top of the page,
+% with the given offset
+% a = adjust the vertical position using the given offset
+% For the offsets, positive values move the header downward.
+% \headheight, \headsep, \topskip and \topmargin should be set properly before
+% calling this function.
+\def\IEEEsetheadermargin{\@ifnextchar [{\@IEEEsetheadermargin}{\@IEEEsetheadermargin[\IEEEdefaultheadersampletext]}}
+\def\@IEEEsetheadermargin[#1]{\@ifnextchar [{\@@IEEEsetheadermargin[#1]}{\@@IEEEsetheadermargin[#1][\IEEEdefaultsampletext]}}
+\def\@@IEEEsetheadermargin[#1][#2]#3#4{\@IEEEtrantmpdimenA #4\relax
+\@IEEEextracttoken{#3}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEsetheadermargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}{Valid modes for \string\IEEEsetheadermargin\space are: t, b, c, and a.}\relax
+ \let\@IEEEextractedtoken=t\relax
+ \def\@IEEEextractedtokenmacro{t}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEsetheadermargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% handle each mode
+\if\@IEEEextractedtoken a\relax
+ % No need to do anything here and can pass through the adjustment
+ % value as is. The end adjustment of \topmargin and \headsep will
+ % do all that is needed
+\else
+\if\@IEEEextractedtoken c\relax
+ % get the bottom margin
+ \@IEEEtrantmpdimenB\headsep\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ \advance\@IEEEtrantmpdimenB by \topskip
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual header bottom margin
+ % subtract from it the top header margin
+ \advance\@IEEEtrantmpdimenB -1in\relax % take into consideration the system 1in offset of the top margin
+ \advance\@IEEEtrantmpdimenB by -\topmargin
+ \advance\@IEEEtrantmpdimenB by -\headheight
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the difference between the bottom and top margins
+ % we need to adjust by half this amount to center the header
+ \divide\@IEEEtrantmpdimenB by 2\relax
+ % and add to offset
+ \advance\@IEEEtrantmpdimenA by \@IEEEtrantmpdimenB
+\else
+\if\@IEEEextractedtoken b\relax
+ \@IEEEtrantmpdimenB\headsep\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ \advance\@IEEEtrantmpdimenB by \topskip
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual header bottom margin
+ % get the difference between the actual and the desired
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenA
+ \@IEEEtrantmpdimenA\@IEEEtrantmpdimenB
+\else
+ \if\@IEEEextractedtoken t\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetheadermargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}%
+ {Valid modes for \string\IEEEsetheadermargin\space are: t, b, c and a.}\relax
+ \fi
+ \@IEEEtrantmpdimenB 1in\relax % take into consideration the system 1in offset of the top margin
+ \advance\@IEEEtrantmpdimenB by \topmargin
+ \advance\@IEEEtrantmpdimenB by \headheight
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual header top margin
+ % get the difference between the desired and the actual
+ \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB
+\fi\fi % if t, b, c
+\fi % if a
+% advance \topmargin by the needed amount and reduce \headsep by the same
+% so as not to disturb the location of the main text
+\advance\topmargin by \@IEEEtrantmpdimenA\relax
+\advance\headsep by -\@IEEEtrantmpdimenA\relax
+}
+
+
+
+% usage: \IEEEsetfootermargin[footer sample][text sample]{mode: t, b, c, a}{margin/offset}
+% Adjusts \footskip based on the specified footer margin.
+% Takes into consideration the base 1in offset, \paperheight, \headheight,
+% \headsep, \textheight and (by default) the actual height (or depth) of the
+% \IEEEdefaultfootersampletext and \IEEEdefaultsampletext text.
+% The available modes are:
+% t = top margin (top of the footer text to the bottom of the main text)
+% b = bottom margin (bottom of the footer text to the bottom of page)
+% c = vertically centered between the main text and the bottom of the page,
+% with the given offset
+% a = adjust the vertical position using the given offset
+% For the offsets, positive values move the footer downward.
+% \headheight, \headsep, \topskip, \topmargin, and \textheight should be set
+% properly before calling this function.
+\def\IEEEsetfootermargin{\@ifnextchar [{\@IEEEsetfootermargin}{\@IEEEsetfootermargin[\IEEEdefaultfootersampletext]}}
+\def\@IEEEsetfootermargin[#1]{\@ifnextchar [{\@@IEEEsetfootermargin[#1]}{\@@IEEEsetfootermargin[#1][\IEEEdefaultsampletext]}}
+\def\@@IEEEsetfootermargin[#1][#2]#3#4{\@IEEEtrantmpdimenA #4\relax
+\@IEEEextracttoken{#3}\relax
+% check for mode errors
+\ifx\@IEEEextractedtokenmacro\@empty
+ \@IEEEclspkgerror{Empty mode type in \string\IEEEsetfootermargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}{Valid modes for \string\IEEEsetfootermargin\space are: t, b, c, and a.}\relax
+ \let\@IEEEextractedtoken=t\relax
+ \def\@IEEEextractedtokenmacro{t}\relax
+\else
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: \string\IEEEsetfootermargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+\fi
+% handle each mode
+\if\@IEEEextractedtoken a\relax
+ % No need to do anything here and can pass through the adjustment
+ % value as is. The end adjustment of \footskip will do all that
+ % is needed
+\else
+\if\@IEEEextractedtoken c\relax
+ % calculate the bottom margin
+ \@IEEEtrantmpdimenB 1in\relax % system 1in offset
+ \advance\@IEEEtrantmpdimenB\topmargin\relax
+ \advance\@IEEEtrantmpdimenB\headheight\relax
+ \advance\@IEEEtrantmpdimenB\headsep\relax
+ \advance\@IEEEtrantmpdimenB\textheight\relax
+ \advance\@IEEEtrantmpdimenB\footskip\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenC by \@IEEEtrantmpdimenB
+ \@IEEEtrantmpdimenB\paperheight
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual footer bottom margin
+ % now subtract off the footer top margin
+ \advance\@IEEEtrantmpdimenB -\footskip\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the difference between the bottom
+ % and top footer margins
+ % our adjustment must be half this value to center the footer
+ \divide\@IEEEtrantmpdimenB by 2\relax
+ % add to the offset
+ \advance\@IEEEtrantmpdimenA by \@IEEEtrantmpdimenB
+\else
+\if\@IEEEextractedtoken b\relax
+ % calculate the bottom margin
+ \@IEEEtrantmpdimenB 1in\relax % system 1in offset
+ \advance\@IEEEtrantmpdimenB\topmargin\relax
+ \advance\@IEEEtrantmpdimenB\headheight\relax
+ \advance\@IEEEtrantmpdimenB\headsep\relax
+ \advance\@IEEEtrantmpdimenB\textheight\relax
+ \advance\@IEEEtrantmpdimenB\footskip\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenC by \@IEEEtrantmpdimenB
+ \@IEEEtrantmpdimenB\paperheight
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual footer bottom margin
+ % get the difference between the actual and the desired
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenA
+ \@IEEEtrantmpdimenA\@IEEEtrantmpdimenB
+\else
+ \if\@IEEEextractedtoken t\relax
+ \else
+ \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetfootermargin\space (line \the\inputlineno).\MessageBreak
+ Defaulting to `t'}%
+ {Valid modes for \string\IEEEsetfootermargin\space are: t, b, c and a.}\relax
+ \fi
+ \@IEEEtrantmpdimenB\footskip\relax
+ \settodepth{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax
+ \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC
+ % at this point \@IEEEtrantmpdimenB has the actual footer top margin
+ % get the difference between the desired and the actual
+ \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB
+\fi\fi % if t, b, c
+\fi % if a
+% advance \footskip by the needed amount
+\advance\footskip by \@IEEEtrantmpdimenA\relax
+}
+
+
+% -- End page setup commands --
+
+
+
+
+% Itemize, Enumerate and Description (IED) List Controls
+% ***************************
+%
+%
+% The IEEE seems to use at least two different values by
+% which ITEMIZED list labels are indented to the right
+% For The Journal of Lightwave Technology (JLT) and The Journal
+% on Selected Areas in Communications (JSAC), they tend to use
+% an indention equal to \parindent. For Transactions on Communications
+% they tend to indent ITEMIZED lists a little more--- 1.3\parindent.
+% We'll provide both values here for you so that you can choose
+% which one you like in your document using a command such as:
+% setlength{\IEEEilabelindent}{\IEEEilabelindentB}
+\newdimen\IEEEilabelindentA
+\IEEEilabelindentA \parindent
+
+\newdimen\IEEEilabelindentB
+\IEEEilabelindentB 1.3\parindent
+% However, we'll default to using \parindent
+% which makes more sense to me
+\newdimen\IEEEilabelindent
+\IEEEilabelindent \IEEEilabelindentA
+
+
+% This controls the default amount the enumerated list labels
+% are indented to the right.
+% Normally, this is the same as the paragraph indention
+\newdimen\IEEEelabelindent
+\IEEEelabelindent \parindent
+
+% This controls the default amount the description list labels
+% are indented to the right.
+% Normally, this is the same as the paragraph indention
+\newdimen\IEEEdlabelindent
+\IEEEdlabelindent \parindent
+
+% This is the value actually used within the IED lists.
+% The IED environments automatically set its value to
+% one of the three values above, so global changes do
+% not have any effect
+\newdimen\IEEElabelindent
+\IEEElabelindent \parindent
+
+% The actual amount labels will be indented is
+% \IEEElabelindent multiplied by the factor below
+% corresponding to the level of nesting depth
+% This provides a means by which the user can
+% alter the effective \IEEElabelindent for deeper
+% levels
+% There may not be such a thing as correct "standard IEEE"
+% values. What the IEEE actually does may depend on the specific
+% circumstances.
+% The first list level almost always has full indention.
+% The second levels I've seen have only 75% of the normal indentation
+% Three level or greater nestings are very rare. I am guessing
+% that they don't use any indentation.
+\def\IEEElabelindentfactori{1.0} % almost always one
+\def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases
+\def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0?
+\def\IEEElabelindentfactoriv{0.0}
+\def\IEEElabelindentfactorv{0.0}
+\def\IEEElabelindentfactorvi{0.0}
+
+% value actually used within IED lists, it is auto
+% set to one of the 6 values above
+% global changes here have no effect
+\def\IEEElabelindentfactor{1.0}
+
+% This controls the default spacing between the end of the IED
+% list labels and the list text, when normal text is used for
+% the labels.
+\newdimen\IEEEiednormlabelsep
+\IEEEiednormlabelsep 0.6em
+
+% This controls the default spacing between the end of the IED
+% list labels and the list text, when math symbols are used for
+% the labels (nomenclature lists). The IEEE usually increases the
+% spacing in these cases
+\newdimen\IEEEiedmathlabelsep
+\IEEEiedmathlabelsep 1.2em
+
+% This controls the extra vertical separation put above and
+% below each IED list. The IEEE usually puts a little extra spacing
+% around each list. However, this spacing is barely noticeable.
+\newskip\IEEEiedtopsep
+\IEEEiedtopsep 2pt plus 1pt minus 1pt
+
+
+% This command is executed within each IED list environment
+% at the beginning of the list. You can use this to set the
+% parameters for some/all your IED list(s) without disturbing
+% global parameters that affect things other than lists.
+% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}}
+% will alter the \labelsep for the next list(s) until
+% \IEEEiedlistdecl is redefined.
+\def\IEEEiedlistdecl{\relax}
+
+% This command provides an easy way to set \leftmargin based
+% on the \labelwidth, \labelsep and the argument \IEEElabelindent
+% Usage: \IEEEcalcleftmargin{width-to-indent-the-label}
+% output is in the \leftmargin variable, i.e., effectively:
+% \leftmargin = argument + \labelwidth + \labelsep
+% Note controlled spacing here, shield end of lines with %
+\def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}%
+\addtolength{\leftmargin}{\labelwidth}%
+\addtolength{\leftmargin}{\labelsep}}
+
+% This command provides an easy way to set \labelwidth to the
+% width of the given text. It is the same as
+% \settowidth{\labelwidth}{label-text}
+% and useful as a shorter alternative.
+% Typically used to set \labelwidth to be the width
+% of the longest label in the list
+\def\IEEEsetlabelwidth#1{\settowidth{\labelwidth}{#1}}
+
+% When this command is executed, IED lists will use the
+% IEEEiedmathlabelsep label separation rather than the normal
+% spacing. To have an effect, this command must be executed via
+% the \IEEEiedlistdecl or within the option of the IED list
+% environments.
+\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}}
+
+% A flag which controls whether the IED lists automatically
+% calculate \leftmargin from \IEEElabelindent, \labelwidth and \labelsep
+% Useful if you want to specify your own \leftmargin
+% This flag must be set (\IEEEnocalcleftmargintrue or \IEEEnocalcleftmarginfalse)
+% via the \IEEEiedlistdecl or within the option of the IED list
+% environments to have an effect.
+\newif\ifIEEEnocalcleftmargin
+\IEEEnocalcleftmarginfalse
+
+% A flag which controls whether \IEEElabelindent is multiplied by
+% the \IEEElabelindentfactor for each list level.
+% This flag must be set via the \IEEEiedlistdecl or within the option
+% of the IED list environments to have an effect.
+\newif\ifIEEEnolabelindentfactor
+\IEEEnolabelindentfactorfalse
+
+
+% internal variable to indicate type of IED label
+% justification
+% 0 - left; 1 - center; 2 - right
+\def\@IEEEiedjustify{0}
+
+
+
+% commands to allow the user to control IED
+% label justifications. Use these commands within
+% the IED environment option or in the \IEEEiedlistdecl
+% Note that changing the normal list justifications
+% is nonstandard and the IEEE may not like it if you do so!
+% I include these commands as they may be helpful to
+% those who are using these enhanced list controls for
+% other non-IEEE related LaTeX work.
+% itemize and enumerate automatically default to right
+% justification, description defaults to left.
+\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left
+\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center
+\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right
+
+
+
+
+% commands to save to and restore from the list parameter copies
+% this allows us to set all the list parameters within
+% the list_decl and prevent \list (and its \@list)
+% from overriding any of our parameters
+% V1.6 use \edefs instead of dimen's to conserve dimen registers
+% Note controlled spacing here, shield end of lines with %
+\def\@IEEEsavelistparams{\edef\@IEEEiedtopsep{\the\topsep}%
+\edef\@IEEEiedlabelwidth{\the\labelwidth}%
+\edef\@IEEEiedlabelsep{\the\labelsep}%
+\edef\@IEEEiedleftmargin{\the\leftmargin}%
+\edef\@IEEEiedpartopsep{\the\partopsep}%
+\edef\@IEEEiedparsep{\the\parsep}%
+\edef\@IEEEieditemsep{\the\itemsep}%
+\edef\@IEEEiedrightmargin{\the\rightmargin}%
+\edef\@IEEEiedlistparindent{\the\listparindent}%
+\edef\@IEEEieditemindent{\the\itemindent}}
+
+% Note controlled spacing here
+\def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax%
+\labelwidth\@IEEEiedlabelwidth\relax%
+\labelsep\@IEEEiedlabelsep\relax%
+\leftmargin\@IEEEiedleftmargin\relax%
+\partopsep\@IEEEiedpartopsep\relax%
+\parsep\@IEEEiedparsep\relax%
+\itemsep\@IEEEieditemsep\relax%
+\rightmargin\@IEEEiedrightmargin\relax%
+\listparindent\@IEEEiedlistparindent\relax%
+\itemindent\@IEEEieditemindent\relax}
+
+
+% v1.6b provide original LaTeX IED list environments
+% note that latex.ltx defines \itemize and \enumerate, but not \description
+% which must be created by the base classes
+% save original LaTeX itemize and enumerate
+\let\LaTeXitemize\itemize
+\let\endLaTeXitemize\enditemize
+\let\LaTeXenumerate\enumerate
+\let\endLaTeXenumerate\endenumerate
+% base class should define \description
+\let\LaTeXdescription\description
+\let\endLaTeXdescription\enddescription
+
+
+% override LaTeX's default IED lists, if the user requested it
+\if@IEEETOOLSredeflists
+\def\itemize{\@IEEEitemize}
+\def\enditemize{\@endIEEEitemize}
+\def\enumerate{\@IEEEenumerate}
+\def\endenumerate{\@endIEEEenumerate}
+\def\description{\@IEEEdescription}
+\def\enddescription{\@endIEEEdescription}
+\fi
+
+
+% provide the user with the IEEE IED commands
+\def\IEEEitemize{\@IEEEitemize}
+\def\endIEEEitemize{\@endIEEEitemize}
+\def\IEEEenumerate{\@IEEEenumerate}
+\def\endIEEEenumerate{\@endIEEEenumerate}
+\def\IEEEdescription{\@IEEEdescription}
+\def\endIEEEdescription{\@endIEEEdescription}
+
+
+% V1.6 we want to keep the IEEEtran IED list definitions as our own internal
+% commands so they are protected against redefinition
+\def\@IEEEitemize{\@ifnextchar[{\@@IEEEitemize}{\@@IEEEitemize[\relax]}}
+\def\@IEEEenumerate{\@ifnextchar[{\@@IEEEenumerate}{\@@IEEEenumerate[\relax]}}
+\def\@IEEEdescription{\@ifnextchar[{\@@IEEEdescription}{\@@IEEEdescription[\relax]}}
+\def\@endIEEEitemize{\endlist}
+\def\@endIEEEenumerate{\endlist}
+\def\@endIEEEdescription{\endlist}
+
+
+% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS
+% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS
+% IEEEtran itemized list MDS 1/2001
+% Note controlled spacing here, shield end of lines with %
+\def\@@IEEEitemize[#1]{%
+ \ifnum\@itemdepth>3\relax\@toodeep\else%
+ \ifnum\@listdepth>5\relax\@toodeep\else%
+ \advance\@itemdepth\@ne%
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ % get the IEEElabelindentfactor for this level
+ \advance\@listdepth\@ne% we need to know what the level WILL be
+ \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
+ \advance\@listdepth-\@ne% undo our increment
+ \def\@IEEEiedjustify{2}% right justified labels are default
+ % set other defaults
+ \IEEEnocalcleftmarginfalse%
+ \IEEEnolabelindentfactorfalse%
+ \topsep\IEEEiedtopsep%
+ \IEEElabelindent\IEEEilabelindent%
+ \labelsep\IEEEiednormlabelsep%
+ \partopsep 0ex%
+ \parsep 0ex%
+ \itemsep 0ex%
+ \rightmargin 0em%
+ \listparindent 0em%
+ \itemindent 0em%
+ % calculate the label width
+ % the user can override this later if
+ % they specified a \labelwidth
+ \settowidth{\labelwidth}{\csname labelitem\romannumeral\the\@itemdepth\endcsname}%
+ \@IEEEsavelistparams% save our list parameters
+ \list{\csname\@itemitem\endcsname}{%
+ \@IEEErestorelistparams% override any list{} changes
+ % to our globals
+ \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel
+ \IEEEiedlistdecl% let user alter parameters
+ #1\relax%
+ % If the user has requested not to use the
+ % IEEElabelindent factor, don't revise \IEEElabelindent
+ \ifIEEEnolabelindentfactor\relax%
+ \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent%
+ \fi%
+ % Unless the user has requested otherwise,
+ % calculate our left margin based
+ % on \IEEElabelindent, \labelwidth and
+ % \labelsep
+ \ifIEEEnocalcleftmargin\relax%
+ \else\IEEEcalcleftmargin{\IEEElabelindent}%
+ \fi}\fi\fi}%
+
+
+% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS
+% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS
+% IEEEtran enumerate list MDS 1/2001
+% Note controlled spacing here, shield end of lines with %
+\def\@@IEEEenumerate[#1]{%
+ \ifnum\@enumdepth>3\relax\@toodeep\else%
+ \ifnum\@listdepth>5\relax\@toodeep\else%
+ \advance\@enumdepth\@ne%
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ % get the IEEElabelindentfactor for this level
+ \advance\@listdepth\@ne% we need to know what the level WILL be
+ \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
+ \advance\@listdepth-\@ne% undo our increment
+ \def\@IEEEiedjustify{2}% right justified labels are default
+ % set other defaults
+ \IEEEnocalcleftmarginfalse%
+ \IEEEnolabelindentfactorfalse%
+ \topsep\IEEEiedtopsep%
+ \IEEElabelindent\IEEEelabelindent%
+ \labelsep\IEEEiednormlabelsep%
+ \partopsep 0ex%
+ \parsep 0ex%
+ \itemsep 0ex%
+ \rightmargin 0em%
+ \listparindent 0em%
+ \itemindent 0em%
+ % calculate the label width
+ % We'll set it to the width suitable for all labels using
+ % normalfont 1) to 9)
+ % The user can override this later
+ \settowidth{\labelwidth}{9)}%
+ \@IEEEsavelistparams% save our list parameters
+ \list{\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}%
+ \@IEEErestorelistparams% override any list{} changes
+ % to our globals
+ \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel
+ \IEEEiedlistdecl% let user alter parameters
+ #1\relax%
+ % If the user has requested not to use the
+ % IEEElabelindent factor, don't revise \IEEElabelindent
+ \ifIEEEnolabelindentfactor\relax%
+ \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent%
+ \fi%
+ % Unless the user has requested otherwise,
+ % calculate our left margin based
+ % on \IEEElabelindent, \labelwidth and
+ % \labelsep
+ \ifIEEEnocalcleftmargin\relax%
+ \else\IEEEcalcleftmargin{\IEEElabelindent}%
+ \fi}\fi\fi}%
+
+
+% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS
+% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS
+% IEEEtran description list MDS 1/2001
+% Note controlled spacing here, shield end of lines with %
+\def\@@IEEEdescription[#1]{%
+ \ifnum\@listdepth>5\relax\@toodeep\else%
+ % get the IEEElabelindentfactor for this level
+ \advance\@listdepth\@ne% we need to know what the level WILL be
+ \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
+ \advance\@listdepth-\@ne% undo our increment
+ \def\@IEEEiedjustify{0}% left justified labels are default
+ % set other defaults
+ \IEEEnocalcleftmarginfalse%
+ \IEEEnolabelindentfactorfalse%
+ \topsep\IEEEiedtopsep%
+ \IEEElabelindent\IEEEdlabelindent%
+ % assume normal labelsep
+ \labelsep\IEEEiednormlabelsep%
+ \partopsep 0ex%
+ \parsep 0ex%
+ \itemsep 0ex%
+ \rightmargin 0em%
+ \listparindent 0em%
+ \itemindent 0em%
+ % Bogus label width in case the user forgets
+ % to set it.
+ % TIP: If you want to see what a variable's width is you
+ % can use the TeX command \showthe\width-variable to
+ % display it on the screen during compilation
+ % (This might be helpful to know when you need to find out
+ % which label is the widest)
+ \settowidth{\labelwidth}{Hello}%
+ \@IEEEsavelistparams% save our list parameters
+ \list{}{\@IEEErestorelistparams% override any list{} changes
+ % to our globals
+ \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel
+ \IEEEiedlistdecl% let user alter parameters
+ #1\relax%
+ % If the user has requested not to use the
+ % labelindent factor, don't revise \IEEElabelindent
+ \ifIEEEnolabelindentfactor\relax%
+ \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent%
+ \fi%
+ % Unless the user has requested otherwise,
+ % calculate our left margin based
+ % on \IEEElabelindent, \labelwidth and
+ % \labelsep
+ \ifIEEEnocalcleftmargin\relax%
+ \else\IEEEcalcleftmargin{\IEEElabelindent}\relax%
+ \fi}\fi}
+
+% v1.6b we use one makelabel that does justification as needed.
+\def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax
+\makebox[\labelwidth][l]{\normalfont #1}\else
+\if\@IEEEiedjustify 1\relax
+\makebox[\labelwidth][c]{\normalfont #1}\else
+\makebox[\labelwidth][r]{\normalfont #1}\fi\fi}
+
+
+
+
+
+
+
+
+
+% used only by IEEEtran's IEEEeqnarray as other packages may
+% have their own, different, implementations
+\newcounter{IEEEsubequation}[equation]
+
+% e.g., "1a" (used only by IEEEtran's IEEEeqnarray)
+\def\theIEEEsubequation{\theequation\alph{IEEEsubequation}}
+% just like LaTeX2e's \@eqnnum
+\def\theequationdis{(\theequation)}% (1)
+% IEEEsubequation used only by IEEEtran's IEEEeqnarray
+\def\theIEEEsubequationdis{(\theIEEEsubequation)}% (1a)
+
+
+
+
+%%
+%% START OF IEEEeqnarray DEFINITIONS
+%%
+%% Inspired by the concepts, examples, and previous works of LaTeX
+%% coders and developers such as Donald Arseneau, Fred Bartlett,
+%% David Carlisle, Tony Liu, Frank Mittelbach, Piet van Oostrum,
+%% Roland Winkler and Mark Wooding.
+%% I don't make the claim that my work here is even near their calibre. ;)
+
+
+\newif\if@IEEEeqnarrayboxnojot% flag to indicate if the environment was called as the star form
+\@IEEEeqnarrayboxnojotfalse
+
+\newif\if@advanceIEEEeqncolcnt% tracks if the environment should advance the col counter
+% allows a way to make an \IEEEeqnarraybox that can be used within an \IEEEeqnarray
+% used by IEEEeqnarraymulticol so that it can work properly in both
+\@advanceIEEEeqncolcnttrue
+
+\newcount\@IEEEeqnnumcols % tracks how many IEEEeqnarray cols are defined
+\newcount\@IEEEeqncolcnt % tracks how many IEEEeqnarray cols the user actually used
+
+
+% The default math style used by the columns
+\def\IEEEeqnarraymathstyle{\displaystyle}
+% The default text style used by the columns
+% default to using the current font
+\def\IEEEeqnarraytextstyle{\relax}
+
+% like the iedlistdecl but for \IEEEeqnarray
+\def\IEEEeqnarraydecl{\relax}
+\def\IEEEeqnarrayboxdecl{\relax}
+
+
+
+% V1.8 flags to indicate that equation numbering is to persist
+\newif\if@IEEEeqnumpersist%
+\@IEEEeqnumpersistfalse
+\newif\if@IEEEsubeqnumpersist%
+\@IEEEsubeqnumpersistfalse
+%
+% V1.8 flags to indicate if (sub)equation number of last line was preadvanced
+\newif\if@IEEEeqnumpreadv%
+\@IEEEeqnumpreadvfalse
+\newif\if@IEEEsubeqnumpreadv%
+\@IEEEsubeqnumpreadvfalse
+
+\newcount\@IEEEsubeqnnumrollback% saves previous value of IEEEsubequation number in case we need to restore it
+
+% \yesnumber is the opposite of \nonumber
+% a novel concept with the same def as the equationarray package
+% However, we give IEEE versions too since some LaTeX packages such as
+% the MDWtools mathenv.sty redefine \nonumber to something else.
+% This command is intended for use in non-IEEEeqnarray math environments
+\providecommand{\yesnumber}{\global\@eqnswtrue}
+
+
+% IEEEyes/nonumber
+% V1.8 add persistant * forms
+% These commands can alter the type of equation an IEEEeqnarray line is.
+\def\IEEEyesnumber{\@ifstar{\global\@IEEEeqnumpersisttrue\global\@IEEEsubeqnumpersistfalse\@IEEEyesnumber}{\@IEEEyesnumber}}
+
+\def\@IEEEyesnumber{\global\@eqnswtrue
+\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray
+\ifnum\c@IEEEsubequation>0\relax
+ \stepcounter{equation}\setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+\fi
+% even if we reached this eqn num via a preadv, it is legit now
+\global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse
+\fi}
+
+\def\IEEEnonumber{\@ifstar{\global\@IEEEeqnumpersistfalse\global\@IEEEsubeqnumpersistfalse\global\@eqnswfalse}{\global\@eqnswfalse}}
+
+
+\def\IEEEyessubnumber{\@ifstar{\global\@IEEEsubeqnumpersisttrue\@IEEEyessubnumber}{\@IEEEyessubnumber}}
+%
+\def\@IEEEyessubnumber{\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray
+ \ifnum\c@IEEEsubequation>0\relax% if it already is a subequation, we are good to go as-is
+ \else% if we are a regular equation we have to watch out for two cases
+ \if@IEEEeqnumpreadv% if this equation is the result of a preadvance, backout and bump the sub eqnnum
+ \global\advance\c@equation\m@ne\global\c@IEEEsubequation=\@IEEEsubeqnnumrollback\addtocounter{IEEEsubequation}{1}\relax
+ \else% non-preadvanced equations just need initialization of their sub eqnnum
+ \setcounter{IEEEsubequation}{1}\relax
+ \fi
+ \fi% fi already is subequation
+ \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label
+ \global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse% no longer a preadv anymore
+ \global\@eqnswtrue
+\fi}
+
+
+\def\IEEEnosubnumber{\@ifstar{\global\@IEEEsubeqnumpersistfalse\@IEEEnosubnumber}{\@IEEEnosubnumber}}
+%
+\def\@IEEEnosubnumber{\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray
+ \if@eqnsw % we do nothing unless we know we will display because we play with the counters here
+ % if it currently is a subequation, bump up to the next equation number and turn off the subequation
+ \ifnum\c@IEEEsubequation>0\relax\addtocounter{equation}{1}\setcounter{IEEEsubequation}{0}\relax
+ \fi
+ \global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse% no longer a preadv anymore
+ \gdef\@currentlabel{\p@equation\theequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+ \fi
+\fi}
+
+
+
+% allows users to "push away" equations that get too close to the equation numbers
+\def\IEEEeqnarraynumspace{\hphantom{\ifnum\c@IEEEsubequation>0\relax\theIEEEsubequationdis\else\theequationdis\fi}}
+
+% provides a way to span multiple columns within IEEEeqnarray environments
+% will consider \if@advanceIEEEeqncolcnt before globally advancing the
+% column counter - so as to work within \IEEEeqnarraybox
+% usage: \IEEEeqnarraymulticol{number cols. to span}{col type}{cell text}
+\long\def\IEEEeqnarraymulticol#1#2#3{\multispan{#1}\relax
+% check if column is defined for the precolumn definition
+% We have to be careful here because TeX scans for & even within an \iffalse
+% where it does not expand macros. So, if we used only one \ifx and a #3
+% appeared in the false branch and the user inserted another alignment
+% structure that uses & in the \IEEEeqnarraymulticol{}, TeX will not see that
+% there is an inner alignment in the false branch yet still will see any &
+% there and will think that they apply to the outer alignment resulting in an
+% incomplete \ifx error.
+% So, here we use separate checks for the pre and post parts in order to keep
+% the #3 outside of all conditionals.
+\relax\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined\relax
+\csname @IEEEeqnarraycolPRE#2\endcsname
+\else% if not, error and use default type
+\@IEEEclspkgerror{Invalid column type "#2" in \string\IEEEeqnarraymulticol.\MessageBreak
+Using a default centering column instead}%
+{You must define IEEEeqnarray column types before use.}%
+\csname @IEEEeqnarraycolPRE@IEEEdefault\endcsname
+\fi
+% The ten \relax are to help prevent misleading error messages in case a user
+% accidently inserted a macro that tries to acquire additional arguments.
+#3\relax\relax\relax\relax\relax\relax\relax\relax\relax\relax
+% check if column is defined for the postcolumn definition
+\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined\relax
+\csname @IEEEeqnarraycolPOST#2\endcsname
+\else% if not, use the default type
+\csname @IEEEeqnarraycolPOST@IEEEdefault\endcsname
+\fi
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by #1\relax\fi}
+
+% like \omit, but maintains track of the column counter for \IEEEeqnarray
+\def\IEEEeqnarrayomit{\omit\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by 1\relax\fi}
+
+
+% provides a way to define a letter referenced column type
+% usage: \IEEEeqnarraydefcol{col. type letter/name}{pre insertion text}{post insertion text}
+\def\IEEEeqnarraydefcol#1#2#3{\expandafter\def\csname @IEEEeqnarraycolPRE#1\endcsname{#2}%
+\expandafter\def\csname @IEEEeqnarraycolPOST#1\endcsname{#3}%
+\expandafter\def\csname @IEEEeqnarraycolDEF#1\endcsname{1}}
+
+
+% provides a way to define a numerically referenced inter-column glue types
+% usage: \IEEEeqnarraydefcolsep{col. glue number}{glue definition}
+\def\IEEEeqnarraydefcolsep#1#2{\expandafter\def\csname @IEEEeqnarraycolSEP\romannumeral #1\endcsname{#2}%
+\expandafter\def\csname @IEEEeqnarraycolSEPDEF\romannumeral #1\endcsname{1}}
+
+
+\def\@IEEEeqnarraycolisdefined{1}% just a macro for 1, used for checking undefined column types
+
+
+% expands and appends the given argument to the \@IEEEtrantmptoksA token list
+% used to build up the \halign preamble
+\def\@IEEEappendtoksA#1{\edef\@@IEEEappendtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA #1}}%
+\@@IEEEappendtoksA}
+
+% also appends to \@IEEEtrantmptoksA, but does not expand the argument
+% uses \toks8 as a scratchpad register
+\def\@IEEEappendNOEXPANDtoksA#1{\toks8={#1}%
+\edef\@@IEEEappendNOEXPANDtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA\the\toks8}}%
+\@@IEEEappendNOEXPANDtoksA}
+
+% define some common column types for the user
+% math
+\IEEEeqnarraydefcol{l}{$\IEEEeqnarraymathstyle}{$\hfil}
+\IEEEeqnarraydefcol{c}{\hfil$\IEEEeqnarraymathstyle}{$\hfil}
+\IEEEeqnarraydefcol{r}{\hfil$\IEEEeqnarraymathstyle}{$}
+\IEEEeqnarraydefcol{L}{$\IEEEeqnarraymathstyle{}}{{}$\hfil}
+\IEEEeqnarraydefcol{C}{\hfil$\IEEEeqnarraymathstyle{}}{{}$\hfil}
+\IEEEeqnarraydefcol{R}{\hfil$\IEEEeqnarraymathstyle{}}{{}$}
+% text
+\IEEEeqnarraydefcol{s}{\IEEEeqnarraytextstyle}{\hfil}
+\IEEEeqnarraydefcol{t}{\hfil\IEEEeqnarraytextstyle}{\hfil}
+\IEEEeqnarraydefcol{u}{\hfil\IEEEeqnarraytextstyle}{}
+
+% vertical rules
+\IEEEeqnarraydefcol{v}{}{\vrule width\arrayrulewidth}
+\IEEEeqnarraydefcol{vv}{\vrule width\arrayrulewidth\hfil}{\hfil\vrule width\arrayrulewidth}
+\IEEEeqnarraydefcol{V}{}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth}
+\IEEEeqnarraydefcol{VV}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth\hfil}%
+{\hfil\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth}
+
+% horizontal rules
+\IEEEeqnarraydefcol{h}{}{\leaders\hrule height\arrayrulewidth\hfil}
+\IEEEeqnarraydefcol{H}{}{\leaders\vbox{\hrule width\arrayrulewidth\vskip\doublerulesep\hrule width\arrayrulewidth}\hfil}
+
+% plain
+\IEEEeqnarraydefcol{x}{}{}
+\IEEEeqnarraydefcol{X}{$}{$}
+
+% the default column type to use in the event a column type is not defined
+\IEEEeqnarraydefcol{@IEEEdefault}{\hfil$\IEEEeqnarraymathstyle}{$\hfil}
+
+
+% a zero tabskip (used for "-" col types)
+\def\@IEEEeqnarraycolSEPzero{0pt plus 0pt minus 0pt}
+% a centering tabskip (used for "+" col types)
+\def\@IEEEeqnarraycolSEPcenter{1000pt plus 0pt minus 1000pt}
+
+% top level default tabskip glues for the start, end, and inter-column
+% may be reset within environments not always at the top level, e.g., \IEEEeqnarraybox
+\edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPcenter}% default start glue
+\edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPcenter}% default end glue
+\edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue
+
+
+
+% creates a vertical rule that extends from the bottom to the top a a cell
+% Provided in case other packages redefine \vline some other way.
+% usage: \IEEEeqnarrayvrule[rule thickness]
+% If no argument is provided, \arrayrulewidth will be used for the rule thickness.
+\newcommand\IEEEeqnarrayvrule[1][\arrayrulewidth]{\vrule\@width#1\relax}
+
+% creates a blank separator row
+% usage: \IEEEeqnarrayseprow[separation length][font size commands]
+% default is \IEEEeqnarrayseprow[0.25\normalbaselineskip][\relax]
+% blank arguments inherit the default values
+% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers
+\def\IEEEeqnarrayseprow{\relax\@ifnextchar[{\@IEEEeqnarrayseprow}{\@IEEEeqnarrayseprow[0.25\normalbaselineskip]}}
+\def\@IEEEeqnarrayseprow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprow[#1]}{\@@IEEEeqnarrayseprow[#1][\relax]}}
+\def\@@IEEEeqnarrayseprow[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}%
+\ifx\@IEEEeqnarrayseprowARGONE\@empty%
+% get the skip value, based on the font commands
+% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3
+% assign within a bogus box to confine the font changes
+{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}%
+\else%
+{\setbox0=\hbox{#2\relax\global\skip5=#1}}%
+\fi%
+\@IEEEeqnarrayhoptolastcolumn\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax}
+
+% creates a blank separator row, but omits all the column templates
+% usage: \IEEEeqnarrayseprowcut[separation length][font size commands]
+% default is \IEEEeqnarrayseprowcut[0.25\normalbaselineskip][\relax]
+% blank arguments inherit the default values
+% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers
+\def\IEEEeqnarrayseprowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\@ifnextchar[{\@IEEEeqnarrayseprowcut}{\@IEEEeqnarrayseprowcut[0.25\normalbaselineskip]}}
+\def\@IEEEeqnarrayseprowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprowcut[#1]}{\@@IEEEeqnarrayseprowcut[#1][\relax]}}
+\def\@@IEEEeqnarrayseprowcut[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}%
+\ifx\@IEEEeqnarrayseprowARGONE\@empty%
+% get the skip value, based on the font commands
+% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3
+% assign within a bogus box to confine the font changes
+{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}%
+\else%
+{\setbox0=\hbox{#2\relax\global\skip5=#1}}%
+\fi%
+\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax}
+
+
+
+% draws a single rule across all the columns optional
+% argument determines the rule width, \arrayrulewidth is the default
+% updates column counter as needed and turns off struts
+% usage: \IEEEeqnarrayrulerow[rule line thickness]
+\def\IEEEeqnarrayrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\@ifnextchar[{\@IEEEeqnarrayrulerow}{\@IEEEeqnarrayrulerow[\arrayrulewidth]}}
+\def\@IEEEeqnarrayrulerow[#1]{\leaders\hrule height#1\hfil\relax% put in our rule
+% turn off any struts
+\IEEEeqnarraystrutsize{0pt}{0pt}[\relax]\relax}
+
+
+% draws a double rule by using a single rule row, a separator row, and then
+% another single rule row
+% first optional argument determines the rule thicknesses, \arrayrulewidth is the default
+% second optional argument determines the rule spacing, \doublerulesep is the default
+% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing]
+\def\IEEEeqnarraydblrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\@ifnextchar[{\@IEEEeqnarraydblrulerow}{\@IEEEeqnarraydblrulerow[\arrayrulewidth]}}
+\def\@IEEEeqnarraydblrulerow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerow[#1]}%
+{\@@IEEEeqnarraydblrulerow[#1][\doublerulesep]}}
+\def\@@IEEEeqnarraydblrulerow[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}%
+% we allow the user to say \IEEEeqnarraydblrulerow[][]
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\@IEEEeqnarrayrulerow[\arrayrulewidth]%
+\else%
+\@IEEEeqnarrayrulerow[#1]\relax%
+\fi%
+\def\@IEEEeqnarraydblrulerowARG{#2}%
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\\\IEEEeqnarrayseprow[\doublerulesep][\relax]%
+\else%
+\\\IEEEeqnarrayseprow[#2][\relax]%
+\fi%
+\\\multispan{\@IEEEeqnnumcols}%
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\def\@IEEEeqnarraydblrulerowARG{#1}%
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\@IEEEeqnarrayrulerow[\arrayrulewidth]%
+\else%
+\@IEEEeqnarrayrulerow[#1]%
+\fi%
+}
+
+% draws a double rule by using a single rule row, a separator (cutting) row, and then
+% another single rule row
+% first optional argument determines the rule thicknesses, \arrayrulewidth is the default
+% second optional argument determines the rule spacing, \doublerulesep is the default
+% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing]
+\def\IEEEeqnarraydblrulerowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\@ifnextchar[{\@IEEEeqnarraydblrulerowcut}{\@IEEEeqnarraydblrulerowcut[\arrayrulewidth]}}
+\def\@IEEEeqnarraydblrulerowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerowcut[#1]}%
+{\@@IEEEeqnarraydblrulerowcut[#1][\doublerulesep]}}
+\def\@@IEEEeqnarraydblrulerowcut[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}%
+% we allow the user to say \IEEEeqnarraydblrulerow[][]
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\@IEEEeqnarrayrulerow[\arrayrulewidth]%
+\else%
+\@IEEEeqnarrayrulerow[#1]%
+\fi%
+\def\@IEEEeqnarraydblrulerowARG{#2}%
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\\\IEEEeqnarrayseprowcut[\doublerulesep][\relax]%
+\else%
+\\\IEEEeqnarrayseprowcut[#2][\relax]%
+\fi%
+\\\multispan{\@IEEEeqnnumcols}%
+% advance column counter only if the IEEEeqnarray environment wants it
+\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%
+\def\@IEEEeqnarraydblrulerowARG{#1}%
+\ifx\@IEEEeqnarraydblrulerowARG\@empty%
+\@IEEEeqnarrayrulerow[\arrayrulewidth]%
+\else%
+\@IEEEeqnarrayrulerow[#1]%
+\fi%
+}
+
+
+
+% inserts a full row's worth of &'s
+% relies on \@IEEEeqnnumcols to provide the correct number of columns
+% uses \@IEEEtrantmptoksA, \count0 as scratch registers
+\def\@IEEEeqnarrayhoptolastcolumn{\@IEEEtrantmptoksA={}\count0=1\relax%
+\loop% add cols if the user did not use them all
+\ifnum\count0<\@IEEEeqnnumcols\relax%
+\@IEEEappendtoksA{&}%
+\advance\count0 by 1\relax% update the col count
+\repeat%
+\the\@IEEEtrantmptoksA%execute the &'s
+}
+
+
+
+\newif\if@IEEEeqnarrayISinner % flag to indicate if we are within the lines
+\@IEEEeqnarrayISinnerfalse % of an IEEEeqnarray - after the IEEEeqnarraydecl
+
+\edef\@IEEEeqnarrayTHEstrutheight{0pt} % height and depth of IEEEeqnarray struts
+\edef\@IEEEeqnarrayTHEstrutdepth{0pt}
+
+\edef\@IEEEeqnarrayTHEmasterstrutheight{0pt} % default height and depth of
+\edef\@IEEEeqnarrayTHEmasterstrutdepth{0pt} % struts within an IEEEeqnarray
+
+\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{0pt} % saved master strut height
+\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{0pt} % and depth
+
+\newif\if@IEEEeqnarrayusemasterstrut % flag to indicate that the master strut value
+\@IEEEeqnarrayusemasterstruttrue % is to be used
+
+
+
+% saves the strut height and depth of the master strut
+\def\@IEEEeqnarraymasterstrutsave{\relax%
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%
+% remove stretchability
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% save values
+\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{\the\dimen2}}
+
+% restores the strut height and depth of the master strut
+\def\@IEEEeqnarraymasterstrutrestore{\relax%
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutHSAVE\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutDSAVE\relax%
+% remove stretchability
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% restore values
+\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}}
+
+
+% globally restores the strut height and depth to the
+% master values and sets the master strut flag to true
+\def\@IEEEeqnarraystrutreset{\relax%
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%
+% remove stretchability
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% restore values
+\xdef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\xdef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\global\@IEEEeqnarrayusemasterstruttrue}
+
+
+% if the master strut is not to be used, make the current
+% values of \@IEEEeqnarrayTHEstrutheight, \@IEEEeqnarrayTHEstrutdepth
+% and the use master strut flag, global
+% this allows user strut commands issued in the last column to be carried
+% into the isolation/strut column
+\def\@IEEEeqnarrayglobalizestrutstatus{\relax%
+\if@IEEEeqnarrayusemasterstrut\else%
+\xdef\@IEEEeqnarrayTHEstrutheight{\@IEEEeqnarrayTHEstrutheight}%
+\xdef\@IEEEeqnarrayTHEstrutdepth{\@IEEEeqnarrayTHEstrutdepth}%
+\global\@IEEEeqnarrayusemasterstrutfalse%
+\fi}
+
+
+
+% usage: \IEEEeqnarraystrutsize{height}{depth}[font size commands]
+% If called outside the lines of an IEEEeqnarray, sets the height
+% and depth of both the master and local struts. If called inside
+% an IEEEeqnarray line, sets the height and depth of the local strut
+% only and sets the flag to indicate the use of the local strut
+% values. If the height or depth is left blank, 0.7\normalbaselineskip
+% and 0.3\normalbaselineskip will be used, respectively.
+% The optional argument can be used to evaluate the lengths under
+% a different font size and styles. If none is specified, the current
+% font is used.
+% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2
+\def\IEEEeqnarraystrutsize#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsize{#1}{#2}}{\@IEEEeqnarraystrutsize{#1}{#2}[\relax]}}
+\def\@IEEEeqnarraystrutsize#1#2[#3]{\def\@IEEEeqnarraystrutsizeARG{#1}%
+\ifx\@IEEEeqnarraystrutsizeARG\@empty%
+{\setbox0=\hbox{#3\relax\global\skip3=0.7\normalbaselineskip}}%
+\skip0=\skip3\relax%
+\else% arg one present
+{\setbox0=\hbox{#3\relax\global\skip3=#1\relax}}%
+\skip0=\skip3\relax%
+\fi% if null arg
+\def\@IEEEeqnarraystrutsizeARG{#2}%
+\ifx\@IEEEeqnarraystrutsizeARG\@empty%
+{\setbox0=\hbox{#3\relax\global\skip3=0.3\normalbaselineskip}}%
+\skip2=\skip3\relax%
+\else% arg two present
+{\setbox0=\hbox{#3\relax\global\skip3=#2\relax}}%
+\skip2=\skip3\relax%
+\fi% if null arg
+% remove stretchability, just to be safe
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% dimen0 = height, dimen2 = depth
+\if@IEEEeqnarrayISinner% inner does not touch master strut size
+\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\@IEEEeqnarrayusemasterstrutfalse% do not use master
+\else% outer, have to set master strut too
+\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}%
+\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\@IEEEeqnarrayusemasterstruttrue% use master strut
+\fi}
+
+
+% usage: \IEEEeqnarraystrutsizeadd{added height}{added depth}[font size commands]
+% If called outside the lines of an IEEEeqnarray, adds the given height
+% and depth to both the master and local struts.
+% If called inside an IEEEeqnarray line, adds the given height and depth
+% to the local strut only and sets the flag to indicate the use
+% of the local strut values.
+% In both cases, if a height or depth is left blank, 0pt is used instead.
+% The optional argument can be used to evaluate the lengths under
+% a different font size and styles. If none is specified, the current
+% font is used.
+% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2
+\def\IEEEeqnarraystrutsizeadd#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsizeadd{#1}{#2}}{\@IEEEeqnarraystrutsizeadd{#1}{#2}[\relax]}}
+\def\@IEEEeqnarraystrutsizeadd#1#2[#3]{\def\@IEEEeqnarraystrutsizearg{#1}%
+\ifx\@IEEEeqnarraystrutsizearg\@empty%
+\skip0=0pt\relax%
+\else% arg one present
+{\setbox0=\hbox{#3\relax\global\skip3=#1}}%
+\skip0=\skip3\relax%
+\fi% if null arg
+\def\@IEEEeqnarraystrutsizearg{#2}%
+\ifx\@IEEEeqnarraystrutsizearg\@empty%
+\skip2=0pt\relax%
+\else% arg two present
+{\setbox0=\hbox{#3\relax\global\skip3=#2}}%
+\skip2=\skip3\relax%
+\fi% if null arg
+% remove stretchability, just to be safe
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% dimen0 = height, dimen2 = depth
+\if@IEEEeqnarrayISinner% inner does not touch master strut size
+% get local strut size
+\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax%
+% add it to the user supplied values
+\advance\dimen0 by \skip0\relax%
+\advance\dimen2 by \skip2\relax%
+% update the local strut size
+\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\@IEEEeqnarrayusemasterstrutfalse% do not use master
+\else% outer, have to set master strut too
+% get master strut size
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%
+% add it to the user supplied values
+\advance\dimen0 by \skip0\relax%
+\advance\dimen2 by \skip2\relax%
+% update the local and master strut sizes
+\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}%
+\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%
+\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%
+\@IEEEeqnarrayusemasterstruttrue% use master strut
+\fi}
+
+
+% allow user a way to see the struts
+\newif\ifIEEEvisiblestruts
+\IEEEvisiblestrutsfalse
+
+% inserts an invisible strut using the master or local strut values
+% uses scratch registers \skip0, \skip2, \dimen0, \dimen2
+\def\@IEEEeqnarrayinsertstrut{\relax%
+\if@IEEEeqnarrayusemasterstrut
+% get master strut size
+\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%
+\else%
+% get local strut size
+\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax%
+\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax%
+\fi%
+% remove stretchability, probably not needed
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+% dimen0 = height, dimen2 = depth
+% allow user to see struts if desired
+\ifIEEEvisiblestruts%
+\vrule width0.2pt height\dimen0 depth\dimen2\relax%
+\else%
+\vrule width0pt height\dimen0 depth\dimen2\relax\fi}
+
+
+% creates an invisible strut, useable even outside \IEEEeqnarray
+% if \IEEEvisiblestrutstrue, the strut will be visible and 0.2pt wide.
+% usage: \IEEEstrut[height][depth][font size commands]
+% default is \IEEEstrut[0.7\normalbaselineskip][0.3\normalbaselineskip][\relax]
+% blank arguments inherit the default values
+% uses \dimen0, \dimen2, \skip0, \skip2
+\def\IEEEstrut{\relax\@ifnextchar[{\@IEEEstrut}{\@IEEEstrut[0.7\normalbaselineskip]}}
+\def\@IEEEstrut[#1]{\relax\@ifnextchar[{\@@IEEEstrut[#1]}{\@@IEEEstrut[#1][0.3\normalbaselineskip]}}
+\def\@@IEEEstrut[#1][#2]{\relax\@ifnextchar[{\@@@IEEEstrut[#1][#2]}{\@@@IEEEstrut[#1][#2][\relax]}}
+\def\@@@IEEEstrut[#1][#2][#3]{\mbox{#3\relax%
+\def\@IEEEstrutARG{#1}%
+\ifx\@IEEEstrutARG\@empty%
+\skip0=0.7\normalbaselineskip\relax%
+\else%
+\skip0=#1\relax%
+\fi%
+\def\@IEEEstrutARG{#2}%
+\ifx\@IEEEstrutARG\@empty%
+\skip2=0.3\normalbaselineskip\relax%
+\else%
+\skip2=#2\relax%
+\fi%
+% remove stretchability, probably not needed
+\dimen0\skip0\relax%
+\dimen2\skip2\relax%
+\ifIEEEvisiblestruts%
+\vrule width0.2pt height\dimen0 depth\dimen2\relax%
+\else%
+\vrule width0.0pt height\dimen0 depth\dimen2\relax\fi}}
+
+
+% enables strut mode by setting a default strut size and then zeroing the
+% \baselineskip, \lineskip, \lineskiplimit and \jot
+\def\IEEEeqnarraystrutmode{\IEEEeqnarraystrutsize{0.7\normalbaselineskip}{0.3\normalbaselineskip}[\relax]%
+\baselineskip=0pt\lineskip=0pt\lineskiplimit=0pt\jot=0pt}
+
+
+% equation and subequation forms to use to setup hyperref's \@currentHref
+\def\@IEEEtheHrefequation{equation.\theHequation}
+\def\@IEEEtheHrefsubequation{equation.\theHequation\alph{IEEEsubequation}}
+
+
+\def\IEEEeqnarray{\@IEEEeqnumpersisttrue\@IEEEsubeqnumpersistfalse\@IEEEeqnarray}
+\def\endIEEEeqnarray{\end@IEEEeqnarray}
+
+\@namedef{IEEEeqnarray*}{\@IEEEeqnumpersistfalse\@IEEEsubeqnumpersistfalse\@IEEEeqnarray}
+\@namedef{endIEEEeqnarray*}{\end@IEEEeqnarray}
+
+
+% \IEEEeqnarray is an enhanced \eqnarray.
+% The star form defaults to not putting equation numbers at the end of each row.
+% usage: \IEEEeqnarray[decl]{cols}
+\def\@IEEEeqnarray{\relax\@ifnextchar[{\@@IEEEeqnarray}{\@@IEEEeqnarray[\relax]}}
+% We have to be careful here to normalize catcodes just before acquiring the
+% cols as that specification may contain punctuation which could be subject
+% to document catcode changes.
+\def\@@IEEEeqnarray[#1]{\begingroup\IEEEnormalcatcodes\@@@IEEEeqnarray[#1]}
+\def\@@@IEEEeqnarray[#1]#2{\endgroup
+ % default to showing the equation number or not based on whether or not
+ % the star form was involked
+ \if@IEEEeqnumpersist\global\@eqnswtrue
+ \else% not the star form
+ \global\@eqnswfalse
+ \fi% if star form
+ % provide a basic hyperref \theHequation if this has not already been setup (hyperref not loaded, or no section counter)
+ \@ifundefined{theHequation}{\def\theHequation{\arabic{equation}}}{}\relax
+ % provide dummy hyperref commands in case hyperref is not loaded
+ \providecommand{\Hy@raisedlink}[1]{}\relax
+ \providecommand{\hyper@anchorstart}[1]{}\relax
+ \providecommand{\hyper@anchorend}{}\relax
+ \providecommand{\@currentHref}{}\relax
+ \@IEEEeqnumpreadvfalse% reset eqnpreadv flag
+ \@IEEEsubeqnumpreadvfalse% reset subeqnpreadv flag
+ \@IEEEeqnarrayISinnerfalse% not yet within the lines of the halign
+ \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default
+ \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise
+ \IEEEvisiblestrutsfalse% diagnostic mode defaults to off
+ % no extra space unless the user specifically requests it
+ \lineskip=0pt\relax
+ \lineskiplimit=0pt\relax
+ \baselineskip=\normalbaselineskip\relax%
+ \jot=\IEEEnormaljot\relax%
+ \mathsurround\z@\relax% no extra spacing around math
+ \@advanceIEEEeqncolcnttrue% advance the col counter for each col the user uses,
+ % used in \IEEEeqnarraymulticol and in the preamble build
+ %V1.8 Here we preadvance to the next equation number.
+ % If the user later wants a continued subequation, we can roll back.
+ \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation%
+ \stepcounter{equation}\@IEEEeqnumpreadvtrue% advance equation counter before first line
+ \setcounter{IEEEsubequation}{0}% no subequation yet
+ \let\@IEEEcurrentlabelsave\@currentlabel% save current label as we later change it globally
+ \let\@IEEEcurrentHrefsave\@currentHref% save current href label as we later change it globally
+ \def\@currentlabel{\p@equation\theequation}% redefine the ref label
+ \def\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+ \IEEEeqnarraydecl\relax% allow a way for the user to make global overrides
+ #1\relax% allow user to override defaults
+ \let\\\@IEEEeqnarraycr% replace newline with one that can put in eqn. numbers
+ \global\@IEEEeqncolcnt\z@% col. count = 0 for first line
+ \@IEEEbuildpreamble{#2}\relax% build the preamble and put it into \@IEEEtrantmptoksA
+ % put in the column for the equation number
+ \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first
+ \toks0={##}%
+ % advance the \@IEEEeqncolcnt for the isolation col, this helps with error checking
+ \@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}%
+ % add the isolation column
+ \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}%
+ % advance the \@IEEEeqncolcnt for the equation number col, this helps with error checking
+ \@IEEEappendtoksA{&\global\advance\@IEEEeqncolcnt by 1\relax}%
+ % add the equation number col to the preamble
+ \@IEEEappendtoksA{\tabskip\z@skip\hb@xt@\z@\bgroup\hss\the\toks0\egroup}%
+ % note \@IEEEeqnnumcols does not count the equation col or isolation col
+ % set the starting tabskip glue as determined by the preamble build
+ \tabskip=\@IEEEBPstartglue\relax
+ % begin the display alignment
+ \@IEEEeqnarrayISinnertrue% commands are now within the lines
+ $$\everycr{}\halign to\displaywidth\bgroup
+ % "exspand" the preamble
+ \span\the\@IEEEtrantmptoksA\cr}
+
+% enter isolation/strut column (or the next column if the user did not use
+% every column), record the strut status, complete the columns, do the strut if needed,
+% restore counters (to backout any equation setup for a next line that was never used)
+% to their correct values and exit
+\def\end@IEEEeqnarray{\@IEEEeqnarrayglobalizestrutstatus&\@@IEEEeqnarraycr\egroup
+\if@IEEEsubeqnumpreadv\global\advance\c@IEEEsubequation\m@ne\fi
+\if@IEEEeqnumpreadv\global\advance\c@equation\m@ne\global\c@IEEEsubequation=\@IEEEsubeqnnumrollback\fi
+\global\let\@currentlabel\@IEEEcurrentlabelsave% restore current label
+\global\let\@currentHref\@IEEEcurrentHrefsave% restore current href label
+$$\@ignoretrue}
+
+
+% IEEEeqnarray uses a modifed \\ instead of the plain \cr to
+% end rows. This allows for things like \\*[vskip amount]
+% These "cr" macros are modified versions of those for LaTeX2e's eqnarray
+% the {\ifnum0=`} braces must be kept away from the last column to avoid
+% altering spacing of its math, so we use & to advance to the next column
+% as there is an isolation/strut column after the user's columns
+\def\@IEEEeqnarraycr{\@IEEEeqnarrayglobalizestrutstatus&% save strut status and advance to next column
+ {\ifnum0=`}\fi
+ \@ifstar{%
+ \global\@eqpen\@M\@IEEEeqnarrayYCR
+ }{%
+ \global\@eqpen\interdisplaylinepenalty \@IEEEeqnarrayYCR
+ }%
+}
+
+\def\@IEEEeqnarrayYCR{\@testopt\@IEEEeqnarrayXCR\z@skip}
+
+\def\@IEEEeqnarrayXCR[#1]{%
+ \ifnum0=`{\fi}%
+ \@@IEEEeqnarraycr
+ \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}}%
+
+\def\@@IEEEeqnarraycr{\@IEEEtrantmptoksA={}% clear token register
+ \advance\@IEEEeqncolcnt by -1\relax% adjust col count because of the isolation column
+ \ifnum\@IEEEeqncolcnt>\@IEEEeqnnumcols\relax
+ \@IEEEclspkgerror{Too many columns within the IEEEeqnarray\MessageBreak
+ environment}%
+ {Use fewer \string &'s or put more columns in the IEEEeqnarray column\MessageBreak
+ specifications.}\relax%
+ \else
+ \loop% add cols if the user did not use them all
+ \ifnum\@IEEEeqncolcnt<\@IEEEeqnnumcols\relax
+ \@IEEEappendtoksA{&}%
+ \advance\@IEEEeqncolcnt by 1\relax% update the col count
+ \repeat
+ % this number of &'s will take us the the isolation column
+ \fi
+ % execute the &'s
+ \the\@IEEEtrantmptoksA%
+ % handle the strut/isolation column
+ \@IEEEeqnarrayinsertstrut% do the strut if needed
+ \@IEEEeqnarraystrutreset% reset the strut system for next line or IEEEeqnarray
+ &% and enter the equation number column
+ \if@eqnsw% only if we display something
+ \Hy@raisedlink{\hyper@anchorstart{\@currentHref}}% start a hyperref anchor
+ \global\@IEEEeqnumpreadvfalse\relax% displaying an equation number means
+ \global\@IEEEsubeqnumpreadvfalse\relax% the equation counters point to valid equations
+ % V1.8 Here we setup the counters, currentlabel and status for what would be the *next*
+ % equation line as would be the case under the current settings. However, there are two problems.
+ % One problem is that there might not ever be a next line. The second problem is that the user
+ % may later alter the meaning of a line with commands such as \IEEEyessubnumber. So, to handle
+ % these cases we have to record the current values of the (sub)equation counters and revert back
+ % to them if the next line is changed or never comes. The \if@IEEEeqnumpreadv, \if@IEEEsubeqnumpreadv
+ % and \@IEEEsubeqnnumrollback stuff tracks this.
+ % The logic to handle all this is surprisingly complex, but a nice feature of the approach here is
+ % that the equation counters and labels remain valid for what the line would be unless a
+ % \IEEEyessubnumber et al. later changes it. So, any hyperref links are always correct.
+ \ifnum\c@IEEEsubequation>0\relax% handle subequation
+ \theIEEEsubequationdis\relax
+ \if@IEEEsubeqnumpersist% setup for default type of next line
+ \stepcounter{IEEEsubequation}\global\@IEEEsubeqnumpreadvtrue\relax
+ \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label
+ \else
+ % if no subeqnum persist, go ahead and setup for a new equation number
+ \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation
+ \stepcounter{equation}\global\@IEEEeqnumpreadvtrue\relax
+ \setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+ \fi
+ \else% display a standard equation number
+ \theequationdis\relax
+ \setcounter{IEEEsubequation}{0}\relax% not really needed
+ \if@IEEEsubeqnumpersist% setup for default type of next line
+ % subequations that follow plain equations carry the same equation number e.g, 5, 5a rather than 5, 6a
+ \stepcounter{IEEEsubequation}\global\@IEEEsubeqnumpreadvtrue\relax
+ \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label
+ \else
+ % if no subeqnum persist, go ahead and setup for a new equation number
+ \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation
+ \stepcounter{equation}\global\@IEEEeqnumpreadvtrue\relax
+ \setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax
+ \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label
+ \fi
+ \fi%
+ \Hy@raisedlink{\hyper@anchorend}% end hyperref anchor
+ \fi% fi only if we display something
+ % reset the flags to indicate the default preferences of the display of equation numbers
+ \if@IEEEeqnumpersist\global\@eqnswtrue\else\global\@eqnswfalse\fi
+ \if@IEEEsubeqnumpersist\global\@eqnswtrue\fi% ditto for the subequation flag
+ % reset the number of columns the user actually used
+ \global\@IEEEeqncolcnt\z@\relax
+ % the real end of the line
+ \cr}
+
+
+
+
+
+% \IEEEeqnarraybox is like \IEEEeqnarray except the box form puts everything
+% inside a vtop, vbox, or vcenter box depending on the letter in the second
+% optional argument (t,b,c). Vbox is the default. Unlike \IEEEeqnarray,
+% equation numbers are not displayed and \IEEEeqnarraybox can be nested.
+% \IEEEeqnarrayboxm is for math mode (like \array) and does not put the vbox
+% within an hbox.
+% \IEEEeqnarrayboxt is for text mode (like \tabular) and puts the vbox within
+% a \hbox{$ $} construct.
+% \IEEEeqnarraybox will auto detect whether to use \IEEEeqnarrayboxm or
+% \IEEEeqnarrayboxt depending on the math mode.
+% The third optional argument specifies the width this box is to be set to -
+% natural width is the default.
+% The * forms do not add \jot line spacing
+% usage: \IEEEeqnarraybox[decl][pos][width]{cols}
+\def\IEEEeqnarrayboxm{\@IEEEeqnarrayboxnojotfalse\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox}
+\def\endIEEEeqnarrayboxm{\end@IEEEeqnarraybox}
+\@namedef{IEEEeqnarrayboxm*}{\@IEEEeqnarrayboxnojottrue\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox}
+\@namedef{endIEEEeqnarrayboxm*}{\end@IEEEeqnarraybox}
+
+\def\IEEEeqnarrayboxt{\@IEEEeqnarrayboxnojotfalse\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox}
+\def\endIEEEeqnarrayboxt{\end@IEEEeqnarraybox}
+\@namedef{IEEEeqnarrayboxt*}{\@IEEEeqnarrayboxnojottrue\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox}
+\@namedef{endIEEEeqnarrayboxt*}{\end@IEEEeqnarraybox}
+
+\def\IEEEeqnarraybox{\@IEEEeqnarrayboxnojotfalse\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi%
+\@IEEEeqnarraybox}
+\def\endIEEEeqnarraybox{\end@IEEEeqnarraybox}
+
+\@namedef{IEEEeqnarraybox*}{\@IEEEeqnarrayboxnojottrue\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi%
+\@IEEEeqnarraybox}
+\@namedef{endIEEEeqnarraybox*}{\end@IEEEeqnarraybox}
+
+% flag to indicate if the \IEEEeqnarraybox needs to put things into an hbox{$ $}
+% for \vcenter in non-math mode
+\newif\if@IEEEeqnarrayboxHBOXSW%
+\@IEEEeqnarrayboxHBOXSWfalse
+
+\def\@IEEEeqnarraybox{\relax\@ifnextchar[{\@@IEEEeqnarraybox}{\@@IEEEeqnarraybox[\relax]}}
+% We have to be careful here to normalize catcodes just before acquiring the
+% cols as that specification may contain punctuation which could be subject
+% to document catcode changes.
+\def\@@IEEEeqnarraybox[#1]{\relax\begingroup\IEEEnormalcatcodes\@ifnextchar[{\@@@IEEEeqnarraybox[#1]}{\@@@IEEEeqnarraybox[#1][b]}}
+\def\@@@IEEEeqnarraybox[#1][#2]{\relax\@ifnextchar[{\@@@@IEEEeqnarraybox[#1][#2]}{\@@@@IEEEeqnarraybox[#1][#2][\relax]}}
+
+% #1 = decl; #2 = t,b,c; #3 = width, #4 = col specs
+\def\@@@@IEEEeqnarraybox[#1][#2][#3]#4{\endgroup\@IEEEeqnarrayISinnerfalse % not yet within the lines of the halign
+ \@IEEEeqnarraymasterstrutsave% save current master strut values
+ \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default
+ \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise
+ \IEEEvisiblestrutsfalse% diagnostic mode defaults to off
+ % no extra space unless the user specifically requests it
+ \lineskip=0pt\relax%
+ \lineskiplimit=0pt\relax%
+ \baselineskip=\normalbaselineskip\relax%
+ \jot=\IEEEnormaljot\relax%
+ \mathsurround\z@\relax% no extra spacing around math
+ % the default end glues are zero for an \IEEEeqnarraybox
+ \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue
+ \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPzero}% default end glue
+ \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue
+ \@advanceIEEEeqncolcntfalse% do not advance the col counter for each col the user uses,
+ % used in \IEEEeqnarraymulticol and in the preamble build
+ \IEEEeqnarrayboxdecl\relax% allow a way for the user to make global overrides
+ #1\relax% allow user to override defaults
+ \let\\\@IEEEeqnarrayboxcr% replace newline with one that allows optional spacing
+ \@IEEEbuildpreamble{#4}\relax% build the preamble and put it into \@IEEEtrantmptoksA
+ % add an isolation column to the preamble to stop \\'s {} from getting into the last col
+ \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first
+ \toks0={##}%
+ % add the isolation column to the preamble
+ \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}%
+ % set the starting tabskip glue as determined by the preamble build
+ \tabskip=\@IEEEBPstartglue\relax
+ % begin the alignment
+ \everycr{}%
+ % use only the very first token to determine the positioning
+ \@IEEEextracttoken{#2}\relax
+ \ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: IEEEeqnarraybox position specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+ \fi
+ % \@IEEEextractedtoken has the first token, the rest are ignored
+ % if we need to put things into and hbox and go into math mode, do so now
+ \if@IEEEeqnarrayboxHBOXSW \leavevmode \hbox \bgroup $\fi%
+ % use the appropriate vbox type
+ \if\@IEEEextractedtoken t\relax\vtop\else\if\@IEEEextractedtoken c\relax%
+ \vcenter\else\vbox\fi\fi\bgroup%
+ \@IEEEeqnarrayISinnertrue% commands are now within the lines
+ \ifx#3\relax\halign\else\halign to #3\relax\fi%
+ \bgroup
+ % "exspand" the preamble
+ \span\the\@IEEEtrantmptoksA\cr}
+
+% carry strut status and enter the isolation/strut column,
+% exit from math mode if needed, and exit
+\def\end@IEEEeqnarraybox{\@IEEEeqnarrayglobalizestrutstatus% carry strut status
+&% enter isolation/strut column
+\@IEEEeqnarrayinsertstrut% do strut if needed
+\@IEEEeqnarraymasterstrutrestore% restore the previous master strut values
+% reset the strut system for next IEEEeqnarray
+% (sets local strut values back to previous master strut values)
+\@IEEEeqnarraystrutreset%
+% ensure last line, exit from halign, close vbox
+\crcr\egroup\egroup%
+% exit from math mode and close hbox if needed
+\if@IEEEeqnarrayboxHBOXSW $\egroup\fi}
+
+
+
+% IEEEeqnarraybox uses a modifed \\ instead of the plain \cr to
+% end rows. This allows for things like \\[vskip amount]
+% This "cr" macros are modified versions those for LaTeX2e's eqnarray
+% For IEEEeqnarraybox, \\* is the same as \\
+% the {\ifnum0=`} braces must be kept away from the last column to avoid
+% altering spacing of its math, so we use & to advance to the isolation/strut column
+% carry strut status into isolation/strut column
+\def\@IEEEeqnarrayboxcr{\@IEEEeqnarrayglobalizestrutstatus% carry strut status
+&% enter isolation/strut column
+\@IEEEeqnarrayinsertstrut% do strut if needed
+% reset the strut system for next line or IEEEeqnarray
+\@IEEEeqnarraystrutreset%
+{\ifnum0=`}\fi%
+\@ifstar{\@IEEEeqnarrayboxYCR}{\@IEEEeqnarrayboxYCR}}
+
+% test and setup the optional argument to \\[]
+\def\@IEEEeqnarrayboxYCR{\@testopt\@IEEEeqnarrayboxXCR\z@skip}
+
+% IEEEeqnarraybox does not automatically increase line spacing by \jot
+\def\@IEEEeqnarrayboxXCR[#1]{\ifnum0=`{\fi}%
+\cr\noalign{\if@IEEEeqnarrayboxnojot\else\vskip\jot\fi\vskip#1\relax}}
+
+
+
+% usage: \@IEEEbuildpreamble{column specifiers}
+% starts the halign preamble build
+% the assembled preamble is put in \@IEEEtrantmptoksA
+\def\@IEEEbuildpreamble#1{\@IEEEtrantmptoksA={}% clear token register
+\let\@IEEEBPcurtype=u%current column type is not yet known
+\let\@IEEEBPprevtype=s%the previous column type was the start
+\let\@IEEEBPnexttype=u%next column type is not yet known
+% ensure these are valid
+\def\@IEEEBPcurglue={0pt plus 0pt minus 0pt}%
+\def\@IEEEBPcurcolname{@IEEEdefault}% name of current column definition
+% currently acquired numerically referenced glue
+% use a name that is easier to remember
+\let\@IEEEBPcurnum=\@IEEEtrantmpcountA%
+\@IEEEBPcurnum=0%
+% tracks number of columns in the preamble
+\@IEEEeqnnumcols=0%
+% record the default end glues
+\edef\@IEEEBPstartglue{\@IEEEeqnarraycolSEPdefaultstart}%
+\edef\@IEEEBPendglue{\@IEEEeqnarraycolSEPdefaultend}%
+\edef\@IEEEedefMACRO{#1}\relax% fully expand the preamble to support macro containers
+% now parse the user's column specifications
+% \ignorespaces is used as a delimiter, need at least one trailing \relax because
+% \@@IEEEbuildpreamble looks into the future
+\expandafter\@@IEEEbuildpreamble\@IEEEedefMACRO\ignorespaces\relax\relax}
+
+
+% usage: \@@IEEEbuildpreamble{current column}{next column}
+% parses and builds the halign preamble
+\def\@@IEEEbuildpreamble#1#2{\let\@@nextIEEEbuildpreamble=\@@IEEEbuildpreamble%
+% use only the very first token to check the end
+\@IEEEextracttokengroups{#1}\relax
+\ifx\@IEEEextractedfirsttoken\ignorespaces\let\@@nextIEEEbuildpreamble=\@@IEEEfinishpreamble\else%
+% identify current and next token type
+\@IEEEgetcoltype{#1}{\@IEEEBPcurtype}{1}% current, error on invalid
+\@IEEEgetcoltype{#2}{\@IEEEBPnexttype}{0}% next, no error on invalid next
+% if curtype is a glue, get the glue def
+\if\@IEEEBPcurtype g\@IEEEgetcurglue{#1}{\@IEEEBPcurglue}\fi%
+% if curtype is a column, get the column def and set the current column name
+\if\@IEEEBPcurtype c\@IEEEgetcurcol{#1}\fi%
+% if curtype is a numeral, acquire the user defined glue
+\if\@IEEEBPcurtype n\@IEEEprocessNcol{#1}\fi%
+% process the acquired glue
+\if\@IEEEBPcurtype g\@IEEEprocessGcol\fi%
+% process the acquired col
+\if\@IEEEBPcurtype c\@IEEEprocessCcol\fi%
+% ready prevtype for next col spec.
+\let\@IEEEBPprevtype=\@IEEEBPcurtype%
+% be sure and put back the future token(s) as a group
+\fi\@@nextIEEEbuildpreamble{#2}}
+
+
+% usage: \@@IEEEfinishpreamble{discarded}
+% executed just after preamble build is completed
+% warn about zero cols, and if prevtype type = u, put in end tabskip glue
+% argument is not used
+\def\@@IEEEfinishpreamble#1{\ifnum\@IEEEeqnnumcols<1\relax
+\@IEEEclspkgerror{No column specifiers declared for IEEEeqnarray}%
+{At least one column type must be declared for each IEEEeqnarray.}%
+\fi%num cols less than 1
+%if last type undefined, set default end tabskip glue
+\if\@IEEEBPprevtype u\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue}\fi}
+
+
+% usage: \@IEEEgetcoltype{col specifier}{\output}{error more}
+% Identify and return the column specifier's type code in the given
+% \output macro:
+% n = number
+% g = glue (any other char in catagory 12)
+% c = letter
+% e = \ignorespaces (end of sequence)
+% u = undefined
+% error mode: 0 = no error message, 1 = error on invalid char
+\def\@IEEEgetcoltype#1#2#3{%
+% use only the very first token to determine the type
+\@IEEEextracttoken{#1}\relax
+% \@IEEEextractedtoken has the first token, the rest are discarded
+\let#2=u\relax% assume invalid until know otherwise
+\ifx\@IEEEextractedtoken\ignorespaces\let#2=e\else
+\ifcat\@IEEEextractedtoken\relax\else% screen out control sequences
+\if0\@IEEEextractedtoken\let#2=n\else
+\if1\@IEEEextractedtoken\let#2=n\else
+\if2\@IEEEextractedtoken\let#2=n\else
+\if3\@IEEEextractedtoken\let#2=n\else
+\if4\@IEEEextractedtoken\let#2=n\else
+\if5\@IEEEextractedtoken\let#2=n\else
+\if6\@IEEEextractedtoken\let#2=n\else
+\if7\@IEEEextractedtoken\let#2=n\else
+\if8\@IEEEextractedtoken\let#2=n\else
+\if9\@IEEEextractedtoken\let#2=n\else
+\ifcat,\@IEEEextractedtoken\let#2=g\relax
+\else\ifcat a\@IEEEextractedtoken\let#2=c\relax\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\if#2u\relax
+\if0\noexpand#3\relax\else\@IEEEclspkgerror{Invalid character in column specifications}%
+{Only letters, numerals and certain other symbols are allowed \MessageBreak
+as IEEEeqnarray column specifiers.}\fi\fi}
+
+
+% usage: \@IEEEgetcurcol{col specifier}
+% verify the letter referenced column exists
+% and return its name in \@IEEEBPcurcolname
+% if column specifier is invalid, use the default column @IEEEdefault
+\def\@IEEEgetcurcol#1{\expandafter\ifx\csname @IEEEeqnarraycolDEF#1\endcsname\@IEEEeqnarraycolisdefined%
+\def\@IEEEBPcurcolname{#1}\else% invalid column name
+\@IEEEclspkgerror{Invalid column type "#1" in column specifications.\MessageBreak
+Using a default centering column instead}%
+{You must define IEEEeqnarray column types before use.}%
+\def\@IEEEBPcurcolname{@IEEEdefault}\fi}
+
+
+% usage: \@IEEEgetcurglue{glue specifier}{\output}
+% identify the predefined (punctuation) glue value
+% and return it in the given output macro
+\def\@IEEEgetcurglue#1#2{%
+% ! = \! (neg small) -0.16667em (-3/18 em)
+% , = \, (small) 0.16667em ( 3/18 em)
+% : = \: (med) 0.22222em ( 4/18 em)
+% ; = \; (large) 0.27778em ( 5/18 em)
+% ' = \quad 1em
+% " = \qquad 2em
+% . = 0.5\arraycolsep
+% / = \arraycolsep
+% ? = 2\arraycolsep
+% * = 1fil
+% + = \@IEEEeqnarraycolSEPcenter
+% - = \@IEEEeqnarraycolSEPzero
+% Note that all em values are referenced to the math font (textfont2) fontdimen6
+% value for 1em.
+%
+% use only the very first token to determine the type
+\@IEEEextracttoken{#1}\relax
+\ifx\@IEEEextractedtokensdiscarded\@empty\else
+ \typeout{** WARNING: IEEEeqnarray predefined inter-column glue type specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax
+\fi
+% get the math font 1em value
+% LaTeX2e's NFSS2 does not preload the fonts, but \IEEEeqnarray needs
+% to gain access to the math (\textfont2) font's spacing parameters.
+% So we create a bogus box here that uses the math font to ensure
+% that \textfont2 is loaded and ready. If this is not done,
+% the \textfont2 stuff here may not work.
+% Thanks to Bernd Raichle for his 1997 post on this topic.
+{\setbox0=\hbox{$\displaystyle\relax$}}%
+% fontdimen6 has the width of 1em (a quad).
+\@IEEEtrantmpdimenA=\fontdimen6\textfont2\relax%
+% identify the glue value based on the first token
+% we discard anything after the first
+\if!\@IEEEextractedtoken\@IEEEtrantmpdimenA=-0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if,\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if:\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.22222\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if;\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.27778\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if'\@IEEEextractedtoken\@IEEEtrantmpdimenA=1\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if"\@IEEEextractedtoken\@IEEEtrantmpdimenA=2\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if.\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.5\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if/\@IEEEextractedtoken\edef#2{\the\arraycolsep}\else
+\if?\@IEEEextractedtoken\@IEEEtrantmpdimenA=2\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else
+\if *\@IEEEextractedtoken\edef#2{0pt plus 1fil minus 0pt}\else
+\if+\@IEEEextractedtoken\edef#2{\@IEEEeqnarraycolSEPcenter}\else
+\if-\@IEEEextractedtoken\edef#2{\@IEEEeqnarraycolSEPzero}\else
+\edef#2{\@IEEEeqnarraycolSEPzero}%
+\@IEEEclspkgerror{Invalid predefined inter-column glue type "#1" in\MessageBreak
+column specifications. Using a default value of\MessageBreak
+0pt instead}%
+{Only !,:;'"./?*+ and - are valid predefined glue types in the\MessageBreak
+IEEEeqnarray column specifications.}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+
+% usage: \@IEEEprocessNcol{digit}
+% process a numerical digit from the column specification
+% and look up the corresponding user defined glue value
+% can transform current type from n to g or a as the user defined glue is acquired
+\def\@IEEEprocessNcol#1{\if\@IEEEBPprevtype g%
+\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak
+specifications. Ignoring consecutive glue specifiers\MessageBreak
+after the first}%
+{You cannot have two or more glue types next to each other\MessageBreak
+in the IEEEeqnarray column specifications.}%
+\let\@IEEEBPcurtype=a% abort this glue, future digits will be discarded
+\@IEEEBPcurnum=0\relax%
+\else% if we previously aborted a glue
+\if\@IEEEBPprevtype a\@IEEEBPcurnum=0\let\@IEEEBPcurtype=a%maintain digit abortion
+\else%acquire this number
+% save the previous type before the numerical digits started
+\if\@IEEEBPprevtype n\else\let\@IEEEBPprevsavedtype=\@IEEEBPprevtype\fi%
+\multiply\@IEEEBPcurnum by 10\relax%
+\advance\@IEEEBPcurnum by #1\relax% add in number, \relax is needed to stop TeX's number scan
+\if\@IEEEBPnexttype n\else%close acquisition
+\expandafter\ifx\csname @IEEEeqnarraycolSEPDEF\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname\@IEEEeqnarraycolisdefined%
+\edef\@IEEEBPcurglue{\csname @IEEEeqnarraycolSEP\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname}%
+\else%user glue not defined
+\@IEEEclspkgerror{Invalid user defined inter-column glue type "\number\@IEEEBPcurnum" in\MessageBreak
+column specifications. Using a default value of\MessageBreak
+0pt instead}%
+{You must define all IEEEeqnarray numerical inter-column glue types via\MessageBreak
+\string\IEEEeqnarraydefcolsep \space before they are used in column specifications.}%
+\edef\@IEEEBPcurglue{\@IEEEeqnarraycolSEPzero}%
+\fi% glue defined or not
+\let\@IEEEBPcurtype=g% change the type to reflect the acquired glue
+\let\@IEEEBPprevtype=\@IEEEBPprevsavedtype% restore the prev type before this number glue
+\@IEEEBPcurnum=0\relax%ready for next acquisition
+\fi%close acquisition, get glue
+\fi%discard or acquire number
+\fi%prevtype glue or not
+}
+
+
+% process an acquired glue
+% add any acquired column/glue pair to the preamble
+\def\@IEEEprocessGcol{\if\@IEEEBPprevtype a\let\@IEEEBPcurtype=a%maintain previous glue abortions
+\else
+% if this is the start glue, save it, but do nothing else
+% as this is not used in the preamble, but before
+\if\@IEEEBPprevtype s\edef\@IEEEBPstartglue{\@IEEEBPcurglue}%
+\else%not the start glue
+\if\@IEEEBPprevtype g%ignore if back to back glues
+\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak
+specifications. Ignoring consecutive glue specifiers\MessageBreak
+after the first}%
+{You cannot have two or more glue types next to each other\MessageBreak
+in the IEEEeqnarray column specifications.}%
+\let\@IEEEBPcurtype=a% abort this glue
+\else% not a back to back glue
+\if\@IEEEBPprevtype c\relax% if the previoustype was a col, add column/glue pair to preamble
+\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi
+\toks0={##}%
+% make preamble advance col counter if this environment needs this
+\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi
+% insert the column defintion into the preamble, being careful not to expand
+% the column definition
+\@IEEEappendtoksA{\tabskip=\@IEEEBPcurglue}%
+\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}%
+\@IEEEappendtoksA{\@IEEEBPcurcolname}%
+\@IEEEappendNOEXPANDtoksA{\endcsname}%
+\@IEEEappendtoksA{\the\toks0}%
+\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax%
+\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}%
+\@IEEEappendtoksA{\@IEEEBPcurcolname}%
+\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax%
+\relax\relax\relax\relax\relax\endgroup}%
+\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble
+\else% error: non-start glue with no pending column
+\@IEEEclspkgerror{Inter-column glue specifier without a prior column\MessageBreak
+type in the column specifications. Ignoring this glue\MessageBreak
+specifier}%
+{Except for the first and last positions, glue can be placed only\MessageBreak
+between column types.}%
+\let\@IEEEBPcurtype=a% abort this glue
+\fi% previous was a column
+\fi% back-to-back glues
+\fi% is start column glue
+\fi% prev type not a
+}
+
+
+% process an acquired letter referenced column and, if necessary, add it to the preamble
+\def\@IEEEprocessCcol{\if\@IEEEBPnexttype g\else
+\if\@IEEEBPnexttype n\else
+% we have a column followed by something other than a glue (or numeral glue)
+% so we must add this column to the preamble now
+\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi%col separator for those after the first
+\if\@IEEEBPnexttype e\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue\relax}\else%put in end glue
+\@IEEEappendtoksA{\tabskip=\@IEEEeqnarraycolSEPdefaultmid\relax}\fi% or default mid glue
+\toks0={##}%
+% make preamble advance col counter if this environment needs this
+\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi
+% insert the column definition into the preamble, being careful not to expand
+% the column definition
+\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}%
+\@IEEEappendtoksA{\@IEEEBPcurcolname}%
+\@IEEEappendNOEXPANDtoksA{\endcsname}%
+\@IEEEappendtoksA{\the\toks0}%
+\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax%
+\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}%
+\@IEEEappendtoksA{\@IEEEBPcurcolname}%
+\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax%
+\relax\relax\relax\relax\relax\endgroup}%
+\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble
+\fi%next type not numeral
+\fi%next type not glue
+}
+
+
+%%
+%% END OF IEEEeqnarray DEFINITIONS
+%%
+
+
+
+
+% \IEEEPARstart
+% Definition for the big two line drop cap letter at the beginning of the
+% first paragraph of journal papers. The first argument is the first letter
+% of the first word, the second argument is the remaining letters of the
+% first word which will be rendered in upper case.
+% In V1.6 this has been completely rewritten to:
+%
+% 1. no longer have problems when the user begins an environment
+% within the paragraph that uses \IEEEPARstart.
+% 2. auto-detect and use the current font family
+% 3. revise handling of the space at the end of the first word so that
+% interword glue will now work as normal.
+% 4. produce correctly aligned edges for the (two) indented lines.
+%
+% We generalize things via control macros - playing with these is fun too.
+%
+% V1.7 added more control macros to make it easy for IEEEtrantools.sty users
+% to change the font style.
+%
+% the number of lines that are indented to clear it
+% may need to increase if using decenders
+\providecommand{\IEEEPARstartDROPLINES}{2}
+% minimum number of lines left on a page to allow a \@IEEEPARstart
+% Does not take into consideration rubber shrink, so it tends to
+% be overly cautious
+\providecommand{\IEEEPARstartMINPAGELINES}{2}
+% V1.7 the height of the drop cap is adjusted to match the height of this text
+% in the current font (when \IEEEPARstart is called).
+\providecommand{\IEEEPARstartHEIGHTTEXT}{T}
+% the depth the letter is lowered below the baseline
+% the height (and size) of the letter is determined by the sum
+% of this value and the height of the \IEEEPARstartHEIGHTTEXT in the current
+% font. It is a good idea to set this value in terms of the baselineskip
+% so that it can respond to changes therein.
+\providecommand{\IEEEPARstartDROPDEPTH}{1.1\baselineskip}
+% V1.7 the font the drop cap will be rendered in,
+% can take zero or one argument.
+\providecommand{\IEEEPARstartFONTSTYLE}{\bfseries}
+% V1.7 any additional, non-font related commands needed to modify
+% the drop cap letter, can take zero or one argument.
+\providecommand{\IEEEPARstartCAPSTYLE}{\MakeUppercase}
+% V1.7 the font that will be used to render the rest of the word,
+% can take zero or one argument.
+\providecommand{\IEEEPARstartWORDFONTSTYLE}{\relax}
+% V1.7 any additional, non-font related commands needed to modify
+% the rest of the word, can take zero or one argument.
+\providecommand{\IEEEPARstartWORDCAPSTYLE}{\MakeUppercase}
+% This is the horizontal separation distance from the drop letter to the main text.
+% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced
+% to the font that is active when \IEEEPARstart is called.
+\providecommand{\IEEEPARstartSEP}{0.15em}
+% V1.7 horizontal offset applied to the left of the drop cap.
+\providecommand{\IEEEPARstartHOFFSET}{0em}
+% V1.7 Italic correction command applied at the end of the drop cap.
+\providecommand{\IEEEPARstartITLCORRECT}{\/}
+
+% width of the letter output, set globally. Can be used in \IEEEPARstartSEP
+% or \IEEEPARstartHOFFSET, but not the height lengths.
+\newdimen\IEEEPARstartletwidth
+\IEEEPARstartletwidth 0pt\relax
+
+% definition of \IEEEPARstart
+% THIS IS A CONTROLLED SPACING AREA, DO NOT ALLOW SPACES WITHIN THESE LINES
+%
+% The token \@IEEEPARstartfont will be globally defined after the first use
+% of \IEEEPARstart and will be a font command which creates the big letter
+% The first argument is the first letter of the first word and the second
+% argument is the rest of the first word(s).
+\def\IEEEPARstart#1#2{\par{%
+% if this page does not have enough space, break it and lets start
+% on a new one
+\@IEEEtranneedspace{\IEEEPARstartMINPAGELINES\baselineskip}{\relax}%
+% V1.7 move this up here in case user uses \textbf for \IEEEPARstartFONTSTYLE
+% which uses command \leavevmode which causes an unwanted \indent to be issued
+\noindent
+% calculate the desired height of the big letter
+% it extends from the top of \IEEEPARstartHEIGHTTEXT in the current font
+% down to \IEEEPARstartDROPDEPTH below the current baseline
+\settoheight{\@IEEEtrantmpdimenA}{\IEEEPARstartHEIGHTTEXT}%
+\addtolength{\@IEEEtrantmpdimenA}{\IEEEPARstartDROPDEPTH}%
+% extract the name of the current font in bold
+% and place it in \@IEEEPARstartFONTNAME
+\def\@IEEEPARstartGETFIRSTWORD##1 ##2\relax{##1}%
+{\IEEEPARstartFONTSTYLE{\selectfont\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}%
+\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}}%
+% define a font based on this name with a point size equal to the desired
+% height of the drop letter
+\font\@IEEEPARstartsubfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenA\relax%
+% save this value as a counter (integer) value (sp points)
+\@IEEEtrantmpcountA=\@IEEEtrantmpdimenA%
+% now get the height of the actual letter produced by this font size
+\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\IEEEPARstartCAPSTYLE{#1}}%
+% If something bogus happens like the first argument is empty or the
+% current font is strange, do not allow a zero height.
+\ifdim\@IEEEtrantmpdimenB=0pt\relax%
+\typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}%
+\typeout{ Forcing the drop letter font size to 10pt.}%
+\@IEEEtrantmpdimenB=10pt%
+\fi%
+% and store it as a counter
+\@IEEEtrantmpcountB=\@IEEEtrantmpdimenB%
+% Since a font size doesn't exactly correspond to the height of the capital
+% letters in that font, the actual height of the letter, \@IEEEtrantmpcountB,
+% will be less than that desired, \@IEEEtrantmpcountA
+% we need to raise the font size, \@IEEEtrantmpdimenA
+% by \@IEEEtrantmpcountA / \@IEEEtrantmpcountB
+% But, TeX doesn't have floating point division, so we have to use integer
+% division. Hence the use of the counters.
+% We need to reduce the denominator so that the loss of the remainder will
+% have minimal affect on the accuracy of the result
+\divide\@IEEEtrantmpcountB by 200%
+\divide\@IEEEtrantmpcountA by \@IEEEtrantmpcountB%
+% Then reequalize things when we use TeX's ability to multiply by
+% floating point values
+\@IEEEtrantmpdimenB=0.005\@IEEEtrantmpdimenA%
+\multiply\@IEEEtrantmpdimenB by \@IEEEtrantmpcountA%
+% \@IEEEPARstartfont is globaly set to the calculated font of the big letter
+% We need to carry this out of the local calculation area to to create the
+% big letter.
+\global\font\@IEEEPARstartfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenB%
+% Now set \@IEEEtrantmpdimenA to the width of the big letter
+% We need to carry this out of the local calculation area to set the
+% hanging indent
+\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont
+\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}}}%
+% end of the isolated calculation environment
+\global\IEEEPARstartletwidth\@IEEEtrantmpdimenA\relax%
+% add in the extra clearance we want
+\advance\@IEEEtrantmpdimenA by \IEEEPARstartSEP\relax%
+% add in the optional offset
+\advance\@IEEEtrantmpdimenA by \IEEEPARstartHOFFSET\relax%
+% V1.7 don't allow negative offsets to produce negative hanging indents
+\@IEEEtrantmpdimenB\@IEEEtrantmpdimenA
+\ifnum\@IEEEtrantmpdimenB < 0 \@IEEEtrantmpdimenB 0pt\fi
+% \@IEEEtrantmpdimenA has the width of the big letter plus the
+% separation space and \@IEEEPARstartfont is the font we need to use
+% Now, we make the letter and issue the hanging indent command
+% The letter is placed in a box of zero width and height so that other
+% text won't be displaced by it.
+\hangindent\@IEEEtrantmpdimenB\hangafter=-\IEEEPARstartDROPLINES%
+\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}%
+\raisebox{-\IEEEPARstartDROPDEPTH}[0pt][0pt]{\hspace{\IEEEPARstartHOFFSET}%
+\@IEEEPARstartfont\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}%
+\hspace{\IEEEPARstartSEP}}}%
+{\IEEEPARstartWORDFONTSTYLE{\IEEEPARstartWORDCAPSTYLE{\selectfont#2}}}}
+
+
+
+
+
+
+% determines if the space remaining on a given page is equal to or greater
+% than the specified space of argument one
+% if not, execute argument two (only if the remaining space is greater than zero)
+% and issue a \newpage
+%
+% example: \@IEEEtranneedspace{2in}{\vfill}
+%
+% Does not take into consideration rubber shrinkage, so it tends to
+% be overly cautious
+% Based on an example posted by Donald Arseneau
+% Note this macro uses \@IEEEtrantmpdimenB internally for calculations,
+% so DO NOT PASS \@IEEEtrantmpdimenB to this routine
+% if you need a dimen register, import with \@IEEEtrantmpdimenA instead
+\def\@IEEEtranneedspace#1#2{\penalty-100\begingroup%shield temp variable
+\@IEEEtrantmpdimenB\pagegoal\advance\@IEEEtrantmpdimenB-\pagetotal% space left
+\ifdim #1>\@IEEEtrantmpdimenB\relax% not enough space left
+\ifdim\@IEEEtrantmpdimenB>\z@\relax #2\fi%
+\newpage%
+\fi\endgroup}
+
+
+% \IEEEauthorrefmark
+\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or%
+ \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger%
+ \or \ddagger\ddagger \else\textsuperscript{\expandafter\romannumeral#1}\fi}}}}
+
+
+% V1.3 IEEEQED and IEEEproof
+\def\IEEEproofname{Proof}
+
+\def\IEEEQEDclosed{\mbox{\rule[0pt]{1.3ex}{1.3ex}}} % for a filled box
+\def\IEEEQEDopen{{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.2pt}\fbox{\rule[0pt]{0pt}{1.3ex}\rule[0pt]{1.3ex}{0pt}}}}
+\def\IEEEQED{\IEEEQEDclosed} % default to closed
+
+%V1.8 flag to indicate if QED symbol is to be shown
+\newif\if@IEEEQEDshow \@IEEEQEDshowtrue
+\def\IEEEproofindentspace{2\parindent}% V1.8 allow user to change indentation amount if desired
+% v1.7 name change to avoid namespace collision with amsthm. Also add support
+% for an optional argument.
+\def\IEEEproof{\@ifnextchar[{\@IEEEproof}{\@IEEEproof[\IEEEproofname]}}
+\def\@IEEEproof[#1]{\@IEEEQEDshowtrue\par\noindent\hspace{\IEEEproofindentspace}{\itshape #1: }}
+\def\endIEEEproof{\if@IEEEQEDshow\hspace*{\fill}\nobreakspace\IEEEQED\fi\par}
+% qedhere for equation environments, similar to AMS \qedhere
+\def\IEEEQEDhereeqn{\global\@IEEEQEDshowfalse\eqno\let\eqno\relax\let\leqno\relax
+ \let\veqno\relax\hbox{\IEEEQED}}
+% IEEE style qedhere for IEEEeqnarray and other environments
+\def\IEEEQEDhere{\global\@IEEEQEDshowfalse\IEEEQED}
+% command to disable QED at end of IEEEproof
+\def\IEEEQEDoff{\global\@IEEEQEDshowfalse}
+
+
+% Provide support for the control entries of IEEEtran.bst V1.00 and later.
+% V1.7 optional argument allows for a different aux file to be specified in
+% order to handle multiple bibliographies. For example, with multibib.sty:
+% \newcites{sec}{Secondary Literature}
+% \bstctlcite[@auxoutsec]{BSTcontrolhak}
+% V1.7 I see no need for \providecommand here.
+\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+\def\@bstctlcite[#1]#2{\@bsphack
+ \@for\@citeb:=#2\do{%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+ \@esphack}
+
+% \IEEEnoauxwrite{} allows for citations that do not add to or affect
+% the order of the existing citation list. Can be useful for \cite
+% within \thanks{}.
+\DeclareRobustCommand{\IEEEnoauxwrite}[1]{\relax
+\if@filesw
+\@fileswfalse
+#1\relax\relax\relax\relax\relax
+\@fileswtrue
+\else
+#1\relax\relax\relax\relax\relax
+\fi}
+
+% need a backslash character for typeout output
+{\catcode`\|=0 \catcode`\\=12
+|xdef|@IEEEbackslash{\}}
+
+
+% hook to allow easy disabling of all legacy warnings
+\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is deprecated (line \the\inputlineno).
+Use \@IEEEbackslash #2 instead.}}
+
+
+% V1.4 no longer support these legacy commands
+% \def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart}
+% \let\labelindent\IEEElabelindent
+% \def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin}
+% \def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth}
+% \def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep}
+% \def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc}
+% \def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl}
+% \def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr}
+
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtrantools.sty %%%%%%%%%%%%%%%%%%%%%%
+% That's all folks!
+
diff --git a/macros/latex/contrib/IEEEtran/tools/IEEEtrantools_doc.txt b/macros/latex/contrib/IEEEtran/tools/IEEEtrantools_doc.txt
new file mode 100644
index 0000000000..73bef64ae0
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/tools/IEEEtrantools_doc.txt
@@ -0,0 +1,329 @@
+
+IEEEtrantools_doc.txt 2015/08/26 version 1.5
+(Version 1.5 is based on the commands of version 1.8b of IEEEtran.cls)
+This document is the user guide for the IEEEtrantools.sty package.
+
+The IEEEtrantools.sty package provides several popular and unique
+commands from the IEEEtran.cls class file.
+
+IEEEtrantools.sty should not be used with IEEEtran.cls.
+
+For helpful tips, answers to frequently asked questions and other support,
+visit the IEEEtrantools support page at my website:
+
+http://www.michaelshell.org/tex/ieeetran/tools/
+
+The latest version and documentation of IEEEtrantools can be obtained at:
+http://www.ctan.org/pkg/ieeetran
+
+Copyright (c) 2002-2015 by Michael Shell
+ See
+ http://www.michaelshell.org/
+ for current contact information.
+
+*************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall the IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+
+File list of work: IEEEtrantools.sty, IEEEtrantools_doc.txt, changelog.txt
+*************************************************************************
+
+
+Available package options e.g., \usepackage[redeflists]{IEEEtrantools}
+
+ redeflists
+ Causes IEEEtrantools to redefine the standard LaTeX itemize,
+ enumerate and description (IED) lists to their IEEE versions.
+ The default behavior is to retain the standard definitions
+ of itemize, enumerate and description. The IEEEtran versions are
+ always available as IEEEitemize, IEEEenumerate and IEEEdescription
+ and the original LaTeX versions are always available as LaTeXitemize,
+ LaTeXenumerate and LaTeXdescription.
+
+**********************************************************************
+
+The IEEEtrantools.sty package provides several commands from IEEEtran.cls
+so that they can be used under other LaTeX classes. This guide covers only
+the differences in the use (or undocumented uses) of the commands from
+those provided by IEEEtran.cls. For complete documentation on these
+commands, see the relevant sections in the IEEEtran_HOWTO manual which
+is available at
+http://www.ctan.org/pkg/ieeetran
+
+IEEEtrantools.sty provides \IEEEPARstart; the \bstctlcite command for the
+control entry types of IEEEtran.bst V1.00 and later; \IEEEnoauxwrite;
+the IEEE IED list environments; and the complete IEEEeqnarray family,
+including the IEEEeqnarray support commands, the IEEEproof environment
+and \IEEEauthorrefmark.
+
+Please note that, as a package file, IEEEtrantools.sty will not attempt
+to alter document formatting (other than if the IDE lists are redefined
+if the redeflists option is invoked) as controlled by the class file.
+Therefore, there may be spacing/layout differences between the results
+of the same IEEEtran commands under IEEEtran.cls and the user's class
+file as different fonts, default values for the various length commands,
+etc., are used than under IEEEtran.cls.
+
+
+
+
+
+*** \IEEEPARstart ***
+
+\IEEEPARstart{}{} is used to provide a large initial "drop cap" letter(s) as
+well as to capitialize the remaining letters of the first word of a chapter
+or section (if placed within the second argument). e.g.,
+\IEEEPARstart{O}{nce}
+
+IEEEtrantools.sty provides the user with a way to control the various
+parameters of the \IEEEPARstart letters.
+
+Below is how the user can alter them (after the IEEEtrantools.sty package
+is loaded). Default values are shown. IEEEtrantools will not override
+any previous definitions of these parameters if they already exist when
+the package is loaded.
+
+
+% The number of lines that are indented to clear the drop cap letter.
+% You may need to increase this beyond 1 + \IEEEPARstartDROPDEPTH if
+% you are using lowercase letters with descenders.
+\renewcommand{\IEEEPARstartDROPLINES}{2}
+
+% The minimum number of lines left on a page to allow an \IEEEPARstart.
+% Does not take into consideration glue shrink, so it tends to be overly
+% cautious.
+\renewcommand{\IEEEPARstartMINPAGELINES}{2}
+
+% The height of the drop cap (*above* the baseline), is adjusted to match
+% the height of this text in the current font (when \IEEEPARstart is called).
+% Use a strut if you want a height not based on that of the main text font.
+\renewcommand{\IEEEPARstartHEIGHTTEXT}{T}
+
+% The depth the letter is lowered below the baseline. The height (and size)
+% of the letter is determined by the sum of this value and the height of
+% \IEEEPARstartHEIGHTTEXT in the current font. It is a good idea to set this
+% value in terms of the baselineskip so that it can respond to changes
+% therein.
+\renewcommand{\IEEEPARstartDROPDEPTH}{1.1\baselineskip}
+
+% The font the drop cap will be rendered in. The argument is a command that
+% can take zero or one argument.
+\renewcommand{\IEEEPARstartFONTSTYLE}{\bfseries}
+
+% Any additional, non-font related commands needed to modify the drop cap
+% letter, can take zero or one argument.
+\renewcommand{\IEEEPARstartCAPSTYLE}{\MakeUppercase}
+
+% The font that will be used to render the rest of the word (second argument
+% to \IEEEPARstart), can take zero or one argument.
+\renewcommand{\IEEEPARstartWORDFONTSTYLE}{\relax}
+
+% Any additional, non-font related commands needed to modify the rest of the
+% word (second argument to \IEEEPARstart), can take zero or one argument.
+\renewcommand{\IEEEPARstartWORDCAPSTYLE}{\MakeUppercase}
+
+% The horizontal separation distance from the drop letter to the main text.
+% Lengths that depend on the font (i.e., ex, em, etc.) will be referenced to
+% the font that is active when \IEEEPARstart is called.
+\renewcommand{\IEEEPARstartSEP}{0.15em}
+
+% The Horizontal offset applied to the left of the drop cap. The drop cap
+% can be shifted left (negative) or right (positive) using this parameter.
+% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced
+% to the font that is active when \IEEEPARstart is called.
+\renewcommand{\IEEEPARstartHOFFSET}{0em}
+
+For \IEEEPARstartSEP and \IEEEPARstartHOFFSET, you can also reference the
+length variable, \IEEEPARstartletwidth, which will be set to the width of
+the drop drop before it is rendered. e.g.,
+\renewcommand{\IEEEPARstartHOFFSET}{-0.5\IEEEPARstartletwidth}
+will cause the drop cap to be shifted leftward by half its width.
+
+% Italic correction command applied at the end of the drop cap when
+% evaluating its width. Without this, italic or slanted drop cap letters will
+% "crash into" the main text because their full true width is not taken into
+% consideration.
+\renewcommand{\IEEEPARstartITLCORRECT}{\/}
+
+
+
+
+
+*** \bstctlcite ***
+
+\bstctlcite{} is used to issue a citation for a special IEEEtran.bst BibTeX
+style control entry which can control various operating parameters of the
+IEEEtran.bst file (V1.00 and later):
+
+\bstctlcite{IEEEexample:BSTcontrol}
+
+V1.2 and later of IEEEtrantools.sty provides for an optional argument so
+that different auxiliary file specifiers may be used in documents with
+multiple bibliographies:
+
+\bstctlcite[@auxoutsec]{IEEEexample:BSTcontrol}
+
+\bstctlcite operates silently and will not alter the citation numbers or
+place a citation entry into the main text or bibliography (when used with
+IEEEtran.bst). It should not be used with .bst files that do not provide
+support for these special BST control entries.
+
+See the IEEEtran.bst BibTeX style documentation for details.
+http://www.michaelshell.org/tex/ieeetran/bibtex/
+http://www.ctan.org/pkg/ieeetran
+
+
+
+
+*** \IEEEnoauxwrite ***
+
+Sometimes an author wants to cite something within \thanks or other section
+that comes early in the document, but does not want that to take the place
+of the first reference in the main text (e.g., alter the citation counter).
+Assuming the publisher's rules allow citations in footnote and/or abstract
+sections of the document, the command \IEEEnoauxwrite{} can be used:
+
+\author{... \thanks{... \IEEEnoauxwrite{\cite{myreference}}.}}
+
+to accomplish this.
+
+If the reference is not also cited elsewhere in the document, it will have
+to be manually inserted into the reference list of the bibliography via a
+\nocite. If the \nocite is done at the end of document, the citation will
+be last in the reference list rather than first as would normally happen
+with citations within \thanks.
+
+
+
+
+*** itemize, enumerate and description (IED) lists ***
+
+IEEEtrantools provides the IEEEitemize, IEEEenumerate and IEEEdescription
+list environments that offer enhanced controls and make it much easier to
+create such lists when the main text is "block indented" from the
+labels (IEEE style).
+
+By default, the LaTeX IED list environments are not overridden with the
+IEEE IED versions. To force this, load IEEEtrantools.sty with the
+"redeflists" option:
+
+\usepackage[redeflists]{IEEEtrantools}
+
+In any event, the IEEE IED list environments are available as IEEEitemize,
+IEEEenumerate, and IEEEdescription. The IEEE IED lists depend on the LaTeX
+low-level list environment, so class files that redefine it may also alter
+the IEEE IED list formatting. The original LaTeX IED environments (as
+provided by the LaTeX kernel and class file) are always retained as
+LaTeXitemize, LaTeXenumerate and LaTeXdescription.
+
+Beware that the default enumerate label width will not be correct if
+the class file is not using normalfont "9)" style labeled enumerated lists.
+
+The support commands for the IEEE IED list environments (\IEEEsetlabelwidth,
+\IEEEusemathlabelsep, \IEEEiedlabeljustifyl, etc.) are also provided.
+
+See the section on lists in the IEEEtran_HOWTO manual for full details
+on the IEEE style lists.
+http://www.ctan.org/pkg/ieeetrantools
+
+
+
+*** The IEEEeqnarray family ***
+
+Please note that IEEEtrantools provides and sets the length variable
+\IEEEnormaljot. At the \begin{document}, \IEEEnormaljot will be set to
+the current value of \jot. If the user later alters the document's
+nominal \jot, the value of \IEEEnormaljot should be revised as well.
+
+The support commands for the IEEEeqnarray commands (\IEEEstrut,
+\IEEEeqnarrayvrule, \IEEEvisiblestrutstrue, etc.) are also provided.
+
+For more information on the use of the IEEEeqnarray family of commands,
+the following sources of information are recommended:
+
+ 1. The IEEEtran HOWTO manual (IEEEeqnarray is covered in the Appendices):
+ http://www.ctan.org/pkg/ieeetrantools
+
+ 2. Stefan M. Moser's "How to Typeset Equations in LaTeX"
+ http://moser.cm.nctu.edu.tw/manuals.html#eqlatex
+
+ 3. Tobias Oetiker's "The Not So Short Introduction to LaTeX2e"
+ http://www.ctan.org/pkg/lshort
+
+
+
+
+*** The IEEEproof environment ***
+
+IEEEtrantools provides the IEEEtran IEEEproof environment as well as
+several undocumented IEEEtran IEEEproof commands that are useful for
+non-IEEE related work:
+
+ 1. \IEEEQEDoff, when issued within an IEEEproof, turns off the
+ automatic generation of the \IEEEQED symbol at the end of
+ the proof.
+
+ 2. \IEEEQEDhere emits an \IEEEQED symbol at the place it is executed
+ and turns off the \IEEEQED symbol at the end of the proof. This
+ can be useful when using IEEEeqnarray within IEEEproof
+ \begin{IEEEproof}
+ \begin{IEEEeqnarray*}{c+x*}
+ x=1. & \IEEEQEDhere
+ \end{IEEEeqnarray*}
+ \end{IEEEproof}
+ % Thanks to Stefan M. Moser for this example.
+
+ 3. \IEEEQEDhereeqn is somewhat similar to the AMS \qedhere and
+ is for use with the standard equation environment within
+ IEEEproof:
+ \begin{IEEEproof}
+ \begin{equation*}
+ x=1. \IEEEQEDhereeqn
+ \end{equation*}
+ \end{IEEEproof}
+ Note that \IEEEQEDhereeqn will put the QED symbol in front
+ of an equation number if it exists.
+
+ 4. \IEEEproofindentspace allows users to change the indention
+ of the proof environment from its IEEEtran default of 2\parindent:
+
+ \renewcommand{\IEEEproofindentspace}{1\parindent}
+
+ Place the above redefinition before any IEEEproof environments it is
+ to affect.
+
+
+
+
+*** \IEEEauthorrefmark{} ***
+
+The \IEEEauthorrefmark{} simply takes a number as an argument and generates
+a corresponding superscript symbol. Used in IEEEtran.cls to link author
+names to their affiliations:
+
+ Michael Shell\IEEEauthorrefmark{2}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtrantools_doc.txt %%%%%%%%%%%%%%%%%%
+% That's all folks!
+
diff --git a/macros/latex/contrib/IEEEtran/tools/README b/macros/latex/contrib/IEEEtran/tools/README
new file mode 100644
index 0000000000..bc256c5b44
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/tools/README
@@ -0,0 +1,121 @@
+
+August 26, 2015
+
+
+The IEEEtrantools.sty package provides several commands from the
+IEEEtran.cls file so that they can be used under other LaTeX classes. The
+user guide provided here covers only the differences in the use of the
+commands from those provided by IEEEtran.cls. For complete documentation
+on these commands, see the relevant sections in the IEEEtran_HOWTO manual
+of the IEEEtran LaTeX class.
+
+The IEEEtrantools.sty package provides the following IEEEtran.cls commands:
+
+ 1. \IEEEPARstart which produces large initial "drop cap" letters.
+
+ 2. The \bstctlcite command for the control entry types of IEEEtran.bst
+ V1.00 and later.
+
+ 3. The \IEEEnoauxwrite command.
+
+ 4. The IEEE itemize, enumerate and description list environments.
+
+ 5. The complete IEEEeqnarray family for producing multiline equations
+ as well as matrices and tables, including the IEEEeqnarray support
+ commands.
+
+ 6. The \IEEEQEDhere and \IEEEQEDhereams commands to provide amsthm.sty
+ \qedhere functionality to IEEEproof. \IEEEQEDhere is for simple use
+ "right on the spot" such as within an IEEEeqnarry:
+
+ \begin{IEEEproof}
+ \begin{IEEEeqnarray}{rCl+x*}
+ x & = & y & \nonumber\IEEEQEDhere
+ \end{IEEEeqnarray}
+ \end{IEEEproof}
+
+ While \IEEEQEDhereams is like amsthm's venerable \qedhere and is
+ for use within the standard equation environment:
+
+ \begin{IEEEproof}
+ \begin{equation}
+ x = y \nonumber\IEEEQEDhereams\quad
+ \end{equation}
+ \end{IEEEproof}
+
+ Note that the qedhere style is normally not done with IEEE-related
+ work so these are undocumented features of IEEEtran.cls.
+
+ Thanks Mark D. Butala, Hennadiy Leontyev and Stefan M. Moser for
+ suggesting this feature.
+
+
+
+IEEEtrantools.sty is not needed and should not be used with IEEEtran.cls.
+
+For helpful tips, answers to frequently asked questions and other support,
+visit the IEEEtrantools support page at my website:
+
+http://www.michaelshell.org/tex/ieeetran/tools/
+
+
+Enjoy!
+
+Michael Shell
+http://www.michaelshell.org/
+
+
+*******
+2015/08/26 V1.5 (V1.8b of IEEEtran.cls) changes:
+
+ 1) Revised IEEEeqnarray column specifications to work with active "
+ (or other punctuation catcode changes) as with babel under the
+ german or ngerman language modes.
+ Thanks to Stefan M. Moser for reporting this problem.
+
+ 2) Fix bug with IEEEeqnarray equation number foreground color
+ under the color environment of Beamer class.
+ Thanks to Joschi Brauchle for reporting this problem.
+
+ 3) Added the \IEEEnoauxwrite command.
+ Thanks to Sudarshan Mukherjee for suggesting this feature.
+
+
+
+********************************** Files **********************************
+
+README - This file.
+
+changelog.txt - The revision history.
+
+IEEEtrantools.sty - The LaTeX package file.
+
+IEEEtrantools_doc.txt - The user manual - supplementary to the
+ IEEEtran_HOWTO manual.
+
+***************************************************************************
+Legal Notice:
+This code is offered as-is without any warranty either expressed or
+implied; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE!
+User assumes all risk.
+In no event shall the IEEE or any contributor to this code be liable for
+any damages or losses, including, but not limited to, incidental,
+consequential, or any other damages, resulting from the use or misuse
+of any information contained here.
+
+All comments are the opinions of their respective authors and are not
+necessarily endorsed by the IEEE.
+
+This work is distributed under the LaTeX Project Public License (LPPL)
+( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+distributed and modified. A copy of the LPPL, version 1.3, is included
+in the base LaTeX documentation of all distributions of LaTeX released
+2003/12/01 or later.
+Retain all contribution notices and credits.
+** Modified files should be clearly indicated as such, including **
+** renaming them and changing author support contact information. **
+
+File list of work: IEEEtrantools.sty, IEEEtrantools_doc.txt
+***************************************************************************
+
diff --git a/macros/latex/contrib/IEEEtran/tools/changelog.txt b/macros/latex/contrib/IEEEtran/tools/changelog.txt
new file mode 100644
index 0000000000..1e721c5f23
--- /dev/null
+++ b/macros/latex/contrib/IEEEtran/tools/changelog.txt
@@ -0,0 +1,119 @@
+
+
+ Changelog history of the IEEEtrantools.sty LaTeX package.
+ 2015/08/26
+ by Michael Shell (MDS)
+ http://www.michaelshell.org/
+
+
+2015/08/26 V1.5 (V1.8b of IEEEtran.cls)
+
+ 1) Revised IEEEeqnarray column specifications to work with active "
+ (or other punctuation catcode changes) as with babel under the
+ german or ngerman language modes.
+ Thanks to Stefan M. Moser for reporting this problem.
+
+ 2) Fixed bug with IEEEeqnarray equation number foreground color
+ under the color environment of Beamer class.
+ Thanks to Joschi Brauchle for reporting this problem.
+
+ 3) Added the \IEEEnoauxwrite command.
+ Thanks to Sudarshan Mukherjee for suggesting this feature.
+
+
+*******
+2014/09/17 V1.4 (V1.8a of IEEEtran.cls) changes:
+
+ 1) Internal code improvements for command argument processing and
+ support for future features.
+
+
+*******
+12/2012 V1.3 (V1.8 of IEEEtran.cls) changes:
+
+ 1) No longer redefines the standard LaTeX itemize, enumerate and
+ description (IED) lists by default. (e.g., the older package option
+ "retainorgcmds" is now the default behavior.) A new package option,
+ "redeflists", can be invoked to redefine the standard IED list
+ environments to their IEEE versions. IEEEitemize, IEEEenumerate and
+ IEEEdescription remain available in any case. The redeflists option
+ may not be compatible with other packages that alter the standard
+ IED list environments.
+
+ 2) Added new *-forms of \IEEEyesnumber*, \IEEEnonumber*, \IEEEyessubnumber*,
+ and \IEEEnosubnumber* (the non-star form of the latter is also new) which
+ persist across IEEEeqnarray lines until countermanded. To provide for
+ continued subequations across instances of IEEEeqnarrays as well as for
+ subequations that follow a main equation (e.g., 14, 14a, 14b ...)
+ \IEEEyessubnumber no longer automatically increments the equation number
+ on it's first invocation of a subequation group. Invoke both
+ \IEEEyesnumber\IEEEyessubnumber together to start a new
+ equation/subequation group.
+
+ 3) Hyperref links now work with IEEEeqnarray equations.
+ Thanks to Stefan M. Moser for reporting this problem.
+
+ 4) Now provides the IEEEproof environment, as well as the
+ \IEEEQEDhere, \IEEEQEDhereeqn and \IEEEQEDoff commands.
+ Also, \IEEEproofindentspace allows users to change the
+ IEEEproof indentation via \renewcommand.
+ Thanks to Mark D. Butala, Hennadiy Leontyev and Stefan M. Moser
+ for suggesting this. Special thanks to Stefan M. Moser for beta
+ testing and additional suggestions which improved IEEEproof.
+
+ 5) Revised \IEEEeqnarraymulticol{} to allow inner alignments without
+ requiring extra containing braces to prevent an incomplete \ifx error.
+ Thanks to Stefan M. Moser and Auke van der Valk for reporting this
+ problem.
+
+ 6) Added \IEEEauthorrefmark.
+
+ 7) Removed support for legacy IED list commands.
+ IEEEtrantools no longer defines or references \labelindent so as to
+ avoid namespace problems with list packages that define it.
+ Thanks to Sven Köhler for reporting the problem with enumitem.sty.
+
+
+*******
+ 1/2007 V1.2 (V1.7 of IEEEtran.cls) changes:
+
+ 1) Several commands and environments have depreciated in favor of
+ replacements with IEEE prefixes to better avoid potential future name
+ clashes with other packages. Legacy code retained to allow
+ use of the obsolete forms, but with an warning message to the
+ console during compilation:
+ \IEEEPARstart
+ For IED lists:
+ \IEEEiedlabeljustifyc, \IEEEiedlabeljustifyl, \IEEEiedlabeljustifyr,
+ \IEEEnocalcleftmargin, \IEEElabelindent, \IEEEsetlabelwidth,
+ \IEEEusemathlabelsep
+
+ 2) These commands/lengths now require the IEEE prefix and do not have
+ legacy support: \IEEEnormaljot.
+ For IED lists: \ifIEEEnocalcleftmargin, \ifIEEEnolabelindentfactor,
+ \IEEEiedlistdecl, \IEEElabelindentfactor
+
+ 3) \normalsizebaselineskip no longer provided.
+
+ 4) New \IEEEPARstart controls:
+ \IEEEPARstartHEIGHTTEXT, \IEEEPARstartFONTSTYLE, \IEEEPARstartCAPSTYLE,
+ \IEEEPARstartWORDFONTSTYLE, \IEEEPARstartWORDCAPSTYLE,
+ \IEEEPARstartHOFFSET, \IEEEPARstartITLCORRECT
+ and the (output) length \IEEEPARstartletwidth.
+
+ 5) Provide for an optional argument to \bstctlcite to provide a way to
+ specify a different aux file.
+
+
+*******
+ 11/2002 V1.1 (V1.6b of IEEEtran.cls) changes:
+
+ 1) In addition to the IEEE IED lists, the original LaTeX IED style list
+ environments are now preserved as LaTeXitemize, LaTeXenumerate, and
+ LaTeXdescription. Also, users can now redefine \makelabel within
+ IEEE IED list controls. There may be some use for these in specialized
+ applications. Thanks to Eli Barzilay for suggesting this feature.
+
+
+*******
+