Added cddlib-094h from http://www.inf.ethz.ch/personal/fukudak/cdd_home/

Change-Id: I64519509269e434b1b9ea87c3fe0805e711c0ac9
diff --git a/third_party/cddlib/doc/cddlibman.aux b/third_party/cddlib/doc/cddlibman.aux
new file mode 100644
index 0000000..f7f78d6
--- /dev/null
+++ b/third_party/cddlib/doc/cddlibman.aux
@@ -0,0 +1,91 @@
+\relax 
+\citation{fp-ddmr-96}
+\citation{mrtt-ddm-53}
+\citation{a-lrshome-01}
+\citation{af-pachv-92}
+\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{2}}
+\newlabel{INTRODUCTION}{{1}{2}}
+\citation{abs-hgach-97}
+\@writefile{toc}{\contentsline {section}{\numberline {2}Polyhedra H- and V-Formats (Version 1999)}{3}}
+\newlabel{FORMAT}{{2}{3}}
+\@writefile{toc}{\contentsline {section}{\numberline {3}Basic Object Types (Structures) in cddlib}{4}}
+\newlabel{DATASTR}{{3}{4}}
+\@writefile{toc}{\contentsline {section}{\numberline {4}Library Functions}{7}}
+\newlabel{LIBRARY}{{4}{7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Library Initialization}{7}}
+\newlabel{Initialization}{{4.1}{7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Core Functions}{7}}
+\newlabel{CoreLibrary}{{4.2}{7}}
+\citation{abs-hgach-97}
+\citation{fp-ddmr-96}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Data Manipulations}{11}}
+\newlabel{DataLibrary}{{4.3}{11}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.1}Number Assignments}{11}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.2}Arithmetic Operations for {\tt  mytype} Numbers}{11}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.3}Predefined Constants}{12}}
+\newlabel{constants}{{4.3.3}{12}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.4}Sign Evaluation and Comparison for {\tt  mytype} Numbers}{12}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.5}Polyhedra Data Manipulation}{12}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.6}LP Data Manipulation}{13}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.7}Matrix Manipulation}{13}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Input/Output Functions}{14}}
+\newlabel{IOLibrary}{{4.4}{14}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Obsolete Functions}{15}}
+\newlabel{ObsoleteFunctions}{{4.5}{15}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}Set Functions in {\tt  setoper} library}{15}}
+\newlabel{SetFunctions}{{4.6}{15}}
+\citation{a-lrshome-01}
+\citation{af-pachv-92}
+\citation{bdh-qach-03}
+\citation{e-acg-87}
+\citation{m-cg-94}
+\@writefile{toc}{\contentsline {section}{\numberline {5}An Extension of the CDD Library in GMP mode}{16}}
+\newlabel{GMPLIB}{{5}{16}}
+\@writefile{toc}{\contentsline {section}{\numberline {6}Examples}{16}}
+\newlabel{EXAMPLES}{{6}{16}}
+\@writefile{toc}{\contentsline {section}{\numberline {7}Numerical Accuracy}{16}}
+\newlabel{accuracy}{{7}{16}}
+\@writefile{toc}{\contentsline {section}{\numberline {8}Other Useful Codes}{16}}
+\newlabel{CODES}{{8}{16}}
+\citation{cl-porta-97}
+\citation{w-ldpo-93b}
+\citation{b-pplhome}
+\citation{m-pdcip-97}
+\citation{bfm-pdmvf-97}
+\citation{a-dcg}
+\citation{e-cgp}
+\citation{fg-lpfaq}
+\citation{f-pcfaq-98}
+\citation{dhhhty-latte-05}
+\citation{w-msv-05}
+\citation{f-fzctmacp-04}
+\citation{j-gvum-05}
+\citation{fjt-cgf-05}
+\citation{r-topcom-05}
+\bibstyle{plain}
+\bibdata{fukuda1,fukuda2}
+\bibcite{a-dcg}{1}
+\@writefile{toc}{\contentsline {section}{\numberline {9}Codes Using Cddlib}{17}}
+\newlabel{USERCODES}{{9}{17}}
+\bibcite{a-lrshome-01}{2}
+\bibcite{abs-hgach-97}{3}
+\bibcite{af-pachv-92}{4}
+\bibcite{b-pplhome}{5}
+\bibcite{bdh-qach-03}{6}
+\bibcite{bfm-pdmvf-97}{7}
+\bibcite{cl-porta-97}{8}
+\bibcite{dhhhty-latte-05}{9}
+\bibcite{e-acg-87}{10}
+\bibcite{e-cgp}{11}
+\bibcite{fg-lpfaq}{12}
+\bibcite{f-pcfaq-98}{13}
+\bibcite{f-fzctmacp-04}{14}
+\bibcite{fjt-cgf-05}{15}
+\bibcite{fp-ddmr-96}{16}
+\bibcite{j-gvum-05}{17}
+\bibcite{m-pdcip-97}{18}
+\bibcite{mrtt-ddm-53}{19}
+\bibcite{m-cg-94}{20}
+\bibcite{r-topcom-05}{21}
+\bibcite{w-msv-05}{22}
+\bibcite{w-ldpo-93b}{23}
diff --git a/third_party/cddlib/doc/cddlibman.bbl b/third_party/cddlib/doc/cddlibman.bbl
new file mode 100644
index 0000000..937abb9
--- /dev/null
+++ b/third_party/cddlib/doc/cddlibman.bbl
@@ -0,0 +1,169 @@
+\begin{thebibliography}{10}
+
+\bibitem{a-dcg}
+N.~Amenta.
+\newblock Directory of computational geometry.
+\newblock
+  \htmladdnormallink{http://www.geom.uiuc.edu/software/cglist/}{http://www.geo%
+m.uiuc.edu/software/cglist/}.
+
+\bibitem{a-lrshome-01}
+D.~Avis.
+\newblock {\em lrs Homepage}.
+\newblock
+  \htmladdnormallink{http://cgm.cs.mcgill.ca/\~{}avis/C/lrs.html}{http://cgm.c%
+s.mcgill.ca/\~{}avis/C/lrs.html}.
+
+\bibitem{abs-hgach-97}
+D.~Avis, D.~Bremner, and R.~Seidel.
+\newblock How good are convex hull algorithms.
+\newblock {\em Computational Geometry: Theory and Applications}, 7:265--302,
+  1997.
+
+\bibitem{af-pachv-92}
+D.~Avis and K.~Fukuda.
+\newblock A pivoting algorithm for convex hulls and vertex enumeration of
+  arrangements and polyhedra.
+\newblock {\em Discrete Comput. Geom.}, 8:295--313, 1992.
+
+\bibitem{b-pplhome}
+R.~Bagnara.
+\newblock Parma polyhedra library homepage, 2004.
+\newblock \htmladdnormallink{http://www.cs.unipr.it/ppl/}
+  {http://www.cs.unipr.it/ppl/}.
+
+\bibitem{bdh-qach-03}
+C.B. Barber, D.P. Dobkin, and H.~Huhdanpaa.
+\newblock {\em qhull, Version 2003.1}, 2003.
+\newblock program and report available from
+  \htmladdnormallink{http://www.qhull.org/} {http://www.qhull.org/}.
+
+\bibitem{bfm-pdmvf-97}
+D.~Bremner, K.~Fukuda, and A.~Marzetta.
+\newblock Primal-dual methods for vertex and facet enumeration.
+\newblock In {\em Proc. 13th Annu. ACM Sympos. Comput. Geom.}, pages 49--56,
+  1997.
+
+\bibitem{cl-porta-97}
+T.~Christof and A.~L{\"o}bel.
+\newblock {PORTA}: Polyhedron representation transformation algorithm (ver.
+  1.3.1), 1997.
+\newblock \htmladdnormallink{http://www.zib.de/Optimization/Software/Porta/}
+  {http://www.zib.de/Optimization/Software/Porta/}.
+
+\bibitem{dhhhty-latte-05}
+J.~de~Loera, D.~Haws, R.~Hemmecke, Peter Huggins, J.~Tauzer, and R.~Yoshida.
+\newblock {\em Latt{E}}.
+\newblock University of California, Davis, 2005.
+\newblock available from
+  \htmladdnormallink{http://www.math.ucdavis.edu/~latte/}{http://www.math.ucda%
+vis.edu/~latte/}.
+
+\bibitem{e-acg-87}
+H.~Edelsbrunner.
+\newblock {\em Algorithms in {C}ombinatorial {G}eometry}.
+\newblock Springer-Verlag, 1987.
+
+\bibitem{e-cgp}
+J.~Erickson.
+\newblock Computational geometry pages, list of software libraries and codes.
+\newblock
+  \htmladdnormallink{http://compgeom.cs.uiuc.edu/\~{}jeffe/compgeom/}{http://c%
+ompgeom.cs.uiuc.edu/\~{}jeffe/compgeom/}.
+
+\bibitem{fg-lpfaq}
+R.~Fourer and J.W. Gregory.
+\newblock Linear programming frequently asked questions ({LP-FAQ}).
+\newblock
+  \htmladdnormallink{http://www-unix.mcs.anl.gov/otc/Guide/faq/linear-programm%
+ing-faq.html}
+  {http://www-unix.mcs.anl.gov/otc/Guide/faq/linear-programming-faq.html}.
+
+\bibitem{f-pcfaq-98}
+K.~Fukuda.
+\newblock Polyhedral computation {FAQ}, 1998.
+\newblock Both html and ps versions available from
+  \htmladdnormallink{http://www.ifor.math.ethz.ch/\~{}fukuda/fukuda.html}
+  {http://www.ifor.math.ethz.ch/\~{}fukuda/fukuda.html}.
+
+\bibitem{f-fzctmacp-04}
+K.~Fukuda.
+\newblock From the zonotope construction to the {M}inkowski addition of convex
+  polytopes.
+\newblock {\em Journal of Symbolic Computation}, 38(4):1261--1272, 2004.
+\newblock pdf file available from
+  \htmladdnormallink{http://www.cs.mcgill.ca/\~{}fukuda/download/paper/minksum%
+031007jsc.pdf}{http://www.cs.mcgill.ca/\~{}fukuda/download/paper/minksum031007%
+jsc.pdf}.
+
+\bibitem{fjt-cgf-05}
+K.~Fukuda, A.~Jensen, and R.~Thomas.
+\newblock Computing {G}r{\"o}bner fans.
+\newblock Technical report.
+\newblock In preparation.
+
+\bibitem{fp-ddmr-96}
+K.~Fukuda and A.~Prodon.
+\newblock Double description method revisited.
+\newblock In M.~Deza, R.~Euler, and I.~Manoussakis, editors, {\em Combinatorics
+  and Computer Science}, volume 1120 of {\em Lecture Notes in Computer
+  Science}, pages 91--111. Springer-Verlag, 1996.
+\newblock ps file available from
+  \htmladdnormallink{ftp://ftp.ifor.math.ethz.ch/pub/fukuda/reports/ddrev96031%
+5.ps.gz}{ftp://ftp.ifor.math.ethz.ch/pub/fukuda/reports/ddrev960315.ps.gz}.
+
+\bibitem{j-gvum-05}
+A.N. Jensen.
+\newblock {\em Gfan version 0.1: A User's Manual}.
+\newblock Department of Mathematical Sciences, University of Aarhus and
+  Institute for Operations Research, ETH Zurich, 2005.
+\newblock available from
+  \htmladdnormallink{http://home.imf.au.dk/ajensen/software/gfan/gfan.html}{ht%
+tp://home.imf.au.dk/ajensen/software/gfan/gfan.html}.
+
+\bibitem{m-pdcip-97}
+A.~Marzetta.
+\newblock {\em pd -- {C}-implementation of the primal-dual algoirithm}, 1997.
+\newblock code available from
+  \htmladdnormallink{http://www.cs.unb.ca/profs/bremner/pd/}
+  {http://www.cs.unb.ca/profs/bremner/pd/}.
+
+\bibitem{mrtt-ddm-53}
+T.S. Motzkin, H.~Raiffa, GL. Thompson, and R.M. Thrall.
+\newblock The double description method.
+\newblock In H.W. Kuhn and A.W.Tucker, editors, {\em Contributions to theory of
+  games, Vol. 2}. Princeton University Press, Princeton, RI, 1953.
+
+\bibitem{m-cg-94}
+K.~Mulmuley.
+\newblock {\em Computational {G}eometry, {A}n {I}ntroduction {T}hrough
+  {R}andamized {A}lgorithms}.
+\newblock Prentice-Hall, 1994.
+
+\bibitem{r-topcom-05}
+J.~Rambau.
+\newblock {\em TOPCOM, a package for computing Triangulations Of Point
+  Configurations and Oriented Matroids}.
+\newblock University of Bayreuth, 2005.
+\newblock available from
+  \htmladdnormallink{http://www.uni-bayreuth.de/departments/wirtschaftsmathema%
+tik/rambau/TOPCOM/}{http://www.uni-bayreuth.de/departments/wirtschaftsmathemat%
+ik/rambau/TOPCOMl}.
+
+\bibitem{w-msv-05}
+C.~Weibel.
+\newblock {\em Minksum version 1.1}.
+\newblock Mathematics Institute, EPF Lausanne, 2005.
+\newblock available from
+  \htmladdnormallink{http://roso.epfl.ch/cw/poly/public.php}{http://roso.epfl.%
+ch/cw/poly/public.php}.
+
+\bibitem{w-ldpo-93b}
+D.K. Wilde.
+\newblock A library for doing polyhedral operations.
+\newblock Master's thesis, Oregon State University, Corvallis, Oregon, Dec
+  1993.
+\newblock Also published in IRISA technical report PI 785, Rennes, France; Dec,
+  1993.
+
+\end{thebibliography}
diff --git a/third_party/cddlib/doc/cddlibman.blg b/third_party/cddlib/doc/cddlibman.blg
new file mode 100644
index 0000000..6ad04cb
--- /dev/null
+++ b/third_party/cddlib/doc/cddlibman.blg
@@ -0,0 +1,49 @@
+This is BibTeX, Version 0.99c (Web2C 7.4.5)
+The top-level auxiliary file: cddlibman.aux
+The style file: plain.bst
+Database file #1: fukuda1.bib
+Database file #2: fukuda2.bib
+Warning--empty institution in fjt-cgf-05
+Warning--empty year in fjt-cgf-05
+You've used 23 entries,
+            2118 wiz_defined-function locations,
+            629 strings with 8653 characters,
+and the built_in function-call counts, 6251 in all, are:
+= -- 603
+> -- 290
+< -- 3
++ -- 117
+- -- 91
+* -- 344
+:= -- 1076
+add.period$ -- 79
+call.type$ -- 23
+change.case$ -- 104
+chr.to.int$ -- 0
+cite$ -- 25
+duplicate$ -- 236
+empty$ -- 521
+format.name$ -- 91
+if$ -- 1302
+int.to.chr$ -- 0
+int.to.str$ -- 23
+missing$ -- 10
+newline$ -- 126
+num.names$ -- 50
+pop$ -- 155
+preamble$ -- 1
+purify$ -- 89
+quote$ -- 0
+skip$ -- 164
+stack$ -- 0
+substring$ -- 250
+swap$ -- 46
+text.length$ -- 3
+text.prefix$ -- 0
+top$ -- 0
+type$ -- 88
+warning$ -- 2
+while$ -- 60
+width$ -- 25
+write$ -- 254
+(There were 2 warnings)
diff --git a/third_party/cddlib/doc/cddlibman.dvi b/third_party/cddlib/doc/cddlibman.dvi
new file mode 100644
index 0000000..01ac87a
--- /dev/null
+++ b/third_party/cddlib/doc/cddlibman.dvi
Binary files differ
diff --git a/third_party/cddlib/doc/cddlibman.log b/third_party/cddlib/doc/cddlibman.log
new file mode 100644
index 0000000..914ed24
--- /dev/null
+++ b/third_party/cddlib/doc/cddlibman.log
@@ -0,0 +1,199 @@
+This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=latex 2008.3.22)  23 MAR 2008 15:43
+entering extended mode
+ %&-line parsing enabled.
+**cddlibman.tex
+(./cddlibman.tex
+LaTeX2e <2005/12/01>
+Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
+yphenation, arabic, basque, bulgarian, coptic, welsh, czech, slovak, german, ng
+erman, danish, esperanto, spanish, catalan, galician, estonian, farsi, finnish,
+ french, greek, monogreek, ancientgreek, croatian, hungarian, interlingua, ibyc
+us, indonesian, icelandic, italian, latin, mongolian, dutch, norsk, polish, por
+tuguese, pinyin, romanian, russian, slovenian, uppersorbian, serbian, swedish, 
+turkish, ukenglish, ukrainian, loaded.
+(/usr/local/texlive/2007/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
+(/usr/local/texlive/2007/texmf-dist/tex/latex/base/size11.clo
+File: size11.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+) (./html.sty
+Package: html 1996/02/01 v1.0 hypertext commands for latex2html (nd, hs)
+\c@lpart=\count87
+\c@lchapter=\count88
+\c@lsection=\count89
+\c@lsubsection=\count90
+\c@lsubsubsection=\count91
+\c@lparagraph=\count92
+\c@lsubparagraph=\count93
+\c@lsubsubparagraph=\count94
+\c@lequation=\count95
+)
+(/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2000/07/18 v2.13 AMS math features
+\@mathmargin=\skip43
+
+For additional information on amsmath, use the `?' option.
+(/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01
+
+(/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0
+\@emptytoks=\toks14
+\ex@=\dimen103
+))
+(/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d
+\pmbraise@=\dimen104
+)
+(/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amsopn.sty
+Package: amsopn 1999/12/14 v2.01 operator names
+)
+\inf@bad=\count96
+LaTeX Info: Redefining \frac on input line 211.
+\uproot@=\count97
+\leftroot@=\count98
+LaTeX Info: Redefining \overline on input line 307.
+\classnum@=\count99
+\DOTSCASE@=\count100
+LaTeX Info: Redefining \ldots on input line 379.
+LaTeX Info: Redefining \dots on input line 382.
+LaTeX Info: Redefining \cdots on input line 467.
+\Mathstrutbox@=\box26
+\strutbox@=\box27
+\big@size=\dimen105
+LaTeX Font Info:    Redeclaring font encoding OML on input line 567.
+LaTeX Font Info:    Redeclaring font encoding OMS on input line 568.
+\macc@depth=\count101
+\c@MaxMatrixCols=\count102
+\dotsspace@=\muskip10
+\c@parentequation=\count103
+\dspbrk@lvl=\count104
+\tag@help=\toks15
+\row@=\count105
+\column@=\count106
+\maxfields@=\count107
+\andhelp@=\toks16
+\eqnshift@=\dimen106
+\alignsep@=\dimen107
+\tagshift@=\dimen108
+\tagwidth@=\dimen109
+\totwidth@=\dimen110
+\lineht@=\dimen111
+\@envbody=\toks17
+\multlinegap=\skip44
+\multlinetaggap=\skip45
+\mathdisplay@stack=\toks18
+LaTeX Info: Redefining \[ on input line 2666.
+LaTeX Info: Redefining \] on input line 2667.
+)
+(/usr/local/texlive/2007/texmf-dist/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2002/01/22 v2.2d
+
+(/usr/local/texlive/2007/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2001/10/25 v2.2f
+\symAMSa=\mathgroup4
+\symAMSb=\mathgroup5
+LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
+(Font)                  U/euf/m/n --> U/euf/b/n on input line 132.
+))
+(./cddlibman.aux)
+\openout1 = `cddlibman.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 21.
+LaTeX Font Info:    ... okay on input line 21.
+LaTeX Font Info:    Try loading font information for U+msa on input line 30.
+
+(/usr/local/texlive/2007/texmf-dist/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2002/01/19 v2.2g AMS font definitions
+)
+LaTeX Font Info:    Try loading font information for U+msb on input line 30.
+
+(/usr/local/texlive/2007/texmf-dist/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2002/01/19 v2.2g AMS font definitions
+)
+(./cddlibman.toc)
+\tf@toc=\write3
+\openout3 = `cddlibman.toc'.
+
+ [1
+
+] [2] [3] [4]
+Overfull \hbox (19.168pt too wide) in paragraph at lines 395--395
+[]\OT1/cmtt/m/n/10.95 typedef mytype **dd_Amatrix;  /* mytype is either GMP mpq
+_t or 1-dim double array. */[] 
+ []
+
+[5] [6]
+Overfull \hbox (19.168pt too wide) in paragraph at lines 395--395
+[]  \OT1/cmtt/m/n/10.95 dd_colrange se;  /* col index as a certificate in the c
+ase of dual inconsistency */[] 
+ []
+
+[7] [8] [9]
+Overfull \hbox (0.39783pt too wide) in paragraph at lines 653--660
+\OT1/cmr/m/n/10.95 Fourier's Elim-i-na-tion. If the in-put ma-trix is V-represe
+ntation, \OT1/cmtt/m/n/10.95 *err \OT1/cmr/m/n/10.95 re-turns \OT1/cmtt/m/n/10.
+95 dd[]NotAvailForV\OT1/cmr/m/n/10.95 .
+ []
+
+[10] [11] [12]
+Overfull \hbox (7.43246pt too wide) in paragraph at lines 821--826
+\OT1/cmr/m/n/10.95 Copy the in-ci-dence rep-re-sen-ta-tion of the com-puted rep
+-re-sen-ta-tion pointed by poly to \OT1/cmtt/m/n/10.95 setfamily
+ []
+
+
+Overfull \hbox (10.47415pt too wide) in paragraph at lines 827--832
+\OT1/cmr/m/n/10.95 Copy the ad-ja-cency rep-re-sen-ta-tion of the com-puted rep
+-re-sen-ta-tion pointed by poly to \OT1/cmtt/m/n/10.95 setfamily
+ []
+
+[13] [14] [15] [16]
+
+Package amsfonts Warning: Obsolete command \Bbb; \mathbb should be used instead
+ on input line 1139.
+
+(./cddlibman.bbl
+Overfull \hbox (2.6514pt too wide) in paragraph at lines 4--9
+[]\OT1/cmr/m/n/10.95 N. Amenta.  Di-rec-tory of com-pu-ta-tional ge-om-e-try.  
+http://www.geom.uiuc.edu/software/cglist/. 
+ []
+
+[17]
+Underfull \hbox (badness 2302) in paragraph at lines 68--73
+[]\OT1/cmr/m/n/10.95 J. Er-ick-son.  Com-pu-ta-tional ge-om-e-try pages, list o
+f soft-ware li-braries and codes.
+ []
+
+[18]) [19] (./cddlibman.aux) ) 
+Here is how much of TeX's memory you used:
+ 1274 strings out of 94074
+ 14362 string characters out of 1163007
+ 65424 words of memory out of 1500000
+ 4583 multiletter control sequences out of 10000+50000
+ 13141 words of font info for 50 fonts, out of 1200000 for 2000
+ 645 hyphenation exceptions out of 8191
+ 27i,9n,24p,239b,243s stack positions out of 5000i,500n,6000p,200000b,5000s
+
+Output written on cddlibman.dvi (19 pages, 73224 bytes).
diff --git a/third_party/cddlib/doc/cddlibman.pdf b/third_party/cddlib/doc/cddlibman.pdf
new file mode 100644
index 0000000..4443911
--- /dev/null
+++ b/third_party/cddlib/doc/cddlibman.pdf
Binary files differ
diff --git a/third_party/cddlib/doc/cddlibman.ps b/third_party/cddlib/doc/cddlibman.ps
new file mode 100644
index 0000000..3b2cbc6
--- /dev/null
+++ b/third_party/cddlib/doc/cddlibman.ps
@@ -0,0 +1,5348 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.96 Copyright 2005 Radical Eye Software
+%%Title: cddlibman.dvi
+%%CreationDate: Sun Mar 23 15:43:43 2008
+%%Pages: 19
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 595 842
+%%DocumentFonts: CMR17 CMR12 CMBX12 CMBX10 CMR10 CMTT10 CMMI10 CMSY10
+%%+ CMR8 CMMI8 CMTI10 CMMI6 CMSY8 CMTT12 MSBM10
+%%DocumentPaperSizes: a4
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: /usr/local/texlive/2007/bin/powerpc-darwin/dvips -R
+%+ -Poutline -o /tmp/altpdflatex.82070-1206283419/cddlibman.ps
+%+ cddlibman.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource:  TeX output 2008.03.23:1543
+%%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: 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: MSBM10
+%!PS-AdobeFont-1.1: MSBM10 2.1
+%%CreationDate: 1993 Sep 17 11:10:37
+% Math Symbol fonts were designed by the American Mathematical Society.
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (2.1) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (MSBM10) readonly def
+/FamilyName (Euler) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /MSBM10 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 82 /R put
+readonly def
+/FontBBox{-55 -420 2343 920}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6A66A4000A13D5F68BFF326D
+1D432B0D064B56C598F4338C319309181D78E1629A31ECA5DD8536379B03C383
+D10F04E2C2822D3E73F25B81C424627D3D9A158EAB554233A25D3C6849ABA86F
+1F25C1667CB57D2E79B7803083CB7CC0616467F68450D9A3FEAB534EB9721003
+DBFEEFD050F3AC3492F5C74162A9A531ECEC0F47610B4940E946D21CAA771D30
+A6C27ECBA11708CC46C62396BF9D1990D579D0C394899D24FE7A4382EA18E7E1
+160E7283AF5BE17254790628E79FCC206F28B5566075B3A5697D5209062544FF
+D85FD89D6F43D6588B242AB2666B5D2861CD38A8CE676503EDFAE84D12A71E77
+8405E468FE391F4F3F50D2C57ED55512036B0DB8E76A7EF413ED08673E56DE2C
+16A3B65CD478433C0D2F9FEC4E662D54DAA43CFA6957D2A9AF8979BE06F70B68
+ED4C8C493D6DAC4971A3F1D010A7726D084EC1074FECD7D12D72AE16C26194AF
+21AF5774D9B860EEE8608D34F150092F09C19959BAA670022B9A9F263CD391E3
+74DD1D1B4CD4D75273CAA4E37F68C631723E08FA35AD34C0AFB4621AE6689861
+854D16CE1C375FD159A337E221A6FF1CFFB5693A0623E7EBB58C2969F590D081
+AD92DD9E5322E26D6A15023664AC73A355998BCC48ADD0E7A4BC79790519606F
+A1FEF6075033BCD422EE8233B83D1E7C20043280D531223D5AD4D5B41669F884
+95CE4D6DDE819B588742B930C579EDF743F2C74C95F717FAA6154FADC3FE2975
+F59CFB1C1A29059487E75C48505BAEAD7145667D4E18E46E610C868A257173ED
+0D30EAA4C090854DD8378E92D0A376226EA7DA63798F247BAC770FE26D70E72F
+90CCFAADF118304646955B0310C65F6CA51BEEEF87AFFE294D08C44354C73E8D
+7AE0751CEBE41E68D7E91ED09D4F0FE329150A34D0DEE8F7AED88AFB66381817
+364A65B9F1F9C6416198FB016FC8456DEEFED46BF4E1F873527AF52C13078ABF
+93CFA6D5E87708787DC837B554561D07B2DB9A89B886A92E7615598566203FE5
+96A6D048ACFEF549BBCE51A9EE6CE333704CFD95926DFC740F5A6896D22EBB27
+79603F94943CBC04381C62F5C0AB6FEFCE9B71ABFF7FA10A060D7CE5BFE481B0
+32E05B3C998C9D89CD66E4DAB5422D01B386769A45984EA2B3250786533E85CB
+9F1595D3556EAAE9BAB4793D6245EC8B8D16A47697B51772CB644BD58E81F416
+B01A9223997DCF9AAB43FB3CE9C8778039BA2D8E075FC02BB3FA5D66CCA58D24
+D9E0261DBB8C11092320D9B0F5CC79FAF53EF2AFD99D5A7732B1962668A85807
+9468AF19C570B30F7C798A4DC45D0AAB6E51DE57FCE9F19C468741F1B55ACB6F
+C9357E6ADFF2A2E2E84037170DD9E3F217D22DDEE6E8660C7988961BDE9990AB
+4CF63B8D0D60190BFE810A5661C8E02D32283B304CB434533629D0D3826548F7
+EECDE3892C213BCF51BB7257B1C073A39928D1B67DC28E98CB0F7D1D0B158EE6
+D49E399D58B3C6321CC9A2696F019E6F7EC0DADC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+% 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 (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 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 101 /e put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E
+C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E
+3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B
+426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D
+D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161
+E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32
+6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5
+A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE
+0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC
+85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF
+F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4
+C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC
+12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D
+048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8
+0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725
+741D08B9DB688731A6C9886C15A83C28DADCC81385EA239E045E8F3670CE03DB
+9EE77ED067036595C9F3B1854343BE3A12E486B6E5A2F8AC44FA5378D28DCCEE
+306B0E283AA444423F9A4FF38E2B56DCF67A39CEB2C643DAE86865517D5D0371
+CB8797208ADEC637330A3A57902C9A88EDB75A7C16FA9850075D9F19578EC666
+1353CC1FC512D59DFF847ACCD5A0FDA6F4CF4BB7C9EE62271154425996A08944
+E79BA092B9C46D95B60E552920809BA9381100F0BCC0ADA2151356112D2BC805
+B7BA9B4FAE18B451812D36A006CAED7DD4BE2CC57D77AB3CD68C3A36EBF00C84
+DE0B7744EA189CD804044B0ACF0CA7DD7BD0338595B6AF02CC620F4AC22968CB
+E47A8389E2D6CEE4E1F4E2B6166D38D641206C007A3E5BDF9F295FBCD665C6C6
+6D30F4E3F6C41361A4FEA2D7B803A7D0198ECE994B6BC48F24AD243CAA496AE9
+4CF6B05BA607114574162FAB1611A65DDC069B5E074783640FB2526B02461BF8
+9D6BDC3A50CEB8AE7A677C697D6AA75E18C1EB094575247D90DCD94218526CD7
+5853E82F44636DA30249835F50AE8353CF2D84846FF0041350CB27EB59342D5C
+405747DF9E6FF28E3A3278B9AD1C5338A9E1749FA4B4B780DBA0B2845BF9D39D
+512ECCE5EB9147639DB6C99343EE1FD5A7B4E46AE768218BC2DCC447119DC159
+2616693AF9F80DFF26D5923F05F3059551CDB0787B592AD23637CCD58D101B09
+A0B5A90C2C8F0BBB51D09219B124B059C90FACC2B550E0F23336EA72AA934083
+E65053BDD0EFA12DF4E294D0D622E81FC44A9625BAEF51CA7AC29D3DA03C482B
+79422328AEF3CB01EE3FE4F934C551C039A352BF4644C417F49CDE280CBC391B
+4985104D06E4D393644E5C70DCCB4C6E18F5CFCE0C2976971A4869DAD0B37455
+ADBB0A49D4C48BF342A1E6A639E51B544633636240EA84E5860AEA78F8ED2A10
+FFF7912FF99871FFB1AA53ABD8AE839D19F54F88DF5AB4B8BEFFFECC81B17E4E
+41877F3F051B2CBBF1EBFF0C21B42C22DD2FC72C6BB96C3D5418DCDB943DBEB2
+6FBC871D78E893E1AA4F7E2885869F4C6BC8B1E62E34258BB60234098B8AD53B
+8EE2ADFC74F6BB04D4525EDBA025F5EB3AD3B3417271FA0FC55FB789E93E7585
+88F37950F9BC82168F0FA9776625CB81CB698B5F6F3E0162DE0A2A05AD702493
+D754C7DD1202AF9D0F243B10FACEC3EB827080871E67CF08219CA2AA073D0561
+2775924DAFECDD08B21369A41B62F402F4BB99D0F2B42E6092A7ED538F1EEE28
+26134A7A144D039F2BB9C360F099E093393F78F80D6B190BA9B868CB9AB4AC2C
+953D3C264F3713EC69CD89E094FB82BD5ADDD16ACCABDAD8FDA500EDD43041C7
+9443911317C9DD565D6561A88C8DF2CFC392BF3A84672F38EF3D7092090F79F0
+C55CDC64C402F71EE38AA55B9932700C0D126C08E77280DAAD8CB7BADBC65A8B
+BEA10BB3B3EE45C708602E2DA24BECA9D21010A0D5668C030C59862E20F19922
+FA69E63BDF3A68121F4D129914D05E3504BFC8A0B795B0EC1467393013933135
+E65FAA16FCE8018FC4D2DFC9F1F6C68FC22472D5B003C05F890B0C87A377003F
+FC9462BA8E8D
+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 0 /minus 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
+F83C7D393392BCBC227771CDCB976E93302531886DDA73EBC9178917EFD0C20B
+133F1E59A6C75D5F3F5C6AED02D738369ED9541D8815D9BC42D34C187B1ACCCA
+8D5FFF1FA552AE4D2C870DD17119C4BC8D4E6DDDE0E925FBC9391C91D374019F
+B1F6AEF0498EFAA5974AF35567983E6F1A3963D01C1FCFB2CCDE0DAA89CEA35F
+FF4081BEC095A7E0889C4326D0B26B343528F28A7EBE951B6B59E77CEFD4FFDC
+D8A90A56EC2B520060869AE646FC671A833C92A49961EAFF92500196526B5CE2
+3792E028EC16CD1402D86FB8AD69679F70A14AD2276AD0A1CE82302ABBAE8D54
+308988AD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+% 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 (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 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 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
+B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
+AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
+7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
+20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
+B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
+68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
+D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
+26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
+F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
+77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
+BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
+C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
+30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
+148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
+E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
+E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
+337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
+0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
+472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
+A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
+33147977F35D7F2295DF003B2494214A6E5124D77C249D22668C746258A7A526
+74B4730926C21F0845E0D993665F537A40BE00536FF3D3A4B3B069669A7862BB
+CF4F3594F9AC9A78B5285EC44DFA70C9BF9941E2951127C43119D3343944CF22
+0073E40C5FC54883D0EC96D1AAAB4092A1EC9F11725DC9E2872F31789CD2FB8F
+1E989A43792D12481CF61AF346EF17FA1DD2B77A5B70E27BB643BA1EBF8BDD2C
+2EF11630E347E99D4CBEE4FC84CA12857E45785516E163776E22D405A7F03FC6
+F12556F1436704A623D42129CB0999038505FFB9255994D12F9985CFE0DD41EF
+60C7A1DEEC9E1D01D0F679E52BF8FFE9DA00F0D3D6E3C565AE94A52DE2DF610A
+34AA5B2F99127005354962EA95A09684A1C54603982F6ED8318DF4A2241129EF
+E522D97506F51D12A07CD458DF01AF358D73BCAB83DE4CD603125F38010A50B1
+7F6BD39F4104228417ED5380759B971A145E960A79AFA0A48C3C29D09A071259
+E089D9A3DE17058F6C11BC7A368716373957219754E20E3B70EB3CE6E9DD85A7
+192B0FAA56383117FAF94ECDD8D4476AFB181E6EFDCEC3E792589DBD045E0762
+DB29B6144C22E3F7879F0585E50E09B91CE4247D5F58080916051E18018D2030
+4991AFA89195438B8A2FDAF8B507E1BD71CF6D39E6DC72B4B989C659CCFA3C24
+50503FA10037B723CC275653F5AC1128CCB4CE670944A42DA43CB775F2BF0094
+0642958259953EDD31F1D4DE158DF581BAD6E295BC018D3D068251D948330570
+6BA53F928D3DE4189D700F894F38A86F77E40C80DEA4024AD39D337ED83BF953
+86D51456BEA836BDA04F6316BFE091135061DDAD9E72F7241681A1B984A7CE33
+10863277DE5DCC563966111C3B8C527F2544861038A2D118F0938E681BB6BA0E
+0A17694C71574DFC67936807621ACB2B2E8CE6EA24521AC83510A909D3D419F2
+77A9A69AF7622AA6E8818CD498CCCF34A1EF5FB52FEEA55D8D012E2A49FE6BAB
+988A4C3FC111694FD5DF83793D3FA412F9C52F75DDB64F732A8781B31C152AE5
+1A38F4BE47EED3B4DBA1D62018C3DEEFF4DEB4DE75BE27F9795199811B13D3DE
+0ECC72D494035FF44AEFE8E105E9FC8C6DF16F427D9360A2A8900E9AF07A2641
+F266472BC178A22066E27B6A5007F3192148F1FEE90EB0547A3EFAA07F277976
+8DC7F61E361F6CB5F5469335D9B108C00B8A5463569DBF691B189C67C5D1C17D
+C42CF62D2A64D8604643D7F2E5A9B469B1FF5887D75E81D1EDB8474DEBF5D0D8
+9B763CF269794AE655D845493FF7A2A4FBC386E793192F171CF7E9600F11B3B2
+FEDEE33925A710B50F89720DBE8E13893E9A99F3E85D59DC507C36989350A337
+E43B795D5ED589944D393669909A960DCEB7EC9D85AE4F9B762785790F3A0BBC
+B578B720DB50A7776A5281F63CAE389505B82B2957BDAF5B8D6FEF03042FE096
+F6718635638ED179F20DE6B667C1391FA46C78BA5E94B17E8BD87D7D252A5899
+A2A7B6AD5FC24D6B1685E1D306A164DD420EE295C35F698D0E199EF8E4358FFF
+FFC3C1F7CB4DFB7492569CAB7A1454FAE193B5231BF8F3BDF91E1F65A582EE04
+098998408CA5D30E3B88BB4F38415B0B5B29D8F69D4B4D998CDCCEB26869AB1D
+652DC6E4F49BE882B49017D94FC4D5A35D405EBDB7816BDF26573ED132806B3D
+B724A5A6389CDCA9EFAB31ABF9AB9E405F77F450D1AC459FC8785CBF0B7F7E4F
+B1BE5837527623FC9565E1CAE0648E0E99D789E8ACD8A5A5228DA49C8A4380D1
+E4ED5647C52E1E54C2EC96DAE874F9EA397ECFCEC10A70B8E6A3D435F331B29E
+20989C717DB44FDFD4B9D4CD3D972534D71E5FD9060646AA9DF73B25AE8E4FC3
+47722CAFE1A64A93241E6DAD0FF3F63281F4429D6E721680F1254324F8D20658
+B48CD2D1CFE3EB6DB3578121017C2AE2761078A5CFBB17B49D9FD5B3062515EA
+DE65CDF92BF386C1CD75CB5A3C8CAA376B9BCD3FD99AC91A822183513BFB115B
+FA9EDCB022FB8489A8B0278EA4B7C064C720C5A5825851C8DB7CACAB01343093
+39EB1873FF49569BCD882AEEA513B7B72268C46EF786DD621E40971949113A1D
+4D59E3852BDE0A670A2CE5C2B40771A08C01BF7F8DEF69F848285403939E1BEC
+57377A5DF39449FE89F84BD680A27BCFC94546D7C7AD295D257DB2E5D6174ACE
+B30699DADF744079B950EC4DF875416631658D52476D3C404D2573352D366D00
+46EA3A7BDAC95E49BE2E9C08B954E983AA11E020C3F7728A4E316C091F6E4822
+33CC34CA0DEABE4EE0E8F2EE4BE2A6F8CFC36F396E45ED2B47400C4A306580FA
+134DA28C336BF213D155FA2642EB2A54572ED32EA3C3CB4803843ED04A0C94E0
+2C9E70290D2A15CDBE3B30B8B2AB03280C7D1317CD3B740E04F71456AECBC02F
+FD38B33097A70C9EA0EB292581C654D159BEDCDDAA1CF2BFBFA54E5BFD2E3069
+1E8738B93AA160D89AB6F3A76F3651016984790D22713FAA8A4BA4830DC87F99
+87F966CE5C5768B53100F85BA1D81969BB181C591EAF78C1A73E0F8D14812646
+D7655905B54AB31B39C7A202ED15449CDA8E18698A294A5B22C65E921A6E7766
+2CF104D45C53AA16E245248A0B0E71E6D6EA7EB1567D2670765B67658B56C73A
+8F2EA25DE4B4B45EB68015CC7A592AB60E1F4AF41AF1890BFF8E2F04172087F6
+496F0F73AF7EE8B5D52235C50BE7236F406558A522C5A7ACB97308FA6F278A4E
+1CD5FD1538D9BE6FF4D1FC9C92634040E50DBE5DC0738855D44CDBD64798BB45
+75876F2F49A4A95E761C6DF3C20548DE2E82C68C8135F30B986116674B03F97F
+F224233144BC977D197215AD91BAE59BBE2CAC04AE8D27304C3A685F7A3C0C0B
+3C7A23E88B38B18CAC9FFEFCA92E53DE08B8698CFAA3CDE204F8FE13828A1491
+4AE3DCD1603AA0EE098759FFD901B633D8A4B1CA441F040CC1B76292F1D96761
+65CFEE423EC390FB95C58DA7A462A11A356E147F18399F6F260D058062459585
+1AB6B9B7CAB262B5925FAA6D90143CA06DBEF1D08A263AA55206F39728387452
+BF89C0F36F472636D9D82065AF2F8C3B985A7229603623F3520E8F1442C897AC
+9378206F2E559FEA568638B69537E0E12671B6068D77AA92DFAE98A9B608807E
+A231674C664BCF7C343660ECDB66FDF3427C6CDD24CBD6998095BF7985AEF3E1
+390FC75577144A92E6C3D076B47CB3F0A1DD91979E88B7CA7855A822C1E5CD09
+5D6D11D785D62F7AAA48AFC6716279D9E31375B936D3745BE7FBC5806EE636C5
+71B735E0AB32619875120A3DDD20C71EC38F704DB9BA2FB3BF20383192AB8CA3
+E75E0D4FAB0EBAF9BA1E306DEE2C5BD8B6102EABAF7A021481E7B82BBB1D3EBD
+9E0D87574B641D63120E25B6C3A73754A405D0F199D4A2EA59149644515A5BD5
+4297196C5393B17490DD561CB28657435F6B95F6103F5E1CF10E9DBABCEC8AF5
+AC00513EE4324BD8E526CDF20E402DA6A61655B129DD0E1AFF23AEE0ABF16026
+B178AB96555AD6E931E431B1536162A5DC4CCB31B3105D01BD2AA4CC54625902
+32C490614717804D940E0DD0E128F887D70FE37F37421075AA37464CD00D7B5A
+3469704FE431EA37257868C3FE7A735FB44322FC3A2DE39970AE5F1DD3DF9AB1
+29CC85C6D8EFC7E9107DB3D68C52610F8118EC75211CDEA9EC2705607147307B
+AFDEDE11F9453AFAE86159C378AA4E117D93A3CDF5CAC53B800F67CB8C9EC38E
+DA3CBB1F1C8ADAD753874ABBC307EE524FFBC0F0A7A3E7F59F160B1319F102CE
+660DA14FC169E07A3969712C96A4354F5194E5D63466CFA0254E4FA870DE3CE2
+33EE6D374F2DA785038E16DAC620C4B992D0FEB5CF66436A1B65183B21B9C421
+2481BC04E02D1E6C1A5761533FC38873B741D8FA5E23CE58C2F4E92169772A25
+A73CBF17D27D7A95020D6CB6F294234EEB478D94826CBC824E843AE827B9BE91
+24D64E11E31581172F185FC8F55DFFC708DFB147E93939476E0701713CB3E2AC
+3A6B71459A232E517ED0853F497E39678EB3C087814AAD58DFAEDCD1AAB6E0FC
+EAE1098D8E7F2F96A7DABBB7E12BFFAD77F2230306EB0B4453479653E7250698
+81EB641D055E333A223093F27C0785651E43DF22C4CF44824B03B13A2F3EEE69
+F14CF6FC6349B025747DAFCFC739E095F53C71583C0D6DA1A79507473E456C2D
+3C00A6F0586D7DDC4DF128B59E9AAAB958C93048A1E755569BE2F51C638CB9E7
+056F184B97F716A4EEC912CA14DCAA6B7A776C062ECC9909F2EF4F4C8B48B402
+3772D1BA6E546C5196FA74E8EC7E692CA0CA4AE5910921A88DA4D98D0D4B4E9C
+9A5999A6273DCE4AED0AA896281588B761733CE277052885A86786340B31CB86
+E96B3F4870FCA0D674E49857956F6052DA4A0CE89D2612D60E562DFA355513E0
+032490D9EC78675F514018ACE1F7479DECCA81B8DFC6218131CC41CFEF74A6DB
+EBD6DE60856DD891130D3B11C471B475C0B2B163252BCB65664B9425CCF71CE8
+E16D93213AA1DAC9B74344821B6E948407EBF6F8BD4BD5BFA5409CEA2E6B90B5
+7838DA4F838A14BAA878F525481EA5483990720D32D702E0CB933B094E89C873
+424B3C5BEA1A390FE1A26ECB741461680BBAA039244F7A2B98AE6C9B73F696D1
+A23D38C6C268AE06E6F085254464A8F30ED1EE0838EF5375ADA3973FC4CE06D6
+07C8459233163BFA392620210D91742EBF278E1739CC3EC39785D8D53729BC49
+AF58E01DD386851AC2E54FC0E731DE642F54E0C311EF99258A181CDBE5D384F3
+E96456AF9799A7E9009F8501F139B2A1C9FE96A414D8D1C5BB0457401D72C0CE
+49383D2D3285D05470B6FA8177FE5C4A489CD50D16C6F32696297BF362959852
+599B68B77481437A298AF29F0B17790BDE80EB61D049D62A8E2FC357A7A4E95B
+0D3DD7F1D0B21ADF3B088880FA414FEF6FEBA20A16ACBCDFA41057944F20E6BB
+F92D44D45D4486D3E25BE387C0CD6F75F5FB26A3514B6238DB3E80A248D0B956
+15376DAB67B5CC99F07F3315EE344A325F77F05C4CAC926BCA7B13E4F11F19CC
+B3A426933F62ACA29B8CC541CD5C9C30E7303BD5082CA212AD23D9A569AA1D1E
+FED97E242D827C16D44DFC78BCB69CED25C510B234A07C85BCA12FC8D7CBFC34
+F68C86B79681D5753BBF9A6BAEF0C9F3DDD94DE13219D9D2E96C7CEE2DAA4FDC
+DD5751FA1B28918269C5951D25BBC6317D1B5751ED20C2A0A55FE3726E8E2FFE
+F008B1D6FBF8A35DC7852428C229336749BC28EEFA87862BBB296B0D8BC8E473
+9238C838DAFA3FDE1372E2F294C5D177A4A38B63F5EB760E528AE502E5B0F30B
+40F486A4A2A615AD6C37249C9D84CA9B1E1FD5F2B97AA72D3B192DBC284E905D
+B3CC01FF9F04D14357EA7C44ECC3E8F393B723FBF18E234623E07A6FC6455A4A
+4CF37A0D0BE21FD25EA0CF46352D54219E609683CEEC045EB750804F3ECF6044
+C0BCC41AF57B2C759E43692465A609E2B0CC09435CD55A7A1D5C89C5422284AE
+0DEDE774DB44D5D93C4B6628AF926E0160131F9F8B298675EE342B5B85FFDD01
+4B0040E4C71BA24B95196BD588DA5C87922E7E55641396A104B1346F9624D5A3
+F83094EFA3F2B8927B691CEC49BFF322103E303301A524D25345E295DF94798C
+B8CEB368E81D3810D9591A7FC6E3C6441F24D195339654072FBED29572ECDC37
+FE18D406AA8E2503F8F1F6638EBDBB26E8C8499CF07D60E09DF5817A9E3F264D
+B53DB0676FE1744F1C34F1B3F8AA361E04218CB9956ACE619F4CA50333C99348
+6EEA62F9AC3D165036AC64AD32E02F7215882A5FED94F16D0526EBDDF93CEF2D
+74AD72FCE5E53E639B4BB3D14B1EE5A9AD76151F12745118D25829D62A7882D2
+19ADDA574F660C21F6413C5961712D935CC3CB607252D1CE8643336DCFEF883E
+981CFF580BE047C1D7157ED559C42A8B050E3A093B0432623D97679BA358DC40
+BB9C40741DDE89CDB409D93973EB27CCF1D37D0DCB42E8A00D0C6E047F044FFD
+8D91FA441DB33396EE0BDC890C864574EB4A73A5E93E25E14961B9E8C54C7786
+6657A8A4640F60CFECD64055E7E6251FDDE543E2B4666926C81D4DE143A1335D
+BECAB91E4B8BD4EBAE76AE74212FA558F1F2D8B51F5AF309F3621FD6D3A148D6
+B0BC6CFA72BE195DCCE41D6238B32FA5DF55E37B3788315493C5670B7CBF9C7C
+5AF15B3D8AE0F8E2A6050E680468F7FD4106C333E43F6F5CA792CC5BD3BDC7B4
+57C4F198B3A41946B3AB0EE4A46D552D107BAEA2E58DA400BAFE89BBC1A221FD
+3DA506E592A5F118E90B386B189C631D01F56C62265B9675FE041A69824DC161
+E9695C4C8417C1A3AA4F00F000F5C80B0E94FFDC23845A86F9060B296F936058
+C84E15B74A02C2A90DCD49C64C74D550CA2EBB206B230C5FD837A89EEF3DDC18
+8411B0D2DC5EC948CC2684844D91089457842BCA85E8E74D309212E722E8E20C
+27D798ED278182C16882B886CC6A2EA05147B04FDEE692959910453D05484C91
+51C878597621FA94C8ED55B20766E39CA42B02E2E25177BCE9321D4ED175722F
+0B524C4FC526D744592F7E3EC252CAF94F8A526F2BB2E52815758175F991DFEC
+061AF32011AA8080CEB4FA984E5753EFA4E13B038B99E41913DD1B4C0EECA452
+F812C0F7F84413F721A0C6EB4C5110F688AE65C9FF42B80B291D68180A67796F
+96318933250D5956D59D11C9BF45017EB60DD7EB21CBDDC5DF1467CB0127A80B
+B031AFCE0C3EF3B67E2F0A5CA03AB2F4F627970697C1B6D681A98B01E7A8DAAE
+DE0384DBBD8AAD6DA4784ABFA1557C08366F27D453B9534CD5A6524988121686
+7807E9C77A93F33EAC102F615A726563AEBD51AFB2BEEDA3693ECC02BC9D1236
+7A2B4FB44001A73244E63FF65F4B0BCCA07E9087F106146038EB465A875D0B31
+828722572C2410FD55ED1FB775DE68F5465D0938D4825F02AAA8F5655AC90CAC
+D7768A8B6CE5DB56CF5022C9BC128723F51668085E0D760EEBBB09C79D328FCF
+96250A4D5B7270713FFAD86C0292362A118BEB1E9DEA0B553823A2147CFB5E9F
+ECF1D8E7F7147C4A1338E68699CA04CB4EAC5C84C4956414FA8D233B060A91E0
+E390AFD1955651F963985ACA2E4F93EDD6915ECD87236C039F8F065ACF0E88A2
+1E0FE91A1418ED9759C8728B81ECB91FCDD13BC61E80DDAE1403E4F33D2C71F1
+6CE7212B1F3E27B10ADA9C0FE45139B7E9C41CB62CCB048EF8597D761FD062A5
+85CD567A75787855CE2B8FA58806D7457934EEC97EF60E2897F3D77B4ED74046
+A0D0F8A8C76042E5322FECF2FF8564BB70B40609F6664DAB643F8DE79BF02271
+3F682286B50335A9F69F4B2630D205A1C4E5C64682AEAE8B0BBD9F9C0021B70D
+590E98F114A145C4B860442360BE1219B185021BE588C1D97EEE5DF474C180A7
+DC0AC5CE618E8D5EE22C736CA80B8CFB0C87384C1B4996E9334C297157A76BBB
+B82ACF39E5EFE051B7395B609C9A42B4D0A81AD20455A8AD159314115AF19E6A
+BE82C6E938B0C1B702AFCAE1E3580CFADDF9C3B1033A0878A4949D416FC602F5
+B0E748FA84ED9EF80559467D407C99C3477F00AE161BDA42A6517640A700532C
+50187D25AB213AF0ED8D6E47BEE87EAF5C51619297255ABB0AB009785E1EC731
+5D9AAA6856D858D841DB8CD65F4E77649F336729A12FA73BC9DAB4A16A2B75AF
+E418CAA7B764B45B3F60218405AB80A159D69FDA668060901C8D93B000318A50
+8ADDD8188E5E9484BC7EB9A957A155A82DA16B6BFA94F865F8CAE76EE863B10A
+C88AFF9D6F2BD2D30CA267D261B9D50839E31FA74E43A3C56B38008FE8F376AF
+C3E335FE5AE858E818ACC98EE00E7A660839BEF8DBF8D512650F0FBEEB206DFF
+E5C0B9BA3B8EE3B8C6755FC284A1FE181C138C4C00E782708E13322E3C251EC4
+2ADD94AF4218E20F31D8C906A98F6EA8EE8B6D30DD67E8DA9CEC8F199E1B7612
+275F8A15A4CD8C9F668948D530337F402202A3256D02B3186533C4CEC422C689
+CCAA09BDF541BC8F170B5280E21C51F5D24C888BA8370DD1C2EBDFA9429953FA
+B54086534A05AA9B67BF7137DA55C5EE7B8F0ADE4C0F4BF58EBD7A12EDD426D8
+3D73DD9054E324F35946B3990B358B85EB2E91D3A312B85340B13BEA04F7243B
+B54AA2DA581DDC77691C6C7AF78F9131B977B8C5243A248018C0AADB1D7CCB9D
+0D08CB39AE46482EBA33A6DD88E25FC5E4789E327B5C4EB31F38FE113361778F
+AB83FAF25846C120B9F736E7B20787433943C59479C25E9AA10D214B21787124
+957ABD244B6552774120AB36713C8C6AF10E28814D2D7A51E7398B3938C24C56
+C71744F3B12971254BE77D5A745EF3669334165B03D76C36F0FF812EF26C8151
+BF1704CC7371B93F33AAC76A711B8310D1127821A1FFFDDD8FAE90BD21146CFD
+F9EFD6DEDE72B92081EC21EDA75F72A5189FE5D4E5C9B2EBB285C68CBA981A7B
+A5017ABA6CD72A09F8A4785D818804C705474AA093070A8097C23B268539821E
+394D03A0274CAABDB979CCA2CD6CEFE3D57E5A84A272E10623E46D074B712E66
+C68DAAAD526182FEEC8EDEC6DC53C137BF546FB656ADD87D6A3547C0C5E76ED5
+A3A36ACDEA11EF8C967057FDA95C75A307F0987872D32DF8AE7F898415C445F5
+DEBCC0840F950DEF271C2AE5C64D0D95A03CF9F3ADCDD7AD85EE972793A10AB5
+C7CF78AEFF83789809E4BA7CB4A6E8CB9FD662902DC3A9E07B269BDFD50DFC12
+4F7B39A7859811014CFAD4E338903A24BFE4A6B7A7D1C0129CE3677A4FCD7A97
+DE68E10087244C054B4515EDEA112C0B1960DC04D744B982344A8827D3C54E08
+70C61E912DE19181F291E8C43BB5EFD06473B1E329D7E6CC10EF66348419FCF1
+68D610AD54EDF93A63198A7F59ACE64057822D32FE2AC3332B378558B84362E4
+EEE47CE17142159ACCA45DB205C97B584688AED31E155BCEE23A844830E15028
+01710DBBA9D314FA757A0EB9B7E6D8256EAE8072CE393FABAB0794023D94BDA9
+CF08701880B9776EF841AAD7FD79F1B195DF1F1B94E189EF72E2DD020038E5E5
+DFA34033FD9285F16657CD0E934B462D048CDECDE07C64522AEE7F9F1A87D3B5
+FC1B6B51E00A1C424EA66E54409A235BA9E7046597AC6BAACECDC5C5893A6C67
+231E5DCB3A36E16FB647259D7B5954DCBDFB32E2345E5CD9E59D7A5EF480CECD
+BB45B042634BE679DA5B931670D9F0ABCAA6B1040A790C65785FB8435322CA7B
+8B7C1EA60E870A0D987142E459392766EC3B4A0FD4F8946CD700424EA9C76F4F
+6F17D65EA4FF7C3B9EB69A8B64F7A39EE398F2CB54A47B6FC5AD0D1F2490EAC5
+CA5E3443B8B3BB30D7C825C2B504D97F169E8A99DEA1303DEBB37BB292C56311
+95BE320318774FE7E06EBB40A5951BDDAB1B3544586E41B66C2A8EAD37F31BAC
+17C53FCAD939BB9DFB1AD9A58B7C02371AE9E7B328135BA51E2D86A87B11B648
+8CC270B15F14BEB26CE9B1682B7EB9F419EFD6787AB337F112F11B32D9B13192
+BC175B9274AE658ED5D3170912046BD19075A3F1BCA5B8282F69A76EA1BEA2F4
+191DA56EDBA5A9104B40FF56963D9CCB55408351665A33818D33C2D913F53F23
+73614B216F12DC1DFD2C99612A9AC94C084AD72EEFDE3173351C6584F8B059C7
+2671C242ED819DC9FD51305E675EFDE73DB4756AF169D424C12B506BFD6B8281
+FF6D31745B48E37938FB618995DF9B41D1D2542B317156247A61FFA508091C35
+DFCCE1215BD4BF484D8A8288F06FACF18051AABE54298398423062A66D6D9B97
+D45331C7397CE1447B260D12C83CA6B0E3ED4FF17403AF5E1BC90970FDD784FC
+29AEC3218A28BB65FC821BE55DFF46BD09B67F76D5BB62701CDD64E40A960B08
+07358C1AADF3040DC9C587609ED4E5CE12D90AD9DFD2A6E40BEF3EA5E5A16F2C
+FD5987D50A6895A59247A64D98AECD74FD2AD0D323A170A121E9E526BD5ED268
+0D29EFEA3483FAC56CBE5FD141899DAB435535FE7283A22C38C706B3D06044E3
+8F07EFC2A46CE195AE8B2E7A2CB3C95FF4EC6B9EB25FCA21BECE8BFF4EDE7109
+B28666199AA8AF3F410DD220F76EE3F0DCD55494E266F446B0314F7CB61CBDE2
+07609F1A733A5CC50CA1C820AAB29438A8DB3738251E7EC6C5BB28707CAC829C
+01BDD7BBA231D9403BDBBD3753A5493D4A3E3E4366346524C14C7CAAD7CC50B7
+FC1D159AB6A7CBA56ECF43ABD6B1669178E47A3930A63C319D28EC4E01EA8908
+E29D318FA3E89678A93DA812AD8A730C0E93425DC30B3B86E4C4DB982301D182
+9EA2E39893760AEBBC4EBCD89F37DE58DD0EEB41CA47280700EFA1200BD8A7E0
+EFFE38D0F3AE5022EB7518954537E71B1A021E347F8F72A40CBD31268288BCEE
+E80A666F922367F08E7BE7B0FB12F21FFF81A244D705D6A30461E0452F8DE567
+AC0AE270856D978E05ECC5A53BF95C4A6AD0A28E459170E9E0AAC375B5E912CE
+CABCAA41AA8C6714B4B437313C5A3332C3C10F80D364F23DCEE77834834A42EB
+8370E291A0D504BA74BEA3439D52A68628B4028789DF0E21CC9B7CA31A0BD294
+02C94628275F20986DFA1E8DB210538497CD93A216E07E811B04E9B6872A626B
+38C60F77B3227E62530FFBE8146BEF9FD7B2F29E2376DE40D5CBF4FD994BB491
+6667180182F74F851C253D1DFAB3240BD14D08D1C6E6FC62B115A571BA0234EA
+8AE388A8F248426DD92DD65C3A5CE468074E797BE6C6C85A788FD30001FFE54C
+B9E80128DACAB4B6C9F66396BF2E95C7927A461049B1470F85E3AE08DA937950
+14356351E1AB5456E8633C323E2E53F8A2167CD6C98AF58A86E68B11E2E9DCA1
+279FE358870DE824CB4ACEE44AFBF25C6061EF34D1859F283AC3B77FB9C85362
+627A97A3831DF574A0134BD4311E91B6B9C40CD4BB98F8AC4FA5A9156E4637A4
+E89761B080BADB4085656BB9FDEA74F58D82CD923C821374C456F084BE920469
+340C12B6E481F2D9461D79AF2554326D728109D91A0EA5054AA1FEA517A1F3F5
+28AE922E8EEA363EAC6E9976BB66608BF85D0CF4E089C9A071189F2E7BB46D58
+EFF863EB545A0149628B25214B0ADEEF2D61DC4B4481856C59E737D6660128EE
+9BA29B01D9F68B11E11DF621D0C5B4AE395B462BE75FD8D7365A2DC356BF9EE8
+3D71AC91DE6D737801385ECDE8B1FE46CAB2F8AFFC3B6B6DFFB0584339327304
+1095E0AE3C89755456E6E537EB368BBBC6FB9FCD709D7C25362CEE8CE6A0B022
+09E5B415647C7229EFCD15219C73DF7D85A556E2EA856570351FF37AD26FEB08
+975F745D06EE742616B002F3CB0DD107FF14A25D35113769E89136781B178A28
+4459C2BCB2AFB44D03B6F413EFB635BA86D1E12A50EC9149D3E9A14AA106A38C
+5FD43E928055DA5440CD263E3E5A75F4A897F3E8F40F02D9094E857247B84DE5
+CAB332EEA74CDB04E2BB30C2B63E2F69CBBF1D86D06E26BB11BD49A5BC88FE6B
+5077FEE37FF51B05ADAE17B7AD93B5A992BD1EF3B472303F4C69A9435723C073
+9A4487C78FBA21E66C1674D93343D824D6CB1A4B0CF1820F43E1E5E088DFFF6A
+2AFBB1CF5628C70D89FEB157DF2FF7C0D585A82AA6040535D0815F9D0AC702CA
+E74678F67ED15870C75C6AEB923670E968507555C917AA84CF1A83E5E400B375
+A6C71200898980F41B5C7AE192BAB5695234DB76C17511B810E2C5C2226E6E21
+9AEA5A4BE20D847AC1767D6824F7CF2A98F8FEF9D4C58B53C15C80BC076F81FE
+572D2E069036EBB45806D1961B5C493C5F6F83F261F42BB949CA2A1E1CF7E96F
+5E9554C782F446356B44055A48F11418F0000D0E754ED230F914354C07CFDDB7
+FF17EEBB24037CA79CCF613C3205636FC4DB3A8D3D61A728D4CC9C66C8D7D1FC
+9177F8FDB3D8DF0B0CC830C67BAA5D443DCD152D350D9360A3DFB871CCA97342
+D842DE1A3975FD7DF4C9873594B32C70A9DD7C2AF0112B38EE0EAB76DD96DCC7
+8E9CBE8F1CEA9387C3108EF6FD19628647F9CE7956D4641265BCA47705E827BD
+3274CA5017175D8C3C6493DD14D524B175B33551EDCF8FCD5FBE4DC2D5B30373
+BDD4ECBC4259ECC434418DB7C0987DD5076617982191766E2ECC66AC4A31810D
+A3E653F0CAEADF251BEE226E5E362A7CDD5866A35B405AACB9F9BF68228A6F1E
+BE05095643EF
+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 106 /j 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
+0797B87C71AC58D7C35AB3247575482E538773F05A10428E53AFD148B1ABE851
+1893F2447ED2625629F49CB4AA83193C0154458634536CF78B599CA0977C41E0
+EEE3699386653D9C498F5DA82363911FDEDAC483FC0469BD264C4EABCC577D09
+D4AE6C4E53A68D4C2237A906784137945C9ECC75D959EA04A1A64D29FF2B928D
+BA1AF9F608F0C6164C42FB991A60789D53D7E59F0BE84BD3A25A2CB22AA6052D
+A817A6E4A5389DC1FADAC7133FCFC9A595C8D4EDAA97CA50026958D6634EBA7E
+EBF427970E3D57A955CF40EB8DFAA93E7EF7FD958715D933C6EA7A60CBC15B6A
+E06937FA13DCC5BBC02C73C59F1ED7F62844EAC788F0942AF52D88222B3062F2
+73865D2DC742DDF478B8A2B7B2A578E583CF1ED1E1C56C0F3C4F3C2A363BD631
+A4C9B15BB936D475E8CFD1B650C90323C8A29FD6F2A76DAF972EABE391258917
+53876AEAEED2CAAE226DB0F3B3A768C33034
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+% 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 (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 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 12 /fi put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 58 /colon put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
+21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
+06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
+55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
+B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
+0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
+1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
+7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
+7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
+356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
+19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
+C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
+244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
+AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
+5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC
+D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D
+993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363
+2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B
+E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3
+309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513
+F42EDDCF39AE522A1DC2DC523F046EEC4CCAE25792B702C288732F5B13B5CCE7
+E8B6A1A1DB86B1EA38883E481BEAB54023EDD9BB94E7780DEEA577ADAA169E66
+AB7D8607B409619E79F242CF52E618AC0DAE43317C507CDB27EA8A1472D4E8D9
+17E62C98DFB049C78AD15560CE44A39581BD6B555165091C5D41071212A9D2E3
+05965AA02B8A67AEB04D915DADC1B84A531A1D672AAA06E9F720BA88419A3183
+63D1F9A3BEF8CB2E23CD1F9C003BD7849F093D3B4C83C153A5A790C1F9E37948
+5799C02F004C61A6FFDEAA1F9AE884DDD40DEB1539CFE3C3BE03C7C33CB54D56
+2C2A0F467049797B56D407AA43EE6B8C3F978A7D945A80BF711C12D6BFFA3DED
+35FA8B22E68BBE4FEC59E4C56D3C57E14995A8ADFA51CC6C3A84D3D775CAFA87
+A1A0F45C0283139FB485B8FB0BEF5232494C0CB564F966DFE0D0566031392619
+3FE8F0BB6747BDA591DFB26132947872D3B209FFD838A17EB1D5047E37452EF4
+62066FE4498BD6565F613B96FDD9C4CD9BE88BDDDD65AC86036CDD3150B6F854
+CD3FAB9D4038CB8F86A25BE30C3DB367A71D7335835AF044E6E94B04FA88F882
+867C87A37C3E27507E945BD7367DE5CFBB8701B338957FF6843504897CC94E80
+84DDA15EC37428ACF8361EFD7A0D3679A9F5CE4FEBC059A8EEC324449D204982
+54AC21E91899AB042DAD59CEE900157581BE0F18E43E442DB653870C95BCA23E
+D56C0D00E832803197EA3063805A081FA04245C4ADED3EFA7646471F5EC9C9B4
+AA53B07B8C7F81E7F27151033209D5064FA1000334F446EF32C5D83F20DA62D9
+5B18A06F323EB3851DE949A372D67038620DA720FBBD3B8EFB90C1B72E4D2798
+527DFCE298B81DFBBAB8316AD7F1AC5D8C04BBFC05962DD3945A70B6FF5E5694
+26794668CC452A1D0B7D54077EAF2265F391B6229F32D061504BC37391B6066F
+B01C6DCBFD9C62194754ACBDB4C9D54C12AD7568C8B7DA216656E8B0993BE1C4
+3E215CF1440A7A1DC8745AA31CC2ABB6199BE8B84BA94196B1F1B3E87569032C
+69AABABD80BAE3C30F303FF8EAECE8B229464AE6563D85EE507AB94E4C7DA23F
+1CD976560359A583A1F8CCD8C87CFEBDAB256DBCBD6906F00A3BDC24842EADEF
+7B2D2F3A6DD4C8FE1CF4F21FE7245CE14C58E2CED3693DBE1ACF3858BD2F031E
+FCC7427732351E1407C6E973638E3C920254AA3C3E92AB610130FA2F1E52E393
+40A1C42D09BA1C7657E803029D2190CA072721F89203A03DA97AD6CC122D1D8A
+77018A76E0E1614DC44145273DFEF17ABD115E72697D64A5C4D8FF59BFDF698D
+834329335E9AAC90184308B21E785FC8E27D5E08FA10108346B3F8718B169A0D
+4E87EE842B74251371B1FF2B507DAABD5EB55DFF6DC5850E3CD18BFD08268997
+FA5950DDDA53EE9CEFB9B0034E4910EC70E66C7960E9FC81E5BFE1DCD5D9768D
+263333DE74829E8A4D5EEBCD192FC5991671E0A418C02B331ECBE6636BC6EBFA
+A396D1B9797F20F8C673B4E255F47399C67D9BA45C58B734933263FD1153B8BC
+F08CC711384F573FC38C1327EF14571D44922909D02D9322FB81EB16B5687AD9
+67A6B2A37AC6DDD10E5126F17D914492F66B172C7DC137252689FCE042EE575F
+0835278A6E934E1227D82FDD3CC675D40BD5CEF0EDA8CCF46FB0C8DBE6851EA6
+0DFF2E968E224B47B3DAAEC04FFB1CDDED57631EB0DC5E613F93E54D2F4FE643
+63D8E24E285C3DF7AF2470A947F4D5E94501530DC7AEC916C1BACA9F686F168B
+B5B88583600F9169BEE9F647EB4A5363EED65FC05A9BC035EF91FED5D5AE08E9
+635C6C1CB0B9ACA90959681F5B5D8C97BA3F77DECB31248B27FCF74D80D5B811
+B01A03867F8927537FDCEB531F6F5C3A8939774EDD50A79F0B4F3BE677C48811
+438A9187969BB16E4EDB7FDA075DF8857FB1FBDB6C391DD054A159CA1313F3D3
+8AC555E2895D0D86C1A2571E8612567A75F16CD644F23D092C991C182B40A33B
+D79772D8AE710EF3489E3C791AB1F6655B2FDC7FAA78873D010979AE5FE1FDF9
+EDA3BD240AEF41E1D7481275B3B52D3E02F6747DFBF6789010A8E9CC033086D7
+CE0A00717B83D94A6383605D25DC0FAA4349F057AEFA10B4463E836BA1B02297
+565E2B44AD1061B6A1883ABFEC3164C4032AAFB3B291D8253633C7DCF8A52FC7
+EA0AB308EC50B3E211A540B6FCADC02E1B1F4CD2AF495E7AF1AD9F7F1C408E2B
+137CD55175D4D9C714B947F12545EC7714006BBA19CFBB0965C2AC03221B4F56
+DB8F4113B1A8C637767AB4BAC85ECD4435840BC65368D2EEE6B02CB2CB5D32EC
+943B8187639F952784D92E074CD06E0C6BC22A94D57612C31AF4A39419DDF985
+0203B59C1A2642E58646F8C988C7D050AB01CB2000746EB663310E397FD89E81
+F05E4E4CCC119BD9CE6034A4D30E135E61F61608DE180160D974D663B12CA884
+00ACF6D276D8171F1063795EE3E9FBB0B921C4B99A282C3DAF30E8D2132F4A08
+C1B46AA5CA03B2287B6CCCAFE58F0135BB8CB24CD0BCD89A1AE797D5EC660AF1
+1C7A40E14C8EE8AB884968693D2AE8533E485E548B8EBC7ADCF3019ECC535B66
+AB7C2F562C18D6B40232A832F0A586743725AD66986C2AACBCDCADB875256924
+9DD999725CA9EB302B770331C71E9A8B42970A5A1B72D257A813060BCF283C32
+28D4DC30542BA2E056E4C31C7F36004B57A00066321B51C4B93E2388B55571F1
+5FA87811AC61A858DB3B4494FB6C49EB1CA29CADA1EE0F53DEB167141E48B65C
+AFEF71717F5A39F104FFCFD0EE5AF38C9F4C9E7098B0265D12A9805411776703
+B57DB832A6C8B6DB995F489C651DB43837C6C5C11D8C4127D28F77E7DA7CC379
+46CA767EF3D0921858CF0FF68CF1CB5E6536EADDBF36A3F774046B06C4E9ED0B
+AB63008ED0EAA50FBC1A639B633270A79D8930042A8964CDFE1F0B4F056756AB
+D76411B04203F5B9653AF059D03CACFAE9565ACC6F3259ADE8EDE8E323F8A77F
+863FAD935A7A2CF48A397262B1B6B5DCBE342F18C2DD26607088260621371640
+4703AFA3CBB2912A7B63E839E5584890DDE7CD39B144A3696899BCD2DB3C34A8
+9DA07A863EF8C0031167CC963F542F6D45F38D72F6C29BE350B840EA4FAE7C20
+B240DB6E01B5D44B285D91BF6A57068FC7D81459C9FAA11F37A27CE29BF21C27
+35533A119F19A96ACACEE6CF45A84C9CF713441D13BAF507A41FB6D93C167737
+0AB3895AAD8B20A04CB4B3655EFE8CE75AA243DFF70FB8F67F38967CA7AF7044
+08A64DA67CAEE4DF9FB92B42D805A5702EF5223DC8AEA2F2A2DB2ACD252AF708
+423A30C7BA2934DEFA5BD82FA888D9A34B1ADDC656AC867DE53085BDEBBF365E
+4E199BB1C5D2DFF90D877D8D12C5A92F7F5F6C7009FA1F6A85591EA41CF41B92
+D49DD757E0A0EA3E7972FD7F4282910033C28C5B7445DD0DC6AC8F05CC3404AA
+EE48C7F5A8BFB2825322CDFDA49587C7D0EAFED0F399BCB63AA33804E10CFEF3
+6859478D5F69211CA62009CBC6E3BFD8ADE4D085C07020FB4C0B2F8A4AEE521E
+96F2AA05FDAC9032575B69D4CF9EC3B061FB5F55C99888E29F273FC05D4EF17A
+207D9AC0AC5392E5308A2ADE82849399D12929D63F76113EA72DF13943904A12
+5A9B8B151E608354293046D9868C00AE64384BD99D7C5B35D4E51990720C0BF7
+086783E07810E888D28B58F64ABA384FF3D01795F0E4DD45C9B3792EF573F2DD
+260762EDDC32BC0EDF95CBC4331AF7EE9FAC8CBEBF2E4F40417E54790007C5C8
+C9E66C6F8D5CDA58A90544EFC1D0622F6DC85FB3CCB14DD32A3EC560EEE653EB
+5296518C007DDD9D9A3D523897BE8859E996A7C20BC3141323B0D1905D7AB4CD
+ECC86BE22D0A3BED97C354C35D9A83665221D0F798FC0899429352339F9CBB3C
+705DAE7E651F7155F84705021E7CE87BB29ED521AFB60E59C2CE0D23BBEAEEF2
+3E0DB9C64A6EFE9396A57F84297884095AB3224F717050199AA012CD27D62A41
+49F1E5685C53EC2B0BCCEAC2F425428FAECAC4A23FD39CC0B12F78E6A8DAE91A
+65209CA95A88145DE080325A403B4A701D7F7430A23906F61CEE30BEA11E23D7
+2852296D0390543C47164271EB3ADDE524642F065A76515C87F3C1F241DDCAAF
+095DC497AD3AB5C1C25E668B73BC8C48F3CAB1A2F0745AABE122B4E8EF9A0743
+EEBDBF09D07710C2AC0DCF136EA939E807ADBE041C2D548D0F762F3091659E6B
+604FDE8DE96764DD9F07E84E890801D0FE3A86EC34FDBA3D624A813B699B44EC
+D05E9133A4B6E9AD68DB8D69229A6856015915FE1AE7590E4D62B2B50C9B3F28
+B31A7F07488816994AC20BCAA3A4FC15663262D0865E78311D8C051324091935
+BFCA9AAD3478DAF42DEB1159A9FE6CAD727629C84610118BF7C1ACBF1A64B401
+1C68BA55A957646850EC6E212212BEB362EDB4D44AFDE94F479C298429F9537D
+87484F5D94A8D6B0646AECBDB9BE2A95FA3FB823D04336046988081017A350FC
+9B986154E708947766724A7136ACEDF30100348B5E6F2A239BE0F773C033E66C
+91E9C346C414250749F743D440F62CB0B87EBE2D809A8FE18540B216C4456962
+87C038C7AE48C5FB47F38ADEFE86103DED1225534EDCEFB9A76A126039C6730E
+DF84B0732F695D900C86762F485DB3A6C15EDED9A28AA6F810D602AA2FB30182
+79825D7A4B930D637E47595C7E77D6A7FC0A351860A47263CB826C5E1108D0C7
+87EC925D218C23110F1FCB4A4F96C384EAC8AD7AA5EC7BBE54409CE607ECCB0E
+961BA2EEE565F8E2657DB38D5CEA8910D52E5EE0E181F4E6C946C6C06CE06F30
+91DE68D403CF4E1E4EE0F659DD50FEBEF27DA2B50799A6EF1E9C20D88691FBA4
+0B808C8B6B2145C2C4E57CD5F28DEFAB3E84657FE89BE3E0065E69D7953D08C6
+9A78DCBD10FDB428CFC4A6DBD39159BFEC336BE49B97B56972AB87920C63C9B8
+B0A1D98FB97AF64FB5886CA921105452B92D66446007FEBF2FEDAE3010DC639C
+0784728529EAEB1104A0E067C9D827302C8E5B118AC1C81FE72DA2FF3F11DDCA
+400A137706CAE72E8B34DBD6350E1B62AC5808E09A3350382834F9AC2FF23968
+C4FB14EE1CDD7BB0BF8BC91EC707FD3113AAB94069F067407E84C89503CDDD4D
+39C32F0A513A41D1D7A4BBBE031C8301BAC59EA2CC62FD35606F8502233816BB
+32CBF2018F3712E44F6A3FEBCF8D475E5132428A7CAC06B95F665FB454313E2C
+AC971D6DC7575E019B04139E441836C7769C69F1AE3132AA76CAF79152A53460
+17C72A28F1C8AA94A02EF8F566E7426BBBD8F9077D1BA58A8B41F751EFCCA8C8
+0B2A1CFAA84F4996DF5725063B3076D116284E5D4504FB5B3E42D4383803D0E0
+0012FCCB7EF74FFE5A4AA916C7A6866F6618C4B1981AF383890F0AE68570549F
+1974FE114B0006DCE0BED483E6E07232B3313F4B91BD85C81828845207DFE5EA
+1804CBEEAE55A770F56E0C02B5CF22B8C6059DA580B74AEC3B315B4BCFA82317
+C85C113BA20337991D223215AB7D60D7948FF1AD56A6E02CA63F738207294ABA
+6BDE99FC2D77A01B8AF3B7CC621F61AB5136F2AC6C88AF8F258304CC5841A8AA
+C717C83CF72098161B60BEADA770F54E9440ADD234FEAE73FF2A253A09F2AEF0
+A34C24CBCC0A403D5A847BB8FEFB95D2BF17FD7927163086E41E8A6320BB828D
+0CCB3BE5B59DE4DD47CCAE96CADC2E1E1A6E6807E597001ED69A72772175752B
+1D77B1E13FC8FF65B2C1EB4DD27E7A59F70661502128B88F99E483E120FCD00D
+14393CA398D90C71ABB4BB59DD1DC3AE6F3AEA4E73D4639D46FE73F88B960FDE
+FC6928033E87767E985987A24423A54F6A852B01A799C26DBED7B6181AEFB33A
+BCC8F3E36481775A321104E857345D794C31A14F70A0E0C40E3AFE3AF4AAC7EC
+B3791A82069D1628A783CE67E42D4A069CFED04E921B1EA3D96D92BBDB7D92AC
+19D09FF3374D529AA92B3528F5CA3AD36A11B09B347437D0001CBAA805FE09AF
+5DDA2D9E3519DBF262F6A2725D91670C1B6DABA1B0341B994E18BB98F6F2FD0E
+5723C2B13F7FE42A6F649AA7EA882DAFD15C35B2CD4819FB69B4F48AA04DFCC4
+D98E07DC72CF95A833DB02ED1ADC208ADE7DE863AA76B53ACC6E1B9A8646AFB6
+81598D03B8E68B5EAE2CB0FFDF73BA6AB6523E5ACED5C387EF965F2D8C10DAAA
+B0BBF8767EC929E7F0A845817DE2B2729918A3BFD36DB2A896F4E661D12637D9
+A36F6F4437E7AFA9EFE4C41EF76581D1A3CE06FFD18C83D871CAE6EEB35527EA
+7B10A89046EAA4361F1455B78171DCC7021C79E3B978111140A63B6D0F1C9F40
+81CEAEA03AAA12D252E024E904E8221F922CB61F42567774B3796BBB91F0FE5D
+644740774226D16C490D798517C742A40AA7FAB0F7B105870015F8EF3B9E871B
+62C667FB1E2C4901F95DCFB400C86ACC0E3C7C0CC5D3C1380C02856627274612
+DB696634B5133A6928BA001A22A7AD25E739D30073011703572B78E1C4998D73
+46805C3CB436189D0BFFC946813D51605C948EA5CFD4382B9423D3FFC69A535B
+299128176FC917A333722F79721CB55434198A3947C4789FD0BFDA54BF346276
+D411F3CE7296AD56C67ED67C3C9726CBDB4C125190D97B56E4CBB0E818E8F311
+3E473921B12818E57DD3E0FB29E07FF089555FC809CC016D728E70516ADF7F4A
+4E51193A8EBC5A8E8B1A6ABB1512DC02322D8D637856234962387FE23EEA8EB7
+4060231CD31D5766919C655D94B9C996B583102041A50F6090FA371C8B082ED8
+EB09472C769848582B0122BAD0EA145439A5B2D2961FB4310392AEC5A747552A
+AC25A3036ACB13DCDB126B34E31E3C3F46F70FE5DA2E68D2F5C14C9A1B5BD46B
+4D0428C04B510D84FC1495E7F48762A73C9C52B78EF268FB40E50D50FA1C161F
+20FD9A833038A6B17DC75E247861C649D0F1C2DBEDF2B03EE2C004D65464B5EF
+32A7DFC6AB9105DA6E8ABD2A304DD4E052CD01734D316728D08214457428AE45
+CE4C4D3FB2B7336426F9E058C746531BA83AB991690A2EB3AA05277DDB7A98F4
+1C26FC0BADEC401E8F56BCEA7D7FACBDA5CCCC81B22D4A52352CD81DC3F61854
+FB911054CA763B9FD29D43B577F7DC8E7FB9EF814E4FCFD76686F110ED1B33AC
+36B12E84D5486777C737CF841E1C57F33224C488EFCADFA1405CD355C0C2C4E4
+664A5F3BFE0D8157983EDEA791C94A30221863AE138104255FF2579120B12018
+591D2CC780C5302769E7951E1DE9755727283521F88AA524D19F94E750B56861
+B2CF10FBDCA025B4A452959D67F4FF2FD7B76523C9722BA73186F54E3A82C773
+534E6DC0AC1204B54396DC69E5DBEE2125AF8803886CDFED87BBF86E73A57D21
+0B6770272B6B21DCDDDC53B8EB240716EEF77F64269D9672D44C91426C762479
+20F7259493F6F092D5A5C04777E9D33D20AE450918DCA3F3ADD1470AC9D5929E
+312393C732D1A07E6A49E0157C7996DD8F3E1A1AB258D7909362103E3657F942
+452232E6FFF2AA237958EE472A9D8230158C5037D1978DF1DEF89676C2668198
+EC5625B0E2513DDC0E16E5119B976A440E8FD5389C85D3FD22B1C26E34446EE5
+C64788D5131FA10C718E385EA778F93D91B353F3861B0E3D27C7F34A773BDDDD
+480C2308052AF856F3FE7D3787B6D279568136C7E9B29ABA35E2D4C0FF5B619F
+A0C69EEB510BEEDE2780DB65C9E1A3CA18B8854C949486A70F425019961D6C02
+CDC18DD73D1862728EA4F85B8BAC8B74C4707F056D59D7EED80228BEAD8FB75E
+2BD436373CBCC3DFDD6CBDC863428C3D862EA0244928C48A558221BD5C339C71
+2FF11AD059F98560EABFBAB21938956D4BD7BFAB2F5292E4FA85EBA183499225
+D30AF98514893F91B977924547C827D53FF112DD75EDED3D5C23573EBF5804C2
+BE9FED8C8460F2CEB8C42F53C8ECB2CF59287E6F2241B56C6AFA5B8ECCB93594
+50BEDD3D664724269A9995DE1D31DC772F46C23AE2EC4BB84F9E49284642A354
+6DEDE4073B1FAEA92DA6B8AF1212C3151342A2AE671C00EEE59D4A7D48846E02
+149B2806061CDDE386C128660C326633040AD63E2CCB1A1C5BC5553C3EDEA0AA
+4436EEB2B46FF8C5F7CE1ABDD8DAC839642B754983D8827EA795B99AD0B11007
+0BCB7619CCD012BDE9F81E0A07AD0976B2FB484458EC7A67EB0B0C6F6060DE2B
+680E52FA70BE3B2732AE52E093A089C223883EABCE4E478F1D159196E3981449
+665A3D4113DCAC4241C355915AF4C205A7CAEDAA83B433A8959AF6520238EF56
+0076B097FFD9819B97427BBFD051B86CDDCEE81669AB4D4CEF7E96D20200B3A0
+168D0682BF4FC28399E9CA54034DE3C3B70AEEAE2397BCC96031338D09F153E4
+1C80B6F6B7557EFE9AEA2FCB86C302EDA6AD1363F82688BA7A34ADB0685F0F2F
+FD197E32A98E430E84708C776A2A58402DC1A3FAFB77FEF65A44BF456CB9BEB0
+CF69347E6719B8EBF1D40084E1AF263CFC00FD517513F410CA5B89E85407E005
+1528141547C4ED333F84FF7B1DAEB3E19DBC3E077BEB047CF47C05EDE399FCEA
+811EC663ECE3B4645C7559F7690ECA12606468706C7C1C6235FBBB56EF715803
+A22A65D22F3A26466D93A09B763BF8CE9A3A2B1FC87323348B7892DE9B6BD7A1
+1C0C31511A1687E10917B4B626FF4A04310434117A134D80E918C1C40D68042E
+03C7B1F832A92084D2182FE4A17623554376BB1906501518B7F4A6D8F73F930F
+89571727C5995DE03370EC562E3F671F4F9B8D6C5B05097D682B0DB55C39CF2D
+FF915DE6AE5E38E0401C7B9E99D848CFF5CF610A6E4282DD046489880E39FFCC
+B09ADA0B98E2B92CB78C49D45582B1DD4522C033DC813BE09732D61E087E823D
+D926CF0FBD9EA90A5320BF0245D6376B30BBD4E65329008FAE98F7C9C464C9D6
+D099A90016BF118141EEC468EE07866A700CEC2EFD57305D73C8B7C24B6BB373
+7A296646C5033354556152C7BCEBC6316B2566880877C26827E92BA1BC533351
+84F577E1388BCED6B5981F5DE4157386058299199A04F43AD4726BE62341C888
+96F22920718FF6D690ABBC63DAA90607B9A0D485A562A6561E63E5FAA20A18B8
+7A7E06BDFA70D6EF8DC85A9350FD7B009A0881BC3D27214FB05268AB06D721A8
+553FE1486DC2388F20D63FE969F344FF3EDA3772C77CE555EE446364E890A01D
+B2BC3763A9463518524666C76B0B89D3906AA198953E8B29B6D9E15B975D2A86
+E62AE9B8E1DF07B31B76F45533E916A21C2C192E528DF38E7FA81088DB5A328B
+3B174E6B20A176DA12D14CBDDE396E1327D85DC89623E424AC4FE9F7520F4420
+94DEC6FE263C11A7FA39F5D9C9BC28B9FFC72194DE2CED2070B0A071EE3F5DED
+0678BC5F7873713A24AFE365D08DBEAA4044A7ABD55B60A1ED2AC04AC8887104
+97C6F3050C9F537BA248A63F56612C4C35920EDB51A39F0DC70AC20355090BB1
+861F737ED456DCE0AAB8449EF74E8DD9BCC9A2141EBCB4CC1BB4CC5E2BB9098C
+8B4A71F17108E730009A77047C9009C75E6EA47758C443693121ADF5CFCC4766
+C14890D2524F7BDE488B3A5B49D1ECB4B53E7363179D842B248F65D7A19F34E7
+AB59FCB3B90A1D93C713E795CA5B4138B850DB3E78919E713E499AF4488348E0
+ECFC4935EC87E1FA948BD5CE3E3DB38898F258D8B8C46E990E166CFC3BCC1245
+378D1973D3C54098A240AA4C357028B250A0AD1604E9F45B9AA7BFF18882F4FE
+657AAB956446B9D1D059B07F7260A68E77FF172B4D1110BA4A1C52BA23D01CBA
+53394420F05379FC05E02400BFDA69316F61BFCF7C3E489B9256942EAAA7F7B1
+7C1D3341EE7925AE22F9AB79F9A97BB1485D128F5C06A68A5ECC9944A09442A9
+14C738C5714D816875D7105EDEC263D10143900DDE911D3FA338F1C575929BC3
+BDF12E0430B7F128083546AA6354FBC80C44F8C59B19FFEBA67EEF8FEA271E77
+FF3A27D067F4C11457BE070C1B7C7BA4F9DFB7DB4FFD01205745A42F2341EBFF
+3A8C24BF2C8D6F2AE5D29E011C597390DE97F955A8B24F3A6C4AF4BF68ADE5F4
+2656E94D5649CC19F0DEFE2F1610D1506CE2FF4E15EB9FCBCE674D3EF7404D8C
+401B49EC13575DEA4DC63B3FEBCB0DDB7260DCA5841F135C54C74ED6A4683BD4
+B105412BE24599A83B8177B58E011966B6AB48FBABAF15DA7EF9A6FC15D7D33C
+8491A3C05CA1F0176F710523337AE4AD4BF0CB4C1C75B8DB98EE10A3A628D308
+5263444BA7F10D3164E83E0DBE762FFEE338FEFC30A8B18F5241A2A8C967143B
+C0588DCB812CAB109F466CB5ED9B64CCB6DF8B469D55101762A7AA58749BE985
+A08312D00E3AD29AA546590E0118B10BEF2B15FD3C8176529E4F531C2FE92C8A
+B2B804F6AB935DCC5B18823B647173E833F6D811D0FA7FE05EE68B5E2A5DDC05
+5A040D9F485A860EDCE7131542E922E8DA5AA205A7085CFD6B11A9AC40F9041A
+31A62CC60C25C3E132BD8039FC3C603E21961878908A4E84961D461EDC0BA92D
+8E2242C85ADDE4A199B5FE2300068EB7286A3DE0F40F2E7A02B99E8508C98DF2
+7C6CCCD4A18CC53F346D683AF420EBD7E350AB1F9E9836EC2015DE659AB13814
+CC6F271AF1E96176AA81C1DA52FB4314B5604010F01D78875591622939053E51
+62E36F23863339AC6E1D92F7B6CCBEEC7B730162F69E54BF73CA37499C8C3AC8
+FD23F93379E5FC695633C3539DA4F8398E1EE4D8375E594B361A6FFAE655DB3F
+4D9F3B53552BCF4FBC15F29EB3A08B118B3E6C6F3A1CC946505599CE69F5F434
+5F62793D5BB8BA9C00F1CE273162961B48D117153DFEF3E51CF6BE3D6B3CEC76
+C20F829D5AD3C1CB64033F9A8F6B24EC45F8F27FCD55B47A1D1799CCB2BC42BF
+7122C8F5C1E481E0EF313937D8C999BC568BEA0BA2A0C4781C1E4685DBF7F41C
+E75F5930525FE38993452972EF12033A847EEEBD69471BA73FB91D265C1AA04F
+C0794A888404F60687AAA2ADCEC206119DB64924F8CC67362F1CEAEE8652E2D1
+0BA779CE68D5CE71BE03123D961F9D163727C5CC7ADC00E93D222E128726048F
+5F6142BC5166A34B56000C905466AA057E17CD906FA9E7D51F53A4935BF65459
+F5604E7A35CEBA7CCF31F49899857B2A2C779CBA10A879E8BFF06EAEAA087687
+9FADFA796CA26E1CC062EB2FFFD24FC7AA54B44C2102A133AFF56CA60B0C3B45
+5D17294E5F1354CAAA4E1C6F71A4B1721FF70E77AD2AEBDDDC6641D7958E9FAD
+A51D442ACB63784F7993F119CE2AE0D09016DCE8C342A8620BC9388ACE956AF9
+BAF0AA920184F6B67ADF418535903FABF54D11E06C027071D99F20C8CF2C6991
+26600524873477D372A3C5C8B306487E687A7384A4640E6A25840B9FB3CCE51A
+113E9703E9ACE573C1252DDB5F757FD782E19D3634E60453B518750787AA848B
+08B704F48E7945A1C3932E9C1032454477946FD56DF637D3438F510E209F0368
+2014B28E2F8BB9C230F728EAFEE5C679CFF64BFA29548D5CE844EDBE9E180C4E
+F77763AD85968843CB4D999F8708E5298D9C6EB969D26092B47D4D9DAC4A44D3
+E79C8351D1D155C0A1290299AAE5BB02E9787F1F48720177CB94D898CB0ACFC0
+CEAFC6A0F8D61301F396349CD1ADF8BB825EA70CA6296289A59B182D318A4997
+EA2712AA7BA1D15854272869E1C24FCF158453D5EC17D3D93B3D6766CA76D6DC
+472E54EB9D402C7FDAE2B9B641C9688DC3321E028AA136E170944612AA30F27F
+6B90A3BEB73C4F63DEC6D0756954F36C864DB86EFE59AD1BDDBB3097D3E45AD6
+0C87A5AC26454F780B8BC6BD472E4C18C071B40B2E61854E5C16971B54A00355
+B51E187AD293395FC88D7F86D1A2EEE0747336A16C728CF24215BC01B74A5D23
+AF24F8B63D9231E68F00F3743F30AFA9A09FF49D5A7E2310B9A7877CFA95CA44
+3DA5DF4094A57F884825BD524AA2A1394FC8702F3B73EDEB5DC699B9730B0257
+966ACE31DBA07AE58ED7090F3A7C3D69C6C70EA465BAD6FC788649BF73CC8FE7
+DE56B0CAC8B2EF2988B771DFBB54332DA49662B6CA8ABA825EF10C3E9EDF0229
+20694556DE1067D5FA69B6A0052B35486DF6AF7A5128995A6C62402AA4895F7B
+B3BCAB863FC3F8DD5392FE954120249394075904C0245020B9F877278D09BDB4
+C0BDEF97B1D8752AE828C7E889538920675CCA5FD0D3FC2B9C8FE8F38A917E64
+71726ACA14DB4FC12F178E9634EC47955180A1F2D7DE2774F2C618D9333A1BEA
+4235FDCF7D0DF2CF57F34C68489585DA58A644184C982EFD22133F8CC3456103
+D74325D40AE90A50CEEA0DFEE1BC380E66A6ABD13B4D140D5D3A3B020286E2FA
+BE9884A0815A5F17FF9CC8C3B2F5F134F3748A23C467F8A824DD199D8A04AF95
+414CC366829CC1A0E5817EAF8EB97293DE39C408CDA4EFCB5C34ADF6420AC0B3
+87C9549EC81892CE73565A40FB99585B58EE7F3F5A840772337DA4E831090496
+A4CD4FC7FB04216978F43BBB73136164EF5E228AE6FDF0FC8893C07A0E483C8F
+AE4165F8017118B9E756A8FA3CCC3BA81193B65B1A0160B759D8B53774C1657C
+D2846E5AD959C5146A0141BF258692DC62CBFF4C521E44033D71F8CA6CB85E39
+235CB57F3F6E733FD0956C0146D8FA6D61B20B6FE08CDB48EC3C8897AC502BAF
+5B170195A74EB681E14BF53C50FF7D569B6C9F731D83A8AD8B2C2A137AF43E58
+71ACB5AD1D4BCF6A5C2549E3DB9396339E1A156C544B6E881AA4BD42490913BD
+8DBD493DE2E20E52EEDD935556FE9FCD488D51370BC072D5F48739A257C05D06
+929FD375269BA4069D57CD08577546E989032EFE7A190FFDDDA95BB793618015
+008DEC967F059EDF9F2BE49B421842D5CDD6E334E1CBC5E59CB419008A36F9AF
+9F876235FF226CE2538611B20F07EA41B08CD04629173A72A79122AE8774A1DA
+EE2B9F895915CE07C20F10C07E41023065E0CB9F0F3D8EE28888F1BCD4558E0F
+4ADA2FBB9606ADF8146EC3713FF80CEE8C1414575370B2D5ACEBC0B1A3D301F1
+01FFADE47B221E972811E5207305417029BFB23EEDC81405954D0C743061CFBC
+7F6E57B755CAB5AFF32C27B68D7D526311018CA244EDA085898C60074E11C39D
+714F6345359DCCAC4F53BAADEA305C9DB15FEFBB075A2BE78E2C5EFE54A8BB4A
+07697EED8978F1CB89C51AACEF83E1A667668019D5A44941510FB445BE7D4C69
+4A5DF3970D0C65422F4E8B909AAB5DFFEF461C1F6F201E121F677C9BA48F1D5C
+931535D87EE4105F079E8DF91AE24FF1C4B70E9E7D3EB6E79020033ACEBE41FB
+EC55594C83C9DBFE8152C6A7E114FB0114778C3D45C97FADC79975497E7C3700
+EB6F9058E78E545A6DE6800CD69E277842292099D4B043B4523F826D5B25CDD8
+0528B33CDA5153CFC47C037A7935BB11CADF8019DBAE4FFB53484F61D2C4D89F
+96BD55A1208A5977E81C5271FEE00B8A18276F96E49F9BC3269AB0551E2A3F6C
+934A72674BA63CE844EAFD1F80C2CAA9F012F414433DC9D009BC7B40E4BF5DC9
+149981E0B5513CDEFEEFAC9760EAB7CD86B531B2ACB73E9D440D85312352FE47
+3975C78D81434C1AC0E2669973E9833A83F2382557E9ECF6BC37E3787EBDE5F7
+B992EAFEF7A37CF3925475A584292D25ED6D08E4C4CCDF12B055CB8553BC2C54
+B437124B366536136265F50AA07A894E23B4A700F8A4B1C0C497055B94EF9D87
+BB3201F6427A0F6867278473482258167B48D7F140B0B94661BA8D8D054D81C7
+9FB167E5542860D43ED7E9A0319545B2154A8FDC5ED9D2BF26B6CC41C2C59F1A
+6E697B4140E555676D4C124D4DD1D80C858DF56D225B5178BBB11D4446D707E9
+8F4C3FD61D1B226C05D82A866FA4E66B2DD34890C81086B9712C78614EBB23F2
+C2F80158A15EB130B08D3739C235B9EEABD6455DA67246ABFD7A3089AA4C8218
+D42C1FDC1216D19890886097A933FEC71DDF2C22E7B46C7A415B2455E660A596
+7C5F2C51253809A1E083C3D7CE00C992B96DDCEF64887D51AF17D07A5EB62B7D
+E17ED3AA48F075CF0B6909628DEA9C141AEE4EEA564B7D52B30672DD13F531CD
+0FD334DBB1117946FC7FD127F98E33CA9CB7B4A9CDBDAA734358F76353E8FB93
+4A1D5E343A40EE70D1C5931A31B51F9FED55DD2D7D149C7FB0BBAC553F78C0A3
+78C0EE7719CD26595681B043EDCB1398F3417302971D7BB0CEA5E26C456502CB
+DB2F0365267F3531150777906D8E2FC7FC2813F7942D3ABE5411B06BEC27CB0C
+D67EE46CDBC693ABD7DA4903A086923DE991A3E4D37FC3DAE2692F1054437149
+D803A75E07466F7487513E6880D0C9FA00BDECD2C1B59C309C5D6FCD61BA7CFF
+E8E60EFF9971CCB2DDA77733800335C0BE493BE94950887D3DA58789C6A3B9BF
+968A6DE73B9439A84CCE41448F69F47C8B841682D3A2A3839EC8B56EF981778B
+343CCE18E3886951B83882038F0A5BD8DE6BB6A0EED6064008D5F29392573173
+62BC23254C65C49404F8F1C58E8CFC0AFF6B09E9567D050415F6C5B7073F06FF
+61C4FB63CA877EEF8EF97292CF20D3EAE1A5CEB3E5B9185EA13FCD175F64B87B
+37616CB5CF6996B72E7A0FD0B7FC11D75DDE00FB53FCDB852FF78EBCFE27AA0F
+F146E3CAE775F2636C4BBB2AECB109CFEAA15B41F7ABB89E3B78C88E51D72B05
+783D5D433F26B895620C2D0A20FA1DAF31C1BD7A125F76356146EDB82E5BAD99
+E65AA21937A0B8506C93ADD1393A6560FD997DAE2162CD9C28D56D67EAC8C584
+A2A9E328AD237ACA417612D7BAA5A65F290CC93C5362B734BCA4CDE5A290DF75
+5600268525CDE3DA93F5E491C316208F288D14375EF0F3BE155C31DC154BB3F6
+04D24D50858B07406307EDD86FD62790C76A0FD1CC1F8C4AB44B095BED717D40
+2E468F73698A5B8915D4C7B540FC49B5111CFC36EA69D852DD992AF9B4D858A2
+944A15E8D89649A0E3E2BECEE59D15C689CF052F137FC28D030A1B4C85E82183
+8D1A174E0809DA0DB4921F0F4C9240F496529FCDDC16F355667C2977EDD4C492
+5B3A55D62C864834A5D4C6A7F51FE2C46CE3A6A21B3240555BA13509C16FA3DC
+2CA276014E1D9DF75908A803FE6B2413945F5EF522FB4547F86E1C11E042559D
+6E98714C619A9FEB7248577D122C388D3C8890E14FD16812FCB16D0EA30255A3
+95E40AB702971889B4D17DAE69F56FD5E39ED15571C883EF517DEB4A16160B7F
+07872022412BA5FC07C4BE37FB276A4B86BE06377D960D2D01813882947ACE62
+2101F38E9166FC7E3A629C3B1C6E95FDE05771313F469C1B6E40F8A2BD42ACB0
+51DCDE9F73F74FF5CE2056D32EF1FCDD8CD3A4EBEDCBB8D2B9C7C4967EBC1889
+CC89C7BB39B15177CA47B048250ACF0CEC47D4090A2EA3BE1C321B071394A8BA
+6FB07B2915813ECD28776735827D3BDDD34D69C00D87AE9D88A32C0C1C217461
+E98C9D7FEF42D19DA4039DB56C4616CACFB519CF7B970F35D4CBAED7003FC0EA
+703B527A2F6A8F7E0F7A7E647E3757BF08A31523D3E95FDE71F064A4648B1D59
+6DCC4CBDE6981C199B35AEF86F2A2EC44F3D6AD7DDC2E80A43EF586481530D2D
+D4923D542A738AA3EB370BB6BD076223D126AC66524389E772AF831B607A71DE
+CCA8B822D3EEDEA16A462D07ED61C27874FFE3D9770354D660ECDF58126636BB
+EA3D68FCA7842E4A6219F8ED487767B276F1C3D8F61316D7ADE6EC4217072A4B
+28152B404B7DBC9C22A07D6509D562C1503FD15E176EEDB7B9C973E96049DBFC
+348DC2AC2F99DDD4FD42353E7261A5D876FD3B91EBC607F843DCC1D5EA7F7C2E
+04BF867A9B928BEA994B85EEDE98C16A06669AE114E2E7651A90E436C1265E2F
+7D9C121D22B5AE7E147A28D928D5C721C170390E
+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 84 /T put
+dup 100 /d put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 110 /n put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t 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
+85B385124F47443FC116DD7EA23AF95CAFE257D2D685037EBE3F423D7BC0C630
+B8B1210BCED93CC1C8C6D694F4DC523323FCD3C6015B1EBB5306760C6BC63822
+272D60A1368B72B356043E29574434B0238E581D1C5BE338E4CFCF3F2FFFAC29
+BB70C40CA278611595869383B55FD12D75AA8708DB1DFA1D3F16DE89BF706476
+70AEB3AD4E871A1C3201ABA5FB85FDDD62B2D2C3BF3E57FF873523B087AA87D1
+FA4927C2402003302C349F75A9F7C2D0AE27DA37A0C382D945DD6DBF39EB42BA
+6343B9CA57FC8E9F6D90255F47B71FAA258C99D6E5E062DCE30DFCDDF2DAF194
+3C39A4BFFDC4DEB2125BCC857B90E404225B0AEEF3B85D6051238C777979F884
+9CA686FB051C4403AC260118327025D7BCF59690630847E970AC9BC4462E9FAD
+C502D6BCCF7814443D20CCDA9636D8FBEE9C0BB699A606C217FEA184A8035545
+D05B7F02409291457CC05291241E4EF85E1A72514C84D350E24223E067FB4FCF
+B27EA2B9195014D2B0C3E92C325AA7D880EB59FB2C50E7A5ED176B3F323B0531
+1946A616772981A1C30C9A70ED9ADF8706D62B5A02E8AB3600454DFE01869486
+7426902000DA318E26E4DC5D89A42FB8FEB76B90817EAD7CE4223AACF65C09CC
+7D83023EC4A56EDB0EB2C51E599AC171C1216EDE3F0EC62574D652C1B0F80E30
+1EFF1FB577093A5B754DA03F30FA2DE01DF51F2AFFD53BB643CE1BA4A3888168
+A5E62D3906560CF360ECF3ECF76976B288483DEFCDC2A605F9840811BEF57327
+098537BE5F949C6C7D233A97068F75A4C2E603D91F6CA27E53D68DB04D7FC3F5
+8193A59AE6C551863385FF187A6A44D78E8479CC92BB98696805FA307E30F1CB
+3B27AA554DACAD36052DDB7DC50A63F9C545CD190CD5F2FECFD44DF704702C39
+78840078650AEC83207ECFE0FE2DFAB0CE55A4BFB091CDAE615EAC92EEF89E8F
+0B37511C9BE09A9E2467620AFBFC1E51F853B2E07DBD9B5D39E6AEEF5A4ACCAB
+B56B495CD093A208064B9032A18A24712797EF3A404BAF9F7D93317FD5681594
+6D2A5554D72CB76FB8CD6B35FC4BFA17AFA8CDCC6C665310D644FC675FFA2A80
+31CBB320101FF9586BD6ADFC020BC04F7CB8BD8A9A7CA240B6B97A037261EF64
+C996503F353E729418FAEB1AC6EDB28436F7DC878A274372CDCF3E1FD12D11BD
+F682A41BD83B9A8D9AA8EDC8A633592FD6F6C29BF1E9F1000447DCAD5541D722
+0F9C097A9990002C21D10D2745AEBA3A7B588245F88E1803786A17DFC7B55AFE
+FCE0A4EBDA32D76B24A168C0C9E682815172906284D02D6A51D0A64A83EB18DC
+C69837DDAE75C123BA245AC72F670CCF65F7DA55805DAB17FFA4963CD45C5F68
+D28E6B5F768E725534A51C6729408F0F1B50CF78AD095DFB191F46949CD15A0B
+BE1AE986153E69AC08656EA3BE2D4CF0A6B43AB66A71DDDEC8815D5ACBD06FE7
+3DB2A361BFEF5AC79F23F8AF888166F8277B6B694B4D1478D1F6D48D1EDF57E9
+39BCE550C9EE8584A9143C4704F91440032FE3DC3D4430815ECDB10DEF215CB3
+303D91824414067E95CEC005161F771E9A332B5C726370AABFB732A4B046F8DE
+207FF4E857F281DD79C77BBCC5CC991292C528482D59F417645218C000C6E3E5
+83374A8163E976E2A4246898D713770DF55DB98A442639B4F90506344BF1400B
+F1314312A720092C436DB6E854219168F699EF6BEDC561201AAC6286EB2E7969
+1F13D807BEFFB838A926A7973EE6DC6AFA65879BF86B4325C689E89D98F77CD1
+5FA98C930E6E5F88F839EBB598CD3E9CE185A3A93E8D265A279F533CFD79554A
+6DAABB2D698C217886FBA5F1D33DCF0531A0319793F2F08DAA16FB43C5FF40F4
+710F91201D1FEFBF55D46CA9BB3322974BD9113D229CBEA68A70A9D481D13E47
+F7B849EC2403BF7D67C504D3287B73ABAD948AFAFEB66B5466E401FC9090192F
+43C5C68FDDB1B2F25973BD5C8EA437B761B0CFCD2BF8590CF66CAEE24845D933
+3F2FC174D3C0369CEDA0F7036E728AD6D0316137C769AF611A94A89EF3224638
+8BC391B20100024E33563B5A8E139E6D9EDBAFD111029F83D7D4958DD0348DBA
+36FC54A394D375655FF1A8DD5FD407EA9AFDF58A66B13499DBA3361E8B3D2E96
+A6804461871BEDC6698EA0479FDB73DDBEE54D70F3D8D53DBAB8E86BECAFD953
+21647381DE82FB2D66686026F757A5FC6FE4F97669D8F316C6CBBA1A31C3C2E8
+5E32A4E544394520EF3E51D092CB4C2A7369748EBDEFEB99DB9F9EAE5E752FA8
+9D1AC7B023A3660F34A20EB36571839BB94642236245BF873B6896F47E746702
+E2CFAE0EAAFD0B74D41BFEC2F3CDD9BA71F937D24E0A76264F631BEA7DF5E4D1
+4F706E9158550EE0CBDA7DA04B539D2E50036D48F256BC36C4B70C19BEC110A3
+4A88530D59E17921BA7CB6D0D7ADF2F45B1AE5B56BFC790CACB0F9CD2D6141AB
+3855692E313DCC811CFB201899AEA7951F5914AA3AC666CA3AFD9020847F3E40
+D892BD0765CE2438326A22C970A29E3EC6C66AE949F020E3B15D52B257A58E13
+613B775E5B50E36BD4BE10C2C4D25A3DA527E23CFE4648952EA0754FDC2332B7
+85437AB3F1F4084CEC936CFD8997B57317E05AF13F5049F758C34FD82CA8849D
+6CBD39151E8342C52F758D85A4D5664DA4A34EBF7939442930A410831FAFADDA
+1C98A9B7A9B8D5332AD743E6A8D9D717BBEF970B244FA55C85485D472A2BB026
+319BEBCCE731AAB6D1DD5A031110FCD6BF0E9AD39F25A09B98BC3C10EC07694A
+036E62C7A497B787CA0C4E5E571924EAD5380EB34672A5020409255FCB39E69D
+CE3AFFB58CEEFD9D1107100FD51254585CFF2506CE3B08C58C31E95CA5567F7A
+762CFEF828C5B8261EABAEF839EEB3761697CA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR8
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+% 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 (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR8 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 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 55 /seven put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
+48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
+9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
+0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
+8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
+EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
+FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
+9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
+D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
+9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
+ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
+10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
+83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
+2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30
+4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632
+BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B
+041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721
+3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762BD779B0C3709
+4DF9CB65F0648B72373A300B521D8280D79BA483342B304C7FCD0887A49D9CE1
+192E8AE36AB004FFB7CE0A42F4EA48B04B505F2C0D88EB09CF93D6FFCDB7AD23
+D03BF93916F6D7E71637553DC8AC311C856BE481C14947F7E6353B3171FDFEB9
+652488E0592D5A181B538AF6A8C5BDFFA421891E6B7D8BFA7DAEE72A40F93D72
+3808E7BA8BF96F3E842579DE45B64E1DF88FC79ACF0DD8A1F4ADF3B4C2C3B9CD
+CE5DA82925DF5913168831DA588564E14032513910DB1EA1E7F8304FAD58E635
+4E43575BC260A964ACFEECA8AFACE164E654C9924FB6431C8C791F9C1BB2BDBF
+6516014072E620D137219D1078D928C735B1B356A4FB7C8AE44E5689AA1C8268
+0C9D72C2B7BA568A05DA601156B2A5FCE941B07F4052242244BF79AC217C84A5
+5EB1A7FB851212D37DD5E4220FAC2138D60119E9DA87F5156CD298576E5ED59F
+DB192E59D3DDD92C1A4CAD15D2A8AD4E24AA1644FA1C47F5F559DD4727E5FE02
+01F45337263E57F4F464A8E36AC54E410C3E61225C3739546D6A0475C0183144
+5CA242D40A7B48A09A36C057D819797B2A30B9FA5934F40DDAAEE9855750392E
+A41AFD637143440853BF0315CAC4AF1782248AE28B42C2D3B4FD293754E69512
+AFB3467CC9CDE4E44BBBC1FB928EA0E686DF898ABB65BEF8E60C2F08760A95FC
+3D0298321B315CE0633CF6ED222BB17976ABFF3E9CC413C0327E0498B8462D1E
+DADE882D15C4CE194D835C7E26E247D049CAF861CC5A79BFD79610F32FBA3A49
+3D3BE7FF757DC36BFD0F715121E0C0BE2E22497E9CB46284CAAA347063385A52
+775028C5C7E4F8970A1BF68A1F7CBDD546C6A396095AF5CF37EF9B7F74781986
+B4995A7554DE578ADF2F3FF5184DADE2A349A261E31A2D8E4DB02086B03C3619
+44C90FCF04C00CF4662A16134A0E713C0DC9EA5E97711708EDA217B3FBA37CE4
+014BBB0D9C4EEB4206132A744A1402D3DAEF05E029C1A21F430323643A47A764
+B52D1225ED92B2F1792E41D5E4919344596FD630BFF045A59D4318A01E081654
+DF63DD3970656D455EB4CC71433F2AD0E4800674CB858434A0187AAB2847247C
+86A67466164E8D48841DDE6574758567246EFA5902C4A2D5FDE6B4190AD0B84F
+836DB28929B2E4C595F12F6D7F6CF983F4A577336A62174990FB5FDD8E926EC0
+CD78150BFA466CB10179
+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
+dup 2 /multiply put
+dup 20 /lessequal put
+dup 21 /greaterequal put
+dup 50 /element put
+dup 56 /universal put
+dup 57 /existential put
+dup 91 /union put
+dup 102 /braceleft put
+dup 103 /braceright put
+dup 106 /bar put
+dup 110 /backslash 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
+515DB70A8D4F6146FE068DC1E5DE8BC57034F5E81DEF84AB9E5382F3E6B5715F
+DF7C70F5A0FBFCD627713545CD2F7BF03BE000B484FBC808AE5D71F2419857EC
+B194BF5AC776B9AE3C54BE1E828E0E65149BEFFF4D6D90076101D9F63FE3E917
+886E40F2678A1544FE310DE90354B85323413329E9C28005293E70E54EAA0755
+29028DB44DA905896AC25CEC38EC175D03321FC1B83403417BB61AAAFC8DCE3F
+A6914D079987E5B87C83D44D74F649617796F6F306D492DB24F76D28FFE9645D
+843F62529794974BE830FDC1F58F11FFB104EFEA3C40993C10F128EEF1B5FBE8
+6F442B5BD3A377AD5A457878AA37D623E9D0176109A94D4593126A7D1A5F081E
+5704353CFB81F182083A6A431DEC94B2CA4681B766D31124970919F603609655
+77CEFEBBDDEC59DD36A1040DBE5FCBA23F74239A2C226C15B9FF071DB31542EA
+2D1BCF96BF85423A29C64396AB052DCEBA874740EAF985507F580AD435EBBDA3
+BFE3F588569DE4B6D081CC210C82AE6F0BA28FF1EED9E89399FA3BD3D0750FF3
+1F5FBB680DF78510278DB853838581CA837CF64E4DD772C969A8F26489CF7988
+E6FF1B4BD122E4651B856FD5732B3049A267F0EEBFDAF16036E58A4D8F39BA36
+40658E8ED7419E8166869A7D2EEBE2A0F456AF9428B4DCF2BB36290668E06404
+4EC497CFA46C6484C7F762314A28CFE77DA97DD68F6BCAFF90D98E7650E400D3
+FD4DD94847269BC42FB9F573235646B430CD2CE1E56EEE4EA44F1B73EA2A451F
+2A285E1EAFFAFC32A5FD8426689DF320711E6059D20454FA0D7DDCCA5B64691D
+3D5E891EB06363541CE1667A02A96414F12D721C92C0A7B0A7D24FC9C83E0B45
+3F69F35DFC531AA3CA912E990C7CD8CE626406A1160A6B5B82A33F2745F39CCD
+DEF54E26B044F0DBF61785149B0536F9B77889B96BB7C7A5245667DFCA9C4D51
+5B527A848A58FC60A42D722AD913DD1DF87EC624AA643A648FBC66CA95529DF1
+D29FE249D82D5D7654D606B1D6BD9A22342D13B3F873BABAE88B8C42C074E8F4
+CF25CC7B759B8FA07367FAE74ADA0D7A596F77EF712B32FF99ECF5C33A950E7C
+4B01FC4FA16504745B768C59B4C53A9199158948A585965448C07701B7DB19F5
+0501D243E2338C15773D936345A643E8E5B59C31D228DF8C079B66F813CC1291
+EC11E8E18504AC9A455FA364E40FA9DDAECCD3376EF38EC9CD871B7A0ABEE362
+FD4EABC96B0F01C8AAA33FCFA8D055E565ECE1476B90DE4314F843CF01758DA2
+2463024D1E2FF5424B8694876E771975B30283C9F71DBB23549F07B0E5D19C22
+33066511B04A55AD044EB16E7607313B1A04B457E51DD4BF75B54C0063EA8276
+3176A25FB0FBE8472A21081843F5D191CAACB68BFF0A86A3D5708CD42A5481D0
+4B7B3A554E22438834127C22A9CFC62CC0A313E1AFE075A794299CF46ADD0D91
+11825248D40BC1C13ADB74D7A2D9DF2D3209ED5E4925CF344777CCAD44085B1B
+A2D3F3F75E2AB018429E551C4DAE8B3532D1EA018B3AE46065C107DEED0C8403
+D6E956E11A3D357E29C9069C0203F104E02E877A08F3779BC3EC42A1D9A24E2E
+67D4C6F25F0C92378598B8BD8F40AA1B2671A98DAD75E24FB4C0F10A680A3698
+08E0A46FC7E2C54DFA58CDEDEBEAF3BC88CF64090F14B1E5C9C5819012EE4F2B
+40B057BE38761FDAACF40EE1EA1ABAD242E67503C7A1ABB321E140F67654B9AF
+80A608D5E637D22072B27993013C8C67AC539229320C1EA25A6455F042CC6C58
+971DAACA05402A378B0537CD43CB909A64562CD69CF92C138C76DE19463718D0
+6FF778E7C49011A101DDFC99AD76F400A60835FDCD3E1DA360AB5B088FB1CA66
+A15FA1FBCA1D7199715ADB8079E1A904D10CA5158CDF92629AC4C2D7A1D8C288
+424491151FD408FA56054E2A9DE19CF688A08B6501E42CB50AF52574DAF19110
+0D6DC81FE5A281525A20568E80B3322F9D9ECD2F9C6A050FB9E45527C9BA9365
+75C4D006248BDE9FD0D5B7EE112AEB36E734592B33EED6CEE8D95D1B7B60279B
+68B8846FF13DCF6865954F793030CB9A3855AAC01ECD5B0861596CCD8907E867
+4313465D47A0D32733B6A8E4A6F387D6069C8CA2E300B4CF6995B6DED3A3B1AD
+389B56A89E0E900F8C38A1DD073AE23A8C957BED37241B4426451D9BB592249E
+DF7D065010F53FDDF14C9A78565481CCE8AD1F05BFCB65530B3146BF5F53245C
+FAD0F87785C491B3109B8438D779A224149C5CBD6489888EFF798C38EB7D1342
+523D2EA9D47936F2C332CE2FB25CD3B4A4AC552F1BD79DE9FCD64AA62D6A181C
+305BA813D85D2DB54BE476F990709808CA3DEB53C94918038106F6FCC62A1559
+610DA7F9EF3534D3BC2C279246DA5C3AE391CBD5A821857B4D699DD92AC4A430
+4F9248452C9C95010C3FD1909891476C5AB54C5125FAE5C89CB4B92CCA049940
+F1E7AC052A4CA7127553898BC84CE9B29287206B32D1940D8B90B263
+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 58 /period put
+dup 59 /comma put
+dup 61 /slash put
+dup 62 /greater put
+dup 65 /A put
+dup 75 /K put
+dup 76 /L put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 118 /v put
+dup 120 /x put
+dup 122 /z 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
+AFC27E4A7E07D09FB08355F6EA74E530B0743143F2A871732D62D80F35B19FD2
+C7FDF08105847F13D50934419AC647CBA71DF74F4531DC02BBDA22AEEA3FBBBB
+407E0ACC52BDC60D01A29407CC4F93EB8BF6D4813E9BA858D54F38918AC82720
+4956D50291F0546E50FCAFA6DBD0099123F5ECD4AB338DB310DB4CAE11337A89
+8ED99B6F483940C97544F888EAF0CBEB11094A13C073D0061808662A04A82BA0
+AD35E8782F854AF66C20C0FEF18D0ECDD1646321B93D327E53D88CA0E825FA95
+05AA57BD719A0FA14B38EC39164AD228A5F496C48EE1FCF6D7412E372C9B81E5
+98C9C34E00C6FF27D711277BD06F13279AEEDDD39489406FAA129D28084D1201
+0F381B7130D1278ADFF30212AF2F33E651255C8665D5076E0CBD9F5D5C5D0A81
+81C113CF16966411D8738FD33B179FCD58753583ED6B95AAB7C69ABFD9C0A57B
+8AEC7A803CBD4686C4C103E7F75883E756865F355473D6852599B498E8B4F0E7
+28776667059E17CEE485CBB169C637F8A3A2C96A9661ACC154459C622D3748C3
+2CC0B8608057500C303FC1F79F30D8CF39288FDF3819460482E8AC115833BCD5
+82434238B0215EFC24428E5D658D6D4F22189412EE4113D0B937934213A11B82
+745C1D8A62BE022F04AC17FCDA3B8CC1F513D74046A0D0FCB0B6023C2BDCDAE0
+53913C074E99C05EA8A1D416DA1EA10860FF73E77744F6FEBAF1FBF8457D484E
+B24BDD62BE4326548DA805435D8F274C309B41136B1D72349125FBBE698693DF
+BAD8BE71E9D6760426D8E6890DB479BE58E20336162388562881E331ED18BC81
+24FE927B80D4B3FB38E0625556EC8874922E2A2621512361F6E14B7D9DDF996D
+4E005F55ED3154AF197DB39C87E7D7EADED4AE98F868FB6956BA0EBD1D41F2C9
+5069192C92440760248FC35AF92AA2C7B951F598989568D60531B5786113E0DB
+9F38DEF097C7713DE9CDDE7E8341F94E4669A6623C73BD150D110A397203E0C6
+78413310AF52FD05E7BD2393EB4E908E58A08CC266FBB246200EC3F90110DF23
+483445EDDF4716E79115D4964A8698E911C1B17BE30AE97C697ED2D4A4060C1D
+B10771742273849427484F717E297425DBB9668E2DFD5420F6F2264671772F83
+F1133B4CF5A8444F18A35437A189BE4E3F6240A7200C8F911236C6E1BD984172
+048267CD9198C6392E2A54EEAD5343B019EA64098BC4AEA29FEA2473D764ADB2
+53780895DAA73C4ECB702DB163FD72DEC99A6D1A7B3DE21FF7E5D8492FFCB406
+288C950037E928DFCA484A4DF5BBD38DE00D2755D2C4DC265DD797BD803F1B32
+87CA83653AB3527E7FCFAC8973D49FBA9F8795C8E661450B4650566BACAC19B2
+4441C0A6C723FB76C7DC940019F711FA4B947F74ED7451363B1EE6366870D282
+57A12F71DA2F3934F14FC4F1F1F15DD8808FF9A584E9EB5E919CA592CC45254F
+C041B1E00377D6C8E8559452D53B6923341AA1FB436F62C9065B1996E6C3A01F
+D8D6B987FA06D54C05F7E3101DD9934A64BF962811189C0A0AA7E508787ACE0E
+11B3B52806BC6376109385F5DFBBD06A03F1040D3637031FCA76E96F54DB4FCD
+6D377063E5145FEB8D494728B7D38ADA690C0EEB384BA8C4475CBC260749699C
+04362185609C824682BDD7DA5454479865156175C65FF4ABC6A92D7A43E3B059
+BB1FAC4332C417EB10FA20824578863C02D498ED07701EEBBDD61ABED999EDA4
+0DD2346BF3AA65CFE2A6EB625DD908B12397A0551CFC44FF2C83CDF4587889DF
+9E73659DBA69115623E23C7D496971E26070193AF3B4ADEAFABDAC7A1CF3097E
+4D08DE022EF3C7A4B83741CC22DA938F91A232B1D5C600985CAFFE1586758CB5
+E4293399D3700071F6B1CB6172B8BF89D84FBFBF95AE77D79A18EFBA4E77E383
+F6CA6EAE8C15905F21E6558080B6F4A5E0FB8D4A15D46D784663A8B36E525FD1
+98C1D5B4262DF99E480F8DA64CBE984F4C6899626BFD9869D33E85E6D7854E50
+E0B82D9DCB9A98089355774AB887DD3978A545879BB8F8859EF0F90AB9C0692B
+AA28985D4484C29E7A1666090B26D65E9936CCA01847644C9B442FA9EE197F3A
+B0146539F905A7C8B338FC1F5CE083878BAF70D24296B74A3B22C58543CB058F
+D9D5C4556A6C032124DD19ADD4688864013E5CBD1433E6C8851FC4C216259CD6
+22D6C9B88296BAEB88858E80B1A999083CBE19BCDF45E9AE3D99F231AE594BD7
+C7881B69E6A1043CB4C395EF68E2C3902619D96D90B36175917552FC1AD2375B
+D56E351DED0B01AFF7152016CF48AA87D4CC60FD6323BDBCB64E72B660530FB1
+721DEA76FA6FB03535C93E4EDB19D771E4255C2D5C8AA0114F61DB431CE36785
+8095A7C1F8B6486CCFB406AA62869545DDCC9DA8A2364B0DD8ED8208E35607B0
+B04E0200CA1E8C3A0BE0837F21AA7C78F57014D3045FD24FEA13B7E801A1C434
+5F1218A278D98F8C8832D70B6B8777EC93B1574B421594C20C8B986ED8CE2634
+5F760E698F6A5D837832E4FBAB4022EA29E2B7631198DC435B08C405A0E60C2C
+C931EDEE81F72DA4F42EED90204801BB6F1E03C7EAE67B30FF9F73F88F6C01D9
+672B616CFE453877BDBF35018E47A42C2DDF778A5C3C6A34CD5F5DC81B74367A
+5935C3204B0742A24F1D47A70BD83756D0EA6414E058F1B94D6689297C3FEB4B
+D2BAF9E4D2112C2F527802E8A8B19905F03E323AE14AA26132FA92F610B975CD
+890DF514680ABF95640A7A4318EFE589B907ED4C276B954345802463EEF96982
+B04F20E100DE2A48B0B18DB1481324E21D1BDBC98CBA7A5ED5715E01677C6DAE
+9751EFFDD8B2CF44D96D9345860C3785D94477D1E34DCEE3FB4402C94EDB52E4
+055F2536DE051DFD56CFFF7FB7F79FC153A7FBC76635B0AC4A19EADE7F4F77D3
+1A2FDBD06471D302A60788E7B4280B2F162E8C287270CD13A15D0F269AB69FB6
+57F00E85A61C3A8B4352951ED2853540F437A6CB6D5691301544430880A8BD31
+16999099837EE8C4CF2C049D3857DC182E4A96397F05932431C428D0BC33A3AA
+78BEA708E51D8E03B806C2542C0BF2539646FD482BE2A88FA4C6C4D606B0BB9E
+D31614F13F94C9C26BF39A4E0AE8D8D7F820F94D3D8425A09FAACCCE0D4F09F9
+05469D16F3ADC017377219110157C07434F74A220857737426DE8275593EA384
+BCFA240CCB628FBBE9889BF0CE7D8BF27F1231A49FDF5864989F5C43C06B19A8
+415A3FE7AED61D0818881EAB2581550E8226310C67C93EA198FA55C35314502A
+2E17BA25B30278A8E30DEBBDF8CE682E0D34FBC92AEB35EC08AAA3B428358D9E
+0B24FE97AA03FABAA4277F5C81F621E1CE2ED0C0C9E3A0868B8C29323A8FC208
+C420FE622DC33567D312383BC32295241E2AC452655AF4180A947DF3B46E5F64
+6CE0A52AAE10925BE68D4CD49013D95F97558940C54F857AC4A278BA32003BE3
+D1514941220D1DEAD556CD8AC64DADEF6C5DA3AD29B85B1717F2FFBCEE59A0EF
+4ADE29A3115E3A095EBEABA041AE41DDE25D9A714C41F12A642B411652A01E5F
+73D2745A239DD864625C31D3143847145F337EFB9F9C632EFF4E3011391B0B11
+0743695E85877B958BF2A9017396C2C3D3403C274F93705C9C1E80616CD66BA3
+E4331E3CA0181052A00D9468DC0428C89989ACC2F83924C1D35CF5DAE12CAA89
+5535B70F98B9CE6B5CE82BAAAC8208291689FF7EE703AA057F8F06620635A56D
+589F14416249148DC146CA2D990C50DAB2F6F6506A6920BE9DA5A93B9F0E7BDD
+120151536678A80EE33A531D40D6345D9D9623242E30BBC18654558EF8A22AF5
+E91B77AAC994CF700F267FACC80E4EA7B17ABE1B5F57BE02BF5FEFCC3AC9EC29
+612A3299A3641F44E0A4EFD64A2FE3C012F1394E733BFB226285392F0F3850D9
+426789A509CF59CB7F2D4BC172F36C132783E5A0843AE487DE20C1A3816891A8
+A20B986BB8A9799AB773A394941CA2BF1F96054F2A61D6F8D2706112A5D01D9B
+80179050C23DD2ECC6A5E185FDB54B8D1CD1A72797ABD82293E83E5CF9296B08
+68B0BC09656314C7C1518C69B70D3A9E8D88D20AFFA9863C7FACAE1D0C56E38B
+0F90710929A12F82D60D4CD29B816A27ED36E5C41712FE50C1BA397EA58315E3
+61415BC5B04B0B10F8870FD4F5F082BA981DDDD34BA42E40E61DE6DF29CB78DF
+7243F0E4D2CE5CE7899664CA18BE8CCC0B5AC7D74F3211AD6A7E11400104255A
+7E34822D421FEDD7652ACA66256BD86E339DAF7F4C9E34547BD78DFA8DAC788F
+3C73F87D66DA7FA209BF878B68D3CA543E38BB457713612543238E2672DFAEBC
+CDDEB6437C2FB3BD4CB7D0E038D41517A391B8E8D2E998AF453B3F14E2D50449
+C4C98CE2D88844480CB8D785BDD9F95A3E217A0ACB8CE2EF587E3F976D779745
+C24009B82F4695D16DAB6DD925FFFF100C09776667069C41C6C8767AD978EB38
+C468A5B1E0680F918792ADD4A8225C15796B93D20789D714E5D9743D9B3D207E
+FEBE188B0C03C1E4CF7BACF1121B9323D71E4B0A3A5FEF3AE95364880F41AA6A
+E74D277C431A4331708578FB52D2DE26675337BF6F5A594B509DBCE9FDD40755
+9E91E480FA308B459C81B0CA6B6F60F7BDD58E6F01A11F3B0A9AADF659E94D59
+3A606BF53A37191B62B88F84267E8A1FD969538D27113E3CBF6A5FAFC639DD2C
+932D3D981045652FFA8F9D3869F8F31D324B7F579110AE5DB82AFE23A5798CAD
+30E036E6D8FCC113F1A97F67C3AE2DDB68EF5E929739DB569C09B25939912DEF
+A7798DE420F0564CD885391BCBFEBF2A00DDC3516CB821DC413372C15DD8C9DD
+8B237771B720B3027F520AB1A574E65EE19B52C27BF9055FEC8E67A71568B6E6
+F3D87683BAF9AAB79E03CEE528AA695637B08CB845F9475485B67DDF87F5D0BD
+B4780C2FA5F8FA6CEEB12AAD6B349C91FE41C2CCEF59D850A98319FDB654D2B2
+788FDD7B4BB357A6F0C0D077A1E08861320361286B6D69F3EB7BB5E0AF7665E0
+C3707A4225CEBC148978ABC33E5B344978F2D5393138EEDE0B667EDF11371F5D
+197F4B3989F292A19CA805646FA56F4973846794366CFCEF584B8EE65C1C49F4
+56C2B7045C5208CD86064346ED2AD8AD769BA57475A6066C1DF6F1EF54775C22
+FFD55302F79410108C6239CC1EAE729F2C58ABB44DA9251D90FE62BAD1A2DF3B
+15732D25C3C6B836F6C204C41D6B77536CABD0FB8097E5E242743B3FABED7A78
+3DB0C1B4ED263B7233070632378669FB5B6AA3A40E7BEF9E4622FE8046F218A3
+087E4F498FD1824D2204DA136DC6B12D22BFB47FF1B9DD6D16F20059A905F41D
+E15EC2A1F739ED737FEAC5A8CDE6C6A89174F35F3F08F7EFFB7F0421E05F43BB
+14BA580D98DA7C28CB7146EB4F6A2AEEA727080516B79F913B9C7C9B245973B0
+381B98C68BB20DAC52C86E605BD2402FB83D6C972ECF9CA7CBD3DCDF5ED1FB52
+0E07C8F4073E62831278219A7640098E7963E7CE9A1D96EADC0752BD05A65F4E
+0EA1933F8FE30BC2862F4AB4778813C1FD351287E99F4CAF8F293CBA493843FB
+B48F4845EA17EBA256A3E9EB93799A43E9190249F3E6D9C8F4B3D67136F31014
+B84E0B5AB2EB9F7281F0C2D35DF88BF5E19F87F73F6CCE47C24E65B87C9DE5A1
+276B5B704A04C910F7F6251B205263B345F021BA35463D8E7EE3B6998863B24D
+E419AB12390CF368A2EEF5D5FE9932A05E7F4794B63A86F07E9F53D8489EA756
+BC4C7010DDF2D115A626EFBF8FC3AC109D8217C14196A37BA56FAB336EA44E7A
+54B2FF7E9AC0EA8C252B4567D6C4BA71D9D6B8BA9972898C131B8D5BD485866C
+A0DBA290EDC395E77C3C54391F1F5EC759B0AF4726C12BBC29FEDE8FCC284638
+4B3DFD705A6EC7C7DD0246C1168D6AA32E4DE826AA93649ED4AA64CE9796F086
+FA718B549470A77E112DA2CDC55A25DF976A4060C755C4C72E5C5B64219A4778
+E279E82481D7CE2A7B59C85CCE0A611424281AC393C6B5FE6F0CF9F62A0AA0F6
+FA538E4190D80126373784696614E22490DF3203F0FCCDC4EFFCBF9862CBAA37
+AB2B2BB499BCB4376917BC1CF920E9EF929D7DE80ABBDF53DD18E3E6322C300A
+E745B492798CF4AB9CE7FA975D996A9B8E3597E093F3FCFFFD4F15DBF01E7108
+8588147ADD3A36CB7DC9A5692C8AB266FFA676BF6D2B849A431338A262F69B24
+2E4EA46179A98C5D3BBA87CE9199B25D0D7259E5E69E1F38ABCAF8D21EAC72A5
+4DF018A119A8090BF8906F3C134A4B25439BF172ED1AB60360F50EBD440E9135
+A335E36D10551B04E09D5B13E78783E1E1B008254E83DA41F5F4079F44881C6F
+B9B0F1D6E56A9EB8F640961A1C07D1DE1E4009CE749EE655DF33BBF0FE1AC7E2
+14DDAB0D80DE1F55C99A9C734659A30C4049F5DB89BE3DBEE630F701F59611E8
+D22009C12D5E3D23DADE2E5714EAF3B4DB253C2E038070BAA68CB67323B964E7
+B55DB75762849BBDF03E056064525C7B6293FF28C78B4112F9242E026DEDEDBF
+C323D8A4B95A77738E0136F6A089C36C09E8D7E13AF0B78FCCA2539465CB2695
+94471C662EABDDA401AA83FD38DC31AAEECDD96DE6275035701157D5BF939961
+07CC1AD866F15474687F7602208FDE9E9E7D1957484BBD021B45F63DE042E76D
+762E666893324BC65A918D44ABB7284173DE360B5EB444444CEC3478B554C342
+F70314EEB7D026AEF8C7C2E91FBBBF30E471CD576FC9FCFE03E3DFA571E81CCA
+0B32685FDFA9AB53E64E0BD02EFD2DD3BDFF6DEE3C1666C57411685CBAE93811
+EBE1C2CAA45880708D9F5436FF7C8CB00AC2DA2ED7D210B57A4E0D77A6096356
+FA7A5E3C7FA71F97B5C9519F37824DDC8A97A551D601B76F61648410FE165AF5
+95DE474CC1F6EE15125E6DA4CE18C837D858F72CFD8890FD5AE61D9914A7E005
+E22F2D29FCFA360900FF8E0792D1E2AEEA9C7FC62E4428A78A6C69C861AEBF07
+70A25BB5526A8134BA28E483E32C3BF6EA21A62077478628C588EFEC6DF199D8
+E8C2492BF795DB8397D7C9A52F2660CBC7F2F13E84C2540CF0CC4A4D31850D36
+EEF743BEBCC0175A8F4C967E767DBC926E55D0E66A130F620AC3C8E73F75BFF7
+08121DFB95FD46E18075461F5C597C431D6AFD846CDD34E0041926839D856C80
+B524AB4FFA4E31165BE1D668C6205239ADE9920E8F03214D1D8A4B1C5E13BBCB
+0F59068DCDB5EF589AFFA18E819BE959013E15F494F0529201A9A70C2B6DDE22
+A9434459555FA63501E69F94CA24A175EF6FD14FF1973C944012C7183641CA86
+7E98C6C99B0E448FC7BFC4867BFC6D42A85CEAF2178082D19E882D8890E845D2
+46109F9529A1594FC4A37E7FFE13408843D3ACB1BC58EE20EF2A7BCA9F2AECBB
+12A6E1DD58B36A1F10D5D5C135949F71C037CC45AB2097BF6D8378860601B6B4
+C168B3E4B94B7F0275C3E13A03F1F219380E7F30E969CB868F1BD3AD8CFDEEB7
+7CCEF1B3651720C1DCE26E1DCD48EB76F990709489E084EA31C37741CC2E9FD1
+5FA97E2455E9952DB54D69DF6DE9A22385C2823AC6678FA4C9BF09AD2E7C4160
+E6381C515EE4BCAD81103E37EED08EF7D847FD27225D7219704FDBA4CECAEFE2
+AF3CFCB09F0B124C9DA4177EF220DE7FDF9F20A855BB661FAA1E103BCDB9B849
+11CC1967315D149692DFC3C0EC83645374C719C862BBCBA17407DFD6009579B7
+ABE2CAD2566D628A9B0E9BB7BA9416E01DF5AA5DA40763F7AE662E6A8FF4CF40
+F95915AAA0EC2C72E73D5ECA73D184671730D9C57095A30534BD44DB57F2D58C
+8F1352E00AF5EB367E8E6ADACECF18BFD7F128BA43A8AF1551BFE2D4619FC542
+7A3546A7DE199C4BAC162D8A3A89FEA1981B693B1A64752A0C098679D33F1BE5
+A842C9430A6364CBE813029CE52EB861625A235DCC1252DD45F6CAA1BBA1A634
+7BCAE48DD3CB624A49FAE97934D001A9B14E4ECC477F8BAE6841B94A34349EA7
+3C0B67773345543BC90B8C2D3C76D8368661EE9273A1FC00FC3AEE5894E701DF
+ACE899C0E0BFDE8435AACC5D04A2FBDD1E2F6E78D15F5A0F0EDF1697BE93DC90
+12B60ACC8920FF8BB461CCBBB0F062AEDDF0E599B491468F20B6DB33EA7D479F
+DD1CF02F28A420F005388DF9A42973B42B7224FAE270A02E78BB713A825ADAD4
+1887D903E2C2220444D349CB0AD1D3CA4820AA4F13DE9D0A945FA18EB810AFDC
+AE6C8D26DA0D417B1EEC9C533BDE04BDA73B5ECE98099D6009D0FABCABBB869C
+E5FAE566ACD768DD4CD84FD085573A97794531521B1FF48D4CECAA99460934DF
+EBBD16EFE2F9097DDE55DD34475B289D7EC759A1CB3F81D3A81491688828E640
+2155B586BE482A1D7E38E9A185B854679BFABB17C33D518FEBF0AD6AE5CCA300
+C68E87D59BD2FE75E18FA9FFF2D6DC461E8759DA2A2F43C9FE1AADD2EA59687B
+E539B8A010527A47E25578E7396A79F45949B9273701DE1F47F57103B766C824
+299F4CD5DC5FA7BE3570676964A366544970F9FC40041999F79C013CCCEF705E
+38E9001558E76777325317A37AD28C40A4F0FA51BFC4C2BF11DF43E58C7834E8
+E62E3E0CEC9788989EC5CA3E7D3E3FFA032F3C78332B3524D1B611ACDF66C1BD
+DB2B7C06483C74377558FBB92F7D4E1E61F2586258B43BBEFE50E0A20088EBC6
+ED13781B0EBC07C065BA92E1A0CAD789BBF7114A1C217F3F57F8B144DD41ACAE
+1D156C6A995DB418C2906992CD777736AFB151AF96357F28193A2C87BC9366E1
+426B118EE73080645F99AC8A1328D92906DCCCAE5AC411075E97B6B2BE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+% 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 (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 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 35 /numbersign put
+dup 38 /ampersand put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 55 /seven put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 62 /greater put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 125 /braceright put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
+38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
+D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
+EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
+A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
+F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
+4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
+6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
+A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
+E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
+1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
+452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
+8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
+5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
+DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
+BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
+741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
+E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
+E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
+D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
+C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC
+FF798F2ABFC4F3539392985C4CB324B00072295FC160818BB0355FDC4F12E39B
+984826450553E3D271F03D8DC2D12A92A4D32034FD16DA13B876D88C8C097384
+46D8D7E41CA1A8979F9B07EC3337E70CBBE3A377235B04C79BBBDB66CE1C1A41
+89DAB0784D0778A4244CAB95EF2FFC33D38B2479461E3CC0C0042B4879347556
+1AE2718C4742058FE118C6E74557BC27F73C857AA0BC3D5527C8A3FEE8D1DE76
+42F3BD4C077811073FB73D34FE110BBDAAE3FEA85CCC34C081000267CCF2E887
+7C04B2F46ED5B3502E827D43AE420D469620461B43DAA627DC0F82C3D927F6CC
+C614B819FD1C60E6DA8CF2ECD348DDE3699FC7D4386DC1EFB658E733993E90D5
+A39787EED0C73F2DB47FF81E58BD3A3C7F9E9991A6F6C2718921C1730BCBBCF6
+D3CB8F824073943E51814481AF27BDCBDABC5750E47960C3FB45E6E420EA5004
+143BF27935D06AEB16D9939750603AEE88740E10DE65574A9B98BA01DCBA76E4
+BB0EE3AAEC687C09863290D119D13B1F46A7B3BFBF375D999AEDF806EB13CF9B
+A4D0B1D30C61C96300951ABBB8FEEE2D7B8C3B1BFE3728C855901FC19B6BEF1C
+93111F531B0D8E15A6DEBE65C0946EB782ED5D9850CD995782902E2DFA35117F
+5F85AB28E54221704EBE8C24D1A37A5F5DFBA72B58C1E729DC28D3C0D7A6A04A
+047FD2F18FEC8563568E84910013726D210DB29BEC678CE0E39E2553001E8332
+2D204A72E7D5423DCB0977DE89955A03101C5A608304DAE100FE0710387E31B3
+4BA5E4BE1BCB7042EBFF9E13E967E474FBE31DC35597A6A2B3540ECE6AF39D90
+84C37DE64112685D7D153D0960692BF6945C46B7EBAF39D58461D8E4FEF64886
+972415FDA5615CEC91651B09E238383AC59698E08594C8385D97E0C22F62036A
+634636E60A0E0CAE2210988921EC23B642CD6EBCB1ED62EB0380E9B5041790A1
+443D13EA6AE7D49989FB6B0F423B27DA1A43E1058190708FCCBB294DA4B30354
+7E553343BAB90534D6C5C6E899E80F6F813417079D9EF542FC128A163B6C6AE0
+D98A3A182DB3B5B81AFC2DCBCBD3F53513D2243E506C392E9E1351D82E7937E1
+9302078128EF58455D14E64198B833B4903020603A8E46744929E9F426FA3B0E
+279EB93447B56AE40F70B2DFB4E1004CFDD1D981524CC2D5D584B20603E52D80
+2F1FA565DC5674588FA9BDE3AA2E28B604E5743A37F44E25B862EA2B096EFFA4
+998EE550F9E23CC137E5DB6245691AFDFEDDB78445A3EE021FB468C3FCBECFE1
+17E77545F93CB1DE1302B276B498B09BABC700FD804B375A188456A26CBC20C6
+4B708C82BE60324B5B57BAB5BF86F7BCA7FF88B8D7899390306AC86E762D75D1
+4919386ADC468A116F039F79435502755695E369EB439EA3E398065F007005DE
+07E96DFAA1175C5CD4851F6F45D0E45605578D55D153245691DEB2540F4B7006
+A7BCE946DF36A8AC6A7BAFACEB92289B4C5F7F4CD52939E2C62A01169AA58151
+D2DEA54D4D5A7D9ED20577033A0CAA99807F7521BA3711965157D9B33B5658E0
+C89A0DF5C3FB10BC538D808ECD28314C800D3E61AB82E7121E1C9CB273240EB9
+23A12B561ECADC24DD059443B0829B8B630BB8484230A1985D81C46903D158A6
+CCE7F0789A88CBCD76C04F0C0CCE2CC7B14C22994A5596E841F77C08E21F7E05
+2391F90CEBBE6B9CEAFAFAFBC7EF38C2F452EE3CB3979DCE17444D863E9C9F0B
+202A385EB00B4E2B8B69DDC99CFB527B0CABEEDC73A34772D619CBFEEA1FFE46
+42F6F8C137471BFF385E51520315EDE197DEDD88D2A463C817F724B6D8269FA1
+C043772275C2DA742320A997B151CB8A0904615AD5BEE21433EE9BE3444F8245
+FF7B24F06E4A1E436117DE89E33E97F7EA7DE04360EA87AD48C8720CBBB2DE8D
+C5A1C892D02DA9514191607A53D94EB3EDF76E1778CEBDBCE37D2BFA212D41FC
+490E9C3C5FC30C40EA51377B487A00F8A579BC43E7BE4F4D484D8808D22CE429
+374E100AB3D74FDAF8EC9383B38922E2BDEAB046A00C7B24FCC9317391F79A2C
+411F01E0189CB189A6CA649386E7C40ACFB8AF5B66922DC4A00BA9E7745FFD4D
+1C04B16C0FBD18F0A4A56CD77FA2A5B8D6F744077A40E21F91C9CEA537F5E487
+DF3FC8A76D3FDD80EC8862FB8F3E5B57F5BFF6A1494C4A648B253C465E681F82
+4495F2EBB315779DD08C6E3C473D35F3AB38FC2BD690BF3067C8CCD434257B44
+2A7A4BA682083E8832BAC3FC839102E0ED90AE7BF5DAA25A4807FABD13C644BA
+C0A49F68891A94F21D2682E51057F88C95318755F702858FF7262E9BC04A2D21
+1DD734FDDFA150C72B354B3642DFBF7E778CD87D7AA8D429A98AC79715F8D78B
+7D1AC6118EE27651711EC6BE317FE88964CD3763482337E6AF87124EF61682CB
+69BD9EE301ADAB3379F3644A06C5A0ACC5020C6700873B9F39E585595C19FC46
+BF71D08E1B1DE81FA2A0ACF46F9200E54733CF70B1CD14CDC356B42AC5C2ABC1
+48C07F7FE1E71E546F3B4499E05F9F2FDBCE166B2494DE793B591181FBAF5034
+5375092E314C0254479BE4929CFFA88FC1421DD6A8D74DFBCD0FEE3DA74188AC
+62B8C62DE1A44D84FA6A66F2F344487B5DDE96884172FD0C6E88695D86A42D40
+EA6A5D38EEC29B1B8763DCD464CD6CA7802770C0BDE35BE040C9723386C0E08C
+0B202EBCBEF6E4AFC682BABAD9680A3781280139BB9271EE07A31D494BD3182F
+8003E3CDF10B423A05345E5CC81B2FCC81922B20377FFA02A2D17993534E2D82
+4208279D28DD25AAFC7D43F7470A2D56B1091B190642C6EAEE832ECFD5C2074E
+0D4FB0B9186CAF597ACC7A1B50AD91589E8C0304ED3343521A3C91CDC6768C8C
+01CA2AEF5C1E3A80621B0BE8C0E60A2136D2889088A1CE1018CB471D2E433B2B
+97460B044CCBE106AEA582C82040752B9CBEF56AAA18DA2908ED6E5B7D75A3ED
+7228362079965B847CA85ED2042A1D4B1F7B1F9927F895CB3EF3285A259E725C
+6DB10306634A33A9A2B6612A60ECDC615190C118429440B9E035A3C3F3133327
+4C303420032E4A2954A3971CEC05ABD207B3B38A208BFE085394192DB2838795
+2EA29E43C78B38AAB30FE47D423D45E93E63F229DB145C0CF0B476FDEC033684
+8B2CB35EB5A1F3523A6C81CE894A271AF25DCFA5F8F0C6561A18224335709F9F
+D5DC7CA3A01FCDF23203827B910A613CB17A01596A735FAE56A7F26259345585
+574357A30DF991FEA73FB0BF788FB240AAA3236120F24B827E48108B729761C7
+3EB08B20EDE05E44AD21FBB9E4582E705BE1964CDD42B1F4F47E7CE8BE3867DE
+BD983CF9F85C7FF6398CAD01DAD46B1CD31B7437EBDC8D6867C2957A15E989FB
+21EA8C4383063BC7ABEC89316D6FB10BBCC6E41022C373E0F557075EA119EF39
+538ABDB1256F0E77F40F80B2517EF118A7AEB696320DF8FA484577AC6B0E60C3
+073C53268D6F00A7DB496082AC0DA2C49186CAD0CD148F49ED6143C12EA7F065
+3F579F5EBE86B13F4A27976143B1C1B71C280101A115E53124D38EA079255386
+BBA6FE1742488C1C8F1304890C82F307A64C0E4DBF69C6176B1102282A35F330
+526DC2F6CBF9DD95E62B0ED1A37B1D1DD58671A7AD3AAE44CDC1D5192313F108
+C5A063043CFC32DA43B6F36AD7BE2FCD79C8DC41227690D816C9D6DC1144C65E
+3E6C92A726B5C7595B29546F5955DBCAF5DC69A06AC99F34BFF3AF6D4094E8BD
+ADE88EC16DF7C8275BAEFB1BD5BEAAE8CF00E9F92C7CBA4C1D261669EFA8B153
+158187884DF02F97212C7CDD470B9632A83449E29ADE6584FA63B1FEE7430983
+54099F415A842A9E29A0E4332388EEF1A16F2CA621093B8F489F400D7C6C2CEB
+5DD2016B86E2707B8BD6F22902B4993417F6BA2C2B0E5F87B0DCADC1EA402A3E
+10958390F5A82372304F7C13F14385523C0EB35A4980158B760C0296EAD34AAA
+A51A5A9E318B4DC0A314EF141A4DC30538EF55A504DB3F616D23BD874119F4DA
+E0526DF75F97C7ECF4B0AFF95F118570626B57F90813379652CFD8E096A34870
+C71C6D428A6CC584422C9815DF460CDF7EE61213B6A9F801E19DF744C33077C7
+645F5BB44194369FD94E5630CC0C47DE84D6929F6EE7AEE5E045CA1FC97647F7
+D727C3EA8D50364210995CBF9301E4AE3DD6C9C12CDBC509EA77BB33BE7782CB
+CF3C34C91971A608BFFD926C6B092721DFC0C9C4FB531CD752F515D9640BEAD9
+26CE99C25739157616C791B357649A74F74454826EA95CBC06995A3C00E49489
+2B19496DE0EA217E5DF4B4040DD0403EF4352A88E9F113AD41F502CD840060D3
+494D746C76AD55B69B2E53E96298471C0355884DC941CE37B6E66AF6C33AB8FF
+0AEC9507FC1095E5DECF10A1CE0EDD2D88FFC740EBE9DB253CB952628F0F715C
+77C9AD0EDB9D6B019E65886071A67598310D494026B1FF5B4063945005CBAD22
+6ED901C281AD466D023DE6CBB8894CE204C442CB4FF6BA6D3117CC022B99888E
+84390C0C4926DF051D035356B4DD8AD3AB68818994AFCC88CF3B50AADC6B0753
+D79ADA743E93A5DE8FD734356F24419B91C55065EEB764A16BB76923B45F75D5
+77605867D725C17A201E46D46D8877437C29FB483D9AD6AE512EBA98BD407D7F
+02FB776A4FAAEC5B6E47E98E728A2F9C48E825BE33157760391EC1A2B2C92EB3
+2EED206006E6141A7903E2FBCD603AF6D54C6DA4F6EBE4EF18F3AFE7568B30BF
+B720BAC3F6D4B0ACFF9110435FA51C72528FDBFFE39F6C4BF4986D0A4D807BEE
+623441CD814C5F96F915B79C26CABED60DCCAAFAD9BBAF4D1FA3703A6D64E941
+347FB448C49B2BD6634F04D83435D2E33A47E74FE880E776B9BA2130E495FA2F
+AF9B3D86C009E3774D6E20238135F6D6975F7E41D527CED116D440B805500E71
+63AC622CDAE07E27ECAB014E7442FCB8670E616719C3843A3F10D46D3666E2BC
+C20A30A38E7E4BAACB4EF2B94EEBA0195199C1DD94EABA20D2C47EF4B43FE83E
+2EB2F778D999A947B21676EE462BBD0AC05165A6D62852B0809D0B5AF3222CF8
+9090FF5DF606C901A5CACC1FD377FEF5D29F0E0D966E008DD20F1807FB5A1D60
+CC2C6D1B273826887BCF3A6B3742DD91D103A3D24BE5BB03B6EE71030B2BFB35
+400A17FDB675E057BD4A6161804A149C333866C33DB5FF6534707A1AF342CE5D
+0AC79A985443436F94A599336C7F767D809F5BB094341F1FC7B45C53563DFFC1
+54E80F2DF003C5FA0D4A7BF703E30277E2393665BED0741A3563D7964C5082E2
+B2CBC6901BE79CC4F8AB0AF58C36D8F4EFA84ACD8A630B80B5565322969B10FD
+F236816F8D6E3B55A2EC1A7FA24C1950181B007352879B682B2D5A79D0DF6236
+B4730EC61E2F011DB6C4741736046B5DFCE52CCD0EF5D780796ED988B622CFDF
+E88394CB90CDCC41189A4A1183A9789575B29ED972462CEE2EC360A6DCE44B76
+297CA86EDCE5F3ED2D76FD9A0F31452CF0D0A683917E724A4E818EF84D4CD0A2
+E8FBF30FE262DC8D7AE9B4D9CF953387FBE93192AAC95D611C70A18863FC28BE
+FDBCE04A7709485B14341205FDC074641747D6F15C866592FB9C22EB4376DDB2
+77750F111D87B2309289D77609AFD622D9735FDA1A40AD92AFF8CA8D5D6D9224
+8F0DEEFACC2DB757DB2BF7ADF4ECD0C9780F7D00875A4D3C0D03E42A85D45018
+FC4E8AB5FCFCA190C454FB1F9B591DC63A73DD9049901379E175E9365FFCF2F8
+D74DADEC15C05EF0A730C776DF62422F73A9DADEE0B5F2B74CE0D046A709E5AE
+A57524BE4307E665FC80C6887D1E968D3B311D09FA2EDC1859FD96E1121CCE7E
+C1D427E74BB8C3FA808DC97898DEF88F0A5C53F2AA55118A94C1602822264D4A
+8C1D2591E94FDEC13B1D2CFB357B4D884CDC84ADC37AFE61BD24C9B9AE7BCD84
+BFB5BF9C2821F172C1535978B73E1A6BC8C8B815D96BCB189FF1B674C63A40E7
+0000A4AFFD6501044E4E11181345B48F80E51A33FDFEBB8AD94B697EB0D3B5FF
+A031FB3EFB1E6393F428F415DAC9E4ABAC95D2695F3EC2C92FF1076954D70771
+5791F147B33E9762471F54D8F32856A364D4E1E24D9D4059F3040F2E64AFB288
+34996A1385604869B0846104CB9657E60B03DAEBE140943DD66BBC9B16E78AC9
+4E73013E70301F3AA0AEEBF5BD155A670BF04DAC0F8F4A9AC1BB84D0787EE725
+4B635EA8A53B0D6293ABA1CAC30A294340BFAB6BDB50E33A0F367E21C738D1E8
+723673C7CAE3A88E36CA95AC0BCE1F15E9E7AAF6C4B4BEEDD936ECE8644F6002
+4D986CBEAA946107895DCFEA4EB93EC5B0B904ABDE6ABCFEB7A78730460887C4
+D1A07B38CF0ADB81E2FBA8E3ACD09D0C415ADE31E7E2D2BB784076D3DE5601ED
+C2811C586FDFCA10774EE630372081CB7384692780127141DDA6A10CFD08F388
+EAFC905822F09D81D4C8B584A64B9EA7B335EE9AD6D8DC412F8766CA9B465E9B
+DF13ECEFE418E2C346D3682ECEE511FF82E87B208CBB8CC37AC03625C446E93D
+80BA7EF01CE7F5B61F27ABA14A58F9E8658D0C866AFFDE5CAF71EF5ED044B6F6
+B7C21202CAF6DE905F1FCD84B390F3EA5AB1C0758B431F905D257AE2485B150B
+92E8A0AD3C5FD7E034B3F770105BD20AFE529E1601F5049708B8F685DC5FAE76
+09FE62F107E24D1CE91BFB603810A022C4DAA060BB984C29C55B9B3AA989067E
+92F3D01804D980D83AFF4C7D1C511E690120D8668DE0FA3FBF6B6A29BD479E31
+981AB11F0F162A70E4E81F2C0A8C59B5FC0C11BD9845C4B61A7E7C833F637DEC
+E07A87E003F8308B62E40A07D4D7146E9FA54DBDB9306DED92D5D481DF5BFF24
+0E6514F6DD1AB8509473A57086EFA2EACCE5F9E58FCEE8B5BB3B6D137BEF1285
+89EA832C8C1D8115766B376145A4983F6D1ED5287BBE6CF5F67B49879FBD03C6
+8156CF6878B1744371A3103E622159E5C8CF7FCB32C3862C22B3FDF11FBF30B3
+1FDD1A164E5E285332873CD35DCB039F5B485B3D9FDBB12DC7ECB67F3505DE7E
+F11FB27A7AF6490DCDFB1566D3F147FB070B8E83F3D790AD6F236D0245F6E1B0
+14535D22BC98381263369E4774E71BAB569BD45281380A48E57C76DD8EBA3C04
+17BD36F7CD0958E576050746EB8923AFFA368717E10A16B71583B1663D1D11C8
+B5FA491CD0C24997A5F7CDC953B545DB8E08CFB3BFA704E162BEE27C16E65C40
+7328604D25A5DC57F251A4C8E502D01C30B46052B3ADE3103DDDA3EFD6272914
+199CF380EE9A8387E0EB3240450931160350C0C625D44C331DBAF18374BB4C1F
+E3777647C366E61F312578079D68406CF3B1DD74071385F94174CE5B1F9ED388
+EFB0FFDDFC09DBA85DB889328DF594FA82030EA686902633C2C3E0B0FBC7FA2B
+63C22001602F5ACB3E5F47C914E9E191183287FC85873C030610E40421621344
+E11678418E89200729936095FD61825331D559CF26BBC51FDF44D769E168BD03
+220582E6B8707BD0AECFC20C978079EB95DEE61BD6AF7F00DDB906BD6EFF2D9E
+118ADF93EDF08F32A326FC78D1A89C429E17AA399B3323FD64F67777D0113B3B
+CF0CB58059354DEAF99AA6E130CFEFB41AB367E89466B61D10F571E64343DAD4
+1B1584350EC674761333FA934E02401ED59B4AFC47EFBDB86CA3133E9D3D220F
+E4543891D139786DCF65EDB9B07BBB6DEED08FAFCA473E9F040738A2F35B9B68
+26DE84555A6696A5AF76DB38FC063DE75301A1B153FA7D4F87A79911D374137A
+476BD6DCE83F1169E79064801A9C4D6A510CD426DD08B75F68285DC5479C79C7
+7F0CF5D6026F74BEDA44320DCF5F53B493D3BAB66579F41D970F383E0E36EB2D
+F75662E1D83A807E04444B08EAB6166B78A2D93D42DBB846D1D378554865AE82
+88527E5C35F0D56A16687127710E5BC16E8CA020C2174D48F18CBAC2BD68709A
+E4DF8A0DD743BE501344B963A6495F05B09D2CED114BFDA6F06CDC7D384AA404
+444FABBC12031CBACC89238D7B3C11C74554F518341CED3C236F402225695751
+F60BFB05C2F0CBA5D98FA0A9F374614B39C0F0D85A3FEF0E317D99D991FD24BE
+7E7F56EB2C7CA2DC150BD986AC5DD101B1869811463CD88D1A5CC2BB07A8281F
+61ACB5018C6A841C45BF23ABFEB65FC35A8DD2E2EC04C68DE20075EAFDF218B4
+957D9D46581239ED61492789AF9C2B483555EF0F6BD9673F5C266E56149A52A8
+A43C2DC7228FE2E715EE2C986B971AE4A3DFC984A6665FE9F353B2A208642BE7
+892471129991017921E7837CC9D02228CF06548CABCBBB9EA7DBA451E46CCC5E
+7A5C35C04D3B70BB91117414ACA4A79BC957C4E2EF672BEE6319AD271A454875
+707CEEA6E0E3E36A5C8BEB0287E485EE4FB4CC96318AD1BBD8E9A4CF9EA58C30
+6DA2D664AA5CDC129DBB71D14E1A63B17870F8ED648DF5C84284F2E6A7EFCD1A
+1CA58599DA1CD20109F115011726E9F6D1EFDB2DF2C4880728D45287A6CAE369
+960AA12900C0B1197D113D17B6F305F2D5CF3FCF8FF477132FC546E5741632C4
+729C152C526D9E3DB5B0C42B3F059A0FF732E9A7E0773330543CF9F4A9D2FFC7
+210F6FEEACC16891F45721189F574C2B1A326754D0270AAB1FCD85A111FAB619
+AAF0BDE62F9AF46D01EC81BB4049EF54938F24DD09CBECAA43FD35528E9F49CF
+6AEC8924DC2D9DAE644CCB4C06DE0364DC8A55C57D23652B7F40BC6131053DDC
+730F1732DC5901EA45B626D44C46C466BF17AD94F5A4243691C6FCEA0B356960
+C9FBDE4D491108E93DC71C5A52B9123DA0B41F8740719A935E12F9B1DF8694B5
+AE02FC7887051715C066225D84B0D71B1C8329F43AEB367537C2073DB23253BA
+8E792BC727C234FB85677760EF7CBDCD7022F3D128CB9648A6E4AD5EEACA9059
+2745DD10DEBD754EE72B4DA6598C42E34543E87EE1C15D0D44728E8C28E2845B
+6E32CE2955D9778AFC2BB91273B6582D07D5E913FBF0BC7FD7C030AA5B89781B
+26EAC2570601A13EF779FB27DBB10F62F916515AF9D432ED408E6E14D3001AA9
+1DA0D91E12DF9CEFE53897CB27077B56E0EF1B67917E94419C7F29ADADD681D1
+9C099D96B36443FC7221677504E0FC2803221A70CAF0EBC1AE1A17F08D6C582F
+E2DD49E24BCD60DEBADB6D873616C1216EB8152CC2F6E1569560B7FCAAC154A0
+34AC3141F9BB9A7935BE122FAC406909C221EFE2CBCF8E93CC08F1B65B2E196E
+01EF12208DF6D289927EFAC5B95C2E7E9F35E01897236B7FE20836597C43DB38
+1F3B0FF3F2EBBB98294FE6FB3FFEDF4DA992DEB30E8C28B0ACE497A7027FE523
+C98234DAE8A2C72FC7C69B850D76AF02DECD2BD8E66048D71D2C23C30C06D163
+EB51AC341B2BBCC9253E07D3C3B351B31ED811588B8837DDBD1715597F8548FC
+8110AE050595E0A33DFD0FBE58D05B90FC276C0D84D865A5618CE5DFA8F2F577
+C166CD032C50F8E31CB038EA1C84CBF05095DAAE1B27F8C0FF1DB46550253FAE
+60EA95F3568E85641BE56F4B45E9483C9F03936538BD4A45DB8B801B9945311B
+A87C863CE0704FA51C93DD1D16B911D567F49061956B1D2924B017F319D394ED
+014698B588B0C6D44FB4AC5EA0CD198838FAF25A28721D54A38C237413F789FD
+5E63962BEDEF058F16D82C612A8BBE1B27A6CCFDAB65463BF7102F4D52105C1B
+924A07EF5CABF18DB1681E900F2A12425987FEEB9F53BC2F0185BED93D68E8FB
+0D9DE9DF0026A4A1A63D77E74FC12BF1C09326D4876D21CFF0477F61C85B3998
+225C53C4ECA4F375087B658A2884BDE896F152565402DE83D4AD22BBB3802761
+9D5919B4035481223C74F836DB224A87C57EFB4FCDFF6A7F639C683D20446607
+2C66A91762D85D18361446F01D5002FD4E0DD3F7C9F141D3D7F12ADC1AD62B86
+519BF3A3DDC24A714DA3909A6CBE635BE1EEA57FFDBF886353FB875DD538A4FB
+CADBF40F28832F56C3361CC02946295C96D15DC39D1D2346E9F734AEC76CA01C
+1D1C82E4263D96BF24CC9C91BC154F6657E4CDB6C9AFA0D91E6E3D3F7B85B0AE
+7924B40E7F5079080263C6FEA4566D6EA054191867D704E381B40F1FA35F26FB
+590E8D4BE1A42325AB1FA7A97D6FBC0F2FDFAA663697D275BF3950809587A32C
+58B2E7812DAC1A741E09B57F753F16A021276E33C8E88A4862102C8E94F33208
+A5697FEE41E0B07870AADD737EF08B85DC6BE6106C5BE8304AD2F06570A9D659
+5FD541C7C9FEF2B40277820280AB6B12342E3F6E0A68CD00D837639A86D343BE
+D00DE72E0E7CF20DBFF8211FE171CF60F470EE199D995E1E591353BEB6303D01
+F69C1687328C6D4B150C0F3925EEC6B09B7B1F7BC5171E09926D487C01A72727
+F5832CA67C718D902ED6A8582DD31C1E05B98BF735DDB34942EF9DBCE6593D1D
+008875C82950531D335A835582332A9FF3E818F252C366CE47203C06AAA63EC9
+6D12BA546BF70C1C55A19383108B4D5E5DAACD3459AB58AC250C6ED8BB4F7A81
+26BF4438E2A7E09DAF1EAC409EF4BAB652704DDFA4BD7922CA7D84335D2AD692
+0B5768D7B86958562A6AAE043227D91ECED5604EF88B631FA5214A220A24A434
+382F28625802E5A7B771A240BF3CFE3E5C26EF07D25579E9B0DF051CC455ED0C
+5BFAF7DACA76961F6E845BFEA89C6237CC4D2167B23DBFA12841A05D3845ADB1
+F22DB6FBEC1957F4A6B2764058D01875770FBA21C399A4B7124F8D3CD93B85D8
+EC4BF36591B064FCDAF5704729F48C454B185D5F63D08EBA439189730D501F4C
+2558CFE90AFFCEBB9CA6906644D91B89DBFB2B126DEC3D11C69C43701A695232
+889E0F5B6CFD28563500E58D36A9639758063321FF48CE828031DA7786B5FCF4
+11A438CD23F6DE1896996646BF5C297113812DA173AFF1CB9A35A270836F1D28
+E4814DB3E06149A27FDB80B420376429E0CF1E4FD3DC4DDFF18D640E08C7F356
+2B24BEA6C1D100A37DDBAFE1ADB9D95EA40B1A61FB4B22EFE5041654CCC4F10A
+CB1BF0591DDB18D2D8DD0799E3CC6D87FCCB79B98D0A0F43F683180D374F165E
+600B93451E870C4A778C695FE20235EB3E5D66CCC68B191558C047B78863D34F
+891C5BFD08DD9BDDC4438315D16D64FB74568DFD98984702BF41E3AA2DF51B33
+266F6AC71143050432767B6ABF14CD9A91EB26EEBF9922A87086EA7ECB89DE2B
+6742A8B41236F71DA971607A12FE7CD8366342A0BE30B442775103B7790A7D7F
+9EE53E50FFAAF7BD8557C83B3A8B0D6B5874255FA0976237641DEFF9FB78B434
+DB904AE6853C5040AECFBFE470A0442E087CB66C561218AC2468B8D7CECA960D
+76E869F22780CE8D82C83EE0DB6AA2E40B146375A23466864F97C93417B4D790
+6F2AA9E51E0D912A99AFDF9166A24FBB4E931D89A2A1B6AAF169B9987214417A
+D2618D33D3B5EC742E9F98DB9CCE354506F5D67FBA3B582629CE9FEEE5788F68
+C5D221AE2D2DBA4F2E1C572842E7E61D8CB5F4DF9D110BE0F27830248476AB67
+C6D43F452F24D161B5E1C6589A1A10E6FE0B74ED8050A26ED31E7A4756448817
+37AE9D1DBFE7B7B6BF6EFE016C2055BD06352DD102EE3EB6F83626961C0E4D4F
+F671C73D12C6ECFCB12F4DE604304411F026591C153095A7CFBE947292D6AFD8
+1EC4010EF23BCDA9906F0895D0E0B156C26D955C2CF384A4D1A6CD5D194EAA50
+824BE4E6C8140F17D6C43FF141DB67531A155B8DA764B449029C69CA76566B61
+A9D2CED8301CA6EEC5925819A75F123655105BDE0C84385AC42B7DBCF71929FB
+CF6B189C30356B1BAABD615B4874629B1DA03D01E156707B591F775249C3321B
+500420EB3002F174FCD2F245D620F81FE4D06D8D0FF3BF8BB16B17B4EE23FFAC
+A00895FFA7356EA414011F70474244A72CF960F3BF3EFC15639C72A69ECAAFD0
+D0801C2C11DD0D1491FDEAE7F8699A8A931EC2E0CAD8AEF58FAB5513B79DA3F2
+7DE456612129EE02041679FBE73F1BB623EFA954E322C5092CF233D166F1FDC9
+F4A6D9E622FCB26CBABE23C6E77E20E9FAE362D0526369C7C22825108BD10FDD
+7D0B86D77DA54FC097A9997D576F1C6578B29A6FBBE5479DBBAA636DF1A85152
+738B07D0EE0827529AAFDD981269225A5F92AD7D43ACCFDA3884554269EADB23
+E26B7E0B06E01630472C08E1769F7B83A173B9270B4F29EF8B0F9E2CFD5D181A
+9E05F0CC0DF783AAA44C8384A70631CD0542127A722FEE62A2DF692066CE5BA0
+E3EE4472B48A20CC51905296E24E0B33EB3BBD384F366140D8346694CDD1FA73
+3EC45394C65F591C8DBD89699AA6297444D5B9DA1F59E4DA9E7A77491043A746
+3C90D2A496AD5C3D508FF8448A78D1CF1306B2D7D1A6E415571ACBCCBB00C0EE
+FF862616694320F60A214EC3AB2A8E24A2A19F376196E474F8354CA01AE039BD
+1629F22A61E8D61A08BC67A0900825C0AE7FE8E9F3B691479A57BBB971BE02E2
+4A3353ECBA1BD35ABDC693D8D3C6DECE7FEECA3F0526A49864469554F47E545A
+EF130AF7804D7D0A2D45CAD160492CF20929C408B220E5CDF32F36AF3188F0BD
+0439D6EABDBF7DE3837B71144A029E8F209BA72B24212CAD346E65859D7BB5F3
+A27387E6CC999F8BA5DAC763C0450B3042CD7D384E1DC2710669D8248BCADE73
+B3DEFC26A2CCE29E49EAA07A61CAEBFCE551E22B41C71CA47BEF80D7A47B032E
+8B009D3B3926ED68251544C69DF21DC18EB82E2F3EE3A28736C2406946F0E334
+A5324DE56DF80826780E224EDBB52031972BFA0D12B491CFDC74DC1E461FE64F
+4D1FC231F194C5242B4F1B4E63E286E78073AEB8731620CCC8AEA7942B783F7E
+F862CEADDA2D9B54330EB98084D7811A703DD6E26B259BAAB441A606C9112283
+D65A7D26C0CC4CC4061309A0CAE0D98CFF0D50C03C2ADC8815B985C4A8F7D62F
+431510BE5E8C1D8FBB9852C5DA967015E343DEE1CB50CAE135EDD6CD05429832
+C2A65140FA1E08B302501D5290E4A7C46A7F9E8655FD6CD673F1B8AB0B4523D1
+C759FF6CF964A5E56C01DDE17355ABA94B372DDF2F51E748C8773E588E885544
+03CCEFD8A53306D7CCD20CD8345327FAD8E6830FC677B0A372F989DDE179E36F
+64CD65B149A06E66B08D320EEC7E138C316C632C07C6520B777DDB7965600624
+2B3DC6831CA3A2A7B0AE0DF56C3267469DFA8A998884FF9F3C599BE38FA40150
+76C9F914BF4782C41CB71D2B61B3E6447DB892EFDE33D9C86542E47366F3CB32
+B033AE669E2FDC389494B39AA289547BD5FAAF0E7F86F7286D7B1D0D1379239D
+3BF2272AED9EFA086DBF8113F86EB274E8AC7BE019E0736B3F675D42419FFAA3
+6969FBD65FDC7F90009B403F3CE8E8A0672B84BAD8BD574EC2FB837C59F7C8D1
+CA702CBD85997B3692E4D5B7B9A92554C841E4CFFB89511786E3D82957F38A6B
+F18757A9159BB6C7B820D5D7FBDBB684F24060ECEC9642B1F58B6DB47C7BDF0C
+316B4E6E03A15C5AC34BBE39A0409D54FFBCFDDE38E658B684C483ED25B3A1B1
+C36CF39FBC3F2C16C60B4191EEB2DF9BD37018669B9023B3417E10079636EFCF
+3DBC58AFDA938ACB2DACB2F4F4FB0174CDE21E7C18F3249B7F9552BFA433DCE0
+099756877B31DD88639652536F26D7D94099FA9B4FCB0560046A9262931C65E5
+92053C4E35FD87DABA9D7005879C22B5101AEA62014F3A057721FBB8E7467BDB
+69AD88238DDA8F2E859111B2B418D3AAA022339D086D59DE48CD08454C912467
+9DEF6E0ED9F76F05D81B95FF5829A89B24E9E43B0A8496E0B13B22A4FD7814D3
+116A6E96E374AEA23B2922D9F6443E3ED1793D1BFBDF3BB02B7D9E6AE5591177
+B30ED8E13DF465EDF59A9CF626D0B9CD5903A479ADB4CC991DFC4A8738F0E254
+3C1AC97C1B55E09BE394DA49C18C6208984CB3180E7E646785B8FBBFA0E66DF4
+90A46D55E23ED4A4B69AD7426E372A827A93C15210CEBC9F14FA9E85CB755497
+7C6352FE2C7F2091317C2DC7858459D71E6077E904140D173334EC54BD371E8C
+D22F826F6A47B6D415539A584A5E51A8A2703917536CC78714FF645C2BA45E71
+8E8A115480553288CE75D20B8983CD80C1A379D84B287DF717091C6238AFB40E
+5CC1E47D415F93D06C815547E9768364793C2A56DD7CF5D15B43D7E45D5BC173
+BDE51EC81AC562ACD34DA9E289CA5ED20B98239493621E9502725DB3CF7BCFEF
+7ACDB71CD733D372F72CE5D6E4011ACAD693A5FA3781E703F8C2AA765624DF58
+CF80D893BD60E9122EF34807C043AACA79992D65AF26E4C77BE0E7FA8A5EE5B2
+3E358D2436383E8AE643AFA6300015E5024900AA4F9F01F361CDA348E46118A2
+65B8D83CA0C2247890776B3EE558FB274B977B7E5B90C51253E6A7F21E4B50BE
+A642F7770F1EADC62A30AFBBA6E382368441E82FDDC68027158160A8118CD293
+61BD76CE8D901585C813C5945F516D7C149AEC0B227194677B9188476FD2FC56
+93941BE31CB4C8027EE899BCF6849C3A1F6B3AC0437B2D364E8B9A16DDDDF9F9
+5C71755A54ABCEA61B29590CB360C0D80354347970AA2BB275DB7EC90EDA4AEE
+5F8B2B8AD1D227B68F6D054F026C0F89EB87592B4B49C929F99048925504E8C7
+D4C8DD54555985980D889845772A7FE996D13745A4D103B7AED6CFFD27DA2177
+B4BB2D7472B9B53594FBA590BF3720F8A0EDA58B204299C3BCAD66FBEFB8A6EF
+196549B99E47E871B01F2D8D33B0CD37BE8B1F106A30A6526BE345DF1E974E11
+16B0D1DCFC04E0BA9C31E90BC421CAA86873D8DF11DD8DAA1B6FC3634AA50496
+96527307B8CE9BD87F6F42918EB681DFA7C65DF440C8B8543B944CABC451C2B5
+D7BB3ED820D17B10751386221C95ADE22FF19670560C96D9928E424F8E420342
+69CED15DD15ABC2F910042D24519A633A13955A321BB3ADF099E278C39DF4BFB
+BFD73DEBCA840F4D28E6A615083977339C65CC95F898E8A9A5376BB5B2F5305A
+7C39ED1622B99FEAF09929FFADEB422671FC5766A9767A009C16446F0D054434
+FC7E7EC0986CAC11D10BACDE55D9D18894EE8C556F84FA22E8F8C3E8DF43C34A
+DC8D832AF681834BBD85F7A60C06BDE31F0A3F8576545193021AA6C7D896E918
+8FB9D9F505DA027E56317099B472456D4C2981F516207F05A6BFEA874F6DCE5F
+9AD138099D4E9CB5C105906BF85C5285D3BF00F25D867A55A66980FEA1F7FFF7
+A17D60380FA0841BCB941CD8FCE1BE83712126CCF82494650EE43C39C186A837
+BE218B46D14F23E515A211844CAB9C922CD59A41C78C8FEEE4D050FA2F7F0AB7
+C0A4890E5704291696D287A1FA5F7EA5ED68D01131D4F0C08FF139DEA5123D12
+D41A071C53A360F23C4B1E1652D8CD35941CAE2FEAD5CE627223606359D267DC
+6B10B546F72DD6E079B1477B93F035D1679D1EDD8AFC9F1D9046EBF493292875
+8493E2E218192EDC2A13E4C2F5D13D555517D1F81D9F7AEF32B35DFF0D5A319A
+60703183672A4729B02632BB2B90E379B8F0D9D2080A41ADFB1BAE8CBFF76715
+4176A1127AD13E2C23B003D712ABD931849741FAB088116C21845840A06B0A41
+78CFC45EEBA410C02B6E351D21A47912B4C7A4DD8BA40CED8F87696F9842F65A
+A18D643BFFE161C6703768A43012D79FFD25C53534F6BC872B2F2C95E34A21F9
+6D11067A71741870DBDB38B9F28AB43280DC533C98861A2E76DABD59717C7323
+56B1DB3B7EEB8C5C7B7D26BE8459DF534BD9ABC739FB107E673F5F7620DC557A
+55F8F7FE488F509D27888105E7B2472F2C6B05826A8514D71D049F4C022D7280
+9147
+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 11 /ff put
+dup 12 /fi put
+dup 13 /fl put
+dup 14 /ffi put
+dup 34 /quotedblright put
+dup 37 /percent put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 63 /question put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+dup 126 /tilde put
+dup 127 /dieresis 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
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
+0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
+B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
+AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
+97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
+FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
+20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
+0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
+F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
+3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
+A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
+5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A
+45A24ADAEC63F61C9FD18376D39E0FDDE3FB4FBCDD6A7B66068A99D31CF54CD7
+DF2262DA91CCC72889CAA62B1D6F2155CC8E940A2C35D8CD3EC75326188E2D30
+1090F31AB50F30AC77D2C445BAF7323389406C44641B3A72C26BCDA442504D03
+6C22A3BA1A69E5F87EA400501A3B3231E46F96AC3A6C0E4A4F6F21E0B2BEEF53
+E016F34D7003351FD12436520926C632218410359AF9FF167750D3CE0DAC3B91
+B310C457402E05C316F400246C8C38B98CC8030F71104BC4FA0505B5EFA4F5C5
+9E4FA27C3E790D698690336254D7E34451E692AE23BF5FFBACBDF33E25359BD2
+B0E7A0686602568BC87422F32486CB50776C7EAAE7F1BF78B228CA3254510653
+3D6368A4985C5FF5A48AEF16E1AB71D7CE2C6649F2CF4B2879D4FA042239B504
+F988D2FBE87C3BC784E55B8EE36F1BB5EF14FD5836CA448E139EF8FE221E827D
+0608A6B90E08CBF44A30669AF4E20CD5C0C8051E5F86062204AF362DA690B74C
+B952C9F4799FB2535E47AC019175950A1F3A0D0937016148222B545B1E00A91B
+39D2121462F51F736802C523BCFBA894EC11C3353F9BCDF0892C00EB583A4D62
+247118996064991B816F9F490FA73861FA614FEC7FC23A5D45310527B6559781
+F1C805F0EC931D0C60E70FD5AC55F22E6379D369303F63A0E7069237118DA0A6
+5BB55FC6EA1797BC51C1D053401ACD4E9B5E724F4AEB149C38DB0E2BFEE811A9
+A94A7405422CDC911CDD97EC4976E27F766A9E3F84387C04C6367509157E4D91
+09A1F6DDB59AB9096FC43A6F9773ED9CE3DA6B56D10AEF99FD277F8666E72028
+807AEC6C26E5A142496CD41A80EC051E875DF9F547BEF060B969B197AF97608B
+F7A3740B3153621A680DAEAB0454706C65581255CA9B40078FA6D352737F0165
+D834359ABCFDF5C212F8AE9FD50BEE9683E7D5969D183C058E8BDA78F61B61AC
+98746B3A1750093A40C17EBD4AEF36BB2DFA1C9AC2A12834DE4623CCC76BF5A7
+92B2B2E368D1DF3471D83495B19154836569D2A30F9CB05C0EC499EA5D3184CD
+BAE8D2A2CF80C6359275B3894B4DAD7F92501BA9A6BD215256CF9F35C2BDD40A
+D1D949000633FF0B5FC7674BBED71294AD28FF25710E968E85C3FE71046BF0C1
+71EF48F8024C28959FBE6E896BD1AFE579764616672C724959FD66C8398ABB5D
+6C02C5619866453708E3FDCAC2754E9C333C1123A5F746DC5B2CA9D430263645
+A88C743EBEF8C82DA0236FB73D3DCDFF874A1A5928406838A81E40F34816EBEA
+0D7A89406A6F492E5E5E6C8C4D85A2B9A83B6A4304B05AB541041AE014C845B4
+283CE3F75DA22CB7CD78C67A1F067C79B209BDBA6705D80FBF08CD0FEB9D3293
+D9955BF6730BD59495A1F81B708292B509537089D8AC34A06DAE5E8BBB9B0A0D
+F09BA6723DEA964F06C0E1A6541656470E251F5AFC6677043DE7C6D85B60D3EB
+B8A4415DBFDE3F29D5FAA0B5CE4BE9559595265FA8BC24A172FBAF9B1AD0A4E1
+1CADABC2B71A43098146DBFDF7E126069259EB490CAAB07D5C9CE4E328BBC737
+C2C08C8A4F2BF52D59F21AFD0B4FA9A792A7D76220184978816E62521A73F74D
+6DEB6CCD2CDC4B80521A44C4DB90D920F62DAC930649478C801062F0CC80F00A
+FCA5C4E5E1C39C1C51FF9EEB5D10147C74F375BE92F631A568B165A6C5603AF7
+33D576FA288FFDB1073EDFB3E27AE7D309F1B1EF88E964886ED0F143599C8B3D
+E5500448B5BB38B8A254BA78CF3D77ECE033C1FFD0C337C87685957912009099
+D38700245D96031A32ADE28F1A53280FD5DE710AB9043C1F763D8116460773CC
+06FCA725965B8474AF513DF5923EDBB9486DCB064BF850BA236D85CD8290520D
+6FF7FAA8CE8706F0B91FED1B1C9EC8582DE0B21E2A6CE906DE939A79366A2C41
+9159F93BF964E2512EC9BA14CF3F57FB680C0B422E46D5B7C4378F1FBBF02A98
+D2DAA8300B125426331D2E189FD24470EB73C3A07ACE87A656D7C18B2E8B85C1
+D82969432DF447EFB88EEAEBF52B60A279BCDB475B5B440A2A52AA65AA7BE7A6
+94E1305EEEC50268FE110F279B047A1BEC84036C49CF6900C0092D953338B798
+617F951CF53A99FC410EDA3AF64D65051E416413CA95682171AA43E2A8F8E7D6
+4CB5FF04BB133F84A046392A3015EAB735988A97DDBF77556989FD5674D6CC44
+3121BCA7E198CAD5892EB5CBCD8FA6BF1586159FF395C682E8494113276B9648
+C20D806C0296517112BA493BC8F32B1CA7CB4B1A46150DECD06A55119F8BACE3
+8525CB3100123716000A7AA97F79C36350E0FF1BCF2376C86E2167C05424FE8A
+41AF4F14899004ED5DBF76D34DE0E4D53C78E95CCF9C66CC3D46DD2CD5EFE763
+6C18D2AFA1ADC3646289B014603046597231202DCF1BD531B0DC20CAEF872D68
+D2AB4D619652966BD32FC7ED588144BABC4054475BE8186BD53EFAC7EB48D9FB
+E54CE39E436D444D11FA1C06A4F78DD68E05A5BE7630928305341A7D802FB62A
+6F882CE91BDC9DDA06E4CA964C15A7453904C7F46C4F9AE5CE46077CF70CBC16
+DB70EAE7364CBC2BE2A8F20F9168E9ED6BC375EAFE57D4B2EAE0258F900B64A4
+AC7AE008F3BE9B0AF586D67E031F4EBAA507E398D15009D9BD475EE08B9B6B3C
+3C716FFE2C10D6B6438062211D63690F98DC5E697D94C4A427398D6B189F355C
+E76D5FD762FB4DD809D7167EA5CCCB4A962F5D728C81F4FB0363CCE38AEEC896
+9B47508130431B97C2F7ADE5E8D30E89DFF6F1F597BB527FF79D8C6E04A1E3B2
+34D7F1888369A219A6C37E0441267004968A469BAF6285C32932147F9A092F7B
+24DCFB461A6212F339B7E4C3742743DAF408C2619D81B2837E2894EA75B063A8
+D42AFDB5201B0315951568651B48E274A55F8B83CBAC42AB30F4D8CD63ADA0EA
+0FF418822BD1AB5647DA0B359EBF4707DCC1ACDB8F689784E31841A1806B824D
+175DE46F8685AE05BA51C465538DC097CE7DCE0E1DA7A7302E53F882D7A42C9C
+1904CE1EF11682FDA0561E012E764B87604D0A9D5A21CE98EFC3C1CEF1A6D20E
+2D6E1780EBFA02C46E35A54FEF495476D0BB05F71C238A303131867A65BF97F3
+A9039D8B87AC7AEE2401CBF576C2C14801B837B9D4731A35B44D0C2C1C51BAA8
+7C9001EB1F35DAEBD3623907C4B2688EEA1A57B78B6A969C83DE3E19B474AE78
+5F160966D9E2F97C1E5368D74AE45D7733BAB3148709102256322B9909C6DE93
+56AAC542D7CEF2A187D6AD3D10A9E46941E1B519E70F27D1F4B01CE09FBB229B
+142A0EC3DB9776FFEDD0E62DEDA5F49C6B3CB5FF7D53BCA15D25E8553244E7D4
+7EF935C937743EA8E4FE43F03DFE121529E15DAB3F3A391E91F4248DEB6BADB8
+34EE88E09554B708C3A01272D93A1AAFD7EF6C0BE93EAF7306D9ECF0E821390D
+F6780DA87777769959019950251532FFC28C31DB5030DAC662105812EA265DAF
+07CB1EE69949364FFEA0A2B587322DC484EDB8DA73B15AC421CD7F095C211AC2
+CF5E52BC708772C86E78A386FC8537CA7ED4CB200EE713CC875C71A3D66152FE
+63941705455D4D62A5693C95F3D657FD712CAF2D6F26190F9B4D38A7B69F9F98
+7EFE70BCC1353416025116BC14BD5C899484AAA1F8D5E7EDF83C5329DAD4EC0E
+40A50FD17BD4A2B45FE3F1EB572FB922F593F3B94DCDA66FD4E6325D60953672
+645CEB064147543EC1E99E579F2CC80518152860A91DBC45099545795A4EEB69
+3C7E11019FA069BE07E588CE02A31BF9A4DD79A6573669D0B29CA37B017DA0F5
+4487C47EB601063A0164F4ED229CE54F6FBB7FBD773D77CAA22EB1A748972FC2
+F1D01E91EECA8F43C4250225FE6824D04B5AC7AB5AF31BF1F849105CA6A317C4
+7E0D40C499A2021241BECF5846B4EE3CDE0970976512B86F841E60FF3F399400
+C65455EF897869D9248EDDEFF108DB330A60FD95F7CFE12CDBFBCA84DA78082C
+937600D422A79EB6228A35FC67A988FFE4C595335ECC658B522BE37407ADFB9E
+9D6265CADE77C0D382E68E5BD82EA7EBC0FA6AFEF301FEA3824638CC81C6419B
+C525F1C8EBE280E9961BA938CD131D6F06C98C4216F615A0A20A4390977FB46D
+16A447376D2E02D67D56C5681B3A2B9D82AC00DCF18DA4E944A2EFAABC523047
+107634DB0A3FC81AD03135711607936A11A1F49CC6625E8A65CD3E5BE0672179
+C6A09D97018BF1BB19C3CC168FF6DDFE59D76BBFA7430C39AB04172BB6E7A978
+54999DA0521ADD5360EF7D61B4ABD725AF7C23977CB443D4BDE4707576D2D99D
+A8B548B083958C6E864102B04121BA37DCEAEF1CEB96E8B26103725669EFC077
+92758777884F3B31BF01E7436530A16E3AB5B278DF1896AD3BD1EDCDA6093F63
+DE633CFABAB1F8EDCE3642BED79866E4BE77111B5D46A6012751A3C2D1CE3CF1
+B4EBCC3B4E0FE417503BB5B96792DBAD130C0884F0B2AA8438517BAF0D776AB6
+AB3C3AC95D5D2293CAA599628FDB7B2778F5653F1F42C1FC6AA05F4745DACCE3
+B5010F652B666349F101F2533B2D007B75C036D82BD0DDDFD2CF0E17E15EBEC2
+8A4F752CBA147888A0644744BC3FC63F77613E2959280AC554682A089504E74F
+EF0F7CAFB68269516AAF56A8D67862312C865BBBEC1DD370AA5860CE7BB3CF00
+1C87D2920D9B3DE665CA2ED3AA8E6F71B41D6242038B00F90367E1EFAD0C6542
+E1E2FFDA15DD74A070C4707A52DD1010BAFE639A105B3BE8FAA713360C40553A
+F18C88C21256847FDABE40A55B3DC9BD3D4571C5BB374D7A66D628B29F4C8A20
+72ACEF75755696676631C84BB83E131B944ADEA3E8174B6C7AB562662B2AFF5C
+39B40B83C22FE7268AC886D61F928FED67BA9D3FB580A297DF6A79F98B44C932
+A482491F7B087DAD03DE016181012B2F2D283D6DA1305DC9CC74A2D8908742FE
+58D138C5DEFB2563C387AC2DBBC9A3936E39A82960CA990E20ADA2FE66F61013
+F8419506BAD0EEC6B3EC2A5C758F6C3A8321C89DB6F088CE538A78C0A6BAF7CF
+CA85B5B33844F8497B7C797BCCE8AB240C3757C38020D0C2DE6DFB276DBA1575
+C3A689485AD882CEDF9547E03EAED7C64852BAFE5F27B092E0328CBE555F281D
+9FFBF69511D11B0C5CEAC3CF5008301DA12F3043BC743A6C3451F9AC07B2E4AC
+DBAEA8DE80DA2638FD5AD24191500EC34EAD8E7ED22EEDBCFD3F8A2462169BA1
+832FE9FA739A4B2DC29EAB11AC273BEC356370E8C21855BC7A29E2EA3F3E4C34
+1E19190C7746D2AA0C867F465A448D9E6B7CD1556BC303F9694DFA8C27FAD567
+68DAE905EFFF437935C09F4458EBB012E1F8A27769A5E6E7E9FB19B8E3BB51B7
+FC52A92DD505D9EB807D5E58F3D0F330B26A37F6661A641C1210BE89946630C4
+8DD6DD4664F506D282395CCC8985795A80C90A634BEEF91328662A66F01B2574
+2C63DF79B32A2D2DEE61207B6AD34693D88516A4CA3D6410781E4277B2DD6A7D
+F91D34BED5DEC0EF40CAA20EADA814E6849F253C573C1978B206D74E5487C481
+A62ED50BC745DAFA7FED99B1B504DA6F887E4D273A8AF123B34FFEE139B7EF9D
+3F487591B392C296B582AC191BA1AD825934D1744A34AE7CD1315952C496A7BD
+D51396ADB04C7200FA731FC0AD96D6F7C57ED30D3AE1138174A2C84A7E532BB6
+41B4A867F929E5438D27912E659E5F86F90D7147E79BDDBF30C97793530CC4FF
+54D7E97FFEE71DD342EB55642359D7276E308266CCC69DEB00D0D51B70EF3616
+C9D6F8DC3101691791344906CF05A89C03C182CB5C5CE7D32DB795D91411CFA8
+22A37C55A9945C6407087E88EFC67781643253F19E3997933462ED38E83ECA3C
+E64A3E9A652D38307E302AC61CDEC7E32D31591EB58E1745F2331363B0EF35A6
+4EAB8D009CD2F5D9AD20D296755CB877E88C7B4A657EC5B367EEBD075F6DBA8C
+EEE0669A2C4EA1B6460A7A81C7D6E64F686418E9E0861E05B756602C2391A86E
+C4F86B189FE52E15E288F88003387A6360EDF559236959303477D60C1D9717DE
+A765382BF2FD88EE4198B7F7E8EDFAC5BAC981CAE9B66C08B3C9C7DFF18B2993
+714AAFD1A26FB3225FDC024124105CADDF9F8B9049780BEFE190C5A62CF777C7
+C623D75A51750C7A8474A0775D1076F822104B7AA0F63210406931D8D220D607
+E90C5EC1E4F14B6916DB05225D510D31F2EC92552113AABADC29E47FBAD79155
+39D0C8215B6D949C7D1192F0F111286687BA15307F78B72F932541B1A3B3EAE1
+2683F549B99C2D3DFC5894C3DC9A7DFDAD253ABD0F970B595AD8F2F8EF1F9EB9
+7F3A6C5DDBC94E05C03DF9051282C6C2717070FD8B0B801D30B146BDCFB73F31
+A4DEEB2F83F19228F1BB91CD2233F17EB20D6758203FF50083FE88AD8F8DC580
+2B3C25A4A12B1D2BF50E0863D13214165C8A1B2C1F30A0CD94786F4F05C2BF79
+12A4219938CAE556E2895324DF76321316F00303D8A99C06269ACA4B020D75EE
+F12EC96AE7A1E6AA61E41E8290FC3B64150F5D3FD35B345882C08A3FEAEAE558
+5F1BD120C7F591C19EE2ED934B1F960B5BCBC9B2D8BF7477D37BB2AA948FF42D
+6E50BC5D2DD02956D34CDC099DCEA71230016A21850225D331F0B199FD747FE0
+D482EDF732E997C968AC2261827DBB620A856A3B5DDB4F4B324828281DE2636D
+E5796BAE0E33CAA5598E4DF2D044FB6D373B640EB6FBBF78D8DFD7BA5F690792
+D5DFD43D1E6F99E6BDF0BBB217D6AC239E6BCDB0CB03A3E0801FC822B3A79194
+E92227AC1C9730090EF8ECBD839A3CA20C5120CE2783D4C8314008E959ABCAA2
+E10D9D736D51AC80D5CB2AAE30F4692AC0E033219FC9293B21BC7496BEBA5E84
+2877AF1604F59666669A080C555F2E1F131BA17F7AE6F53F0B1FB5B4E145DC39
+941FB434461CD855391862C358E53A29C6F8086E7702BE1245AD83739536D68F
+3778164C3CFC670226C8F7FA8A0C1578D924B2FE54548C462C94B97B7CDA0529
+103EEBBD42F2A8E379E20123321AE14ADD391DE78E428A1CA0EDC2FFF6833E22
+64839511DD6554AAC6C28C16927A25ADA147ECBB3DBEBD7E319EB86C4B65E665
+B59E209C5A2DA3F6326A6CE616D9002B968A3FC2508FD738B05D9EFD7BA239A2
+F0933ED758DF4CA5D69FC074CB96F224C8439F44CC56769F56C0A7641E81AA48
+D79DA23F07E032218D8D2BDBDCBA55266A96FC0725233E3FB54EC8956504EC63
+982DB4168531C126E9763B3399E4F100B75CF5B82E46BA306849409B1AFDEE47
+D2E7F932B36507ADF224AF815FB98E7BE6B6045836FDA21EF4A565715F59246A
+384694C47FDA87A2F77EF04D364BFE41DC57CF091DEC37FD11418379E8245322
+30B4B9B6AEF0A68773AC5A7B3029CB7C60987B463B98897B02CFD790EF701C33
+3EAA26A7EB15E49B07D6DEB8882779554410382879F7E0CEF990547C8476AA8C
+7A300C966E7195B5A19F68CFFF7D0AB7E576513746E42484A1169781DE99379F
+7C522EB4BC3D7B71428D8E6B20224A559A4DB40C4023840836F78FFDAFEAA69E
+D984D5DCDC72C87A365DAB2AD414EC12E28FA7982F9E0A810FC40BE23BFAD820
+3EF4DA158525E1D5036CE782BA6CCEACD6A370DB95C613B0EEE244B497159983
+3CA3F6D777F1350347418469E42B8D6FD9ADE42FB67ADB75A5C51B0AA818FB61
+08B24262DAB4A4C6165879B4F9EFB94A8741ABB1F5530FD1B7564713ED413293
+D5AEFE41012E03E0B742ACF70049DE8E1C5C90C9661A8CE53B13BF904E9B4EE0
+B5270249A2DAA0C2A4EDDD68BBA38B83DE1515DA353CB2BC4509DA70E6B3B0C1
+21C3AF9AB1CC0DBB6EBE3760003BB8166B24BCC2A2F177888EB8B9D24D35BF93
+C924A81B4E08314C3108E3AB24A1D0FF6855510A5622DD113763E94B38438494
+92E53CED17FB43AE56B68FF67320B41F49A76233247982952C9002E0D56C979D
+3F69D91227723536868F5F7958580630EB4AD336E76517C67F7EA6A8B8306AF8
+55648AAA6CF06D66912EA791D3A655AE501C3B035056CDD606039CB98D266EA0
+5962F551624F3C846F2BE53B5543EDCF1E87AE8A02D145D15C815A04436A039E
+6EC2CB7F78E9C249BE6E18B9A7174D55BDD22D4FBFF18F4CBB8971D95B87A942
+214F70E71D69FEFBB61F36FBCDADACE5B1F8DC8DEB553E92FCA6012383F407CB
+3E2C0FE1D5ED65A36C667B01ED9060E4A8E0952D188DC14C6BB366E0D2508660
+D0550C391418B0D9F7509FB9106355984CEA4AC69270424966DA6D6DB3781E5B
+C0B8E55D5A79E8FAE3F2718043335699B46432C9D9E20B65117DF4F110FA2AF0
+B657478145E4DE7848A720012F85AB074184AF9DFCA61DBA50F3E264A972C9C0
+0771DB207642E5427C1CDC82369FB12FA3415ED67AACA997CE21BD4CE16E8248
+DCFA92869DD2000D74598E2E7FE31059816FC98E7544089B5173DC42E3AA257F
+38CA34F53DA87DB0E6CFEBE4AE376DABF7021F3E0F9C8D9922A219C45A4383F3
+C22BCA5A390D81DAC65BBB69DDEC39A03C801D49BFD6803BF9CDEA60EB45148D
+A7BBAFB6099E99FA795D52C7763D982DF0101C393E3EFF2D4DCC16D1C13A31E6
+FDEC9EB43033E23C8ED7A474F68FB0722C0EAC4522E86A5FA4F6131BB71F4D3F
+47263406BA019F2A0FE1FF440DDFD00BED55AE78EB754ADDDC3061118F0CEE9F
+8F4A8B7AAFC2DD9AEECC639A2DA845E383497646945D6DC2C0BAA12CB8496DCE
+088169062E60EDA94F8C4136943A966F9E494DB3D5BB96DA991F7D1066A4B042
+52B067DD4ECA918206091C457D6E9B0AF85B9E5C94009611E28A6F375DE02553
+B9EB612340475B9B3ACD1B7BC1F82DF39C97F807008D29498AEF6A4D3F4F77B5
+1E48DBB05BBE04A3E2525DCB29B62F070C3ECD1642558873932EC3ED03D0D8A4
+F5559692971EC736C84F9F919ECC510BD23C088A98CAB9C37676192E22D88012
+35367327D4D203EDE75BA7190DCCC39FDCE95700991D7D98244E6C12BCB686EA
+70A933800C3695CCB29FF8177A07257F9D245AFA9B3715ECD453825D3BDCE474
+5B8385AEB7C761DC1944511B7E6ED8B652B947D42AA7622991D3DB1952490500
+5DAA7261A6C87866B78237ECB54C9A5240F42BD6A1F768679733B851DE6A3A3D
+5EF0401C8CFE58CC90BDAB879B9AAA6F7A159C9CE6D4203B963B92B94A4A26B5
+A482F495D643413FFFF13EAC8B6ACACD1FD0AC7BB903FFCD944E6C1C1817D1F9
+DF1A40FD6DB5A0DE3BD499E7D8DAB4464FCC73374523272FB2042BFAB551C99A
+B3E07A2B9B07B3DF9BE669C09F20E98A7FA874BBE288806949B972427C756F0C
+9E41C0EBC6A8FE7BFCD0A9B214C02A3F11C8C0A581033160835617C03AE8AEF7
+EEA941E076308C87C1065700C2E96C90D259EA1B5EB5A8C5AC57F31004E52872
+BAC516B6B3CD9C6352D3ECC838DF6699B2F5D70953C0A49B60EAE2C9AF6F4B2F
+7855231DA516E9169E2D6E43D408D717A43A79CCC3E676AFFD7FA868E78EAA03
+CA5B9BBCD6EED4E19BD749D9387F3827D7E1268D63159769D86EA48D62B93986
+AAAB836DC53DC6235437A7D6F310F6855C59DFB6D88E406314DAFEE30DD454B8
+1DD403E919030C0EC2927F468179190D077D6E7AEEE23073E6B0FA5C6A089F78
+34E9C58292CC2CCF3A8D657830B6865E234FA6248C7681135B8B98EABCFF6779
+E904101F64AC04C1FC9E8C65597A147A8F027E5AF01E1CC077429813B63F4EE8
+97785A311258B8C70201004F33D912FFF35AD1F98A94E9AFC6DE1966145692C8
+82BC03780A1655AA83A221E2A58F60A9F5F676BD0020179F433455BD678F8125
+002BC3EC53D9400E609D1BB3B5904AB25E9F454E9E855A0D9DC540B460A1A7EF
+87280370DC188483347A91A67BB787C400F4CC5E640F2BC3E774BFE90FDB6845
+4AD47262C3B4D80EC3836137A74292B3F63D864845072C349069571D8F9A7137
+80C485BB0848C47F24D23DF2C564A46AD03CC8526C6A9F80810E2B1CE7360894
+C5545E434F3FFEDED91840B41744A2CF89669A957F7752430E502617FB09AFA7
+6AEEAADB16731E45D169D9D6F93023CB28CD77230A7B0855112ACB6ACC077C74
+3D20D339C61DDE7D61C26105AF9541C1C1CF793E86B36813978DC220100855FC
+9A1584579E6F7AD6E1CADD801491D633AB96C05ED572B14133EFC19217AEF3A8
+F52A5A67C3877BA8BDE5B477FCB5E8BB069089B436BC919B91AE39A6CFE3FD00
+8F714CF2633CFB5DF407AD50508C4E69B15C9A477F46A6A02A3A8FED333DFA46
+9B72BA7B33935770494BD4EC308D0F4C536CB34D5AD6CD293918D20A82178A50
+47065DF743DD3066ADCF39E53E0B5C78D7501D7EC80899E1D08C34A53025E257
+0D3A5C70B416258EB97DC38064793E963F65C1825BF16D3B495186091028F710
+D21747A40146A8B93B2832DBF37768244E0DE5056B12387F6D040FB232AD6311
+BB71D3C86A0ECAA7B058D076D8C853FD58F6F47F38AC8684CB3628F726EC163A
+C474A77D42ED727A450F383AC45F9924C7BE5AAAB47F8084BF7B558F68846E58
+72B7F1654DBC394FAA39F86E2191EBE660B5B7EC968FF5F824CD64FA481AF8E8
+B6DE4DB6A3ACD31584A73728D80178D4B9911E091372C323E6ACA127EEEB2FA2
+200B1AA0D6B2C20DAD692B2B52C5968ECA37C03FAE3F33DD31D66FC6EB145A03
+6C71C45E7E100C9618E234956A90D11820D35B816528874695CB0BC50BDB4B28
+FBBE2D9FF9DD877AEDB8D692BD9B39173C5AC2CF86A679E7D0AEB6B5783F56CD
+C850EEC9A1B6DE9654649D5A22D922B65C03E2568AD42E9248CFD7B46F9EEEE0
+5D48B95D51460A49226B70F6F05A8F9C371499732DD0E692F45E325DDCC1278E
+96A0994214869D90DE28319455148F1938FA0A3631C9AA66A09B79C676E9E2D1
+9D735188041154EF2460DA3AC7A8CE67853CB529495371E4B2CF3EB1551C95A4
+4F0C1FA4EF0F5F31AEBCB1CEC2FD65186D73ABB56D06233857B36CAF042E7EAE
+E7F166DF234A5BF497E1904F2EB3A55E783A87B668A24B3482E8DB64E75415E8
+B3A3AC2400D4D14B10D4771E06427D40755315AC7DE7711F2BE6B319532B47E1
+4FE038350E977ABACC53E3872DB28C0C210585882AA640C905CBE060DD70073A
+4C18C231B50CB10702543F014731AF52049A8A2D3C98CD7C79C71506E9981064
+E91C4FAC52CF80FC97CC61E1851AA59120547AD258C5EEE215AB30F290ABBBE0
+661E0662C18F5AC2921E544EBD113F62A46F95554F393BF4F5A49045C8169DD2
+251CD2A4138B61FC404D29125645B99B0BC9F59E6CBBC7617212496012CCD4E6
+74AC9E5D3509EAFEDC149A54A90B470445753321DD9E71F56B21E6B88261ADD7
+90FC0864B6737EAF63FF7D422CE274A3FEF7CC60140D442EFA56D5849796F915
+AD96A77A7FA0B5F91159EB3CBC52E58A3CB7F9400FD6766E2029AA361E1D1283
+AF8FAE4EFC099618DDB8F1D9D530FBF3CD8F138CD94B8E09D057C9B83FAE50D9
+8854BC235E2B2CB25C6B60CFECF0511A6548A3AA6F606C1AB3D22D086176315F
+361D81D56C8C117625A24F31B25E3F26730B0277568B778EF549F4FF7711FD12
+179323CD05753C5FE9A0C0073CE13CB9F60FE97954DD44E870DEDFD1FF236873
+8EC83E909ACAD6BDAF9A1D9C8B17B5621758106050389356E55501A41A28C4F8
+2BE8CF1CB12C116B41E6D86E66B20783BA2395DB4A99BA1C5A25E2024E2384C1
+19A3CE8027B21B1D2698490F6A35E9C851032A1F939405E268ED63447274E337
+72A9A44FA55EE5442AF12BE8E3C7697D7566186AC05AA0EAA2EF3636DD203C44
+271B62E2057D707B084488D857CFABF2CEE3C84F940A406A06FAEBF1B027E361
+1E1DF658BAAA4F573ED8991BDC24F04FFA5493441E80083AE1E20A9F47DB92CF
+C0686FA3664374857D33A458792F031E9887BC49C0B3A23B37872A8FD7C15A00
+B1645F94EDB37627E719D241B9BA6CDDA2B7554992FD0FE5907A1191BE64B35E
+DE8866A7F6C358E1BADBB106C2051EF0ACB7FE68AFF747108376CC168315715D
+F68B7439CACA72196BA226DE308FE01C0E863C4FE51171CF845A62AB71ECE9AE
+EB8A7E31460C9C34720CBA0060F634781E945BB112C2EA5A083048DDB397DE7C
+5056373EFDACE0A20E945478DEF0CA34D01A2EC0DD8C45DBBEB61815C76A6D76
+E1F15371051253E1E1EC9923F0AD8EEE713827B354920C87BFD7C686DBC4EA57
+D0B5639A4C5708A1C6CB8C9A4161297B397FCB8EB907B28AB7511EEAFA4B45ED
+75E800AF72DEDD932781B76F1098BD2CF940EFB341684267B9AB326DF32F7FB1
+AA64899DFB97A61E8E7E60D22C6EA56DF5CE9723BB4905F7B95AF66F8C95E36B
+7EA215A520442CFA1E65D292ECA9DFD2E448430ABDD276816EC3A440C0005DB1
+82544CB35B863B51D6A5D72F749E65E1A774BFE88B683EC67C390B30277CD79E
+A00E0EE6E7F8F5CD4ED4A44D67A9C6C80900D5685931BEE1A601FCDEA3814C2B
+6AB562E60A54A6040ECDE43E19E629D92B540A91447588ECBD449ABFF01FB5C2
+32AC5A93436EAF978229FCDD77B1645F43692EAE727AF2ACD4CBF6A6768E564E
+56FF9A6A29D03EFF3CFEFF0FE678A2D231E18A6EC515F51E2250F2CA423ABDA2
+8EAF94C054C21BA60161F905BAF248F97CD4DB56D03A9E096992404DC82F0837
+C8F978A209AAA4EA384EDC2C27DEF5F53CF0B689FDCB9FDC1901558E356AA7ED
+8A3B704A502FBF89C961C78A51D4DF7A6202593A79CC5F4C786FE328B59BB122
+76BAF46F0539F7DD029FFC86CB933DEFAA0EA5BAA0ADC7275D624E432FE5BAA1
+55D819D723FA83933F5196586E5FD8CD3BE1FFE2B9388291E7816AECB17AF508
+5A024D543D29E0CDEE34F9146120636AEC5AE205ED137882EE6890C347A9CA94
+6B640F8776BAE59027BC6F664E304125290DA3F85A96E85D899236A1C3DDA0E1
+CF275D78E95732C0C10E41E94B0A2E7562306DF482E2AD18810370D8C1204EBB
+6CBE5A1EFD3348127DDA60CDBDAE5A15C656F1CC10F5A588FBB1B2597FF5EB67
+F9C79F83FD2696230023F4BFC66913A98B10425265359908A1CFD2A5D8A1BF89
+34AC0C0AD30442484BA1968FC36C6DB4C8FE4DD6C514451881073F8CEFED97B0
+8990F6116F0AA360FEA5FB6357E598D90997DB4946EFD1C07931B0DC109B2259
+04D2E4669E1317504D6B3575357DC15EC62F36C5C975E464D55C0BBD611636E2
+9AB92555B2F7A9183E2DD6DCECAAF20EBE605BE48258D657567CD9B8FD95F31A
+DF490846ABB256AE12D612C5D816E125064CCA647DEAF4628262F52E16EEE572
+301969231082B8294545571C1AEB5BC710C5512EDC330129DFF0B2A2EF6458DF
+1A30BAF5F13DA91866E4BE2213A9C7A93AB18065F88043FB582FB7DC2BB1B939
+1266074AD6BBCF360E2A7E5DE26E00F04CB8FAE140C6C858D27DF82721A88D1F
+25D0799A68500B88AFC2DDE19247FBA4646C10AADD961E66BADF10420F989110
+D332B4498D045DEBC28FE2C550C9AD2E18D4D524F9ED52B13E2D38021572DE06
+A964A88FBDDF996EAF6079F2D4C1A30C19CCF659B14B980BA679831DD739B672
+91509C996FCED79866C5DE7B62146B9ABAF17A9C75311D2F49223D52E916DCB1
+B1FCE758D361B660A9ACA7B50DB83EC207D0CE4B401C1AA56D5283D605C4B3AC
+0B591B1DE2A55D744E18EDECD3C3A4D162B9E79416DE7B86DA58232AAC0C2E0E
+BA30130EB14A9BC8F4DFFF1DA44649F5B45F8E8108953DE375F0815D1857536C
+6781B3576FF92893D79187B72162E14253D16A2FFDAFCED9E0EBD7E2C9EA4A74
+A5B11812D68A80CD4C268A78A361C6549017A54A1E96A983A4EA3A6B64127FD0
+53E0E4FE67C88AA63605C618CBCAB93224933D6D31D731BDAF32B98828B311D9
+912CA96A86F481B149DB7033346BAD1490C62C5338FD7DD1DD11E56D05E4BEED
+00DB89E652B1C9E834429C5FA3CD37B11232F9C03629601FFC00C580BA83D32E
+C3A043D44ADED0B0118BFDD6D6F6B53340EAA1BA4264A1EF13EF24D321FBA706
+5FAD69F42EF1064A8F603B55A5B2FB902709D2B3977C9CE34FD3AF666D4696D4
+62E0A9E8CA4DF23437A14A5A711EAC9D518E81F5308A8B5689474540258F539D
+F89C0F4A2787260B594FE897DEE4CF9B826CF5E463C1DD1832D3B7F0C50B3436
+B2517D1935A9E144E3EEA10D3D05222D22AF8545E2C0EB2586C4EC885C0818AC
+0662B6FA42043752FE9A324F0B190D1143BD457BF54B5A61F49F2C73011B521C
+BCBE3524580B5903E3802867028555E5637892B5306CA9D8B96B430DBD1BD3A2
+C7B5E331921BA44BEB707ED016E864F25D61669CEF014AF36DD79BA0ACA789EA
+E764DD6CE63A5B402D0FA2241B6EF7F0A3A8EFF6665D1D2F4BE6CAA5F33B71CB
+D2A9BBC48329015D2EE24EA7C5E0DD4D70DA2273C08904889CE4E8EB51F6FA0F
+1D009BC2211D80DD57DC28177A510DEA9DD79CAD8B3F9359FA23F263436C6B40
+5B076A2D475C0616C97286C0C43C4A63D07206EAE137B60B14A522004B340099
+3589D1C70BD90B3193CC7305F0DCB7A4F96A93C4DA9DAC90834E7372872EED6D
+71744EB613252F4D3C576F7E2A7FCC7A4D331761EF96D43366F09CA9090C786B
+4EED93C9837340B35C2CA3F8E168918CF7AD206CEAE31C498904F57F26B4AB4E
+C4BEEDCBC3E58EF3F93D851AF8AB085679B28EA322A11F063607004420C84C16
+75AE90BD08A0611C400CB99C46F1614FC7F7DF6F5B9D5335B2C4354889B23F31
+2BF2A3BAC45AE90A3327AADA42F0280F3430F4E45070E4CBC82504CF907E2CD1
+3BC1EA8118F59F1B06D7CE0184AE924BC55908A9102E5E454AF9F1875ED38E84
+F1C3B9BC7FDE2038E79BEBA91E6DB5F3729C24834A890F6F538F6B67947CE9E7
+B5AB6E636E5D581D4FA00FAB64D6A6CF83AA9048D8CE710D25A18EDCDE858051
+7242753C69A549B34F64C2C5753E8C9B7BFEBDD5BFEB8493AC4F818A01B230AF
+E6290ED42E87896DDDDD19F6D63E0308EF313C8609FEAFE55E559601D7CED9DB
+4BC46459B917E9F11EB9937C69923D4CE668210EBE31A0BF32B5EF2DC65B172F
+8E74C34D16AA26C66E28227CFD9214A66F7CA03ED14B2BBEFA79B3D3CA40E4D4
+13361BB07C70640A5A3E16BA02715B251A6B99D8B4527A172C60566A4D1568F5
+23664D82E32F0F1D60D35E184828ADD21AF35D6D00F66D5C8DC628FF1AC71FD0
+66E15928CFA0FB1FD7046808B74363B58833081D49E509781EC721FDF34C0EFE
+742EB769C1345F7F99FC87D23815DC58CACF3DEB824F90761D0A8834229574D8
+D6B92FE7C5FE98945A5AF2E4B077E92FD60F52D46EAC5451131DCDF240996694
+91F9BFD293077BD4FE7FF5FAF8204FE993A1B61CD39D179C3CC33BD79BFEA1EA
+26462E24B1C19D48C18A131B6F5984402B9E738F07F18B7B1EF98680A5A30115
+0A11E6EEEF438F42BA5DAA80B7291F6EB6B4F67C898CA12009C4928F80CF464A
+B0B7AB25E7B572D2C3C67E347BF258D48E4B76760462F026D227D8540BCC283D
+FAA4057C66D9975F358AB3D56F4E2C595156A652E3032C196761BB8FE47668E5
+20105DB429BA6B6222216D903196AD5EA99696EC04D43315A4833D8250E234CE
+4839485193D124651AA9B3299507A2C83080FB918F06EEF4F3AAF23F7A40B049
+BC27706E6901FA35190DDA51F7A23239A090E1804D93F3E50861A92E09CF872F
+A7780678DAA6DACE6EB06BD418496259FA92BB49EE507266D845CE9D6FA9ADE0
+E0BB91013ADDE9BC708F89E706A90432F612ECF79533F5C68AEAE1825A15ABC9
+9FEFB9D36B809AA2FFE7338FD2223D98DAA6C6A05A834F74DDF11582F20B14AC
+B45B9191B0D7144CB29569249D89BAFE4C4D1D7714744335D53999C509BB6194
+F60012F25CBBCEE7B3EA323D5A33C0CD9AEB604E61724C367021CF562DB1D0A6
+9A5DAAD0F14BD1AB9AD676277158459DCDF9BCEEB02130D72B746A03D87284F3
+94DF680883A60798C44626B06FD5E4E8408FECA865CDECFFE6119CD404B34B2C
+8647E3836771DDB355B190C6A18149E54D9A3EF26A4BA5F1D525844512569FE7
+BEBB833DCCD7EEB0709BD422002C3585E0A69FCCB25C5B1061D5D9A806385CDD
+6323528C7EAF5FAADA87154A15E4E6074ED6465D087B807FA68778A01FDC9710
+FBCDD130BFE35D957015270BF5F2E0019F09E3A6D5C871000944BDF4679DA389
+4ABE6E3709D658FBE15BFBB9A1CCF712CBE50D3911D6EAE71A3DE8790E344F4B
+45AF2CC5A0A7CC4679B0927A80CFCC96220E6C2B4EDD6D02B0E59E4BD6F68901
+B13CD929EDA6ED172D2CB3B553884278B91953786507D591BA5E7D36F44E6AF0
+7A38CA0337743FA5C24D25833C58060C8B1DAC24614B5C4725D115115CCD801E
+EE1A9E5802ACCBFCEEB670915D03552B4BD3A590226DC4F121091CB7B91E1055
+EC10E892F8DDA7C94D4B598D10695D89EDA380D4C2F64193DBBC84AA21FC9F91
+1B00906983E8230FD5221990B48CF53EE8E47552A0125B807EFDFDC0028CB247
+86A4064096BB30FEB5B53144E5A52C7F9AE9AEECE453C4CF1901438743FCE980
+AE94F6507D0020EB8B927DD101F95923183AD289FB5B293B8E030620F60A488F
+0069161C7AF5CC8F828F8687B1F21CB2124B3DB0FE409DE9453A49CDEEE5DC32
+A617BD85D2546415FF2750A9E12318B2429D8E31EC852E551A934556686964E7
+7A5E96104E12237546FD32F31024351BB2DDC96F978A7B37745B20331B89219A
+EEDF9E90C7D440933BDA155BB92675E57CEAE1DEBC5AC93A0D2E89EB61D0FCD9
+5B0F5E1256320BCE180D64C5C0463A1D7632A4687AB7BF7D04C9B20262C11A71
+54E222FC34B1927B91C7877BEDB7FA306723168F1B67FE3378933ED4C92538E9
+74C990C62FEB5BC1B15E70778E714B946B56DEE991F5F918C8C663EEA57EFD8B
+9986B348A666577FA1D223ADC996D69CC5D3D6A0AF9E41D3CA45C985F9B71C41
+5EE86A408308750995A6CDCDE51060BBBC869F857DEF6CBAD59753F568C33D29
+C47BC1741B0ED4D92822BCF364B34E2F5F61B5F692DBCED0ECCF00218F5F0B82
+2107C80A8A4B8D40ADA170AA7D53B503BB3AC456540A3FD60EB2734398FBB65B
+D92ADC99065CB71805A5A784A4E6A676A916802B3535590B1134F39906352695
+79FB17ED6E6CC5C8EAC4C47707827B2D6CB7865B959713ADFC705C4E5756447F
+1F5CDDF288ACB13708D5EB365EDBD5EBA58C23731D024A07BBDBA0A80AEB632B
+C12CDB4CF1F739D2CE6CF88896B55A4A6488C95F07C28B259C6E7EA8749B5D2E
+94B3759D2B57BB077C82829329698511AE1327A0B87DBF422EC7A96A5A7E66BF
+17C39186C3113DA22C81B7C176199012AF49D5BC22CD0C9C3502250386F3BA62
+F6563E1ADD4495D0837D08DA26B99983B3729D6EC9D004BBEAC3118CB7C277CC
+AD77377464ADFB9B365763DC7829DAFCB5A3823B791AEDCB04001224989054A1
+7A0C29D9D0CDE164F5C4A6F549BE521298DEE87803D4D276206E5D8B3A835B05
+8FA4D0D1B35F941281C5C7756D5B56ED9AD203D29D5DE59B9E398DE2D3620E9D
+E0D346DFF5F36225BC341FBC220680F46F6C2AD2300B660F81E4287964A04BE9
+4AEE616C785EDE82F26260CD49B8352D96B0B4360CA48863E7A7D6A192E97497
+FE7EF71ADB0DC27D20FF89A5E16E52AADDE2FE10E18C9F8703A4011BF02B4F1F
+D0983BC55C73EEE03C1C1C82025001106828EF551D7473D6BA0A5100B9A5437F
+0D6FA2E764F524E76306903E884EC1969167F8A6297CFE1083D8B81397C57D5B
+7DA2D398353BE1C96A190FCBC5042A954DC7B052EB6C57029681C49768525E86
+E000EAEC6AD9B575145C7B285FC225FE441B13A68C913913CB7870F4BAD5BF60
+A2E0C829BE4D8CD4A273F82288AE34123933B41578BC5389A8F8DFF018A78F43
+1057C1C85374E1BA3A0A054CAD10FD98C1C68BEBD4129E73A5121A8CD78A35C1
+E226DDED4F3351B20A31D7383348C2DBB94FC5AD9EA9F69294E643F0A0F3AB32
+A7422D4E5EB900D8A49C6506403BF2B48A289E49EFA860CB793C6AB9AC3308D1
+6991569073AFE581F28FCFF65386D1926D95895958D92A082D2470A6090BC0E3
+F735F5F62AF193BCEA0EE2C67D905313B2CF667665F289371DFA3F717A5771D9
+89FCF4640613B40E29008EB6B5997B039348FC983FA832E0D005591E59B2AF3C
+89CE7A23108BE5B419462A687920965FAE23D8AA3E84533A30D22C4BDB7E4A74
+CAEEC2840C7AE8E23F6A57B4537A6D284F05C6B2C11A3FC0C69287FBB0D49C92
+513EFE51C6030A0FAE18C0334C317EBC5E30A83FF89B8E0DC41F5000E361F287
+833F1F1494C34709E6E8AC03584E9D7282FA375CC6F4ADE1FF8818CDC62B9C15
+99F44E5A5FD6B234F3CD0881436E13D236A9B6513C08DB17254AF4E445F5FC9E
+B4FD77B8D7ABAA291D096537E8CA51A4EE122A8F184626E051434937FEEA686D
+F9ECFF9D9A3F9D2747BF166532E50099A3A8A235E795A2BDFC6B8610935CD958
+9A728C3B02B8FC52DAB63B1271715AE296B658AC5580BDB8738ACE54E50DC2DF
+4F256B2632081EED3D40F34C98EF39C50958316EEBE9B99B38108975D0ADDC9A
+60C8BD4CC67BAE9EF282F8235ABC6F67456CB0397705BEBA858E0244B05DE8B3
+D580ED2A2F1556EDC31BC65C81CB19AE4101827C86881D814ACB1E6520719106
+9064056D6BA01F3A1D1F8052A558111D0B8DE3B50ABE1BB02946E53935183DE5
+6FD2FFD763599B656AF986594420274C62403AD0934622F9AA95F9D7AA59DD72
+4D7A6DD6D5FC13D6FFE6F679324D37697F1C7691585DAFD9C06203E07F89323C
+8753E809D5547F20343E11AAD51C994CA4CBA4C75511C181B30D4B89C81CFEAA
+94850C5F4584741FCCD2F0FCB91717E23441C4B52F32FBEB8796F1C528B3D5A8
+E78236CE31707365B5AEC48BC5AC60FADF972B1DC32C1BCD725646EA5D9C6A07
+FF7951BE56826071BDC28AD57576FD802650C0E2EFF01DB1A5FCBD95A521EA0B
+BD738F9330209E84CBC4FC42FEEB3CE2F1B486851490EEA6F1285E3566B317E3
+9FA0063FBCF65B16786F804A8BB438495813BFA484497B4A0370A09093D37F97
+238CB06C9F26822441025ECB833D676A125CDCAAA72228B3E5E0EA2215FA8E83
+E634262478020580F5B0C52727C0B5D7BB227B1E554DAE9E4469914F9ED0BB00
+B66FBE55BB65A6930CAAB98CDAEF801DC046C258FEB855F50F2E431DED89D823
+1A0888F5A6E6882A59B59F7FD1BBDFD0F7109FB00C48036B48322E44C5254665
+61BD4A8D5F82E5DD17C0418A60AA6851D48F259963EE8ACE90A325965925D0C8
+38892F0A9B0F155E392C6BCD1875B97879279AF080A66B4208906FE480713F6C
+312638829D12530458DC5DC7DEBFB6A49D1B61E93C3693767222A3B716E15F23
+7E2AD7B452AD4F92A51DEB75C8ABDBC92CC4D699311E3B821F3D6F510A7C6BFB
+195E77887394501D38FF8F7539D5117D3FF4C69D5F18E970B103DE8403025C1E
+73A71A971B19C08FA987ADBC26FC306A98639EC0C88AED00615EE41D81213BB9
+028EC5CFBF8EF9376CEAF9B7EB3C54112E1052698ED6BE5783CB655E5106BF0D
+726EB154215B2C4923078CCA1BAFF2B57192E8C669D3D72B8526151CD171226A
+6136C5DAF1AED86E6AF7EB0F59816B97E4E217F2084E1581CB8032774F6AB2FD
+42BBAE485C78F16BF461FBAA007E015E199F265601039A28C4845C81B2F59B1F
+317B89D24392493BA59DB42526EC901709DFF9281AA27D3F7A60FE591BB2C845
+F12B654EC28842D046BE828BE5E90F1491CF3B857DAE826F8CDA35BE15480F5E
+609B4137F921F3FAD7F6A90B5049E615803390DD4A4D03C97B1F83D17E4027BF
+AABA7FFC3AB5EAE1C119C7DFD6D8AA5FDEF4804993C34B39DBCE9DEA2133BC50
+6790BA3B0536323393DC9B151586987BAF7097A46607335CD011E82493ECC5F3
+EDD955D78874559B1F4512E54B8EBA809C20DC7BC689A6D8131BDA04657292FE
+E1715E71594865ECE26BBD99C6FB4BA81AF772654212536F8AC78949CAD2B459
+B19ED9D2D83930CBFF4E2DCBA347ACF63E72A7804A51AE6003F94F03E368A3D2
+A7B43C153EF61F4CFC1EF078CFE1781AE44D13CEFE9965035EFDCCF6123C19DC
+3254B5AE37032004174D5BEECA236D1CE0D06E0C397B7E3DE9F84A41B7BBFF60
+58C65D8500A0B7DC680E1666624ED76BBB6D8C9BD9CFC014758D1F11E436BA51
+522E5A15723C97CB5EF512398D1F8723D15A07DE64778136C307420CD5DE3CE9
+29F4BE2825D799100D1CF79C60DAD14ECAF288EE11534FD9E60498CCE2A29AF6
+047429385E4707037340C29533731B61E25B85755E382063E214320D91F81330
+E92DB1CADE4CC86B9D329A6D01731E9E80D4197D345E640B0CFD7E1397E2172C
+2FF68084D64946549ACFD84C277739BB3220B6E1F30612C8F46FC74EB31F0DCF
+DF353E4A040D6FD165048C0ED1BBDADCEBA38C407C750E6A9A8F8CB7E7A282F7
+9C28160F3CB0BD5366A729D81B995943A14A9A51C12D79869FA202B9B6456C28
+A2EC2999CAC16774470BE2B32EC611965E5F8D905AC0411FF3B225E4834CDB47
+5FB7B1E74E5E6C3E02826AA2402E49754C31C5DAF1AED873E9F4170777B8E376
+ADB6A2D0277F26DD7047E0FB2A51316428893D1CC5C9613A1C93BA2BA3982B21
+74AC0F8F4F8F1ED8700D6132C1E67163A2321021CAA913617B0CB7D8DEEBBD25
+B6E9893C2913687B7AE23FA0A9D59322CD6F78D205DB09BBCB6A30E61494FE49
+D231BD9F9D6EE2A2A4FB8FF6967EFBD319D3CFCDD53C9DB3AD99B3B530827752
+34E4948BAD42BCCBBDFFF0326A6BC4D3473BEF8FA7F643C74F856E394F7F7810
+D6DCC2D186FD950950554B9BCF328EC997F321C834352191D210087C12C981FD
+45
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+% 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 (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 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 12 /fi put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
+7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
+77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
+2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
+FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
+DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
+7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
+9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
+CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
+6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
+E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
+8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
+3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
+EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
+0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
+4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
+1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
+757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
+0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
+6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
+E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
+61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
+92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
+EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
+43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
+FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733
+4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA
+55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822
+C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741
+5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD522D9C33AD8369B
+D7DCC9DF993778482F35F965973DE876FA19E109AA198A00658AB3F0D8E3DDD1
+08A573F2D525202AFC57E05D141E6C0BB811E1FE280EEA002B7A45BB363AD06C
+318D320D2C81AA5DCC842CEF66E7DF7670588CB39C9F42EE7763A3A17372432A
+173BDEF7ECCEA297CCDD76A835C36DCE9DB8F8CB66CC71B4920CF5BF055A5260
+5B41A5373BA6E4F63C85671D979EA5EC30D22163E6D206168A3827F465279870
+CA80E6632872F721BBCC622EE4214BF723551C846765495FA9921E11FE1A950A
+53150C3F5D8595958A47E0B16064CC3AFD65DA294FFD111153F4F233BC5468AE
+69585C16CFBFCA32C4B96C161F47B56661DF84FCD8ADD3EC0E12B5AF108B0A14
+AC3F8338E1910099477D1F7AABE1226065176FAC05C0C1DB0211AAE7FCAABCA0
+258EAF4CF3D865D3E6DCBA5BBF1E7E6757DA1FB964E824C6F7D06CF280690A93
+80EE0E7B3C86169FB6FEBF4B3D65501EBBAAF733DF941BF1D418FC7150B35201
+4502AB972EF1E5CC067CFB4B7E40A51E2EA2EF6FC8220F4A3B1BF89585DAB88E
+81AE9FDC0124E0CF740BE6B7714D7CAFB51B531858A991B9777A3D2F7EB3194F
+7FD8D50F0106074F69AE7C3069F61E91D8505A1121B8FB08708B0E83A1F03165
+C949FF1D3EB5908E4FCAF8B6DAD7F9BABA3201D6F243E494EFDEEFDB354F03B2
+BAF94557A7CF60605024A1CC4D9150743D2F5C7E65032A2BBF5731AC4034A3B9
+A916F2B640733BB66AB78226DEC49CDC4B42131A73834947DFC6789468C8A750
+BD510488C8D611168403F6591ADE2256D5C89E7CFD2F47D008EEC22B3ECB8089
+374768B8F97D334D168AEFBBC8914D0B4827F13B3FACBCF33F07427D7715F344
+646EF39AB455A1DD85593DAA76BAFD2FF7CFB5C357A6221F458A151C3409C9E1
+4ED5A1031F84BD428DC3C91D5F05761322D36B42609C374EDCA9EC9542F070C5
+4C4B7EED32171EDEE9FFCDA33189DB732B835F4386406B96E86705E3E88BEB8F
+48A777D89A206F2E93B97DF96D28121555723CAB91516986665A7B94C2F3CBB8
+FBFB783B7A1BBA46BA450936338D70E17E7636178E4504157DF0D91F0CBC66D7
+6144CEE28A7C8F48639FC3A0B47A49FCA43D61A73E17A520423D8D91C570833B
+CE91CCC9674EF3DB1E1928C5E56FF09DB47C9634D586533528051AD4903EE131
+62EFE619360D038C51A830C851AE7FF1BC1655587C64E89BB59C4ADF06856D59
+505BAEAD7141BF4D244EA9B73BD3C0A201CAA0F94A033F6AF89F17A00CB10996
+92744553005B6F79C00F13DA2392757E0E5A724759B69CBFDE1E5F27E3493480
+8045880EFB36842440B32DC9C015D6D700CA3DB460FB923945D087B73421E24F
+01B14020A25696B95716724226366E05B8CA415F312D655AAFAED12876A3A288
+83858CB41F4A58FFCFDA14892C0EAAFB7AE15109D7D811FFC59B811E3ED80607
+4EECFA723007BF259095902504C3492C329B6DDE51EE82AEC7AA148A8E5E1B55
+596CFF167BFB3246760273F1D77436BAF2368B23D507C3E3EFDD6ECD6ACED723
+CA21226CA02EA0034B1042F167CFF3DDD00F84B5AD0BE0FC883C7A90DAC5F0A6
+7915CB107A6961D3297891B3B681732D1BC15F22199D1166C605F90F4CA02E15
+2BA2F1B3A885FF83685C530C8E3A501678DF4B9C33CBD0B0178486927CD754CD
+DCA40BAA159E87A27C4D8315B2C867971BE18D60D2748B3EDD47E30A094CED67
+3B1BE4901F27F52BFE60F1659054733C32FC39B55069AAB2DB7A202E9F5397C1
+374F9DC3D9B58B30F6D926E5BAC0BD7B6AE035196D5CE64D78233F680FE3999F
+345F629B90B16F136B833EA874A9D7571FC1342C39270A8F6A7ABC2D1A85EE9C
+F4507471C95360CE446DDFE3E78F38645EC731F3FE4442B839D07909C00FA8F2
+2961A4383CD6F28066F2E9EDEA93017F83D159748C8FB3CB3D3C60ABBFCC5716
+F700401739811AA0AEA6E99F3B3053C7136FCA968F5826B738D047AF73B015CD
+EE5F67C91B789BB4FB41BE071E48CE7DCB8C2298F9E451EAAA724FFFE506B97F
+160878DBF1CDA2598B436C6E213A3D0D1181A9A88EDD98DBE2CAD24F78911928
+F818E793BA02266109E77117C298B578898062F8DA04E81FB46410914FA90C67
+4B8EF36B6719C92095ED4AC0C4FF9BA322E0F3292A2754C6D20DDFD3D988E1F8
+F8905C78DD88818B50BCF685F76D20BC123AE46E9A1CC63252F627CFC097FF5C
+C9FECCBE231148F2DE34C57067A43C8BC77D06583806D314BC299F1548335AAB
+019CBFBB9C90AA72EFDA852E5FF88FA756D3B110CB58C4D2B38D020150D0C9ED
+2D12BD1208FA06725FC222C74776F8DD01493FB7CD56DB5785A3BCB05FB51C6C
+DD3DF621E61A19EBABB38AA83B0EBDA7199EA34CFF3094555DED0E135A64B83A
+1697123EAD6C6F248F020FEE39D530085D6F66CA0942A1223010CB3C7A3171A1
+6FF89828FECC5E35E005C92F509EC5707B6F137403561A0A8240F551C6104B13
+5D03D96EB0E76683D3382FB5F3EC85EEEAB8977FF4FC6C3D2506525629C16B11
+CCD6810D66F1D5FC26FDED8E0C034045B9CF05DB483EAB596888BC7413AB2AD9
+5EBFB40B064C97B8CA5C00FF3600D1105C062697E9118369F633CD5477A0AA68
+C8DE35D02C7A2853891FBB7416881225C9AB5435E91105296E2443F95F65CD16
+DD258799BF23AC3646E85253B45C492C8785E3B757AC8245BAFFF35D33014A07
+F61D449386012F788FF40F9B7CCB9E248BA4169F6CA052F11A32BE21F12B0D67
+6E5C628F3275A5F5281B32B2230FB6A9F44286FAF489CD21A7AA14D4ED9699FB
+287BA25822A0F9E20B7E74B53FF6935F57808EBCCF7EF97EADD8C8BF96B62A3A
+F024BE50F94A6571318700A1F6E364C7EAA28CF574DC8AFC4DC96157245A10FF
+506D7BDC8B2F635F2C0E15E502DCC1D33C0D4918E95DDD05B7BA610D9BAE4029
+8E79C541DF2C5F793D86746A24B3783A9A82D99C5195A47D49C7DFF772E0EEC4
+6B6D4EEBB60E4482D74215B106BF76162C24449A4521B1BDFB233CD7CFE3B9DA
+BC50CF0D58E8CB387E2135DFEEFD0A5A2C1C6255BC14675957A24F965E0600EF
+98AAF15BDD37BB44BE237ABE5F33A17D808CBC285B6BA576A2DAC71F6FEC255F
+A69C0A4909447E5D1A494A6DA527E60306E9969FFBC2A8EE1E336E6497B19284
+66018BC2A53B4E6481AF12E4E137917066BD4FE45EC5AEDB37AC01ABE242B282
+EA1591D3C76804173D9C46C142080F060F93A2363D72FEDC2E6265AF9D74F5CB
+2CBDBB508BF83EBA6F629EF319E600BF6D58A95AC60904861C52BA41F45CCA98
+BFEE8FC7DBEAA899F47F49934908BF6D29F2686AB3B93031D7593727E5534867
+2D7E022EDC8ECB83593A64A6F8EE6646F8A9BAD12B35872E8B9D3B0B043700AA
+CA077D8D1985509C8328BBA940FDAEDDC2BBEF47DA62C1BFCDCBE51785C04A1F
+CABEBB87F069083C915FF65A13A83D2DEF0F093F47B4FDA6EC0DB9EE4416F148
+7BA87417355406230598B0B8FD191E22FC3B0339A7E92729521581F120EAE210
+DE13B6943E0E19D32462C7B31A579869EB25B0D887AE1A8DF3FCDC52F836FCCB
+71A82940867F3DE634240C91FB4B33331C0AAD79C5BEA947950D12DDA1466734
+0AFFBFFF2870D5A27236379DA028909500943006336813B641D300E24AC4A86C
+DB8035570E17AE4AEDCECF79E4A27A02C0706B611AF82176BB9F95EFEFB8A22F
+646FB009B89CC7748806EE1C5D107ECFB0C33076E9F49B21258FB309218D2AE9
+00E501CDE1B8B0FA61817108F4B391DEF6CF62DD838B6CC87E1363DDCC381C69
+E9C2025F6B766E0D89CE270F752FC0473A58F9699CD8BD0F980EB8BE243A2232
+90E58EDF14E1B64325663E9F7F17C7CC416C0E480471967E47743E286D3D609D
+9511017989199CF1FB2C29ACAA94598CDCC2828A3A46CD3FEEA29CA5741B2C5D
+0365E46106264DC3C9F397BFF8A57F74ACD94E26E3949B8A1306D379323AD8FB
+6BD9E97F98529269E937E201CE4974A42EBB6755B9D107306A6DB1A28466B526
+825DA3C0BBB6B7292821DC3D39CDDE071514C1086F525596A94097F42E976C54
+428C4EA75676DA38F1599060B6D544C428773D74F736BBFDF4D29DAD7A794137
+186BD660EA06FBE1A1574EB7E07ECBC1E184D93AD0F5CC36F8B2AA8084731CF7
+BA3CB7AAD5B1ACA1E291B873F50EF849A00478BC6AF966C3EE1ABA7A26FE0BE4
+D95578C65710545FA241AA4193F51B93F17DAD7BB09F2EB0C5F8F50F6243C3F8
+A61F57DCBB5EC2C080A1A2A48E7DBAF87F940B2E38958EA7BDD92BF448485AFE
+6505011BD2EE4DA2BB2A500C259D1A6EADB427FC4676DBA795FB83FE24394DB2
+143A1FC9A5901AE3EEED5E0946DC6689F5908BAAF2CD27EF6214D0B87BF3D5F4
+0FD8C19996DFDC53959CBB1C2A101652DBA289DEC349C1AB3A5AE37BDD2FE221
+384944C0901B7587CFFA14C35A95B65DF8ED4CB8843AD5587F890FC559047058
+B6B19ED9E9CAAC6C0D13EE0EAAF2E3DB4F7FE8A328D6D521405838423D2A04DA
+565497FAC8E5D8515037F992A8CB88E2A9204531151202B36B057C8B493FD5E8
+7C91705F137161632E09D38A5738C158B50387CB9B863002AB26F074607E939C
+FE900040F5D319876F16B7E13168D0D446FA48D4674E3CA52A3F1DF906925F11
+8C3FE0D9F6630025917D3BD16C03FA9160F0A87DC7488AAA9DB65B36C699DA6A
+E79180B6A0768170C1D64D3C8AC6D2DB37D33DAB7DA754EFCA2CBF21421CFDEF
+EC7DE9037036051EF6D4C3F90E9260FC31B0057F51FE9254CA6072957F4DB8B6
+2B9E483252BD189E7150D53E83B7A78809231305E64BF19CAA8EA10B50044F48
+2A4DFA8CBD680027F2D11294E8525E163A8B7AC2DDAD32A136B1486C766D7701
+8279B5F31708A55B1F14FAA558C67BE6413E709DB4EEF2C61F807AC4B1E21B7B
+032FFE684E7A72F69A69FCAAFDB36AA58B6006E7A56157AE6B789045F0F73CD4
+0F763D505718A7CC889C8AF7AE06D059D69360463501F4E5B91BB7DBBA06A3E4
+02A92522CAD9BFB1C5CA7F7FC6B3CCE2C410927D8051F12874195B1B326A99E9
+78C6D175662B31467733558D240E1743D5BA18189859873CE1B6322C41280FEE
+24429165337B54F89F1229D55D3066AE4BBBB2CAFF3ECEF35BE0E5A5BBC04933
+FC8C84AFF8D872E6C0E9B2FE796236B7FB900AA2C2B2BD5B9C266D43B95E9BBE
+E1A5D3FC1FE769DF0B9BB5A940F22175609681062B72D7FA8E56EB80FFFE0F29
+398E47272B30F760738D23CF748B81DA16FABAEE7B9E03214D996373FEE88E1F
+A9E03A507B312A3C6F9DC201765AE37435BFECEB0ADBC849129BE1C85CBF07D8
+F45F5493326DEE112E5F950826D9A7F62C42F04E64B92C274271CF8CAC8E9057
+1DDDE9E675EF9D1ADAB47F3C7B52630D791FE11FB1AD16F5DBD936EB3B1577E2
+AC4767F7CD4854ECE9DF1FC7F74D01323DD665B71A93D4418BAF3BF720F7F49F
+E20E1671556E3CA2F6E68610BF2DA1F90081CFFB246D0B6D846BF82EF0141171
+CBD403D2B90C3939A124B56DE41E4F27925B025E98507A823A7F0787C0F19193
+9EE0D12C2973450B4B8F51B90485FA0DADECFF502DE5DFB612DC376438E65BD8
+503D3BCE6552ACCF8299470F7E8B4BF6CA11733BC802C9429F14AA2ABCF1B5D4
+223330BA7A703AD46FFC91308C5F1A47E2306B69DA2F4A25DEDD3912FCE1B08E
+F5ADAFC424328BDD7A55000C790D3A20D3C5D89C0F3380B3E19E514F0117C6E6
+0A897A1149DC53810BB0848D8AA8DBEBCCC1BA5C000594F99EEFDC3888C9A152
+6F84EA41C2D2C934542AE6493913340910D4D75FB47BA510F1F1FA856CD3BECB
+37209735C0CE8664BDA1E2808D15710374A8CBB526046D49E5301F604B31D9AC
+F6B375448AE40E4B27FBD8EC75DE9F659BEA36D714FB70D120A792D73DE22D50
+95F407D042E840BC91F70D71F50E863154C85CD51AF8B489A114F7B43FF6EC40
+1CF7978A7D81E764C282D557C1130C4182C7325E86400D45AB3C94F70F1D5D98
+5D0E6A28C0F693D5684A3E3F0E4B569C475DE8361C1A4A4552D792D9AB90D7A5
+C0E20E119A19031ECFD026BA7C16E76828106D56294C273260EC275562785EA1
+ADE0A81C9BA17E93024717FC9F4827258691EB87B6FE3CD8BACB606CDC2100C9
+947D5DEE7D0805A448A66340D67867B22A0B6AAB20BEC2FCF21BFB96D7CE1BF6
+2ECC3400D1B382E3C8D1C5152155738CCED0EBE303921EBBFD8F80DBA7DAFC0B
+FFB47AEA310AA6E78F347410B890BB97128C5F59F2A171FA8A67343D15416082
+3ACDCEC3525168D2D7A7ADA9FA64D1A474FD8904BB6550DFF25205DC9F6D94E1
+8A202E239D72C00990EB46B12404F6F6271C35E2E15A70AA35C7379505F5EE89
+9E4A51F8F923E0D6A27641230AE12A36F26B8D3262CF4A9837F242268216A8D0
+D31C88BCAFF3CC9E159A4785051815299023CBA09BB547255A5D277B212B9313
+78CD0190A42E03F04A96CE282056D8034A8F219F5544A65888C99B126B85726D
+6158CCA2E8E1D1008F8276028295B2333854969BB5B1B9E72DC4EFBAE6C1EC40
+034794A3B4E2A75DCB467B47C64145166F1ADB0A5B103C590875EABE6DF2D635
+8290EC27E805031C6C44E7885573E436C5E078D1F3A8C99C1BD2E228E389C5F4
+B370C48697E13D1BD960CCAE6025A265F905EF57422B3171CDFC0BFF0B1F49A2
+2307C908D4D3005B7BB3947C27F78B66D9745B0EDFFB656C65510A1603052EDC
+37D013076B739B01574EECC37031D8FBFF3388E174935D8F15284E46D45A2144
+F3F83463A16CECE40FDFEE2ADAE95E1441095A28BA0FC858E5EA9766BB13568E
+C7D4C86F3B6309F074EC65E95DAB73F104E429BB8EF50DEF8F2F6E55ECD713AD
+2CE8107786091BE8F744F1D2879AE31D1A464E4DEF1245960D197B6822E0F4A5
+AC6864CDAABFEBD201556FD8FC5357BF6442A04C7F8BD07316058BDF1CAD7640
+9995993D59AB92B6BEDA7A00E6A47A29DDDD9B0B199402A8437EF730730B59BD
+238D242260012261EF332232B9BAA4E4C814CA3B76CE944D6182A11B2809010A
+8DC04E63E903E875E6655E6C2B7ED709549127D53EB20B3E911BDDD4B923E594
+40269E1DD018847F9C3B0D9C765A05903B57041F0AA9951DE7B482D4206ABE0B
+9DF41ABE894AF1EC611794F66E7FDE526ACE0C545DD6D866F1EBACC476C82A32
+D291C099B6E33E1FF4C071A563BAB91EC8DB5EE230F7192B78CF5337B3BEC6CF
+19D3C85444F163AD39C82415756749E663A4C448FE4ED9FA03668564FB86775B
+38C4FF3DF3CD65C9AE72C412A859C64AC2DDD283A8724A5294FAD2E41E2AE7D4
+189D292F91FF25446AAAF318F5F6BFC28845FC90C6CB7AD8537F1D353E89E245
+B3EC776EBB5EC2C3573FA30E0D31E5DB3C6761897E92F4DF1E8C075C0139BFB1
+94922D4695A46DA45B2CBD0FBACF6D20FE30F43635438FF72148280AFD41CCBD
+52224F0071E086263DACFE53427203522C5B85C40F6832822E5C879B8AD8ED3A
+81195F25CC7302EE69565C7B4035F459432EAA42F65730826C740903EE16E0DC
+0A494AEC9361FFAD97C0D765D2C1C626F3C1BC8D23D7FF0E1660152507533BA4
+15D82A6E9F2045CD6ABF4CF805960EB4F411585259B5CBAE064075AF2951675B
+069F84BB4F42A9638CF8B7433CA9337405D7AD6C32C4D1185730CA3EA95DB3F2
+3F3C371D2B1C7D121A2358BD0B03FF5E95AAE28DBAD039A4F579BC5E13B97F6A
+B6AA765F21A1C34C74685851D3680A806CCA9B7D298E732648E18193FD8F928E
+0090BA7BFDA55B3C8B05F0999CBC41F1BD17240EDA3B42D84AAED47319EAE6D1
+84E188F69727FDECCBC1D71071819FB8EB6137702FC6CD1971FF4600C70A4AEE
+3C2FA27AA13A541F80623C0C8987D9872BAEBDAABD49BA0C5961DFE40EF5C816
+7EB0833CE4A91AA5583CC1F6E660C2B98A1E87BA62052F2FAD463536330A5BC6
+1844358563D3BE6ADA24D1A9A4D5535EB759808166019C0918A3A99AD045B128
+614A8996A34E5D34C08654B21BD2B295F8E1ABDEADD6EE8E0DB7DA9F351A834D
+A321E8DAD3EDEB7D1A30FD5C0044D304553D3D0AA39C9D40E4F68D3BEE6DD217
+7D11226EB40EC79C4A292B1FEAE47F3BD571FCC13482C0289D887F8B80C791A5
+172185EB7970B5ED76685D2F19E2E7588DF093E0C34DC709F8F5E79DE5DA8903
+6B2466A5352FBEE362D3F3A53A11F2987DFA2BE77E7FD8422609DFFEC50AFE49
+068090281ECE160169FFE21C7EC82927B0C189B75E56E9F92A7FAD8585176313
+0130C310D14D560553B1688DE3EB5398F7C950432F0F88DB36FBA18C56B8AF5E
+0CECF2CB07888F32AF81B522FADF492F39A3A17DC6C8061B079B8842F237CAC5
+7088E9E790B3D9B77FD1A07506A7D0712474581159494EEC9D2E7428587E26E2
+716D22CE1AB8B884ED765D1AF7F60855115AD921D47E17AEC1EEC751EBB5FE97
+DBEBF85171960F1E488854C2085281FC5270911417CB9EF89448D5AA613ED806
+012E30B12C12BE6A5E8B1E394353EFC425822B1BDDF8B4285DBBEF37657CB56F
+41126A325BBDF38D4710EB9269DFADA7F93D3EAB10097C85403E30A3E0B0D5D7
+8631229CB438AF75939FB79C3990E11A2DE595E3BE3404C4FC6265BDCF7E6679
+E66DFC3CE8BEA80351875C129F744E4B6D581EB35E1439CD8B5F0071EFBFAE4D
+754130E68A21A48D8104724D6E107A4FCC35CA7E071B188D03FA48F14A96FACD
+F069D5BD56F1B23BAD03C8396660FB8BC2E761D717B67757B9F5C60F19E735B8
+45B6EE625DEF906347F33DAEAC8F8F9527DD99C0D0DF3797D66D77FADF970E29
+94AA7E69F5CEC2C9BC8E934B28FC41AACD03BEB6B2523A270690937F16191B87
+8C494AC81DE5043CB8107667CAF71C7521939C7F8624DEE8472BCDDCF2ADBCA2
+B83CAFEAFB0C63982F9FF4833AF0D126783C175E0E8AC3F02B80CD85F55A316C
+6FA0F5C0A5BF10752CEEA0E7B6D198CF7E9FED1A5E7F976A52A47FED9512E309
+47DB24B061068C3E8B5A56C9DFAD647BF4CCCB2A79DB42E0EBBDB110CA9E757B
+4CD2CFC8C6D4E822A0AA742071C18CC7E6170D227041126F06D3D742E77173D2
+24726BE0F07BA7C1B531D7C748E4C21F4797721CDBFED894248A962F3AF0C30A
+E4A4D27456993BEF6DEEDF47D55E4E41598E5981B46F501F6A8F6139BCC04EA3
+2163F547280E766015D12D6614FA73E65F8A558EACBE58DD06BFDEDD3DBC5BE0
+27E3FAB251206369B25458DAF3EC3F761543C684DA66DB49CF8941A6E434139A
+3C297E2C52A56FB9BA096DA086EEC2B09129E83E7872AA041A239E2E7C0DF579
+BD468930CB63B4B21255199F3B71F949F6D8509FB0F9C902E5BE0014D48DEB72
+220BA736AD3D20DDF1C0D6102F8954F06F933B008DF468F8A81ABD7095482D2B
+E7514217BF75A73287F5C83FC608D87AFE770B18F687A417BD2D3764F9FD5F95
+5E25C8C8B236CFD159E533D7F1A35D368EA3B74B2EAD5E3108504EA9353D5304
+E5CCB2CC0E38246E401F3CCFC4E8331EB3E7339EBC56E06E476677A30D4FD27C
+DFBF89BF334904D06E239314E5F89296E9EAA8F989CF1B117A94E0EF92FA4C96
+2FA75B3C20B737771AD15361CA6CB1CFAAD12021932ECE3E8606DD35C438ADB5
+65EFB9EEAB1893E8BDC3F793387C9219A654B893EADD6AC7454C42B0F9E4A0A6
+FF16B926DB665DEAFC1D88504443023503FF6175C3AE30CD7B60A3FE6CCC01AF
+0E2D383C15A38A9856FAEC7B4C5030411E0345DFE886D4E438473995E4705055
+4375BB6063C177157471F6147A2CE62DEC1D5DBA40D55CFFA4106A0B2FFA1BC7
+4F7DDAE9D9513F8CE8C0A51004B6CD2B7C681F089A105FDDA57FB46E30865D53
+4A087E8BF461F8FF9EC4DCF3B4E864EE84B1FDDB3A1CFC61C4E67038EB4D59A4
+FD9BFA4CAB26BDCCEBB7CBD937085477FFD324487DF21ABA202773F95764DA6C
+612FEE023B371A839002A79B6128B53BB4515BA6D8D9216D4D5D465E06C66B57
+B70DC7D708E5CFE49FFEE46FA3259C13652205774466700E1D2F955FF28E58EA
+B886CEBE579D923489823768C69EB6C6ECEF879B23C29DA5595D7BFB8B2A6D0C
+ADCA1093E030237A9611862798CE2AF210AA6684FCD763C794AD3DE2E3C138A5
+D7AB1B393F114B6E26C6D0B62A6C626706E8E67DCEF15CE539315A6EC5F3CCD3
+AAE8C34EA67421B6E5C511594D18F9C841F7DDBA8B7DBE166CA2450A18E35FD5
+A8950C6338E3EE87DF7DBF811DCE316ACF80598B74B44B4BF5AEA7054CF1D6B9
+0B4A24D3EAFA8013863C0345F2382F3099580B7F3A1E383F536D7056B832BE1A
+3B06A688CD5D6BC60F87EF1DC240AFDF1610419CDB30820A3E34C4DED94CFB5A
+81C58E3C57D0002E2C0DBC1B87CE51FE05191AC5FCCC8D18BC84A1D04FBA48AD
+F810EBF1AFB146731747452B78560242C0EA6620B8E2436FD8D842ABB3043726
+1ACE7FE479C0D16A2B39B99CA673FA3ED35630531F5C74CC1B4850F285338086
+6166E289565B06F92EBFF17317AFAF670866A198F33BD569216A482704AB7015
+A6A2CFF01781941F1CE4F9F41648917CBBE080FB4ECCD48C1584CE9EEB3ED819
+D49B130E3B82918CA507C5CDCC1AB23785B39D478750FAB32E5AF280C55529DA
+ABDB00056A3F2C4F5F5326AC1241698DC8A8BE3042D87D8E0ADF797B68F970FC
+02C893C89EC3A003BCC40A17A78F8B1F400DE107E366354547CB849BAB1A719C
+B3A8651BA4069FD7AF99A9E59FC15873D7CA332324D1E00E7C4438E4BA68C430
+B3E87E05E7420B19D52B7DF43424D127D7EC48131A2870505C7C66AB6C4827CA
+D061C8AD5E639885005CF6A008A416F9ED1A6E9BCD984DE395F57D0D0AABB178
+C9FC356A798839E2FAA3DAC23B84DDD310FC39FA2142FF83D634D8E9A80D2876
+B666374F3F07BD7024F976B44ED5FAB10A711BCACF47A33F60240CFBFF9ACBEF
+FB6B4AD7DEE1973BB2417FD13FB481D5AFDB7A7A82A1C77CBC52EAD9FB2A7245
+083D09AF6C1DAA9137DA36521B62ADF2130EFFE0E9C751F97C29979A3CFB6B23
+3DE0323221266D9A29B7E793848E9234B4E757A443363679A584926D87001261
+B483E7413D30592FC05BDD2FDEF01863B1E56210F33E2724B846177B3C407CD3
+5B386504CF8EB0A2D0384DBF406131FD44AA5ED94D89E4850CA90B41689F89C6
+C7C65C89AF2D7D5C2971F355AD93B72B0CB57A227E17FD87E17F19054BC77A97
+5BB2C12EE95C22C52C4018B366329B5DF4675D1C6F6CE326619DD3EC9087ECAE
+6795C843CFA7FA365C9636D7997BEBC0A9C0AD566170E35B763CF1748AABF122
+DB9ABBDF12051B739B880DD6A614D013E6F6321A078BF126313BB03982DE8396
+480E68DDC559F189C878B1F3F09CC90C94EC811EE752BC4323DD635BDD95AA2B
+F5C941BDB5ED3890F64A1108F00F065D9A87EF098449153D944C0C0B3C438435
+8152F9C704D0066B87AE99C5931949A5146E62D8AC3EDB679AE3C792CBB23A8C
+F9734F85C165762CB4ADC959A54A9858C11300B66FB04B5C91827D33F4A04A75
+E1399D2659A46E55A072B37A37133DBE04E638F6FB0D665D656863AE3B03D024
+601B30AE39315409A53CB3A5E6742B115F2602F74D8A1C151E2B2E396AC26E6B
+A517D1AF2E5F4C59A734037BE570550EFDEE4960FD87149C653394E7A4E0CE0E
+0CA948CDCA0A246F294944E21CDA40A5A6491D8B14B46924DDD41CE32489B397
+6C9B6795BD652A26EFDC34CF68C7104944F46A3AB0911596384DFEA84FA6B01E
+724252DFAC9877B60FC83597B1BC370C304A208E0CA517DAC4597561C1CEAB4F
+10E7F1289C37839A9B95C6238CA15AC4A60203FFCD5135E11E5C3AA3C7446B7D
+3D96ECDDCAB9426115780D4689E6D2E0DEE12BA8E55BA49BC7BE5039A0BCF46E
+9C55CD1431A407B5EDB127C3727B52F4C4A5C7DFB1C23DEE475CB7B5897E3AA3
+CA66ECBC59D94D303EC98A0D63C6EAF6F9B32763B0C4416196AAC3AC1AB5C99B
+5818A7AE1E7826988E0096B200D83BD9D5EE71EBDD46FE1055A2F6E8477BF398
+6850E8F46088D0BC5D58496B7A85CBBED106CED44D7DF86EE1FB36DB4D8D33B3
+2E55ADF2859BC341B47AFF9C1D042D171AA75BAF6F627A0147112A7C534DF682
+BD4760296DC3ED01F5045AA9AD673EF72B1037C314AADF73D43A4C14BCE3ABD9
+B5B41703E8A249AF5E0D1F8ABF4C3919E9850946C07A5A15D16373B18F75E1E0
+2ACD77D0E450D285182D1F91A2AE5B08EAD3CB61F567A32AA4C53DE243A6C18A
+72E97950FD02886F717331F2DE32472217EFC98B4D94C43335DA36AB5341767E
+1487115E1B0E2D4C40E48611C6B55CCC5A6D7EEDA593985821DF0A17E8AF8FFC
+EC9AB52EF12792F53E0622BFBFBA87C268A4042EE4DD07B03E1949ECB746668B
+7BE27B97957791E0B88D430F3AC8A16E2F15379D74448DB2693FFEA93E1CE3F9
+43FEE37BD138374AA2076C440F6FC53894814599A55F6A4129978676A7ECE678
+54297AA359881BE6AF25EB770317F90BD98A7A79B51BE290983C8E133E423CD1
+85797426AF3F9663BC0FB93D4F79E013D0E4A56C634199C64D5260633A256182
+15C8DCB5F0018E671EA4983EE112CA99DED779E89FA8C57389B198F2FDA854E4
+C5D40521BEC55AE6B364FF931B303D619A970191F83CB5B14C3832DC63F1BAA1
+EB8D0BF5BA270340A1196A2AB69EA5D8F14431C2636CB043B726C35B8F69B790
+027CCA573E387EAC8479728FAD61BB3C29E723DBAC5BCC243563801EEDE14410
+63DFFCE2AE20E7D86EBCFBEED6CE1EE583AC0A958AF47074CE5D43B2309CAD8E
+ADAC8653CE3720423C9C8477F7F4CA54B5B4B397020CA87493064FCB36A5ECC4
+B4875CCDBD0C7AAAD49DD9CD91BA77460485999079B01A1AF1971EA4F14F6663
+3D25AF316EF3076C8D1B2E3263DCD73C22E6F0FBDF889E2BC36A115FEA417687
+E9107A67B4341E0AE05084E8BFF21DC0A7F0906A9EC23ED2F6E3F6832D0E44BF
+6056E48D415A6FBF0A0B9565D5C4AB578C1F922D4E52B9AF7976018672C610E5
+A4C203B5D80EE1A6AFBEFEB32DED46D68E4821BFB8FBD3B5D4A461CB91BA1977
+559B6976D07C0E6BF8C97971D78172A8BDA0C703A4E2823DAE8466DF49B35FD4
+19EF7CBC2F4064903A9AF5B2CE677C9AA101E84BFF71610D4C2148BB9B2BEE9C
+16A420607223361C5D00DD67F5DFF98BFA5FAA5CAD1A3CE55A5C2B7E7B7236D3
+3143160A074BC299335BF3A612113004B384B1FB048BD5EA279A00146749062C
+02F382BB3136B86351841565CBC6010B2588187011B2E1A7955F5EF2CDF7D565
+D3D1915971D09DDFF4D634B49CF105D07629CCDFCF2C960CA3224D021325A972
+46C6BCB2392E332E2F23968B2B526912837B81FDEBDAF8D7C8C8C9269C452389
+D0795FB2DA454C0A41CA7DD3EF263E19462CAF377983213E0A3B2060E0538313
+6EFECC7DA55366C171B2E4936DA0D640E8C145FDFCA67148B0F807E95E7B891B
+89903EDF186B4ADCBD360EBA0B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+% 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 (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 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 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 50 /two put
+dup 52 /four put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 67 /C put
+dup 69 /E put
+dup 70 /F put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 79 /O put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 90 /Z put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E
+59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28
+51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23
+DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A
+AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F
+45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31
+821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE
+96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D
+9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379
+26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4
+140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213
+1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498
+1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB
+377D3061A20B1EB98796B8607EECBC699445EAA866C38E03ED7D4F3EDBCA1926
+2AF6A41F67AFCFBF3630C943FA111E4CCD988A7363F7C2B75EAF5830B049460E
+0D2B337988F150B9182E989E7750C51BA83DF37685483F86D1F47478883F3F6A
+4B7F768DA5AA89E8F163029ADD4A9209DE8A4F285766C06EA859639B92CCCDCA
+F59B1C2BB8D588CA754D1257BFF76B53984DF4937093AAEF79009D32A29A4C16
+FB610C7D6713482C48D7F9E8410C0F00AD6E67021056B6035534E79F05D14EF2
+4E813344B92052E6E38491989F62E8E70B47BDC936D5B12147DED67421B4F1C4
+3B425AE884FBA95D4C00316800FEB4C2AECB712C0977B675BEBF659686B32A43
+79C609ECFB9770F489E78E39C6032F21A769230B7B5FEC428C4C9263D23F1844
+8391D5B270CDA540F99194CBB3F96B0C062EBD018C99F6BA8887E95093A429C2
+4017AF57A2EEED21FD3D35A0CD92239683CAC8E5E5294368494F14A32AD098C0
+9B70DD84A464DA6692559DCB3A2D3B1CF7DB5E152D192693E1D678F0D2E24D85
+9279DEE7B86F11243C2F984389FAD3AB3B868E4CC4D1E0EFFCC2460BB14060EB
+1055D007FA13832615688CD9B4FF922B566FBD764B5A957D8DAF44620F59064B
+72073A793D0C6224FA9141EC4457CE3789EAC039016DC857D5D2C8B2D219B0FC
+E8BE07B57B80757251F63231BA4A31A3316681192D01BF9D30C3A439ED15187E
+E9E839562AF201CF41941F3758B48DAE411DC987E5B10A1516527AEB11916EE3
+CC2FC224C559DC9536C06C33513199DDD7FDF288D60434486A022C5387F04935
+36689800CCC7F9207BDC4A399341485C169164E2EBBD0C6A949F40D2F9C09CFD
+79A29B44D8BEA56636B538FB09C5129AC43BE6A1B3754B45EBD42F16DACE02E1
+8575CDD6645A9C09D80731C74B5B60CE5739784D5F9A8CBBD3614C067030E2C8
+8DB3B10427AD845A763F6619201D08C0E6AB1E3C4E02F3D2471048C7631519C7
+9892A16E8A89AB30BF46072014B064E6E091F93EE43BF58E839A0B7C748428CD
+D92C6BC78679CBEAE17C5BA35E3938DAAF04B7A304FED7F9CE091FA7EDB9BB47
+0AE9CB375FD21B844FFB938C69C0813D808F17FA28B01BAD640D032DD84BA8C4
+4E7DA8FC546F8132F9C15134FAAA2CCAEE217D4F385EC3AA24F19D39F684BED2
+D7B4D6428153A305A0B438C35FFEE92C9D6EE1856D656F69D071D15F5DB85D97
+9E4E83260C03D08EF8776C1DC11D1484D97AD96DAF515C64D231DF6DBC361395
+5F23C7518F59B0A2C9E8750CB097EC7BACC1BF30E6F36AE562E659AB06CFADD2
+463C5EC86CCE43701C0D546723F6ED22F5C5680DA372F9228BAA42D53497E15F
+1510487DABA86CBFAD2D43F0FE44C7C137202590041FECA272ED878AB6435AAC
+D286362F504DBD0175F442228D24CD4F6D615220ACEE9C686BAB23F51CDF2C54
+8A48040F69DA7DF1AD61EB79E3E0D06525DF672F7DC74B16638761B5ED4AE73B
+204EE1D1DBFF155A5FC3789A6CB80B4A0FD85A5E46C3946168E825111B9F2ADB
+8D461062147493799F9A7E967321A1E6935CAAE6215050C1625595EBAC2372E5
+45A5EF251C2CE2377EF6916A68186DB0E15078CE27E40D72B3B7BBDA85ADF9F0
+CCF941DB442B0A83C13306C5A6C6D878120D6848B61F7C84B0A5BE93CF569566
+57A4CD2F35AB56388464C0A54AC5CB73037AC993F1DDD402E3476575079D2EAE
+A6C24E9B781BC30D66853DE1E20BDD2115250227D94D3D00302390CA8161EEE4
+305F4112957D8C7373C737531796843F5021E13A03C4F8525EA3DDD12193B317
+BC4AE290826D9565B6D4AEF565386E413F73AE647053C832C230B3BBCF505DF5
+DC62B4CC887FBACAA8C5EC5CFD76E6EBBF7305B72A7E2788989139C1C031E396
+501939AE366EFA57E915F75947FF909457C6E2520DF33B7CE27BF60D1AC83DBD
+513F95E5B2BF3242B14D623BA81A5E4D9F14CACEE5608C70CADC2DF0F827090A
+ADBEEA5594DD17287DBFFC8D32E88A79E2A5DD3AEC6DF12B702326DAE1A12B2C
+5BA64A07678616926D8CD25952B8CBEB203E66293B5FBF69C3D59BCC4C7F986E
+6EF2CF7F13C9EF2F00492CC56544B351A96A3ABA2188EA90275D9A485951725D
+6B28E742111F89F26C3EE550A318A4683AF46535011AB6A94A9BE2FEADD70475
+6D1123C0F4E864FEE4AF0948257314D16C2FC011112D9F9DF01D4B2B9284AF4C
+9623B39D28048CDA4016D86264F41A1D8A1E0E8816FCA904AA4E3BC1241FCDF0
+92E8EA6B82EDC825DD2A7B0B42F19FD7CEFAC4233FD2D0F3F3C7DA56C7C84518
+22DFC70A3FACED74A30E33AEFF03F7C853C25CFBA52EF3DECC1BAA32C64EA4C3
+A9AD347D7F0ADC7D361794B74115093EA339BE43F52E419BD16DF7154B71E0E3
+847CBB8116C5C1C6666593E8B7A8EE26A9EED1D8B1A35940349F9DCE3797450D
+D166A2AE79DE85411DFD807ED887004EF828078D7B2D156ACD374FC0AF705696
+6BB23A8EFFC7AAE3EBA735AEE3BA459855243C289E34444A5DA1220EF12241CA
+1AE9DF8C15384EA74589ED6323F2C0B5AD4A1CB6E191C9819EEA1AD25A116A76
+8F46F8E1E0222443EEA5114BAE747725998E1353D3C0E11C28EBB773C6A67BDD
+6A2F03255D96ADBFFAB08F39854CF965D27B85F8CCBDC95E0E1F7B7C6F77B9E7
+70F73EE4873ACBDF620C08BDA266BE27F864EE2AD759254A9FA2BFE91D94A3EF
+436CA4EC7DAE307ABA4353996AB312943528EF198632CC018B01D209CD225E09
+CB018D081B6237F474FC1E01562F03CBF5893B3B492CA012B40BCB71AAB3E480
+7D1731BA45801CD73B14ED8C33977D937D228AF1D649ACD74940AB8781CFABA3
+6737EDD6433A9E881A190087A64A1729B4E350662F6102BEFC2E48B66DD35B3E
+984983FAB2C44DEECEA012F936B2A2025DE32729C947DC30F6656ECCAA720AF0
+ED98F3EE50299CECF4FE13B1955B91132C17344A82866E84DBDD67D379C53BF5
+5DB87C8862BE16D094CEA0B18BDBDB34653A7E54E7995A43FE8AA48C866DC5C1
+624BA8F8F4CB39CB285D47007A6053886AA91E4E2291D1736A2678F24FDAD234
+61E859710E4DC3858780003C9B125CD3F7788FE4408E1922C979F1F90711818E
+16352B067FF29A2F493A1494F9B88196B4881B49F8F64F6A497BD46331D8E8CA
+8E765AF472C489E68777C51C31E0ED5ED526561E9F3213F017D43B3E305CA4E6
+2C6AB509BF9E785418B91237B3CBC4CC8413F11BB4BD3182A0DDE55EBC9E5FC6
+3BB234C61FD98786A9568E2D4B732A66065959E6AF586DA6930DCC0624E58C10
+3A9FDEAB6153118229ED0B78C6F6025CB1D5190111D3BD800453F23F83F51611
+C590D9561717A9A25FF989952285A036BE8F26F460F1530EDDFD5842805342EC
+4EAFB7E270DD861738B3D95741C81C5DD9B2FDD4A8A7E4D62DD77BB02047BF99
+C453764E730AA8679F0AC68713E0EB3679A5633240E9457D61E87B556D09C6C1
+6F5A92BD6F23F5CAC778D81B6898BBE3E10B286ACC79550501EFBCD60471F1E4
+8ECABFD8BAF0CCB09206EE67E156CAA1289875CAE04A57B46D3B9575CDDD39B4
+72BE5FDF45CF386E20C1B91B56B7B97189F047B437AA0F91CF159E0D3E08DEC7
+5709D19E861F9B4945A064D926BD11817D79F4D5DBA773B3C9F01EF3B20D0E52
+AD16FB23BA0CB36A6A5C9F9F83A0BE531B2BBE0E8417D20743D59DB7C5D6BE61
+8787D487872D98B6137456111B898E994E9988AB376FA6F99E96F8C75918C59E
+592983EBA0D041F1F5E175E95CC3B4C14D22EDC94B08558B974CCDDD75CC4585
+2FF045D19B584943A414189AB6847F73894F3E43D66DA3FD3E03AD57D5400B12
+7FD8D6EA4BE738C7D53E26C4955F327AA53718CB7FB06AB12865DAAB94965C62
+64CD2C9615C1DF655354D3BADD2F3A5E781C68B541EBF5BF577EBF1F2D51A6A0
+E3DA80D7CBCFE0969C9E8313C5AACD8B7EC9352E4A8406DA8652C26EBA514C80
+B6ED4043270F6C48EB1ADE631856F8377371AB4B9511FCC04170BCA23FAB33EF
+9ABCEC626F6C0D9DA520F4C9C817DF41E282D6B72E54877647A844C25D37F2A0
+10F9FCA354EEE01B2F639DA7C114F78ACC769613A0EECF9CDDC45691D9E8D657
+8D22C2DF47E54C4F1B24B59A6AE15DAF5A4D159CC0BB34E080A810A3C27B3B46
+65AC10B86C92E8DBEB25E1570644F3EA62E9CABB0E8FA7222080AFF5B280EE45
+68078867B4D074154311D47B9BE71D356699D91A3EA5493FC77B96DE761BF78B
+219D11234D8DB80EF36580116BAFAD33043F26671AEE559D72BDAECFD390191D
+8EFCD8D23A363B5748F3A068B83FA1F0C9CEDD9A9EC6568C7B32E0B76C2505F1
+10094191C526EC65E75E2B387B2EC54495CB9B72F471AF5DEBACBA5925DC3786
+03D0BD2D84C8ED209BA0CD4066FF6090641ED4EAB019E6EAD69F2B01D06467E1
+0A1389D19C6475B6A2781CC452A2F6F476C53BF01905665DF7A91A7FBC57564D
+0032691998703E3873DFD960E3CEBDC20D2CD067CFD70E27E1D71651AA5F12F7
+23F12734B6C9E14360DD8863B6C491A0FAAD83032E0934CA1AC81400A5690D36
+A9B21515019218A07E1C7BD6B7AB72274562BA309F3A10A1AFEEF4E440DB70AC
+6AC01D18C948A5AB66D5A7BA53DDF85E33291AD71B9881593BFA6059BF4586EC
+056F600550CAB4F79B129978892A520554C8B138993AFEE76C6581835E9B5487
+D17450211BC5F69F2E574A63AB9399D0376827C0D38A739CF22909F325305306
+606C947D76B0C9C246D92D07143EC8DF2EA62F376192F68940B8CF01496DD5A0
+FBDD0F19D2C4508D08D396D6E2D7BC7AD86F8E305AF42B1D405375CD409528D5
+5A95981B7FB5C10AED77EBA79407004354337A43F5A1DA3D32533625ED1C235D
+0A7BB5E4925C1C431132931FA276C75BC1499F347974BA1550A83E80C74CB792
+BE8A8C523239DFF62A19B0E1B0FA68B31BFA27AAEBB5D03DE5A9BEEB08E6EAB3
+4338F3EECA1CFFE0C9217428856FC51E89DF1BE9EAE94ABDD9F6CABE8384ADED
+29738867EAE40D2E9C84453EF97860A1A3C0B181FC868C3CC577C0E24507F014
+7E094E3DDAFDB85781331C937F12680F216D5956902B6D4844D0034AF9BC3561
+239BDCD3C4DDA727C61566B2303759BE4A0FAB3F51DBA231F6E9A7166916099C
+FC642208A0428660DAAC78A100248E33E32BF1FEEFB8FCD2299F1B20A328EA61
+4A2DD76BE58DECD015883921E41C3099E9F835F2B266C623D3991FCF192702B2
+0331689C02A5A3AE94864B9298626D4B2E211679774250114E3C9ABF44441206
+5425FF437C4638281F964B7A368E45973BBEF49D0B78C652944249A3F95A3261
+74E4FE359A52AC95DBAA15B6DDA67862E0C3759F9D09C716F116432EFC0B5732
+FFF93874B2177A69C9582975FF677A7D7DC13D082683F9A396D82778BE1DAE16
+8FFA6C0D2DB2C2AA560C17E73A0143D1213237728832978AEFA28086861975BF
+A5EC5AABE59CCA7EC15A2674AF4285F4172C97C8AA8A149A6EB5EA2881AE4C34
+999EA46085405A3E38F74C7E1FF3E1E327FA3DB88F1EEDF13843EA241FFB4E1A
+335C0EDAC47ED72DADC385D9D9B093894024BD27F4A23AF9B6B761135A8F4611
+CAC9EFCD98D36D81A8278022221E3402FD0AE7D90F3FCB68CE3BD0B0A96E0AE4
+0A2409EA7B4242A0896C532D2A0362C292E1A1A2BDAFBFB59A5D53BE8B243F56
+22CAB20CF79AE1C10EB88BE6EBC4006DB82E70365144E59458B604A4CAA8DA07
+37C183BC308D277CE2CF03EEB024423120DBEC9485A635AFFA6E5A6E47DAEA41
+D2A6204F6D1A45851AC4FE00B4DFF87054A1C5F14F9BF1BB0FFEFECDBB6E2E31
+C685C0DC971FB07405B15BE3ECEF2E2FD8E42B0715D82716BE7E82C2B04688AB
+D1146AAB0D2FAE29BF5F00220AD679162169DBB83A2CF6C1724B8BBAD065222F
+D24EB3A47B23C08D6636CE8A484FFA3F4807D75CD25150095F0F5E001C13D80E
+C4AB1B0C587366158E3B739712EC1CE08999A36C4A3AA1CA040F1599963ABF17
+BADAAAE4E1F3FA5C146E3B5A255867C63361E40E28B0863A0CDA0946BB7F7467
+F00DA505C783F203F8DE0C4BE0130DBA9BB645A6BC32E1EE16E19C1AF4D1917F
+D4E7F7A7E4A90BADA0FFC1CBD98901D85ADC60D76E9B06CBA3B21E77BA5F0CA4
+4A35E9D663C5F274189BE6E2B0A161F3E811BD2A5487AC5018E1CB3148D53034
+BEB0693456D2A4D592BE7E1AB4706872864FF96172645683525AA2DE240C46D5
+194EE3C0F05765291023912FAFABF0636EF5F89FE4275002D7BB349168B48086
+5806AFA82B223CF75E37DD7C8712F1E0EA899961FF1EEAEE668C2043BBCAE3DA
+CB07490FDE9629425D8CEF1DECA01856F13B1685244FCFAB653FD88CD94EBAF3
+9EFD747462A12E5D88A6B8BB3F610A19848A4E1ED512AD49099BCB6CCEBE16A0
+4131420E849564EFF92B9D9430CFF5FD5F596067AFCFC239684B23A8055CB43F
+22F5F3D5409C1DFC764E2F7C32513358FB8C9BC3DDE5E539A3246D15FC70D53A
+A4405BD858DDD072F4473971731395E1DB8DFA682AF0FC3BAB7B21093CD1CAF9
+43CC903653FDE7BEEBFAE123A3D53F112C682D86E8AB8523AC70A1AD5DD798A4
+0ED8E00F0B41740E71571DAAE53A9CE27DA5B90FB78126E7756800BB325D4B92
+B948D5609A1CF903EB1DCB970364016B35F4424DFF44DB3A18299D3A10B58C6D
+5893EDC2A9DA31326708319C8537D27C3700709AC4F6C7E73EAAF734CA40DBA2
+27E72DC7BF28BA815AFF155F470BF91B904D0CF61C67248BA36BE58ADF682E93
+AEC1D0E42CAAD345E586F5D9FBD4AE1509600EC9E7D24614B5C2E9C04BC2289B
+F46EFE6B2D81FB0554D0BE8B5820EF456B05DC16C53C0E13B43C52F4E3D80709
+844A0093D555EC1CD1202A8029915B4E0C1A890208034F96C05E486A32013936
+C27ED2BFC5C303D89EEF8B4693FDA01C6BD6E66ED529DB355C02FADC3AE6AB32
+8E86D5B3BF2A88BB039A2D3E9E8D78D4B96C268C26C55DE17EF62F5A482ADD98
+BA1B45ECF11BBF943BC8D8582711B11454C5A7C2E37DD7EEAE455AD5F5729F3E
+42DF093720894AEAFAFA47FB49B56354B2429E9D631B11BFBD98FECF975EA504
+7CF4CB2A3B0547B8133055A71C3CA2F39D7C2600170751E1715904B17017E590
+28A401AA80E150BA81B6A5C649EE21300AB003A4163D2C98ADA33820877FA650
+156F393B0FD54B627BE75849A75D0C8E0EE352941494C1EC959B83B8227CD447
+2762559912EE3F4B46B1D9C280DE220EB7E99C88558EFB21D0FF4F684118F20A
+8C37CD29CA8AC0B3AA113AA30B399A1491DF55D5E0E083DBD5E62F5F0A4D7B26
+31E52505D737933E083402C41EEB6105EBC32F6AC595A7ECAF6A614729F8EF7D
+773A12544E628FAAD1E87F78D6A86B8777E3282F8ED42569B0E85BAA3903AD1A
+7797C54AE808450FF5E1628643167D6E80672C0B41E67D279B859F31C73F9B61
+6D8D580708024FEAC208EDCAA6CC19D85CBA2C780DABDB8E738A6CA9B3ED2A3C
+1D3D5ACE823F7A03AC36E3B6946E323D64A8599F54CCC6E0828E2063BD9E5F5B
+A3124919F415C3EA54D8C92BA35EEAE0A88460CA3DCD1C84F74BC9CE074A9D7B
+D2C7D851BBD57EFEB0AC8D7CE0C5D7C7683D500A4CDF56744E0204975BB22323
+A059C2EF69C7FC65BFCF7AF377952F8466C5FB84C08F46E9D548A9433FA9FA40
+F303894403076B40CAE8F818D25EC5C69E9CB3052F48306FA95074389BAE93F1
+4F0075462E4304E598804E6C2619F8AC83FC6A7BC25BF5BE63372A28FAE5E25F
+F9117190BB58B73831EBB6053FC2775C2EE90984EEC876C0C78783EF496C29FE
+FE13082AB4E7D2F3D571A0121913F3EDDE8E2DFDA939076148E6C3ED9A7CFBAA
+5D55751C6F1219B2DEBC172CE1780FF62A2929A99405E167028D2375D4565280
+4D8DC6ACCCA0F5850EBC8F41742EC0444DEA4DECE4EA82AE125B99E35D84DF1B
+B35A97AC01963EB80E4A589F33D91D643ABBC17EB3911C3624334C484A6D4ECA
+CDDE40E1DB8C29A0488D25490E571D9753AFD77D51279B6B48017295013EFF5A
+E99E03E95B21C66283B129F2282EBE58656652AE08F8382FCF46D193EBEE2869
+1579F6DE3FFF2796C74DFEC3C659E77F044ED80952401DEA85F6733FACF11AEB
+90FBD53DB512EA6DAAA69C630A79E3BC3B86722563BC00423E98FAAE4F2CDADE
+8D9F73883039FDD31DF31259B82B3F1E88396437A738E570D01B3258E55753ED
+0DC0A494C0DF0259798E3E71348414B6B9D7701B2A0F41F0FA82C5BF094D2197
+DB6E81CD8D7456F4053BA8F9A7002AC2A1172D5FE99D32CCED020BFA87C46E05
+2FBC499702B9033DF5EBF1E3DDEB853BAA66F741BB2F194443B2250659B73CBF
+F3C8883DEDFD0ADADFA83094591B8E9EFEA597DF19005AF2F8ED8DCA7C60FD8A
+6989E7F18B9F771522B5528D227287A7C4AB5B6E22DDFC423B7E68A2CB6774F0
+581D8BA82B2BD78FC63FA98F8D49906C73F62AE5DAB8CEF6F0C66381A4BAD72E
+2797676CD7C9C9C62305D0D7CC0A408B0742E21D915374E5197C89FFFF78ACCF
+538456BCFEA68CDE41CE9628F1B81A7DBB4E3190854EEEB40510AFA39F688957
+3DECF0DB17F4C9037D109F68D67C10D36933E91BBF89A9A6521CAC80F0A6D8AB
+C1B9F0652045C4735294082D415D3B5BEDE7291BAC511E6BFA1FB05EC8EFA03F
+5A4B50D536E6E7957FD9A699AD13A6A8B5454308BE47598BF166999F938F370E
+2245029CCD87E85DA0E7C893CE285C708C42811A91A5248C24CA0CFCBB6E2CE5
+6588E8DD5702DF8B20E8BFA5BC17A11D2681CE7B59AA820155DD26442BF69221
+9A674365B68210B4B214A1B9668D25CB6B7D2F9B5465D7BC13094C938E580B5B
+E0EFAD9D143D1C9C1BA1FDCA1716EF4E5F5088DFC22D56881C397960138A2F00
+EB53261426B2AC78A903DF5B5E51E57441900C92455F397CE61BAFE24A6317BA
+F8817BC4013912422664D43A3FCC1CBE2393018E4175717E2F93717709A45D5A
+4A49937ED42D90E0AC699A3E925029A1DD1962D95BF5940872372F09CC158E69
+96B1A4FE9264FE82EE4B911D586D8CF742E13FAB2D66986BB08D26F0C6A23F80
+949F5B8127B0C8D80F287F182F4191747511A988ADD41B5FA8FCCCC7FE19615E
+DB5C4B313B4F6CFA9C440BA7EA2A2F68883CC059A8897F497556995772B81C4E
+EF69C998B3E38DCA845208EE191C4C7460DA335DC3C79FADEEA8730659185A7D
+DC1D91475CC45C34E025B2CADFBE2DD4C7ED708BD8C7CABFA1861B34350F8A33
+B8FA88250D1A601D99ADC281CC649D433DFD8B9DE54FE681580F81F3586DC9D4
+672BCFBE80493B9670EAF850FF54DEE0DEF7481053FF7FE2ECE8824AF1BE5819
+54AC05E75B2001E2EAA9F08E7ADA21B7F9B924CF30D3EC7F692E333356ED2587
+382AB244DB071EABB2A3578B98252D03D9FB32A0F23C76E14C540D98A1552C90
+442B6C396875DBF1FE432615674F3295F5D39E5B8707713A615448B87FA66DA3
+4A5FE24108B669582F5B2FA22D3A455C44D3256FCD9513C177FB1FF3831FDCC8
+9CE5B7BBE35F039877824CB0EF3B19BBEA0816C72D0957E4694294E8E4B7A1EE
+D9ACE021A7B7175AECCF434942A169A4D7986182942FE4D97A881CA26867F044
+2C88ADD735D0D0A1B0D4DA2D780C48EFBDDD0E7299870665DCCF3625A88580FF
+FD3A754F84E56BE59B29347C25BD4A68ECE88EF881D722E86143456131D7561D
+55C98F1FFDEA0048F0DA957F7DDE92F9D7D489E0CAB9002731809D9B4F389217
+E9A673107CC9353C974BBB156B3279966F2A972484C88DFD08CA205578ECFFB2
+AAD087A94BEF26B3C2CD6E09E3B4F437C0FB765C5C8EB4FB2913AF23B5E228ED
+669B214D240538F07FE5EFDBD4224CD70EF0B5E88ADC1E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR17
+%!PS-AdobeFont-1.1: CMR17 1.0
+%%CreationDate: 1991 Aug 20 16:38:24
+% 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 (CMR17) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR17 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 77 /M put
+dup 82 /R put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 105 /i put
+dup 108 /l put
+dup 110 /n put
+dup 114 /r put
+dup 117 /u put
+readonly def
+/FontBBox{-33 -250 945 749}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95
+A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801
+BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96
+96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC
+9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7
+E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A
+497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46
+4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD
+3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF
+B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8
+C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216
+9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F
+83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25
+A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B
+246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A
+7736A960F72AC01F733A11023832CD68FB6288A5977743F6F3F23E0C1657CF5D
+E8374835BDBD2DED3690C84A1EBB8E2383A5E49E610B6F5F0F5F5EC43CFD16FF
+24FEEFB92425CCB577E17FDE4EA6C50E1448DC5726A21888E25B6D6B52DA3D3C
+E4C4C6A73C176DFEB60B6B6191B336AC4F5BAA123E1B3B6FAE4B3FA9DC8F7E39
+335277EF2294315BE95F64EBDB1F393B293FD0FDB9DEE6C89082232013130D28
+9234FF12DF47D454558A1EE8603B2832772E5CA07D18B34A4763D5B890F7173F
+B8FEEF9AAF331DA30950536D399E8459850D254763E98257D748C6D982DDBE1B
+E07F60A5B5BF9665CB145BEE285F6B0D134C3514BDE075557FC36FBBED63B4AA
+1A1FF5031578F763120D1E6F0347436A0E202A244ED6F6FB4BE7FEB2E13E2936
+41685903279FE5D49008260496AADFE28AE4164CCA213BEF0F0C2467E7164B49
+F73C8985A2A61252F9375D003BCF5733E97F3A5B00EE922BFFF585DD8DA93D7A
+27F2E05D38A55A4C2B82F10D767C02370BF178C84B972ECE12CB49D05D92F0B0
+BA2F4953E0A17391745A667B1F7E92B8EBEB207CAA798106B6AA83F0EC03EDE2
+CF6A4F1FC9BBD22A0652FE91F6C6BE429086D40A629BA7BD8B9B834A2F8B6BB2
+1E036777CD11300B76173695F968FF122B916177EFB9A34E8B1A7DDE43DBAE5C
+3405421245F7015CBCE71CF94D1DB8A8D6C85A20B1B978F69C56A5F1031F4770
+6D074DCAE7D52A84608698225FACC08C2A3302E2D3E0768BFC22C3A613008BA2
+DD66FE4AFA42C7B2D77638191CDAE4D58B285120657E544D5B1E8E38F20E8F01
+CA35E6761BE93F70AB36518EACD2C28C558D5EB323F4D73D525A3C3B688598F6
+C40A8856DD9781401B81CAC9520742A84CBA6CE1CCC33F69291B6E56F035DC55
+97750BC5A2314DDCDBADFC8058D105AE718EF535B759EB9B75F1CE498EA958A9
+403CC34397698A78443CFA3B1A7F2036320F44A106BC72551AB221DF3F308BEC
+328EA34B6A5EBE3C9462DD036C17E5FC967B6B3DBFB2440B7A6AAA6C2BFC6C69
+2A809A62BEB8C2D5E762D0455830C8858A229D4E6148DAEC0AC3A9940AFBE928
+933AC697F6F2B7090E7569640FEC5AB5ABC994E32DC2768B484069A107CF6DF1
+0E643DB4016D5E84F0027F8ADD99192378D81F8676C06A4FB51C0F6EE8E7B3A1
+BF88E3B5AE745196DC156746516852AADC90BD1D9171180964395D3665F1D462
+5C320738E6D8087D4C8CF778B6083D93705D80FD04C6D271589EB48A4B088C43
+00FD429FDE925279038960E39AB0B038145D977717C6D7021C43D02055BD00F7
+0663AF4EC9466141381BA2453B043FA7F736E301AF000E9318505D359A1D4435
+1FEE3FA1161B47678560D837DBE9881E2AE8844C817EBF17A46BE3BDBD1926FA
+DE67AFC7534843E251E4861FB462CE8BE5A4D570A8F7D7B6EDF36742DB10B1AA
+DCF9A6533DF28A85BB2BBD41E3F57AD1E4D77FEBACC76905843B6F2D7FBC5552
+0092371C7282225CB47816682CB39BB011E90A09E10777879476E8922BB5934F
+BFE58A1ACDA5E18A1956C076B26376514FED265A2C9AD72BE950745C5280E275
+08598C9E86104DD41D05AA5BF59812A45051C11FC7CCB72E1CF4A05718BEF514
+A2EA7196A7477D10D7F87A7FB51D568F4D0B4008D3187ED93D2F5FF5ABB1FC44
+77136A0EB613F6E983E6075B792D6E7FC882F808687F3AD875FD12DEAD2B0E1B
+2983D440E51FFEB580C6F518448A612EE1B001C00DFB70DAF0184964689BC61C
+38477F5438B33E733270914148C0B000BA08548156477400B6472693435844F8
+E97BF25A0312B008D81D6D6155407867A8BA1C59036F91C3ED25511CAAA21392
+CAEC3C9228AFF2CCF7E62D0E7E14C2569A80CE585B09B39F49AC0AAC9F02218C
+AE92273F29014713BBA20F3AC6DA614C51456E423E624F84FC88E691AB8E7732
+EC3B764D8B3A8676D189E40D0D97C9E896AE6B84CE32AEFEAF4648C7D02ABBA3
+289226665A8D1F822A4411CDA8D71073F9431339832A72360E21C5EB53F667BC
+FE1A1531314FAB6EB049873944C4F857D4A15F09DC9BC930DA44DAAC5F980A03
+6807391391FBD574DB65FC517B18F43C4B59E033B7BF3FD4AFC3324B3016CC01
+596086D15F873F3FFB477A987C5FD5B246F226DBFC8AE8AA8BDE191124608481
+3CDE339AAF72E5407B81B77E134C74C19A1B26D25D3E7279F17CACA101147E25
+3953DBD17ADB2A814723AD206E510E9C70565479D7B691B1F3838335A1A226C7
+5E008399C2172F1F81F4F135337A84E852CD1D79ECAAAA06DEA12C8D3DEB2FF1
+2484538C4905D6848B3A5DE53001618E402EC758D490CAFFD341ED89B7902AB7
+CCF32868920DA9F5A8F7FB089AA3EAEA03AE299CD0055CAF9D354519C8B33DFF
+1C096597732BC112921389463CDDFEE2BBF96A8FAC04A23C5A62A84DFCC7EA0B
+77A9FFF2F198A07CBF1BFE27355ED3461DC31300C048E60F897CF111C1FAC30D
+362993113C1763F15FB913CE1D50BD5245945FC27294779A030DDB7FB6C2585C
+BAFF9714223BCA8024DDAACF94988E5C36831617CA1A4B15A5D1A4DF222191CC
+A023E6AD9ACCBBCE640DE4443D1D4F8882CE5A8FFD14F9C4DF2B986EF39734D7
+D94A1C00EE2451922952A9577012F5C00E02F3D9EB0A0F3FEE1757A19384141B
+A943A382BB247E0F1C02027B9A64C8DCB2233187ED4B0E2F19457EACA7FCE9F9
+33B578210E9251561BD4BA8E869DB1A9DB9CAD8F0B8DD64D8E8DB3599BD280BD
+8D63AD6BDA2012B7B20FCA00402C77C332676CC66B1D863117B5014BDADECC1C
+1E615F94148267E83300F597B445C0B855E8FE9B1B869CF40DA4519C2A898631
+566946E5FFC3C1353B18280D48B77457CFA1A6EFD75766C33B87A4D7528ACD39
+A4DBEE64769D4D305828161B8BE5831BC4745F5A9BF0D94D734C4E412777CE08
+C5DBB70D2299718206EDCE622E40E2A4A35E19C7F1D7A9418ED2805B4864FEEF
+327D5BC534126537585C419258272C2543B9E27176F2DD78BEFDB7B0634911D1
+87329ECCB34357E736704F0E950C723C267492ACEC459B4256789748F811CACB
+C4277E44A1E5DAD99ED86D97E1107083125E745E64DE879A2A2545B085055ED1
+0DE63CA91A963C18A0CB3DEADF33D527EBD2728715F627F858B331CF49B32B8B
+FC1EF92ECDC60CC9C37D6308BF63F4F2F6D1AECE71377826D9C1DA4457EB9576
+7551
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+TeXDict begin 39139632 55387786 1000 600 600 (cddlibman.dvi)
+@start /Fa 173[66 82[{}1 90.9091 /MSBM10 rf /Fb 139[51
+51 51 1[51 51 9[51 101[{}6 99.6264 /CMTT12 rf /Fc 255[55{}1
+66.4176 /CMSY8 rf /Fd 133[50 59 3[62 44 44 46 1[62 56
+62 1[31 2[31 3[51 1[50 62 54 13[62 3[84 1[106 67 2[42
+2[70 1[86 81 12[56 56 56 56 56 56 1[56 31 46[{}31 99.6264
+/CMBX12 rf /Fe 149[25 106[{}1 49.8132 /CMMI6 rf /Ff 132[46
+37 44 42 60 42 49 30 37 38 42 46 46 51 74 23 42 1[28
+46 42 28 42 46 42 42 46 10[68 68 65 51 66 1[62 70 68
+82 57 1[48 35 68 70 1[62 69 65 1[68 6[28 6[46 46 46 46
+1[28 33 28 2[37 37 28 26[51 12[{}56 90.9091 /CMTI10 rf
+/Fg 139[25 33 32 3[43 2[37 29 24 4[36 15[41 84[{}9 66.4176
+/CMMI8 rf /Fh 200[35 3[35 35 35 5[55 43[{}5 66.4176 /CMR8
+rf /Fi 145[45 3[25 2[45 45 10[61 33[51 51 5[61 28[71
+71 17[71 1[71{}12 90.9091 /CMSY10 rf /Fj 133[42 1[52
+1[44 1[33 43 41 41 46 44 55 80 1[47 37 31 1[43 1[42 47
+39 39 13[53 56 69 1[58 3[62 77 9[68 2[71 45 1[25 25 58[{}30
+90.9091 /CMMI10 rf /Fk 133[44 1[44 1[44 1[44 44 44 2[44
+44 1[44 2[44 3[44 44 44 1[44 14[44 4[44 3[44 2[44 44
+1[44 67[{}20 83.022 /CMTT10 rf /Fl 134[44 44 60 44 46
+32 33 33 44 46 42 46 69 23 44 1[23 46 42 25 37 46 37
+46 42 9[85 62 1[60 46 61 1[57 2[76 2[43 1[62 65 54 57
+63 60 1[62 7[42 4[42 3[42 1[23 28 23 2[32 32 26[46 46
+12[{}49 83.022 /CMR10 rf /Fm 139[37 38 39 14[42 53 46
+31[72 65[{}7 83.022 /CMBX10 rf /Fn 130[48 1[48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 1[48 1[48 1[48 48 2[48 48 48 48 48
+48 1[48 48 48 48 48 2[48 48 48 48 48 48 48 48 48 2[48
+48 1[48 3[48 1[48 48 48 48 48 48 48 48 48 48 1[48 48
+48 1[48 2[48 35[{}71 90.9091 /CMTT10 rf /Fo 128[45 45
+2[45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48
+28 25 51 45 28 40 51 40 51 45 3[25 45 25 56 68 1[93 68
+68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69
+66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 45 45
+45 45 25 30 25 71 45 35 35 25 1[76 2[45 19[76 51 51 53
+11[{}86 90.9091 /CMR10 rf /Fp 134[55 55 1[55 58 41 41
+43 55 58 52 58 87 29 1[32 29 58 52 32 48 58 46 58 51
+10[79 80 73 58 2[71 79 82 99 63 2[40 82 82 66 69 80 76
+74 79 7[52 52 52 52 52 52 52 52 52 52 1[29 35 3[41 41
+27[58 12[{}56 90.9091 /CMBX10 rf /Fq 134[71 71 97 1[75
+52 53 55 1[75 67 75 112 37 71 41 37 75 67 41 61 75 60
+75 65 10[102 103 94 75 100 1[92 101 105 128 81 2[50 105
+106 85 88 103 97 96 102 7[67 67 67 67 67 67 67 67 67
+2[37 45 3[52 52 40[{}55 119.552 /CMBX12 rf /Fr 133[43
+51 1[70 51 54 38 38 38 1[54 49 54 81 27 51 1[27 54 1[30
+43 54 43 54 49 6[60 5[70 54 72 2[76 3[76 1[35 73 1[64
+66 1[70 9[49 49 49 2[49 1[49 1[49 1[27 33 27 2[38 38
+40[{}44 99.6264 /CMR12 rf /Fs 138[73 2[51 3[73 1[36 2[36
+2[40 58 73 58 73 66 14[98 4[122 77[{}13 143.462 /CMR17
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: a4
+a4
+%%EndPaperSize
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 1238 409 a Fs(cddlib)44 b(Reference)g(Man)l(ual)
+1635 661 y Fr(Komei)33 b(F)-8 b(ukuda)1235 777 y(Institute)34
+b(for)e(Op)s(erations)g(Researc)m(h)957 894 y(and)g(Institute)i(of)e
+(Theoretical)i(Computer)g(Science)997 1010 y(ETH)g(Zen)m(trum,)f
+(CH-8092)f(Zuric)m(h,)h(Switzerland)916 1219 y(\(cddlib)g(v)m(er.)45
+b(0.94,)32 b(man)m(ual)h(v)m(er.)45 b(F)-8 b(ebruary)32
+b(7,)h(2008\))0 1596 y Fq(Con)l(ten)l(ts)0 1800 y Fp(1)84
+b(In)m(tro)s(duction)3133 b(2)0 2004 y(2)84 b(P)m(olyhedra)36
+b(H-)f(and)g(V-F)-9 b(ormats)35 b(\(V)-9 b(ersion)35
+b(1999\))1670 b(3)0 2208 y(3)84 b(Basic)36 b(Ob)6 b(ject)34
+b(T)m(yp)s(es)h(\(Structures\))g(in)g(cddlib)1784 b(4)0
+2411 y(4)84 b(Library)35 b(F)-9 b(unctions)2892 b(7)136
+2524 y Fo(4.1)94 b(Library)30 b(Initialization)47 b(.)e(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)128
+b(7)136 2637 y(4.2)94 b(Core)31 b(F)-8 b(unctions)65
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)128 b(7)136 2750 y(4.3)94 b(Data)32
+b(Manipulations)86 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)f(.)83 b(11)345 2863 y(4.3.1)106
+b(Num)m(b)s(er)30 b(Assignmen)m(ts)24 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(11)345 2976 y(4.3.2)106
+b(Arithmetic)32 b(Op)s(erations)e(for)g Fn(mytype)e Fo(Num)m(b)s(ers)47
+b(.)e(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)83 b(11)345 3089 y(4.3.3)106 b(Prede\014ned)29
+b(Constan)m(ts)94 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+f(.)83 b(12)345 3202 y(4.3.4)106 b(Sign)30 b(Ev)-5 b(aluation)32
+b(and)d(Comparison)h(for)g Fn(mytype)f Fo(Num)m(b)s(ers)58
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)83
+b(12)345 3315 y(4.3.5)106 b(P)m(olyhedra)31 b(Data)h(Manipulation)k(.)
+46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(12)345 3428
+y(4.3.6)106 b(LP)30 b(Data)i(Manipulation)j(.)46 b(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(13)345 3540 y(4.3.7)106
+b(Matrix)32 b(Manipulation)k(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)83 b(13)136 3653 y(4.4)94 b(Input/Output)29
+b(F)-8 b(unctions)47 b(.)f(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)83 b(14)136 3766 y(4.5)94 b(Obsolete)32
+b(F)-8 b(unctions)49 b(.)d(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(15)136 3879 y(4.6)94
+b(Set)31 b(F)-8 b(unctions)31 b(in)f Fn(setoper)e Fo(library)66
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(15)0
+4083 y Fp(5)h(An)35 b(Extension)g(of)g(the)g(CDD)g(Library)g(in)g(GMP)g
+(mo)s(de)1393 b(16)0 4287 y(6)84 b(Examples)3219 b(16)0
+4491 y(7)84 b(Numerical)36 b(Accuracy)2724 b(16)0 4694
+y(8)84 b(Other)34 b(Useful)i(Co)s(des)2752 b(16)0 4898
+y(9)84 b(Co)s(des)35 b(Using)h(Cddlib)2740 b(17)1766
+5090 y Fm(Abstract)352 5234 y Fl(This)31 b(is)g(a)f(reference)h(man)n
+(ual)f(for)g(cddlib-094.)46 b(The)31 b(man)n(ual)g(describ)r(es)f(the)i
+(library)d(functions)j(and)227 5334 y(data)j(t)n(yp)r(es)h(implemen)n
+(ted)g(in)g(the)g(cddlib)h(C-library)d(whic)n(h)h(is)h(to)f(p)r(erform)
+h(fundamen)n(tal)f(p)r(olyhedral)227 5433 y(computations)24
+b(suc)n(h)h(as)f(represen)n(tation)f(con)n(v)n(ersions)f(and)i(linear)g
+(programming)e(in)j(b)r(oth)g(\015oating-p)r(oin)n(t)1926
+5682 y Fo(1)p eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 227 44 a Fl(and)38 b(GMP)f(rational)f(exact)h
+(arithmetic.)66 b(Please)37 b(read)f(the)i(accompan)n(ying)e(README)h
+(\014le)h(and)f(test)227 144 y(programs)26 b(to)h(complemen)n(t)h(the)g
+(man)n(ual.)352 243 y(The)37 b(new)h(functions)g(added)f(in)h(this)g(v)
+n(ersion)e(include)i Fk(dd)p 2295 243 27 4 v 30 w(MatrixCanonicaliz)o
+(e)31 b Fl(to)38 b(\014nd)g(a)f(non-)227 343 y(redundan)n(t)26
+b(prop)r(er)g(H-)g(or)f(V-represen)n(tation,)g Fk(dd)p
+1854 343 V 31 w(FindRelativeInt)o(eri)o(or)20 b Fl(to)26
+b(\014nd)h(a)f(relativ)n(e)f(in)n(terior)227 443 y(p)r(oin)n(t)40
+b(of)f(an)h(H-p)r(olyhedron,)h(and)e Fk(dd)p 1517 443
+V 31 w(ExistsRestricted)o(Fac)o(e)33 b Fl(\(F)-7 b(ark)i(as-t)n(yp)r(e)
+39 b(alternativ)n(e)f(theorem)227 542 y(v)n(eri\014er\))f(to)h(c)n(hec)
+n(k)g(the)g(existence)g(of)g(a)g(p)r(oin)n(t)g(satisfying)g(a)g(sp)r
+(eci\014ed)g(system)g(of)g(linear)g(inequalities)227
+642 y(p)r(ossibly)27 b(including)h(m)n(ultiple)g(strict)g
+(inequalities.)352 742 y(The)f(new)g(functions)h(are)e(particularly)g
+(imp)r(ortan)n(t)h(for)f(the)i(dev)n(elopmen)n(t)e(of)i(related)e(soft)
+n(w)n(are)g(pac)n(k-)227 841 y(ages)h(MinkSum)h(\(b)n(y)f(Ch.)37
+b(W)-7 b(eib)r(el\))29 b(and)f(Gfan)f(\(b)n(y)h(Anders)f(Jensen\),)0
+1126 y Fq(1)135 b(In)l(tro)t(duction)0 1329 y Fo(The)34
+b(program)h(cddlib)f(is)h(an)g(e\016cien)m(t)h(implemen)m(tation)g([16)
+r(])f(of)g(the)g(double)f(description)h(Metho)s(d)g([19)q(])g(for)0
+1442 y(generating)29 b(all)f(v)m(ertices)i(\(i.e.)41
+b(extreme)28 b(p)s(oin)m(ts\))g(and)f(extreme)h(ra)m(ys)g(of)g(a)g
+(general)g(con)m(v)m(ex)h(p)s(olyhedron)e(giv)m(en)0
+1555 y(b)m(y)j(a)h(system)g(of)f(linear)h(inequalities:)1032
+1750 y Fj(P)38 b Fo(=)25 b Fi(f)p Fj(x)h Fo(=)f(\()p
+Fj(x)1530 1764 y Fh(1)1570 1750 y Fj(;)15 b(x)1662 1764
+y Fh(2)1701 1750 y Fj(;)g(:)g(:)g(:)i(;)e(x)1955 1765
+y Fg(d)1996 1750 y Fo(\))2031 1712 y Fg(T)2111 1750 y
+Fi(2)25 b Fj(R)2267 1712 y Fg(d)2333 1750 y Fo(:)g Fj(b)20
+b Fi(\000)g Fj(Ax)26 b Fi(\025)f Fo(0)p Fi(g)0 1944 y
+Fo(where)37 b Fj(A)h Fo(is)f(a)h(giv)m(en)h Fj(m)24 b
+Fi(\002)h Fj(d)38 b Fo(real)g(matrix)g(and)f Fj(b)g Fo(is)h(a)f(giv)m
+(en)i(real)f Fj(m)p Fo(-v)m(ector.)64 b(In)37 b(the)g(mathematical)j
+(lan-)0 2057 y(guage,)e(the)e(computation)g(is)g(the)f(transformation)h
+(of)g(an)f Ff(H-r)-5 b(epr)g(esentation)45 b Fo(of)35
+b(a)h(con)m(v)m(ex)h(p)s(olytop)s(e)e(to)i(an)0 2170
+y Ff(V-r)-5 b(epr)g(esentation)p Fo(.)141 2283 y(cddlib)38
+b(is)h(a)h(C-library)e(v)m(ersion)h(of)h(the)f(previously)f(released)i
+(C-co)s(de)f(cdd/cdd+.)65 b(In)39 b(order)f(to)i(mak)m(e)0
+2396 y(this)31 b(library)g(v)m(ersion,)i(a)e(large)i(part)e(of)h(the)f
+(cdd)g(source)g(\(V)-8 b(ersion)33 b(0.61\))g(has)e(b)s(een)g
+(rewritten.)43 b(This)31 b(library)0 2509 y(v)m(ersion)j(is)f(more)g
+(\015exible)g(since)h(it)f(can)g(b)s(e)g(called)h(from)f(other)g
+(programs)g(in)f(C/C++.)48 b(Unlik)m(e)34 b(cdd/cdd+,)0
+2622 y(cddlib)c(can)h(handle)f(an)m(y)h(general)h(input)e(and)g(is)h
+(more)f(general.)43 b(F)-8 b(urtthermore,)31 b(additional)h(functions)e
+(ha)m(v)m(e)0 2735 y(b)s(een)g(written)g(to)h(extend)g(its)f
+(functionalit)m(y)-8 b(.)141 2848 y(One)31 b(useful)f(feature)h(of)g
+(cddlib/cdd/cdd+)e(is)i(its)h(capabilit)m(y)g(of)f(handling)f(the)h
+(dual)g(\(rev)m(erse\))h(problem)0 2961 y(without)38
+b(an)m(y)g(transformation)h(of)f(data.)64 b(The)37 b(dual)h
+(transformation)g(problem)g(of)g(a)g(V-represen)m(tation)i(to)0
+3073 y(a)e(minimal)g(H-represen)m(tation)h(and)e(is)h(often)g(called)h
+(the)f Ff(\(c)-5 b(onvex\))40 b(hul)5 b(l)40 b(pr)-5
+b(oblem)7 b Fo(.)64 b(More)38 b(explicitly)-8 b(,)42
+b(is)c(to)0 3186 y(obtain)27 b(a)f(linear)h(inequalit)m(y)g(represen)m
+(tation)h(of)e(a)h(con)m(v)m(ex)g(p)s(olyhedron)e(giv)m(en)j(as)e(the)g
+(Mink)m(o)m(wski)i(sum)d(of)h(the)0 3299 y(con)m(v)m(ex)32
+b(h)m(ull)e(of)h(a)g(\014nite)f(set)h(of)f(p)s(oin)m(ts)h(and)e(the)i
+(nonnegativ)m(e)h(h)m(ull)e(of)h(a)g(\014nite)f(set)h(of)f(p)s(oin)m
+(ts)h(in)f Fj(R)3532 3266 y Fg(d)3572 3299 y Fo(:)1007
+3494 y Fj(P)38 b Fo(=)25 b Fj(conv)s Fo(\()p Fj(v)1463
+3508 y Fh(1)1503 3494 y Fj(;)15 b(:)g(:)g(:)i(;)e(v)1749
+3508 y Fg(n)1796 3494 y Fo(\))21 b(+)f Fj(nonneg)s Fo(\()p
+Fj(r)2316 3508 y Fg(n)p Fh(+1)2453 3494 y Fj(;)15 b(:)g(:)g(:)h(;)f(r)
+2695 3508 y Fg(n)p Fh(+)p Fg(s)2830 3494 y Fo(\))p Fj(;)0
+3689 y Fo(where)30 b(the)g Ff(Minkowski)j(sum)g(of)g(two)g(subsets)g
+Fj(S)k Ff(and)d Fj(T)43 b Fo(of)31 b Fj(R)2184 3656 y
+Fg(d)2254 3689 y Fo(is)g(de\014ned)e(as)1277 3884 y Fj(S)c
+Fo(+)20 b Fj(T)38 b Fo(=)25 b Fi(f)p Fj(s)20 b Fo(+)g
+Fj(t)25 b Fi(j)p Fj(s)g Fi(2)g Fj(S)36 b Fo(and)29 b
+Fj(t)c Fi(2)g Fj(T)13 b Fi(g)p Fj(:)0 4078 y Fo(As)38
+b(w)m(e)h(see)g(in)f(this)g(man)m(ual,)j(the)e(computation)g(can)f(b)s
+(e)g(done)g(in)g(straigh)m(tforw)m(ard)h(manner.)64 b(Unlik)m(e)39
+b(the)0 4191 y(earlier)29 b(v)m(ersions)f(of)g(cdd/cdd+)f(that)h
+(assume)g(certain)h(regularit)m(y)g(conditions)f(for)g(input,)g(cddlib)
+f(is)h(designed)0 4304 y(to)40 b(do)f(a)g(correct)i(transformation)e
+(for)g(an)m(y)h(general)g(input.)66 b(The)39 b(user)f(m)m(ust)h(b)s(e)g
+(a)m(w)m(are)h(of)g(the)f(fact)h(that)0 4417 y(in)g(certain)i(cases)g
+(the)e(transformation)h(is)g(not)g(unique)f(and)g(there)h(are)g(p)s
+(olyhedra)e(with)i(in\014nitely)f(man)m(y)0 4530 y(represen)m(tations.)
+54 b(F)-8 b(or)35 b(example,)i(a)e(line)g(segmen)m(t)g(\(1-dimensional)
+h(p)s(olytop)s(e\))f(in)f Fj(R)3055 4497 y Fh(3)3129
+4530 y Fo(has)g(in\014nitely)g(man)m(y)0 4643 y(minimal)43
+b(H-represen)m(tations,)48 b(and)43 b(a)g(halfspace)h(in)f(the)g(same)h
+(space)g(has)e(in\014nitely)i(man)m(y)f(minimal)g(V-)0
+4756 y(represen)m(tations.)f(cddlib)29 b(generates)j(merely)f(one)g
+(minimal)f(represen)m(tation.)141 4869 y(cddlib)g(comes)h(with)e(an)h
+(LP)g(co)s(de)h(to)g(solv)m(e)g(the)f(general)i(linear)e(programming)g
+(\(LP\))g(problem)g(to)h(maxi-)0 4982 y(mize)g(\(or)g(minimize\))g(a)g
+(linear)f(function)h(o)m(v)m(er)g(p)s(olyhedron)e Fj(P)13
+b Fo(.)41 b(It)30 b(is)h(useful)e(mainly)i(for)f(solving)h(dense)f
+(LP's)0 5094 y(with)35 b(large)i Fj(m)f Fo(\(sa)m(y)-8
+b(,)39 b(up)34 b(to)j(few)e(h)m(undred)f(thousands\))h(and)g(small)i
+Fj(d)f Fo(\(sa)m(y)-8 b(,)38 b(up)d(to)i(100\).)58 b(It)36
+b(implemen)m(ts)g(a)0 5207 y(revised)30 b(dual)g(simplex)h(metho)s(d)e
+(that)i(up)s(dates)f(\()p Fj(d)21 b Fo(+)f(1\))h Fi(\002)f
+Fo(\()p Fj(d)g Fo(+)g(1\))31 b(matrix)g(for)f(a)h(piv)m(ot)g(op)s
+(eration.)141 5320 y(The)k(program)f(cddlib)h(has)f(an)h(I/O)g
+(routines)g(that)g(read)g(and)g(write)g(\014les)g(in)f
+Ff(Polyhe)-5 b(dr)g(a)40 b(format)45 b Fo(whic)m(h)0
+5433 y(w)m(as)32 b(de\014ned)f(b)m(y)h(Da)m(vid)h(Avis)f(and)f(the)h
+(author)g(in)f(1993,)k(and)c(has)h(b)s(een)f(up)s(dated)f(in)i(1997)i
+(and)d(1999.)47 b(The)1926 5682 y(2)p eop end
+%%Page: 3 3
+TeXDict begin 3 2 bop 0 44 a Fo(program)40 b(called)i(lrs)e(and)f
+(lrslib)i([2])g(dev)m(elop)s(ed)f(b)m(y)h(Da)m(vid)g(Avis)g(is)f(a)h
+(C-implemen)m(tation)h(of)e(the)h(rev)m(erse)0 157 y(searc)m(h)d
+(algorithm)g([4])f(for)g(the)g(same)h(en)m(umeration)f(purp)s(ose,)g
+(and)g(it)g(conforms)g(to)h(P)m(olyhedra)f(format)g(as)0
+270 y(w)m(ell.)k(Hop)s(efully)-8 b(,)30 b(this)g(compatibilit)m(y)h(of)
+f(the)f(t)m(w)m(o)i(programs)e(enables)h(users)e(to)i(use)g(b)s(oth)e
+(programs)h(for)g(the)0 383 y(same)35 b(input)e(\014les)h(and)g(to)h(c)
+m(ho)s(ose)h(whic)m(hev)m(er)e(is)h(useful)e(for)i(their)f(purp)s
+(oses.)51 b(F)-8 b(rom)35 b(our)e(exp)s(eriences)i(with)0
+496 y(relativ)m(ely)40 b(large)f(problems,)h(the)e(t)m(w)m(o)h(metho)s
+(ds)f(are)g(b)s(oth)f(useful)h(and)f(p)s(erhaps)f(complemen)m(tary)k
+(to)e(eac)m(h)0 609 y(other.)61 b(In)36 b(general,)k(the)d(program)g
+(cddlib)g(tends)f(to)i(b)s(e)e(e\016cien)m(t)j(for)e(highly)g
+(degenerate)h(inputs)e(and)g(the)0 722 y(program)30 b(rs)g(tends)g(to)h
+(b)s(e)f(e\016cien)m(t)i(for)e(nondegenerate)h(or)f(sligh)m(tly)i
+(degenerate)g(problems.)141 835 y(Although)39 b(the)h(program)f(can)g
+(b)s(e)g(used)f(for)h(nondegenerate)h(inputs,)h(it)e(migh)m(t)h(not)g
+(b)s(e)e(v)m(ery)i(e\016cien)m(t.)0 947 y(F)-8 b(or)38
+b(nondegenerate)f(inputs,)h(other)f(a)m(v)-5 b(ailable)40
+b(programs,)e(suc)m(h)f(as)g(the)g(rev)m(erse)h(searc)m(h)f(co)s(de)g
+(lrs)g(or)g(qh)m(ull)0 1060 y(\(dev)m(elop)s(ed)c(b)m(y)g(the)g
+(Geometry)g(Cen)m(ter\),)i(migh)m(t)e(b)s(e)f(more)h(e\016cien)m(t.)49
+b(See)32 b(Section)i(8)f(for)f(p)s(oin)m(ters)h(to)g(these)0
+1173 y(co)s(des.)38 b(The)22 b(pap)s(er)g([3])h(con)m(tains)h(man)m(y)f
+(in)m(teresting)h(results)e(on)g(p)s(olyhedral)g(computation)i(and)e
+(exp)s(erimen)m(tal)0 1286 y(results)30 b(on)g(cdd+,)g(lrs,)g(qh)m(ull)
+h(and)e(p)s(orta.)141 1399 y(This)d(program)h(can)h(b)s(e)e
+(distributed)g(freely)i(under)d(the)j(GNU)f(GENERAL)h(PUBLIC)e
+(LICENSE.)g(Please)0 1512 y(read)k(the)h(\014le)f(COPYING)g(carefully)h
+(b)s(efore)f(using.)141 1625 y(I)e(will)g(not)g(tak)m(e)h(an)m(y)f
+(resp)s(onsibilit)m(y)g(of)g(an)m(y)g(problems)f(y)m(ou)h(migh)m(t)g
+(ha)m(v)m(e)h(with)f(this)f(program.)40 b(But)28 b(I)f(will)0
+1738 y(b)s(e)37 b(glad)h(to)g(receiv)m(e)h(bug)d(rep)s(orts)h(or)g
+(suggestions)h(at)g(the)g(e-mail)g(addresses)f(ab)s(o)m(v)m(e.)63
+b(If)37 b(cddlib)f(turns)g(out)0 1851 y(to)d(b)s(e)f(useful,)g(please)h
+(kindly)f(inform)g(me)g(of)h(what)f(purp)s(oses)f(cdd)h(has)g(b)s(een)f
+(used)h(for.)46 b(I)33 b(will)f(b)s(e)g(happ)m(y)g(to)0
+1964 y(include)h(a)h(list)g(of)f(applications)i(in)e(future)f
+(distribution)h(if)g(I)g(receiv)m(e)j(enough)d(replies.)49
+b(The)33 b(most)h(p)s(o)m(w)m(erful)0 2077 y(supp)s(ort)29
+b(for)h(free)g(soft)m(w)m(are)i(dev)m(elopmen)m(t)g(is)e(user's)g
+(appreciation)i(and)d(collab)s(oration.)0 2359 y Fq(2)135
+b(P)l(olyhedra)45 b(H-)g(and)g(V-F)-11 b(ormats)44 b(\(V)-11
+b(ersion)46 b(1999\))0 2645 y Fo(Ev)m(ery)34 b(con)m(v)m(ex)h(p)s
+(olyhedron)d(has)h(t)m(w)m(o)i(represen)m(tations,)g(one)f(as)g(the)f
+(in)m(tersection)i(of)f(\014nite)f(halfspaces)h(and)0
+2757 y(the)h(other)g(as)g(Mink)m(o)m(wski)h(sum)e(of)i(the)f(con)m(v)m
+(ex)h(h)m(ull)f(of)g(\014nite)g(p)s(oin)m(ts)g(and)f(the)h(nonnegativ)m
+(e)i(h)m(ull)e(of)g(\014nite)0 2870 y(directions.)41
+b(These)30 b(are)h(called)h(H-represen)m(tation)g(and)d(V-represen)m
+(tation,)k(resp)s(ectiv)m(ely)-8 b(.)141 2983 y(Naturally)32
+b(there)g(are)f(t)m(w)m(o)i(basic)e(P)m(olyhedra)h(formats,)g(H-format)
+g(for)e(H-represen)m(tation)j(and)e(V-format)0 3096 y(for)h(V-represen)
+m(tation.)49 b(These)33 b(t)m(w)m(o)h(formats)f(are)g(designed)f(to)h
+(b)s(e)f(almost)i(indistinguishable,)f(and)f(in)g(fact,)0
+3209 y(one)h(can)h(almost)g(pretend)e(one)h(for)g(the)g(other.)49
+b(There)32 b(is)h(some)h(asymmetry)f(arising)g(from)f(the)h(asymmetry)0
+3322 y(of)e(t)m(w)m(o)g(represen)m(tations.)141 3435
+y(First)37 b(w)m(e)g(start)g(with)f(the)h(H-represen)m(tation.)60
+b(Let)37 b Fj(A)g Fo(b)s(e)f(an)g Fj(m)24 b Fi(\002)g
+Fj(d)37 b Fo(matrix,)h(and)e(let)i Fj(b)e Fo(b)s(e)g(a)h(column)0
+3548 y Fj(m)p Fo(-v)m(ector.)60 b(The)36 b(P)m(olyhedra)g(format)h(\()p
+Ff(H-format)g Fo(\))g(of)f(the)g(system)72 b Fj(b)24
+b Fi(\000)f Fj(Ax)36 b Fi(\025)e Fp(0)72 b Fo(of)36 b
+Fj(m)g Fo(inequalities)h(in)f Fj(d)0 3661 y Fo(v)-5 b(ariables)31
+b Fj(x)25 b Fo(=)g(\()p Fj(x)637 3675 y Fh(1)677 3661
+y Fj(;)15 b(x)769 3675 y Fh(2)809 3661 y Fj(;)g(:)g(:)g(:)h(;)f(x)1062
+3676 y Fg(d)1103 3661 y Fo(\))1138 3628 y Fg(T)1224 3661
+y Fo(is)p 141 3808 1178 4 v 191 3887 a(v)-5 b(arious)30
+b(commen)m(ts)191 4000 y Fp(H-represen)m(tation)191 4113
+y(\(linearit)m(y)k Fj(t)60 b(i)770 4127 y Fh(1)870 4113
+y Fj(i)901 4127 y Fh(2)1001 4113 y Fj(:)15 b(:)g(:)61
+b(i)1198 4127 y Fg(t)1228 4113 y Fp(\))191 4226 y(b)s(egin)191
+4339 y Fj(m)99 b(d)21 b Fo(+)f(1)100 b(n)m(um)m(b)s(ert)m(yp)s(e)211
+4452 y Fj(b)153 b Fi(\000)p Fj(A)191 4564 y Fp(end)191
+4677 y Fo(v)-5 b(arious)30 b(options)p 141 4715 V 0 4869
+a(where)38 b(n)m(um)m(b)s(ert)m(yp)s(e)f(can)i(b)s(e)f(one)h(of)g(in)m
+(teger,)j(rational)e(or)e(real.)66 b(When)38 b(rational)i(t)m(yp)s(e)f
+(is)f(selected,)k(eac)m(h)0 4982 y(comp)s(onen)m(t)26
+b(of)h Fj(b)f Fo(and)f Fj(A)h Fo(can)h(b)s(e)e(sp)s(eci\014ed)h(b)m(y)g
+(the)g(usual)g(in)m(teger)h(expression)f(or)g(b)m(y)g(the)g(rational)i
+(expression)0 5094 y(\\)p Fj(p=q)s Fo(")41 b(or)e(\\)p
+Fi(\000)p Fj(p=q)s Fo(")i(where)e Fj(p)h Fo(and)f Fj(q)j
+Fo(are)f(arbitrary)e(long)i(p)s(ositiv)m(e)f(in)m(tegers)h(\(see)g(the)
+f(example)h(input)d(\014le)0 5207 y(rational.ine\).)75
+b(In)40 b(the)i(1997)h(format,)h(w)m(e)e(in)m(tro)s(duced)e
+(\\H-represen)m(tation")k(whic)m(h)c(m)m(ust)h(app)s(ear)g(b)s(efore)0
+5320 y(\\b)s(egin".)f(There)27 b(w)m(as)g(one)g(restriction)h(in)f(the)
+g(old)g(p)s(olyhedra)f(format)h(\(b)s(efore)g(1997\):)42
+b(the)27 b(last)h Fj(d)f Fo(ro)m(ws)g(m)m(ust)0 5433
+y(determine)j(a)h(v)m(ertex)h(of)e Fj(P)13 b Fo(.)41
+b(This)30 b(is)g(obsolete)i(no)m(w.)1926 5682 y(3)p eop
+end
+%%Page: 4 4
+TeXDict begin 4 3 bop 141 44 a Fo(In)30 b(the)i(new)e(1999)j(format,)f
+(w)m(e)f(added)f(the)i(p)s(ossibilit)m(y)f(of)g(sp)s(ecifying)g
+Fp(linearit)m(y)q Fo(.)43 b(This)30 b(means)h(that)h(for)0
+157 y(H-represen)m(tation,)40 b(some)d(of)f(the)h(input)f(ro)m(ws)g
+(can)h(b)s(e)f(sp)s(eci\014ed)g(as)h Fp(equalities)p
+Fo(:)52 b Fj(b)3036 171 y Fg(i)3060 181 y Fe(j)3121 157
+y Fi(\000)24 b Fj(A)3284 171 y Fg(i)3308 181 y Fe(j)3345
+157 y Fj(x)36 b Fo(=)f(0)72 b(for)37 b(all)0 270 y Fj(j)31
+b Fo(=)25 b(1)p Fj(;)15 b Fo(2)p Fj(;)g(:)g(:)g(:)j(;)d(t)p
+Fo(.)41 b(The)30 b(linearit)m(y)h(line)g(ma)m(y)g(b)s(e)f(omitted)h(if)
+g(there)f(are)h(no)f(equalities.)141 383 y(Option)h(lines)g(can)g(b)s
+(e)g(used)f(to)i(con)m(trol)g(computation)g(of)g(a)f(sp)s(eci\014c)g
+(program.)42 b(In)31 b(particular)g(b)s(oth)f(cdd)0 496
+y(and)39 b(lrs)g(use)g(the)h(option)g(lines)g(to)g(represen)m(t)f(a)h
+(linear)g(ob)5 b(jectiv)m(e)42 b(function.)67 b(See)40
+b(the)g(attac)m(hed)h(LP)e(\014les,)0 609 y(samplelp*.ine.)141
+813 y(Next)25 b(w)m(e)f(de\014ne)f(P)m(olyhedra)h Ff(V-format)p
+Fo(.)39 b(Let)24 b Fj(P)37 b Fo(b)s(e)23 b(represen)m(ted)h(b)m(y)f
+Fj(n)g Fo(gerating)i(p)s(oin)m(ts)f(and)f Fj(s)g Fo(generating)0
+926 y(directions)30 b(\(ra)m(ys\))h(as)f Fj(P)39 b Fo(=)24
+b Fj(conv)s Fo(\()p Fj(v)1244 940 y Fh(1)1285 926 y Fj(;)15
+b(:)g(:)g(:)h(;)f(v)1530 940 y Fg(n)1578 926 y Fo(\))k(+)g
+Fj(nonneg)s Fo(\()p Fj(r)2095 940 y Fg(n)p Fh(+1)2232
+926 y Fj(;)c(:)g(:)g(:)i(;)e(r)2475 940 y Fg(n)p Fh(+)p
+Fg(s)2610 926 y Fo(\).)41 b(Then)28 b(the)i(P)m(olyhedra)h(V-format)0
+1039 y(for)f Fj(P)43 b Fo(is)p 141 1163 1202 4 v 191
+1242 a(v)-5 b(arious)30 b(commen)m(ts)191 1355 y Fp(V-represen)m
+(tation)191 1468 y Fo(\()p Fp(linearit)m(y)35 b Fj(t)60
+b(i)765 1482 y Fh(1)865 1468 y Fj(i)896 1482 y Fh(2)996
+1468 y Fj(:)15 b(:)g(:)61 b(i)1193 1482 y Fg(t)1258 1468
+y Fo(\))191 1581 y Fp(b)s(egin)191 1694 y Fj(n)20 b Fo(+)g
+Fj(s)99 b(d)20 b Fo(+)g(1)100 b(n)m(um)m(b)s(ert)m(yp)s(e)272
+1807 y(1)182 b Fj(v)543 1821 y Fh(1)282 1900 y Fo(.)282
+1934 y(.)282 1967 y(.)499 1900 y(.)499 1934 y(.)499 1967
+y(.)272 2080 y(1)g Fj(v)543 2094 y Fg(n)272 2193 y Fo(0)g
+Fj(r)540 2207 y Fg(n)p Fh(+1)282 2286 y Fo(.)282 2319
+y(.)282 2352 y(.)499 2286 y(.)499 2319 y(.)499 2352 y(.)272
+2465 y(0)g Fj(r)540 2479 y Fg(n)p Fh(+)p Fg(s)191 2578
+y Fp(end)191 2691 y Fo(v)-5 b(arious)30 b(options)p 141
+2728 V 0 2891 a(Here)42 b(w)m(e)h(do)e(not)h(require)g(that)g(v)m
+(ertices)i(and)d(ra)m(ys)h(are)g(listed)h(separately;)49
+b(they)42 b(can)g(app)s(ear)f(mixed)h(in)0 3004 y(arbitrary)30
+b(order.)141 3117 y(Linearit)m(y)i(for)f(V-represen)m(tation)h(sp)s
+(eci\014es)f(a)g(subset)g(of)g(generators)h(whose)e(co)s(e\016cien)m
+(ts)j(are)e(relaxed)h(to)0 3230 y(b)s(e)f Fp(free)p Fo(:)44
+b(for)32 b(all)g Fj(j)i Fo(=)27 b(1)p Fj(;)15 b Fo(2)p
+Fj(;)g(:)g(:)g(:)j(;)d(t)p Fo(,)33 b(the)f Fj(k)f Fo(=)d
+Fj(i)1592 3244 y Fg(j)1629 3230 y Fo(th)j(generator)i(\()p
+Fj(v)2231 3245 y Fg(k)2306 3230 y Fo(or)f Fj(r)2460 3245
+y Fg(k)2535 3230 y Fo(whic)m(hev)m(er)g(is)g(the)h Fj(i)3241
+3244 y Fg(j)3277 3230 y Fo(th)f(generator\))i(is)0 3343
+y(a)c(free)h(generator.)41 b(This)30 b(means)g(for)f(eac)m(h)j(suc)m(h)
+d(a)i(ra)m(y)f Fj(r)1995 3358 y Fg(k)2038 3343 y Fo(,)g(the)h(line)f
+(generated)h(b)m(y)f Fj(r)3002 3358 y Fg(k)3075 3343
+y Fo(is)g(in)f(the)i(p)s(olyhedron,)0 3456 y(and)26 b(for)h(eac)m(h)h
+(suc)m(h)e(a)h(v)m(ertex)h Fj(v)1099 3471 y Fg(k)1142
+3456 y Fo(,)g(its)f(co)s(e\016cien)m(t)i(is)d(no)h(longer)g(nonnegativ)
+m(e)i(but)d(still)i(the)f(co)s(e\016cien)m(ts)h(for)f(all)0
+3569 y Fj(v)44 3583 y Fg(i)72 3569 y Fo('s)i(m)m(ust)g(sum)f(up)g(to)i
+(one.)41 b(It)29 b(is)g(highly)g(unlik)m(ely)h(that)f(one)h(needs)e(to)
+i(use)f(linearit)m(y)h(for)f(v)m(ertex)h(generators,)0
+3681 y(and)g(it)h(is)f(de\014ned)f(mostly)i(for)f(formalit)m(y)-8
+b(.)141 3794 y(When)33 b(the)h(represen)m(tation)g(statemen)m(t,)i
+(either)e(\\H-represen)m(tation")h(or)f(\\V-represen)m(tation",)i(is)e
+(omit-)0 3907 y(ted,)d(the)f(former)g(\\H-represen)m(tation")j(is)e
+(assumed.)141 4020 y(It)g(is)f(strongly)h(suggested)g(to)g(use)f(the)h
+(follo)m(wing)g(rule)g(for)f(naming)g(H-format)h(\014les)f(and)g
+(V-format)h(\014les:)0 4198 y Fp(\(a\))45 b Fo(use)30
+b(the)g(\014lename)h(extension)g(\\.ine")g(for)g(H-\014les)f(\(where)h
+(ine)f(stands)g(for)g(inequalities\),)i(and)0 4381 y
+Fp(\(b\))45 b Fo(use)30 b(the)g(\014lename)h(extension)g(\\.ext")h(for)
+e(V-\014les)h(\(where)f(ext)i(stands)d(for)h(extreme)i(p)s(oin)m(ts/ra)
+m(ys\).)0 4666 y Fq(3)135 b(Basic)45 b(Ob)7 b(ject)45
+b(T)l(yp)t(es)g(\(Structures\))g(in)g(cddlib)0 4869 y
+Fo(Here)g(are)f(the)g(t)m(yp)s(es)g(\(de\014ned)f(in)h(cddt)m(yp)s
+(es.h\))g(that)g(are)h(imp)s(ortan)m(t)f(for)g(the)g(cddlib)g(user.)81
+b(The)43 b(most)0 4982 y(imp)s(ortan)m(t)36 b(one,)i
+Fn(dd)p 736 4982 29 4 v 34 w(MatrixType)p Fo(,)d(is)h(to)g(store)h(a)f
+(P)m(olyhedra)h(data)f(in)g(a)g(straigh)m(tforw)m(ard)h(manner.)57
+b(Once)0 5094 y(the)32 b(user)f(sets)i(up)e(a)h(\(p)s(oin)m(ter)g(to\))
+i Fn(dd)p 1343 5094 V 33 w(MatrixType)c Fo(data,)j(he/she)f(can)g(load)
+h(the)f(data)h(to)f(an)g(in)m(ternal)h(data)0 5207 y(t)m(yp)s(e)h(\()p
+Fn(dd)p 345 5207 V 34 w(PolyhedraType)p Fo(\))c(b)m(y)j(using)h
+(functions)f(describ)s(ed)f(in)h(the)h(next)g(section,)h(and)e(apply)g
+(the)h(double)0 5320 y(descrition)j(metho)s(d)e(to)i(get)g(another)f
+(represen)m(tation.)59 b(As)36 b(an)g(option)h Fn(dd)p
+2680 5320 V 33 w(MatrixType)d Fo(can)i(sa)m(v)m(e)i(a)e(linear)0
+5433 y(ob)5 b(jectiv)m(e)32 b(function)e(to)i(b)s(e)d(used)h(b)m(y)g(a)
+h(linear)g(programming)f(solv)m(er.)1926 5682 y(4)p eop
+end
+%%Page: 5 5
+TeXDict begin 5 4 bop 141 44 a Fo(The)40 b(t)m(w)m(o)h(dimensional)f
+(arra)m(y)h(data)g(in)f(the)g(structure)g Fn(dd)p 2278
+44 29 4 v 33 w(MatrixType)e Fo(is)i Fn(dd)p 3026 44 V
+34 w(Amatrix)e Fo(whose)i(com-)0 157 y(p)s(onen)m(ts)c(are)h(of)f(t)m
+(yp)s(e)g Fn(mytype)p Fo(.)57 b(The)36 b(t)m(yp)s(e)h(m)m(yt)m(yp)s(e)f
+(is)h(set)f(to)h(b)s(e)f(either)h(the)f(rational)i(t)m(yp)s(e)e
+Fn(mpq)p 3550 157 V 34 w(t)g Fo(of)g(the)0 270 y(GNU)f(MP)f(Library)f
+(or)h(the)h(C)f(double)f(arra)m(y)i(of)f(size)h(1.)53
+b(This)33 b(abstract)i(t)m(yp)s(e)f(allo)m(ws)i(us)d(to)i(write)f(a)h
+(single)0 383 y(program)f(that)h(can)g(b)s(e)e(compiled)i(with)f(the)g
+(t)m(w)m(o)i(or)e(more)h(di\013eren)m(t)f(arithmetics,)j(see)e(example)
+g(programs)0 496 y(suc)m(h)d(as)h(simplecdd.c,)g(testlp*.c)h(and)e
+(testcdd*.c)i(in)e(the)h Fn(src)e Fo(and)h Fn(src-gmp)e
+Fo(sub)s(directories)i(of)h(the)f(source)0 609 y(distribution.)141
+722 y(There)42 b(is)h(another)g(data)g(t)m(yp)s(e)g(that)g(is)g(used)f
+(v)m(ery)h(often,)j Fn(dd)p 2419 722 V 34 w(SetFamilyType)p
+Fo(.)74 b(This)42 b(is)h(to)g(store)g(a)0 835 y(family)35
+b(of)h(subsets)e(of)h(a)g(\014nite)g(set.)55 b(Suc)m(h)35
+b(a)g(family)h(can)f(represen)m(t)g(the)g(incidence)h(relations)g(b)s
+(et)m(w)m(een)f(the)0 947 y(set)f(of)g(extreme)h(p)s(oin)m(ts)e(and)g
+(the)h(set)g(of)g(facets)h(of)f(a)g(p)s(olyhedron.)49
+b(Also,)36 b(it)e(can)g(represen)m(t)f(a)h(graph)g(struc-)0
+1060 y(ture)g(b)m(y)g(listing)i(the)e(set)h(of)f(v)m(ertices)i(adjacen)
+m(t)g(to)f(eac)m(h)h(v)m(ertex)f(\(i.e.)54 b(the)34 b(adjacency)i
+(list\).)53 b(T)-8 b(o)35 b(implemen)m(t)0 1173 y Fn(dd)p
+102 1173 V 34 w(SetFamilyType)p Fo(,)26 b(w)m(e)j(use)f(a)h(separate)h
+(set)g(library)e(called)i Fn(setoper)p Fo(,)d(that)j(handles)e(the)h
+(basic)g(set)g(op)s(era-)0 1286 y(tions,)i(This)f(library)g(is)g
+(brie\015y)f(in)m(tro)s(duced)h(in)g(Section)i(4.6.)0
+1594 y Fn(#define)46 b(dd_FALSE)f(0)0 1707 y(#define)h(dd_TRUE)g(1)0
+1933 y(typedef)g(long)g(dd_rowrange;)0 2046 y(typedef)g(long)g
+(dd_colrange;)0 2159 y(typedef)g(long)g(dd_bigrange;)0
+2385 y(typedef)g(set_type)f(dd_rowset;)141 b(/*)47 b(set_type)f
+(defined)f(in)j(setoper.h)d(*/)0 2498 y(typedef)h(set_type)f
+(dd_colset;)0 2610 y(typedef)h(long)g(*dd_rowindex;)0
+2723 y(typedef)g(int)h(*dd_rowflag;)0 2836 y(typedef)f(long)g
+(*dd_colindex;)0 2949 y(typedef)g(mytype)g(**dd_Amatrix;)92
+b(/*)47 b(mytype)f(is)h(either)f(GMP)h(mpq_t)g(or)g(1-dim)f(double)g
+(array.)g(*/)0 3062 y(typedef)g(mytype)g(*dd_Arow;)0
+3175 y(typedef)g(set_type)f(*dd_SetVector;)0 3401 y(typedef)h(enum)g({)
+95 3514 y(dd_Real,)g(dd_Rational,)e(dd_Integer,)h(dd_Unknown)0
+3627 y(})i(dd_NumberType;)0 3852 y(typedef)f(enum)g({)95
+3965 y(dd_Inequality,)e(dd_Generator,)h(dd_Unspecified)0
+4078 y(})i(dd_RepresentationType;)0 4304 y(typedef)f(enum)g({)95
+4417 y(dd_MaxIndex,)f(dd_MinIndex,)f(dd_MinCutoff,)h(dd_MaxCutoff,)f
+(dd_MixCutoff,)143 4530 y(dd_LexMin,)h(dd_LexMax,)g(dd_RandomRow)0
+4643 y(})i(dd_RowOrderType;)0 4869 y(typedef)f(enum)g({)95
+4982 y(dd_InProgress,)e(dd_AllFound,)h(dd_RegionEmpty)0
+5094 y(})i(dd_CompStatusType;)0 5320 y(typedef)f(enum)g({)95
+5433 y(dd_DimensionTooLarge,)c(dd_ImproperInputFormat,)1926
+5682 y Fo(5)p eop end
+%%Page: 6 6
+TeXDict begin 6 5 bop 95 44 a Fn(dd_NegativeMatrixSize,)42
+b(dd_EmptyVrepresentation,)95 157 y(dd_IFileNotFound,)i
+(dd_OFileNotOpen,)f(dd_NoLPObjective,)95 270 y(dd_NoRealNumberSupport,)
+f(dd_NoError)0 383 y(})47 b(dd_ErrorType;)0 609 y(typedef)f(enum)g({)95
+722 y(dd_LPnone=0,)f(dd_LPmax,)g(dd_LPmin)0 835 y(})i
+(dd_LPObjectiveType;)0 1060 y(typedef)f(enum)g({)95 1173
+y(dd_LPSundecided,)e(dd_Optimal,)h(dd_Inconsistent,)e
+(dd_DualInconsistent,)95 1286 y(dd_StrucInconsistent,)f
+(dd_StrucDualInconsistent,)95 1399 y(dd_Unbounded,)j(dd_DualUnbounded)0
+1512 y(})i(dd_LPStatusType;)0 1738 y(typedef)f(struct)g(matrixdata)f
+(*dd_MatrixPtr;)0 1851 y(typedef)h(struct)g(matrixdata)f({)95
+1964 y(dd_rowrange)g(rowsize;)95 2077 y(dd_rowset)h(linset;)191
+2189 y(/*)95 b(a)47 b(subset)f(of)i(rows)e(of)h(linearity)f(\(ie,)g
+(generators)f(of)382 2302 y(linearity)g(space)h(for)h
+(V-representation,)c(and)k(equations)382 2415 y(for)g
+(H-representation.)c(*/)95 2528 y(dd_colrange)i(colsize;)95
+2641 y(dd_RepresentationType)d(representation;)95 2754
+y(dd_NumberType)j(numbtype;)95 2867 y(dd_Amatrix)g(matrix;)95
+2980 y(dd_LPObjectiveType)e(objective;)95 3093 y(dd_Arow)j(rowvec;)0
+3206 y(})95 b(dd_MatrixType;)0 3431 y(typedef)46 b(struct)g(setfamily)f
+(*dd_SetFamilyPtr;)0 3544 y(typedef)h(struct)g(setfamily)f({)95
+3657 y(dd_bigrange)g(famsize;)95 3770 y(dd_bigrange)g(setsize;)95
+3883 y(dd_SetVector)g(set;)0 3996 y(})i(dd_SetFamilyType;)0
+4222 y(typedef)f(struct)g(lpsolution)f(*dd_LPSolutionPtr;)0
+4335 y(typedef)h(struct)g(lpsolution)f({)95 4448 y(dd_DataFileType)f
+(filename;)95 4561 y(dd_LPObjectiveType)f(objective;)95
+4673 y(dd_LPSolverType)h(solver;)95 4786 y(dd_rowrange)h(m;)95
+4899 y(dd_colrange)g(d;)95 5012 y(dd_NumberType)g(numbtype;)95
+5238 y(dd_LPStatusType)f(LPS;)94 b(/*)48 b(the)f(current)e(solution)h
+(status)g(*/)95 5351 y(mytype)h(optvalue;)93 b(/*)47
+b(optimal)f(value)g(*/)1926 5682 y Fo(6)p eop end
+%%Page: 7 7
+TeXDict begin 7 6 bop 95 44 a Fn(dd_Arow)46 b(sol;)142
+b(/*)48 b(primal)e(solution)f(*/)95 157 y(dd_Arow)h(dsol;)94
+b(/*)48 b(dual)e(solution)g(*/)95 270 y(dd_colindex)f(nbindex;)93
+b(/*)48 b(current)d(basis)i(represented)e(by)i(nonbasic)e(indices)h(*/)
+95 383 y(dd_rowrange)f(re;)95 b(/*)47 b(row)g(index)f(as)h(a)h
+(certificate)d(in)i(the)g(case)f(of)i(inconsistency)c(*/)95
+496 y(dd_colrange)h(se;)95 b(/*)47 b(col)g(index)f(as)h(a)h
+(certificate)d(in)i(the)g(case)f(of)i(dual)e(inconsistency)e(*/)95
+609 y(long)j(pivots[5];)143 722 y(/*)g(pivots[0]=setup)d(\(to)j(find)g
+(a)g(basis\),)f(pivots[1]=PhaseI)d(or)k(Criss-Cross,)286
+835 y(pivots[2]=Phase)d(II,)j(pivots[3]=Anticycling,)42
+b(pivots[4]=GMP)i(postopt)93 b(*/)95 947 y(long)47 b(total_pivots;)0
+1060 y(})g(dd_LPSolutionType;)0 1455 y Fq(4)135 b(Library)45
+b(F)-11 b(unctions)0 1658 y Fo(Here)24 b(w)m(e)g(list)g(some)f(of)h
+(the)f(most)h(imp)s(ortan)m(t)f(library)g(functions/pro)s(cedures.)37
+b(W)-8 b(e)25 b(use)e(the)g(follo)m(wing)i(con)m(v)m(en-)0
+1771 y(tion:)42 b Fn(poly)29 b Fo(is)i(of)g(t)m(yp)s(e)g
+Fn(dd)p 947 1771 29 4 v 34 w(PolyhedraPtr)p Fo(,)c Fn(matrix)p
+Fo(,)j Fn(matrix1)e Fo(and)i Fn(matrix2)f Fo(are)i(of)g(t)m(yp)s(e)g
+Fn(dd)p 3415 1771 V 34 w(MatrixPtr)p Fo(,)0 1884 y Fn(matrixP)p
+Fo(,)40 b(of)h(t)m(yp)s(e)g Fn(dd)p 832 1884 V 34 w(MatrixPtr*)p
+Fo(,)h Fn(err)e Fo(is)h(of)h(t)m(yp)s(e)f Fn(dd)p 2125
+1884 V 34 w(ErrorType*)p Fo(,)g Fn(ifile)f Fo(and)h Fn(ofile)e
+Fo(are)j(of)f(t)m(yp)s(e)0 1996 y Fn(char*)p Fo(,)29
+b Fn(A)h Fo(is)g(of)g(t)m(yp)s(e)g Fn(dd)p 872 1996 V
+34 w(Amatrix)p Fo(,)e Fn(point)h Fo(and)g Fn(vector)f
+Fo(are)j(of)f(t)m(yp)s(e)g Fn(dd)p 2611 1996 V 34 w(Arow)p
+Fo(,)f Fn(d)g Fo(is)h(of)h(t)m(yp)s(e)f Fn(dd)p 3463
+1996 V 34 w(colrange)p Fo(,)0 2109 y Fn(m)37 b Fo(and)h
+Fn(i)f Fo(are)h(of)g(t)m(yp)s(e)g Fn(dd)p 939 2109 V
+34 w(rowrange)p Fo(,)g Fn(x)f Fo(is)h(of)g(t)m(yp)s(e)g
+Fn(mytype)p Fo(,)g Fn(a)g Fo(is)f(of)h(t)m(yp)s(e)g Fn(signed)47
+b(long)f(integer)p Fo(,)38 b Fn(b)g Fo(is)0 2222 y(of)33
+b(t)m(yp)s(e)f Fn(double)p Fo(,)g Fn(set)f Fo(is)i(of)f(t)m(yp)s(e)h
+Fn(set)p 1388 2222 V 34 w(type)p Fo(.)45 b(Also,)34 b
+Fn(setfam)d Fo(is)i(of)f(t)m(yp)s(e)h Fn(dd)p 2738 2222
+V 34 w(SetFamilyPtr)p Fo(,)c Fn(lp)j Fo(is)h(of)f(t)m(yp)s(e)0
+2335 y Fn(dd)p 102 2335 V 34 w(LPPtr)p Fo(,)h Fn(lps)g
+Fo(is)g(of)h(t)m(yp)s(e)g Fn(dd)p 1116 2335 V 34 w(LPSolutionPtr)p
+Fo(,)d Fn(solver)g Fo(is)j(of)g(t)m(yp)s(e)f Fn(dd)p
+2654 2335 V 34 w(LPSolverType)p Fo(,)f Fn(roworder)f
+Fo(is)i(of)0 2448 y(t)m(yp)s(e)e Fn(dd)p 307 2448 V 33
+w(RowOrderType)p Fo(.)0 2687 y Fd(4.1)112 b(Library)39
+b(Initialization)0 2858 y Fn(void)47 b(dd)p 341 2858
+V 33 w(set)p 518 2858 V 34 w(global)p 840 2858 V 33 w
+(constants\(void\))41 b Fo(:)227 2971 y(This)31 b(is)g(to)h(set)g(the)f
+(global)h(constan)m(ts)h(suc)m(h)e(as)g Fn(dd)p 2032
+2971 V 34 w(zero)p Fo(,)f Fn(dd)p 2409 2971 V 34 w(purezero)f
+Fo(and)i Fn(dd)p 3130 2971 V 34 w(one)f Fo(for)h(sign)g(recog-)227
+3084 y(nition)h(and)g(basic)g(arithmetic)h(op)s(erations.)46
+b(Ev)m(ery)32 b(program)g(to)h(use)f(cddlib)f(m)m(ust)h(call)h(this)f
+(function)227 3197 y(b)s(efore)37 b(doing)g(an)m(y)h(computation.)62
+b(Just)36 b(call)j(this)e(once.)61 b(See)38 b(Section)g(4.3.3)h(for)d
+(the)i(de\014nitions)e(of)227 3310 y(constan)m(ts.)0
+3487 y Fn(void)47 b(dd)p 341 3487 V 33 w(free)p 566 3487
+V 34 w(global)p 888 3487 V 32 w(constants\(void\))42
+b Fo(:)227 3600 y(This)e(is)g(to)h(free)f(the)g(global)i(constan)m(ts.)
+71 b(This)39 b(should)h(b)s(e)f(called)i(when)f(one)g(do)s(es)g(not)g
+(use)g(cddlib)227 3713 y(functions)30 b(an)m(ymore.)0
+3951 y Fd(4.2)112 b(Core)38 b(F)-9 b(unctions)0 4123
+y Fo(There)33 b(are)i(t)m(w)m(o)g(t)m(yp)s(es)f(of)g(core)g(functions)g
+(in)f(cddlib.)51 b(The)33 b(\014rst)g(t)m(yp)s(e)h(runs)f(the)h(double)
+f(description)h(\(DD\))0 4236 y(algorithm)28 b(and)f(do)s(es)g(a)h
+(represen)m(tation)h(con)m(v)m(ersion)f(of)g(a)g(sp)s(eci\014ed)f(p)s
+(olyhedron.)38 b(The)27 b(standard)g(header)g(for)0 4349
+y(this)32 b(t)m(yp)s(e)g(is)g Fn(dd)p 580 4349 V 34 w(DD*)p
+Fo(.)45 b(The)32 b(second)g(t)m(yp)s(e)g(solv)m(es)h(one)g(or)f(more)g
+(linear)h(programs)e(with)h(no)g(sp)s(ecial)h(headers.)0
+4462 y(Both)k(t)m(yp)s(es)f(of)g(computations)h(are)f(non)m(trivial)h
+(and)f(the)g(users)f(\(esp)s(ecially)i(for)f(the)g(DD)h(algorithm\))h
+(m)m(ust)0 4575 y(kno)m(w)e(that)i(there)e(is)h(a)g(serous)f(limit)h
+(in)f(the)h(sizes)g(of)g(problems)e(that)j(can)e(b)s(e)g(practically)i
+(solv)m(ed.)60 b(Please)0 4687 y(c)m(hec)m(k)32 b(*.ext)g(and)d(*.ine)j
+(\014les)e(that)h(come)g(with)f(cddlib)g(to)h(get)h(ideas)e(of)h
+(tractable)h(problems.)141 4800 y(In)k(addition)h(to)g(previously)g
+(de\014ned)e(ob)5 b(jects,)39 b(the)e(sym)m(b)s(ol)f
+Fn(roworder)f Fo(is)h(of)h Fn(dd)p 3056 4800 V 34 w(RowOrderType)p
+Fo(.)56 b(The)0 4913 y(sym)m(b)s(ol)32 b Fn(matrixP)f
+Fo(is)h(a)h(p)s(oin)m(ter)g(to)g Fp(dd)p 1402 4913 32
+4 v 38 w(MatrixT)m(yp)s(e)p Fo(.)46 b(the)33 b(argumen)m(ts)g
+Fn(impl)p 2859 4913 29 4 v 33 w(lin)f Fo(and)g Fn(redset)e
+Fo(are)j(b)s(oth)0 5026 y(a)e(p)s(oin)m(ter)f(to)h Fn(dd)p
+602 5026 V 34 w(rowset)e Fo(t)m(yp)s(e,)i(and)e Fn(newpos)g
+Fo(is)h(a)h(p)s(oin)m(ter)g(to)g Fn(dd)p 2364 5026 V
+33 w(rowindex)e Fo(t)m(yp)s(e.)0 5207 y Fn(dd)p 102 5207
+V 34 w(PolyhedraPtr)44 b(dd)p 852 5207 V 34 w(DDMatrix2Poly\(matrix,)e
+(err\))i Fo(:)227 5320 y(Store)32 b(the)g(represen)m(tation)g(giv)m(en)
+h(b)m(y)e Fn(matrix)f Fo(in)h(a)h(p)s(olyhedra)e(data,)j(and)e
+(generate)i(the)e(second)h(rep-)227 5433 y(resen)m(tation)46
+b(of)e Fn(*poly)p Fo(.)80 b(It)44 b(returns)e(a)j(p)s(oin)m(ter)f(to)g
+(the)g(data.)82 b Fn(*err)43 b Fo(returns)g Fn(dd)p 3269
+5433 V 34 w(NoError)f Fo(if)h(the)1926 5682 y(7)p eop
+end
+%%Page: 8 8
+TeXDict begin 8 7 bop 227 44 a Fo(computation)38 b(terminates)g
+(normally)-8 b(.)60 b(Otherwise,)38 b(it)g(returns)d(a)i(v)-5
+b(alue)37 b(according)h(to)g(the)f(error)f(o)s(c-)227
+157 y(cured.)0 345 y Fn(dd)p 102 345 29 4 v 34 w(PolyhedraPtr)44
+b(dd)p 852 345 V 34 w(DDMatrix2Poly2\(matrix,)e(roworder,)j(err\))f
+Fo(:)227 458 y(This)f(is)h(the)f(same)h(function)f(as)h
+Fn(dd)p 1559 458 V 34 w(DDMatrix2Poly)c Fo(except)k(that)g(the)g
+(insertion)g(order)f(is)g(sp)s(eci-)227 571 y(\014ed)34
+b(b)m(y)h(the)g(user.)53 b(The)34 b(argumen)m(t)h Fn(roworder)e
+Fo(is)i(of)f Fn(dd)p 2260 571 V 34 w(RowOrderType)e Fo(and)i(tak)m(es)i
+(one)f(of)g(the)g(v)-5 b(al-)227 683 y(ues:)55 b Fn(dd)p
+536 683 V 33 w(MaxIndex)p Fo(,)37 b Fn(dd)p 1111 683
+V 34 w(MinIndex)p Fo(,)g Fn(dd)p 1687 683 V 34 w(MinCutoff)p
+Fo(,)g Fn(dd)p 2311 683 V 34 w(MaxCutoff)p Fo(,)g Fn(dd)p
+2935 683 V 33 w(MixCutoff)p Fo(,)g Fn(dd)p 3558 683 V
+34 w(LexMin)p Fo(,)227 796 y Fn(dd)p 329 796 V 34 w(LexMax)p
+Fo(,)d Fn(dd)p 806 796 V 34 w(RandomRow)p Fo(.)51 b(In)33
+b(general,)k Fn(dd)p 1905 796 V 34 w(LexMin)c Fo(is)h(the)h(b)s(est)f
+(c)m(hoice)j(whic)m(h)d(is)g(in)h(fact)g(c)m(hosen)227
+909 y(in)29 b Fn(dd)p 434 909 V 34 w(DDMatrix2Poly)p
+Fo(.)36 b(If)28 b(y)m(ou)i(kno)m(w)e(that)i(the)f(input)e(is)i(already)
+h(sorted)e(in)h(the)g(order)f(y)m(ou)h(lik)m(e,)i(use)227
+1022 y Fn(dd)p 329 1022 V 34 w(MinIndex)k Fo(or)i Fn(dd)p
+996 1022 V 34 w(MaxIndex)p Fo(.)59 b(If)37 b(the)h(input)e(con)m(tains)
+i(man)m(y)g(redundan)m(t)e(ro)m(ws)h(\(sa)m(y)h(more)g(than)227
+1135 y(80\045)j(redundan)m(t\),)h(y)m(ou)e(migh)m(t)h(w)m(an)m(t)g(to)g
+(try)f Fn(dd)p 2009 1135 V 34 w(MaxCutoff)d Fo(whic)m(h)j(migh)m(t)h
+(result)f(in)g(m)m(uc)m(h)g(faster)227 1248 y(termination,)32
+b(see)f([3,)g(16)q(])0 1436 y Fn(boolean)46 b(dd)p 484
+1436 V 34 w(DDInputAppend\(poly,)c(matrix,)k(err\))e
+Fo(:)227 1549 y(Mo)s(dify)27 b(the)h(input)e(represen)m(tation)i(in)f
+Fn(*poly)f Fo(b)m(y)h(app)s(ending)f(the)h(matrix)h(of)f
+Fn(*matrix)p Fo(,)g(and)f(compute)227 1661 y(the)36 b(second)f
+(represen)m(tation.)56 b(The)34 b(n)m(um)m(b)s(er)g(of)h(columns)g(in)g
+Fn(*matrix)e Fo(m)m(ust)i(b)s(e)g(equal)g(to)h(the)g(input)227
+1774 y(represen)m(tation.)0 1962 y Fn(boolean)46 b(dd)p
+484 1962 V 34 w(LPSolve\(lp,)e(solver,)i(err\))f Fo(:)227
+2075 y(Solv)m(e)28 b Fn(lp)e Fo(b)m(y)h(the)g(algorithm)h
+Fn(solver)d Fo(and)i(sa)m(v)m(e)h(the)f(solututions)g(in)g
+Fn(*lp)p Fo(.)39 b(Unlik)m(e)27 b(the)g(earlier)h(v)m(ersions)227
+2188 y(\(dplex,)d(cdd+\),)g(it)f(can)f(deal)h(with)f(equations)h(and)f
+(totally)i(zero)g(righ)m(t)f(hand)e(sides.)38 b(It)24
+b(is)f(recommended)227 2301 y(that)32 b Fn(solver)d Fo(is)i
+Fn(dd)p 936 2301 V 33 w(DualSimplex)p Fo(,)d(the)j(revised)g(dual)g
+(simplex)f(metho)s(d)h(that)g(up)s(dates)f(a)h Fj(d)21
+b Fi(\002)f Fj(d)31 b Fo(dual)227 2414 y(basis)g(matrix)f(in)g(eac)m(h)
+i(piv)m(ot)f(\(where)f Fj(d)h Fo(is)f(the)h(column)f(size)h(of)g(lp\).)
+227 2564 y(The)39 b(revised)f(dual)h(simplex)f(metho)s(d)g(is)h(ideal)h
+(for)e(dense)h(LPs)f(in)g(small)h(n)m(um)m(b)s(er)f(of)h(v)-5
+b(ariables)39 b(\(i.e.)227 2677 y(small)e(column)g(size,)i(t)m
+(ypically)g(less)e(than)f(100\))i(and)e(man)m(y)h(inequalit)m(y)h
+(constrain)m(ts)g(\(i.e.)61 b(large)37 b(ro)m(w)227 2790
+y(size,)f(can)e(b)s(e)f(a)h(few)g(ten)g(thousands\).)50
+b(If)34 b(y)m(our)f(LP)h(has)f(man)m(y)h(v)-5 b(ariables)35
+b(but)e(only)h(few)f(constrain)m(ts,)227 2903 y(solv)m(e)f(the)f(dual)f
+(LP)g(b)m(y)g(this)g(function.)227 3053 y(When)g(it)h(is)f(compiled)g
+(for)g(GMP)g(rational)h(arithmetic,)h(it)f(\014rst)e(tries)h(to)h(solv)
+m(e)g(an)f(LP)g(with)f(C)h(double)227 3166 y(\015oating-p)s(oin)m(t)d
+(arithmetic)h(and)d(v)m(eri\014es)h(whether)f(the)h(output)g(basis)f
+(is)h(correct)h(with)f(GMP)-8 b(.)27 b(If)e(so,)i(the)227
+3279 y(correct)38 b(solution)f(is)f(computed)h(with)f(GMP)-8
+b(.)37 b(Otherwise,)h(it)f(\(re\)solv)m(es)i(the)d(LP)g(from)g(scratc)m
+(h)i(with)227 3392 y(GMP)-8 b(.)32 b(This)e(is)g(newly)h(implemen)m
+(ted)g(in)f(the)h(v)m(ersion)g(093.)42 b(The)30 b(original)i
+(\(non-crosso)m(v)m(er\))g(v)m(ersion)f(of)227 3505 y(the)g(same)g
+(function)f(is)g(still)h(a)m(v)-5 b(ailable)33 b(as)e
+Fn(boolean)46 b(dd)p 2206 3505 V 33 w(LPSolve0)p Fo(.)0
+3692 y Fn(dd)p 102 3692 V 34 w(boolean)g(dd)p 614 3692
+V 33 w(Redundant\(matrix,)e(i,)j(point,)f(err\))e Fo(:)227
+3805 y(Chec)m(k)28 b(whether)g Fj(i)p Fo(th)g(data)g(in)g
+Fn(matrix)e Fo(is)h(redundan)m(t)g(for)h(the)g(represen)m(tation.)41
+b(If)27 b(it)h(is)g(nonredundan)m(t,)227 3918 y(it)d(returns)e(a)h
+(certi\014cate.)41 b(F)-8 b(or)25 b(H-represen)m(tation,)i(it)e(is)f(a)
+g Fn(point)f Fo(in)h Fj(R)2684 3885 y Fg(d)2748 3918
+y Fo(whic)m(h)g(satis\014es)g(all)h(inequalities)227
+4031 y(except)31 b(for)f(the)g Fj(i)p Fo(th)g(inequalit)m(y)-8
+b(.)42 b(If)29 b Fj(i)h Fo(is)g(a)g(linearit)m(y)-8 b(,)32
+b(it)f(do)s(es)e(nothing)h(and)f(alw)m(a)m(ys)i(returns)e
+Fn(dd)p 3606 4031 V 34 w(FALSE)p Fo(.)0 4219 y Fn(dd)p
+102 4219 V 34 w(rowset)46 b(dd)p 566 4219 V 34 w
+(RedundantRows\(matrix,)c(err\))i Fo(:)227 4331 y(Returns)24
+b(a)h(maximal)h(set)f(of)g(ro)m(w)g(indices)f(suc)m(h)h(that)g(the)g
+(asso)s(ciated)h(ro)m(ws)f(can)g(b)s(e)f(eliminated)i(without)227
+4444 y(c)m(hanging)32 b(the)e(p)s(olyhedron.)40 b(The)29
+b(function)h(w)m(orks)h(for)f(b)s(oth)g(V-)g(and)g(H-represen)m
+(tations.)0 4632 y Fn(dd)p 102 4632 V 34 w(boolean)46
+b(dd)p 614 4632 V 33 w(SRedundant\(matrix,)d(i,)k(point,)g(err\))d
+Fo(:)227 4745 y(Chec)m(k)32 b(whether)e Fj(i)p Fo(th)i(data)g(in)e
+Fn(matrix)g Fo(is)h(strongly)h(redundan)m(t)e(for)h(the)g(represen)m
+(tation.)44 b(If)31 b Fj(i)h Fo(is)f(a)g(lin-)227 4858
+y(earit)m(y)-8 b(,)32 b(it)d(do)s(es)f(nothing)h(and)f(alw)m(a)m(ys)j
+(returns)c Fn(dd)p 2005 4858 V 34 w(FALSE)p Fo(.)h(Here,)h
+Fj(i)p Fo(th)g(inequalit)m(y)i(in)d(H-represen)m(tation)227
+4971 y(is)h Ff(str)-5 b(ongly)33 b(r)-5 b(e)g(dundant)39
+b Fo(if)29 b(it)g(is)g(redundan)m(t)e(and)h(there)h(is)g(no)f(p)s(oin)m
+(t)h(in)f(the)h(p)s(olyhedron)e(satisfying)i(the)227
+5084 y(inequalit)m(y)c(with)e(equalit)m(y)-8 b(.)41 b(In)22
+b(V-represen)m(tation,)27 b Fj(i)p Fo(th)d(p)s(oin)m(t)f(is)g
+Ff(str)-5 b(ongly)28 b(r)-5 b(e)g(dundant)35 b Fo(if)23
+b(it)h(is)g(redundan)m(t)227 5197 y(and)31 b(it)g(is)g(in)f(the)i
+(relativ)m(e)h(in)m(terior)e(of)g(the)g(p)s(olyhedron.)41
+b(If)31 b(it)g(is)g(not)g(strongly)g(redundan)m(t,)f(it)i(returns)227
+5309 y(a)f(certi\014cate.)1926 5682 y(8)p eop end
+%%Page: 9 9
+TeXDict begin 9 8 bop 0 44 a Fn(dd)p 102 44 29 4 v 34
+w(boolean)46 b(dd)p 614 44 V 33 w(ImplicitLinearity\(matrix,)41
+b(i,)48 b(err\))c Fo(:)227 157 y(Chec)m(k)33 b(whether)e
+Fj(i)p Fo(th)h(ro)m(w)g(in)g(the)g(input)f(is)h(forced)g(to)h(b)s(e)e
+(linearit)m(y)j(\(equalit)m(y)g(for)d(H-represen)m(tation\).)227
+270 y(If)f Fj(i)h Fo(is)f(linearit)m(y)i(itself,)g(it)e(do)s(es)g
+(nothing)h(and)f(alw)m(a)m(ys)h(returns)f Fn(dd)p 2589
+270 V 33 w(FALSE)p Fo(.)0 454 y Fn(dd)p 102 454 V 34
+w(rowset)46 b(dd)p 566 454 V 34 w(ImplicitLinearityRows\(m)o(atri)o(x,)
+c(err\))i Fo(:)227 567 y(Returns)39 b(the)g(set)h(of)g(indices)g(of)f
+(ro)m(ws)h(that)g(are)g(implicitly)g(linearit)m(y)-8
+b(.)70 b(It)40 b(simply)f(calls)h(the)g(library)227 680
+y(function)e Fn(dd)p 693 680 V 34 w(ImplicitLinearity)33
+b Fo(for)38 b(eac)m(h)h(inequalit)m(y)g(and)f(collects)i(the)e(ro)m(w)g
+(indices)g(for)g(whic)m(h)227 793 y(the)31 b(answ)m(er)f(is)h
+Fn(dd)p 879 793 V 33 w(TRUE)p Fo(.)0 977 y Fn(dd)p 102
+977 V 34 w(boolean)46 b(dd)p 614 977 V 33 w
+(MatrixCanonicalize\(matrixP)o(,)c(impl)p 2176 977 V
+33 w(lin,)47 b(redset,)f(newpos,)f(err\))g Fo(:)227 1090
+y(The)30 b(input)f(is)h(a)h(p)s(oin)m(ter)f Fn(matrixP)e
+Fo(to)j(a)f(matrix)h(and)e(the)i(function)f(mo)s(di\014es)f(the)h
+(matrix)h(b)m(y)f(putting)227 1203 y(a)40 b(maximally)h(linear)f(indep)
+s(enden)m(t)e(linearities)j(\(basis\))g(at)f(the)g(top)g(of)f(the)h
+(matrix,)j(and)c(remo)m(ving)227 1316 y(all)33 b(redundan)m(t)e(data.)
+46 b(All)33 b(implicit)g(linearities)g(and)e(all)i(\(remo)m(v)m(ed\))h
+(redundan)m(t)d(ro)m(ws)h(in)f(the)h(original)227 1429
+y(matrix)c(will)f(b)s(e)f(returned)g(in)g(the)i(corresp)s(onding)e(ro)m
+(w)h(sets.)40 b(The)26 b(new)g(p)s(ositions)h(of)g(the)g(original)i(ro)
+m(ws)227 1542 y(are)i(returned)e(b)m(y)h(the)h(arra)m(y)g
+Fn(newpos)p Fo(.)227 1690 y(The)c(cardinalit)m(y)i(of)f(the)g(new)f
+(linearit)m(y)i(set)f Fn(\(*matrixP\)->linset)22 b Fo(is)28
+b(the)g(co)s(dimension)f(of)h(the)g(p)s(oly-)227 1803
+y(hedron)i(if)g(it)h(is)f(H-p)s(olyhedron,)g(and)g(is)g(the)h
+(dimension)e(of)i(linearit)m(y)h(space)f(if)f(it)h(is)f(V-p)s
+(olyhedron.)227 1952 y(Note)e(that)e(the)h(presen)m(t)f(v)m(ersion)g
+(should)g(not)g(b)s(e)f(called)j(a)e(canonicalization)k(b)s(ecause)c
+(it)g(ma)m(y)h(generate)227 2065 y(t)m(w)m(o)j(di\013eren)m(t)e
+(represen)m(tations)h(of)f(the)h(same)f(p)s(olyhedron.)39
+b(In)27 b(the)h(future,)g(this)g(function)g(is)g(exp)s(ected)227
+2178 y(to)j(b)s(e)f(correctly)i(implemen)m(ted.)0 2362
+y Fn(dd)p 102 2362 V 34 w(boolean)46 b(dd)p 614 2362
+V 33 w(MatrixCanonicalizeLinearit)o(y\(ma)o(tri)o(xP,)41
+b(impl)p 2605 2362 V 34 w(linset,)k(newpos.)94 b(err\))44
+b Fo(:)227 2475 y(It)g(do)s(es)g(only)g(the)g(\014rst)f(half)h(of)g
+Fn(dd)p 1554 2475 V 34 w(boolean)i(dd)p 2066 2475 V 33
+w(MatrixCanonicalize)p Fo(,)d(namely)-8 b(,)48 b(it)d(detects)g(all)227
+2588 y(implicit)27 b(linearities)g(and)f(puts)f(a)h(maximally)h(indep)s
+(enden)m(t)d(linearities)k(at)e(the)g(top)g(of)g(the)g(matrix.)40
+b(F)-8 b(or)227 2701 y(example,)32 b(this)e(function)g(can)h(b)s(e)e
+(used)h(to)h(detect)h(the)e(dimension)g(of)h(an)f(H-p)s(olyhedron.)0
+2885 y Fn(dd)p 102 2885 V 34 w(boolean)46 b(dd)p 614
+2885 V 33 w(MatrixRedundancyRemove\(mat)o(rixP)o(,)c(redset,)k(newpos,)
+f(err\))g Fo(:)227 2998 y(It)25 b(do)s(es)e(essen)m(tially)j(the)f
+(second)f(half)g(of)g Fn(dd)p 1757 2998 V 34 w(boolean)46
+b(dd)p 2269 2998 V 34 w(MatrixCanonicalize)p Fo(,)20
+b(namely)-8 b(,)27 b(it)d(detects)227 3111 y(all)30 b(redundancies.)39
+b(This)27 b(function)h(should)g(b)s(e)f(used)h(after)h
+Fn(dd)p 2421 3111 V 34 w(MatrixCanonicalizeLinear)o(ity)22
+b Fo(has)227 3224 y(b)s(een)30 b(called.)0 3408 y Fn(dd)p
+102 3408 V 34 w(boolean)46 b(dd)p 614 3408 V 33 w
+(FindRelativeInterior\(matri)o(x,)c(impl)p 2224 3408
+V 33 w(lin,)k(lin)p 2639 3408 V 34 w(basis,)g(lps,)h(err\))d
+Fo(:)227 3521 y(Computes)39 b(a)h(p)s(oin)m(t)g(in)f(the)h(relativ)m(e)
+h(in)m(terior)f(of)g(an)g(H-p)s(olyhedron)e(giv)m(en)j(b)m(y)e(matrix,)
+j(b)m(y)e(solving)227 3634 y(an)32 b(LP)-8 b(.)31 b(The)g(p)s(oin)m(t)h
+(will)g(b)s(e)f(returned)f(b)m(y)h Fn(lps)p Fo(.)44 b(See)31
+b(the)h(sample)g(program)f(allfaces.c)j(that)e(generates)227
+3747 y(all)47 b(nonempt)m(y)e(faces)h(of)g(an)f(H-p)s(olyhedron)g(and)g
+(a)h(relativ)m(e)h(in)m(terior)g(p)s(oin)m(t)e(for)g(eac)m(h)i(face.)87
+b(The)227 3860 y(former)35 b(returns)f(all)i(implicit)g(linearit)m(y)g
+(ro)m(ws)g(\(implicit)g(equations\))g(and)f(the)g(latter)h(returns)e(a)
+i(basis)227 3973 y(of)31 b(the)g(union)e(of)i(linearit)m(y)h(ro)m(ws)f
+(and)f(implicit)h(linearit)m(y)h(ro)m(ws.)41 b(This)30
+b(means)h(that)g(the)f(cardinalit)m(y)i(of)227 4086 y
+Fn(*lin)p 425 4086 V 34 w(basis)c Fo(is)j(the)f(co)s(dimension)h(of)f
+(the)h(p)s(olyhedron.)0 4270 y Fn(dd)p 102 4270 V 34
+w(boolean)46 b(dd)p 614 4270 V 33 w(ExistsRestrictedFace\(matri)o(x,)c
+(R,)47 b(S,)g(err\))d Fo(:)227 4383 y(Returns)26 b(the)i(answ)m(er)f
+(to)g(the)h(F)-8 b(ark)j(as')28 b(t)m(yp)s(e)f(decision)h(problem)e(as)
+i(to)f(whether)g(there)g(is)g(a)h(p)s(oin)m(t)f(in)f(the)227
+4496 y(p)s(olyhedron)h(giv)m(en)h(b)m(y)g(matrix)g(satisfying)g(all)h
+(constrain)m(ts)f(in)g Fn(R)f Fo(with)g(equalit)m(y)j(and)d(all)h
+(constrain)m(ts)h(in)227 4609 y Fn(S)h Fo(with)g(strict)i(inequalit)m
+(y)-8 b(.)42 b(More)31 b(precisely)-8 b(,)32 b(it)f(is)f(the)h(linear)f
+(feasibilit)m(y)j(problem:)1111 4795 y Fi(9)p Fo(?)82
+b Fj(x)113 b Fo(satisfying)h Fj(b)1979 4809 y Fg(r)2038
+4795 y Fi(\000)19 b Fj(A)2196 4809 y Fg(r)2235 4795 y
+Fj(x)83 b Fo(=)25 b(0)p Fj(;)41 b Fi(8)p Fj(r)27 b Fi(2)e
+Fj(R)c Fi([)f Fj(L)1940 4908 y(b)1979 4922 y Fg(s)2036
+4908 y Fi(\000)g Fj(A)2195 4922 y Fg(s)2232 4908 y Fj(x)86
+b(>)25 b Fo(0)p Fj(;)41 b Fi(8)p Fj(s)24 b Fi(2)h Fj(S)1940
+5021 y(b)1979 5035 y Fg(t)2029 5021 y Fi(\000)20 b Fj(A)2188
+5035 y Fg(t)2218 5021 y Fj(x)100 b Fi(\025)25 b Fo(0)p
+Fj(;)41 b Fi(8)p Fj(t)24 b Fi(2)h Fj(T)8 b(;)227 5207
+y Fo(where)31 b Fj(L)g Fo(is)g(the)g(set)h(of)f(linearit)m(y)i(ro)m(ws)
+e(of)g Fn(matrix)p Fo(,)f(and)g Fj(T)44 b Fo(represen)m(ts)31
+b(the)g(set)h(of)f(ro)m(ws)g(that)h(are)f(not)227 5320
+y(in)e Fj(R)17 b Fi([)f Fj(L)h Fi([)f Fj(S)5 b Fo(.)40
+b(Both)29 b Fn(R)g Fo(and)f Fn(S)g Fo(are)h(of)g Fn(dd)p
+1683 5320 V 33 w(rowset)e Fo(t)m(yp)s(e.)41 b(The)28
+b(set)h Fj(S)k Fo(is)c(supp)s(osed)e(to)i(b)s(e)f(disjoin)m(t)h(from)
+227 5433 y(b)s(oth)h Fj(R)h Fo(and)f Fj(L)p Fo(.)40 b(If)30
+b(it)h(is)f(not)h(the)g(case,)g(the)g(set)g Fj(S)k Fo(will)c(b)s(e)f
+(considered)g(as)g Fj(S)c Fi(n)20 b Fo(\()p Fj(R)i Fi([)d
+Fj(L)p Fo(\).)1926 5682 y(9)p eop end
+%%Page: 10 10
+TeXDict begin 10 9 bop 227 44 a Fo(This)32 b(function)h(ignores)g
+Fn(matrix->representation)p Fo(,)28 b(and)k(th)m(us)h(ev)m(en)g(if)g
+(it)g(is)g(set)h(to)f Fn(dd)p 3440 44 29 4 v 34 w(Generator)227
+157 y Fo(or)e Fn(dd)p 441 157 V 33 w(Unspecified)p Fo(,)d(it)j(treats)g
+(the)g(matrix)g(as)f(if)g(it)h(w)m(ere)g(inequalit)m(y)h(represen)m
+(tation.)0 337 y Fn(dd)p 102 337 V 34 w(boolean)46 b(dd)p
+614 337 V 33 w(ExistsRestrictedFace2\(matr)o(ix,)41 b(R,)47
+b(S,)h(lps,)e(err\))f Fo(:)227 450 y(It)27 b(is)h(the)f(same)g(as)h
+(the)f(function)g Fn(dd)p 1505 450 V 34 w(ExistsRestrictedFace)21
+b Fo(except)28 b(that)g(it)f(returns)f(also)i(a)g(certi\014-)227
+562 y(cate)k(for)e(the)h(answ)m(er.)41 b(The)29 b(certi\014cate)k(is)d
+(a)h(solution)g(to)g(the)g(b)s(ounded)d(LP:)891 717 y(\(P\))83
+b(max)15 b Fj(z)118 b Fo(sub)5 b(ject)30 b(to)114 b Fj(b)1999
+731 y Fg(r)2058 717 y Fi(\000)19 b Fj(A)2216 731 y Fg(r)2255
+717 y Fj(x)283 b Fo(=)25 b(0)p Fj(;)41 b Fi(8)p Fj(r)27
+b Fi(2)e Fj(R)c Fi([)f Fj(L)1960 830 y(b)1999 844 y Fg(s)2056
+830 y Fi(\000)g Fj(A)2215 844 y Fg(s)2252 830 y Fj(x)86
+b Fi(\000)p Fj(z)h Fi(\025)25 b Fo(0)p Fj(;)41 b Fi(8)p
+Fj(s)24 b Fi(2)h Fj(S)1960 943 y(b)1999 957 y Fg(t)2049
+943 y Fi(\000)20 b Fj(A)2208 957 y Fg(t)2238 943 y Fj(x)300
+b Fi(\025)25 b Fo(0)p Fj(;)41 b Fi(8)p Fj(t)24 b Fi(2)h
+Fj(T)1960 1056 y Fo(1)385 b Fi(\000)p Fj(z)87 b Fi(\025)25
+b Fo(0)p Fj(;)227 1228 y Fo(where)31 b Fj(L)g Fo(is)g(the)g(set)h(of)f
+(linearit)m(y)i(ro)m(ws)e(of)g Fn(matrix)p Fo(,)f(and)g
+Fj(T)44 b Fo(represen)m(ts)31 b(the)g(set)h(of)f(ro)m(ws)g(that)h(are)f
+(not)227 1341 y(in)j Fj(R)23 b Fi([)f Fj(L)g Fi([)g Fj(S)5
+b Fo(.)51 b(The)33 b(answ)m(er)h(for)f(the)h(decision)g(problem)f(is)h
+(YES)f(if)h(and)f(only)h(if)g(the)f(LP)h(attains)h(an)227
+1454 y(optimal)c(and)d(the)i(optimal)g(v)-5 b(alue)30
+b(is)g(p)s(ositiv)m(e.)41 b(The)29 b(dual)g(solution)h(\(either)g(an)f
+(optimal)i(solution)f(or)f(a)227 1567 y(dual)d(un)m(b)s(ounded)e
+(direction\))j(can)g(b)s(e)e(considered)h(as)h(a)g(certi\014cate)h(for)
+e(the)h(NO)f(answ)m(er,)h(if)f(the)h(answ)m(er)227 1679
+y(is)k(NO.)227 1826 y(This)h(function)h(ignores)g Fn
+(matrix->representation)p Fo(,)28 b(and)k(th)m(us)h(ev)m(en)g(if)g(it)g
+(is)g(set)h(to)f Fn(dd)p 3440 1826 V 34 w(Generator)227
+1939 y Fo(or)e Fn(dd)p 441 1939 V 33 w(Unspecified)p
+Fo(,)d(it)j(treats)g(the)g(matrix)g(as)f(if)g(it)h(w)m(ere)g(inequalit)
+m(y)h(represen)m(tation.)0 2118 y Fn(dd)p 102 2118 V
+34 w(SetFamilyPtr)44 b(dd)p 852 2118 V 34 w(Matrix2Adjacency\(matrix,)d
+(err\))k Fo(:)227 2231 y(Computes)e(the)g(adjacency)g(list)h(of)f
+(input)f(ro)m(ws)g(using)h(the)g(LP)f(solv)m(er)i(and)e(without)h
+(running)e(the)227 2344 y(represen)m(tation)27 b(con)m(v)m(ersion.)41
+b(When)26 b(the)g(input)f(is)h(H-represen)m(tation,)j(it)d(giv)m(es)h
+(the)g(facet)g(graph)e(of)h(the)227 2457 y(p)s(olyhedron.)37
+b(F)-8 b(or)24 b(V-represen)m(tation,)j(it)c(giv)m(es)i(the)e(\(v)m
+(ertex\))i(graph)e(of)g(the)h(p)s(olyhedron.)37 b(It)23
+b(is)g(required)227 2570 y(that)28 b(the)f(input)g(matrix)g(is)g(a)h
+(minimal)f(represen)m(tation.)41 b(Run)26 b(redundancy)g(remo)m(v)-5
+b(al)28 b(functions)f(b)s(efore)227 2683 y(calling)32
+b(this)e(function,)h(see)g(the)f(sample)h(co)s(de)f(adjacency)-8
+b(.c.)0 2862 y Fn(dd)p 102 2862 V 34 w(SetFamilyPtr)44
+b(dd)p 852 2862 V 34 w(Matrix2WeakAdjacency\(matr)o(ix,)d(err\))k
+Fo(:)227 2975 y(Computes)37 b(the)h(w)m(eak)h(adjacency)g(list)f(of)g
+(input)f(ro)m(ws)h(using)f(the)h(LP)g(solv)m(er)g(and)f(without)h
+(running)227 3088 y(the)31 b(represen)m(tation)h(con)m(v)m(ersion.)44
+b(When)30 b(the)h(input)f(is)h(H-represen)m(tation,)i(it)e(giv)m(es)i
+(the)e(graph)f(where)227 3201 y(its)g(no)s(des)f(are)h(the)g(facets)h
+(t)m(w)m(o)f(no)s(des)f(are)h(adjacen)m(t)h(if)f(and)f(only)g(if)h(the)
+g(asso)s(ciated)h(facets)f(ha)m(v)m(e)h(some)227 3314
+y(in)m(tersection.)41 b(F)-8 b(or)26 b(V-represen)m(tation,)j(it)d(giv)
+m(es)h(the)f(graph)f(where)g(its)h(no)s(des)e(are)i(the)g(v)m(ertices)h
+(and)e(t)m(w)m(o)227 3427 y(no)s(des)i(are)g(adjacen)m(t)i(if)e(and)g
+(only)g(if)g(the)h(asso)s(ciated)h(v)m(ertices)g(are)e(on)g(a)h(common)
+g(facet.)41 b(It)27 b(is)g(required)227 3540 y(that)h(the)f(input)g
+(matrix)g(is)g(a)h(minimal)f(represen)m(tation.)41 b(Run)26
+b(redundancy)g(remo)m(v)-5 b(al)28 b(functions)f(b)s(efore)227
+3653 y(calling)32 b(this)e(function,)h(see)g(the)f(sample)h(co)s(de)f
+(adjacency)-8 b(.c.)0 3832 y Fn(dd)p 102 3832 V 34 w(MatrixPtr)45
+b(dd)p 709 3832 V 34 w(FourierElimination\(matri)o(x,)d(err\))i
+Fo(:)227 3945 y(Eliminate)32 b(the)f(last)h(v)-5 b(ariable)32
+b(from)f(a)g(system)g(of)g(linear)h(inequalities)g(giv)m(en)g(b)m(y)f
+(matrix)g(b)m(y)g(using)f(the)227 4058 y(F)-8 b(ourier's)21
+b(Elimination.)38 b(If)20 b(the)h(input)e(matrix)i(is)f(V-represen)m
+(tation,)k Fn(*err)19 b Fo(returns)g Fn(dd)p 3275 4058
+V 34 w(NotAvailForV)p Fo(.)227 4171 y(This)32 b(function)h(do)s(es)f
+(not)h(remo)m(v)m(e)i(redundancy)c(and)h(one)h(migh)m(t)h(w)m(an)m(t)f
+(to)h(call)g(redundancy)d(remo)m(v)-5 b(al)227 4284 y(functions)30
+b(afterw)m(ards.)41 b(See)31 b(the)f(sample)h(co)s(de)f(fourier.c.)0
+4463 y Fn(dd)p 102 4463 V 34 w(MatrixPtr)45 b(dd)p 709
+4463 V 34 w(BlockElimination\(matrix,)c(set,)47 b(err\))d
+Fo(:)227 4576 y(Eliminate)d(a)f(set)g(of)f(v)-5 b(ariables)41
+b(from)e(a)h(system)f(of)h(linear)g(inequalities)h(giv)m(en)f(b)m(y)g
+(matrix)g(b)m(y)f(using)227 4689 y(the)33 b(extreme)g(ra)m(ys)g(of)g
+(the)g(dual)f(linear)h(system.)48 b(See)33 b(commen)m(ts)g(in)f(the)h
+(co)s(de)g(cddpro)5 b(j.c)32 b(for)g(details.)227 4802
+y(This)27 b(migh)m(t)g(b)s(e)g(a)h(faster)f(w)m(a)m(y)h(to)g(eliminate)
+h(v)-5 b(ariables)28 b(than)e(the)i(rep)s(eated)f(F)-8
+b(ourierElimination)29 b(when)227 4915 y(the)35 b(n)m(um)m(b)s(er)e(of)
+h(v)-5 b(ariables)35 b(to)g(eliminate)g(is)g(large.)53
+b(If)33 b(the)i(input)e(matrix)i(is)f(V-represen)m(tation,)j
+Fn(*err)227 5028 y Fo(returns)26 b Fn(dd)p 640 5028 V
+34 w(NotAvailForV)p Fo(.)d(This)k(function)f(do)s(es)h(not)g(remo)m(v)m
+(e)h(redundancy)d(and)h(one)i(migh)m(t)f(w)m(an)m(t)h(to)227
+5141 y(call)k(redundancy)d(remo)m(v)-5 b(al)31 b(functions)f(afterw)m
+(ards.)41 b(See)31 b(the)f(sample)h(co)s(de)f(pro)5 b(jection.c.)0
+5320 y Fn(dd)p 102 5320 V 34 w(rowrange)45 b(dd)p 661
+5320 V 34 w(RayShooting\(matrix,)e(point,)j(vector\))d
+Fo(:)227 5433 y(Finds)32 b(the)g(index)g(of)g(a)h(halfspace)f(\014rst)g
+(left)g(b)m(y)g(the)h(ra)m(y)f(starting)h(from)f Fn(point)f
+Fo(to)m(w)m(ard)i(the)f(direction)1903 5682 y(10)p eop
+end
+%%Page: 11 11
+TeXDict begin 11 10 bop 227 44 a Fn(vector)p Fo(.)39
+b(It)28 b(resolv)m(es)i(tie)f(b)m(y)f(a)h(lexicographic)h(p)s
+(erturbation.)39 b(Those)28 b(inequalities)i(violated)g(b)m(y)e
+Fn(point)227 157 y Fo(will)j(b)s(e)f(simply)g(ignored.)0
+401 y Fd(4.3)112 b(Data)38 b(Manipulations)0 572 y Fp(4.3.1)105
+b(Num)m(b)s(er)35 b(Assignmen)m(ts)0 744 y Fo(F)-8 b(or)31
+b(n)m(um)m(b)s(er)d(assignmen)m(ts,)j(one)f(cannot)h(use)e(suc)m(h)h
+(expressions)f(as)h Fn(x=\(mytype\)a)p Fo(.)38 b(This)29
+b(is)g(b)s(ecause)h(cddlib)0 857 y(uses)37 b(an)g(abstract)h(n)m(um)m
+(b)s(er)e(t)m(yp)s(e)h(\()p Fn(mytype)p Fo(\))f(so)i(that)f(it)h(can)f
+(compute)h(with)f(v)-5 b(arious)37 b(n)m(um)m(b)s(er)f(t)m(yp)s(es)h
+(suc)m(h)0 970 y(as)c(C)f(double)g(and)h(GMP)g(rational.)49
+b(User)32 b(can)h(easily)h(add)e(a)h(new)g(n)m(um)m(b)s(er)e(t)m(yp)s
+(e)i(b)m(y)g(rede\014ning)e(arithmetic)0 1082 y(op)s(erations)g(in)f
+(cddmp.h)e(and)i(cddmp.c.)0 1295 y Fn(void)47 b(dd)p
+341 1295 29 4 v 33 w(init\(x\))d Fo(:)227 1408 y(This)36
+b(is)g(to)h(initialize)h(a)f Fn(mytype)d Fo(v)-5 b(ariable)37
+b Fn(x)f Fo(and)g(to)h(set)f(it)h(to)g(zero.)59 b(This)35
+b(initialization)k(has)d(to)h(b)s(e)227 1521 y(called)32
+b(b)s(efore)e(an)m(y)h Fn(mytype)d Fo(v)-5 b(ariable)31
+b(to)g(b)s(e)f(used.)0 1708 y Fn(void)47 b(dd)p 341 1708
+V 33 w(clear\(x\))d Fo(:)227 1821 y(This)30 b(is)g(to)h(free)g(the)f
+(space)h(allo)s(cated)i(to)e(a)g Fn(mytype)d Fo(v)-5
+b(ariable)31 b Fn(x)p Fo(.)0 2009 y Fn(void)47 b(dd)p
+341 2009 V 33 w(set)p 518 2009 V 34 w(si\(x,)f(a\))f
+Fo(:)227 2122 y(This)30 b(is)g(to)h(set)g(a)g Fn(mytype)e
+Fo(v)-5 b(ariable)31 b Fn(x)f Fo(to)h(the)g(v)-5 b(alue)30
+b(of)h(signed)f(long)h(in)m(teger)h Fn(a)p Fo(.)0 2310
+y Fn(void)47 b(dd)p 341 2310 V 33 w(set)p 518 2310 V
+34 w(si2\(x,)f(a,)h(b\))e Fo(:)227 2422 y(This)24 b(is)g(to)i(set)f(a)f
+Fn(mytype)f Fo(v)-5 b(ariable)25 b Fn(x)f Fo(to)i(the)e(v)-5
+b(alue)25 b(of)g(the)f(rational)i(expression)e Fn(a/b)p
+Fo(,)h(where)f Fn(a)g Fo(is)h(signed)227 2535 y(long)31
+b(and)f Fn(b)g Fo(is)g(unsigned)g(long)h(in)m(tegers.)0
+2723 y Fn(void)47 b(dd)p 341 2723 V 33 w(set)p 518 2723
+V 34 w(d\(x,)g(b\))e Fo(:)227 2836 y(This)33 b(is)g(to)h(set)f(a)h
+Fn(mytype)d Fo(v)-5 b(ariable)34 b Fn(x)f Fo(to)h(the)f(v)-5
+b(alue)34 b(of)f(double)g Fn(b)p Fo(.)49 b(This)32 b(is)h(a)m(v)-5
+b(ailable)36 b(only)d(when)f(the)227 2949 y(library)e(is)h(compiled)f
+(without)h Fn(-DGMPRATIONAL)c Fo(compiler)k(option.)0
+3189 y Fp(4.3.2)105 b(Arithmetic)35 b(Op)s(erations)g(for)g
+Fn(mytype)e Fp(Num)m(b)s(ers)0 3361 y Fo(Belo)m(w)f Fn(x)p
+Fo(,)e Fn(y)p Fo(,)h Fn(z)f Fo(are)g(of)h(t)m(yp)s(e)f
+Fn(mytype)p Fo(.)0 3573 y Fn(void)47 b(dd)p 341 3573
+V 33 w(add\(x,)g(y,)g(z\))e Fo(:)227 3686 y(Set)31 b
+Fn(x)f Fo(to)h(b)s(e)f(the)g(sum)g(of)g Fn(y)g Fo(and)g
+Fn(z)p Fo(.)0 3874 y Fn(void)47 b(dd)p 341 3874 V 33
+w(sub\(x,)g(y,)g(z\))e Fo(:)227 3987 y(Set)31 b Fn(x)f
+Fo(to)h(b)s(e)f(the)g(substraction)h(of)f Fn(z)g Fo(from)g
+Fn(y)p Fo(.)0 4174 y Fn(void)47 b(dd)p 341 4174 V 33
+w(mul\(x,)g(y,)g(z\))e Fo(:)227 4287 y(Set)31 b Fn(x)f
+Fo(to)h(b)s(e)f(the)g(m)m(ultiplication)j(of)d Fn(y)g
+Fo(and)g Fn(z)p Fo(.)0 4475 y Fn(void)47 b(dd)p 341 4475
+V 33 w(div\(x,)g(y,)g(z\))e Fo(:)227 4588 y(Set)31 b
+Fn(x)f Fo(to)h(b)s(e)f(the)g(division)h(of)f Fn(y)g Fo(o)m(v)m(er)i
+Fn(z)p Fo(.)0 4775 y Fn(void)47 b(dd)p 341 4775 V 33
+w(inv\(x,)g(y\))d Fo(:)227 4888 y(Set)31 b Fn(x)f Fo(to)h(b)s(e)f(the)g
+(reciplo)s(cal)i(of)f Fn(y)p Fo(.)1903 5682 y(11)p eop
+end
+%%Page: 12 12
+TeXDict begin 12 11 bop 0 44 a Fp(4.3.3)105 b(Prede\014ned)36
+b(Constan)m(ts)0 216 y Fo(There)24 b(are)h(sev)m(eral)g
+Fn(mytype)e Fo(constan)m(ts)i(de\014ned)f(when)f Fn(dd)p
+2043 216 29 4 v 34 w(set)p 2221 216 V 33 w(global)p 2542
+216 V 33 w(constants\(void\))d Fo(is)25 b(called.)40
+b(Some)0 329 y(constan)m(ts)35 b(dep)s(end)d(on)i(the)g(double)g
+(constan)m(t)h Fn(dd)p 1784 329 V 34 w(almostzero)c Fo(whic)m(h)i(is)h
+(normally)g(set)h(to)g(10)3417 296 y Fc(\000)p Fh(7)3546
+329 y Fo(in)e(cdd.h.)0 442 y(This)28 b(v)-5 b(alue)29
+b(can)f(b)s(e)g(mo)s(di\014ed)f(dep)s(ending)g(on)i(ho)m(w)f(n)m
+(umerically)h(delicate)i(y)m(our)d(problems)g(are)h(but)f(an)g(extra)0
+555 y(caution)j(should)f(b)s(e)f(tak)m(en.)0 767 y Fn(mytype)46
+b(dd)p 436 767 V 34 w(purezero)d Fo(:)227 880 y(This)30
+b(represen)m(ts)g(the)h(mathematical)h(zero)g(0.)0 1068
+y Fn(mytype)46 b(dd)p 436 1068 V 34 w(zero)e Fo(:)227
+1181 y(This)36 b(represen)m(ts)g(the)h(largest)h(p)s(ositiv)m(e)f(n)m
+(um)m(b)s(er)e(whic)m(h)h(should)g(b)s(e)g(considered)g(to)h(b)s(e)f
+(zero.)60 b(In)35 b(the)227 1293 y(GMPRA)-8 b(TIONAL)34
+b(mo)s(de,)h(it)f(is)g(equal)g(to)g Fn(dd)p 1890 1293
+V 34 w(purezero)p Fo(.)49 b(In)33 b(the)h(C)f(double)g(mo)s(de,)i(it)f
+(is)g(set)g(to)g(the)227 1406 y(v)-5 b(alue)31 b(of)g
+Fn(dd)p 668 1406 V 33 w(almostzero)p Fo(.)0 1594 y Fn(mytype)46
+b(dd)p 436 1594 V 34 w(minuszero)d Fo(:)227 1707 y(The)30
+b(negativ)m(e)j(of)d Fn(dd)p 978 1707 V 34 w(zero)p Fo(.)0
+1895 y Fn(mytype)46 b(dd)p 436 1895 V 34 w(one)f Fo(:)227
+2007 y(This)30 b(represen)m(ts)g(the)h(mathematical)h(one)f(1.)0
+2248 y Fp(4.3.4)105 b(Sign)36 b(Ev)-6 b(aluation)34 b(and)h(Comparison)
+h(for)f Fn(mytype)e Fp(Num)m(b)s(ers)0 2419 y Fo(Belo)m(w)f
+Fn(x)p Fo(,)e Fn(y)p Fo(,)h Fn(z)f Fo(are)g(of)h(t)m(yp)s(e)f
+Fn(mytype)p Fo(.)0 2632 y Fn(dd)p 102 2632 V 34 w(boolean)46
+b(dd)p 614 2632 V 33 w(Positive\(x\))d Fo(:)227 2745
+y(Returns)23 b Fn(dd)p 668 2745 V 34 w(TRUE)f Fo(if)h
+Fn(x)g Fo(is)g(considered)h(p)s(ositiv)m(e,)i(and)c Fn(dd)p
+2207 2745 V 34 w(FALSE)g Fo(otherwise.)39 b(In)23 b(the)g(GMPRA)-8
+b(TIONAL)227 2858 y(mo)s(de,)23 b(the)d(p)s(ositivit)m(y)i(recognition)
+g(is)f(exact.)39 b(In)20 b(the)h(C)f(double)g(mo)s(de,)i(this)f(means)f
+(the)h(v)-5 b(alue)21 b(is)g(strictly)227 2970 y(larger)31
+b(than)f Fn(dd)p 799 2970 V 34 w(zero)p Fo(.)227 3121
+y Fn(dd)p 329 3121 V 34 w(boolean)46 b(dd)p 841 3121
+V 34 w(Negative\(x\))27 b Fo(w)m(orks)j(similarly)-8
+b(.)0 3308 y Fn(dd)p 102 3308 V 34 w(boolean)46 b(dd)p
+614 3308 V 33 w(Nonpositive\(x\))c Fo(:)227 3421 y(Returns)30
+b(the)g(negation)i(of)f Fn(dd)p 1304 3421 V 33 w(Positive\(x\))p
+Fo(.)38 b Fn(dd)p 2024 3421 V 34 w(Nonnegative\(x\))26
+b Fo(w)m(orks)31 b(similarly)-8 b(.)0 3609 y Fn(dd)p
+102 3609 V 34 w(boolean)46 b(dd)p 614 3609 V 33 w(EqualToZero\(x\))c
+Fo(:)227 3722 y(Returns)34 b Fn(dd)p 679 3722 V 34 w(TRUE)g
+Fo(if)h Fn(x)g Fo(is)g(considered)g(zero,)i(and)d Fn(dd)p
+2156 3722 V 34 w(FALSE)g Fo(otherwise.)55 b(In)34 b(the)h(GMPRA)-8
+b(TIONAL)227 3835 y(mo)s(de,)28 b(the)f(zero)h(recognition)h(is)f
+(exact.)41 b(In)26 b(the)i(C)e(double)h(mo)s(de,)h(this)f(means)g(the)h
+(v)-5 b(alue)27 b(is)h(in)m(b)s(et)m(w)m(een)227 3948
+y Fn(dd)p 329 3948 V 34 w(minuszero)g Fo(and)i Fn(dd)p
+1096 3948 V 34 w(zero)f Fo(inclusiv)m(e.)0 4135 y Fn(dd)p
+102 4135 V 34 w(boolean)46 b(dd)p 614 4135 V 33 w(Larger\(x,)g(y\))f
+Fo(:)227 4248 y(Returns)31 b Fn(dd)p 676 4248 V 33 w(TRUE)f
+Fo(if)i Fn(x)f Fo(is)g(strictly)h(larger)g(than)f Fn(y)p
+Fo(,)g(and)g Fn(dd)p 2349 4248 V 34 w(FALSE)f Fo(otherwise.)43
+b(This)31 b(is)g(implemen)m(ted)227 4361 y(as)f(dd)p
+445 4361 28 4 v 32 w(P)m(ositiv)m(e\(z\))j(where)d Fn(z)f
+Fo(is)h(the)g(subtraction)g(of)g Fn(y)g Fo(from)f Fn(x)p
+Fo(.)40 b Fn(dd)p 2602 4361 29 4 v 34 w(Smaller\(x,)45
+b(y\))29 b Fo(w)m(orks)h(similarly)-8 b(.)0 4549 y Fn(dd)p
+102 4549 V 34 w(boolean)46 b(dd)p 614 4549 V 33 w(Equal\(x,)g(y\))f
+Fo(:)227 4662 y(Returns)30 b Fn(dd)p 675 4662 V 33 w(TRUE)g
+Fo(if)g Fn(x)g Fo(is)g(considered)g(equal)h(to)g Fn(y)p
+Fo(,)g(and)e Fn(dd)p 2354 4662 V 34 w(FALSE)g Fo(otherwise.)41
+b(This)30 b(is)g(implemen)m(ted)227 4774 y(as)h(dd)p
+446 4774 28 4 v 32 w(EqualT)-8 b(oZero\(z\))32 b(where)e
+Fn(z)g Fo(is)g(the)h(subtraction)f(of)h Fn(y)f Fo(from)g
+Fn(x)p Fo(.)0 5015 y Fp(4.3.5)105 b(P)m(olyhedra)36 b(Data)f
+(Manipulation)0 5186 y Fn(dd)p 102 5186 29 4 v 34 w(MatrixPtr)45
+b(dd)p 709 5186 V 34 w(PolyFile2Matrix)f(\(f,)i(err\))f
+Fo(:)227 5299 y(Read)28 b(a)f(P)m(olyhedra)h(data)g(from)e(stream)i
+Fn(f)f Fo(and)f(store)i(it)g(in)f Fn(matrixdata)d Fo(and)j(return)f(a)h
+(p)s(oin)m(ter)g(to)h(the)227 5412 y(data.)1903 5682
+y(12)p eop end
+%%Page: 13 13
+TeXDict begin 13 12 bop 0 44 a Fn(dd)p 102 44 29 4 v
+34 w(MatrixPtr)45 b(dd)p 709 44 V 34 w(CopyInequalities\(poly\))39
+b Fo(:)227 157 y(Cop)m(y)26 b(the)f(inequalit)m(y)i(represen)m(tation)g
+(p)s(oin)m(ted)e(b)m(y)g(p)s(oly)g(to)h Fn(matrixdata)d
+Fo(and)i(return)f Fn(dd)p 3415 157 V 34 w(MatrixPtr)p
+Fo(.)0 345 y Fn(dd)p 102 345 V 34 w(MatrixPtr)45 b(dd)p
+709 345 V 34 w(CopyGenerators\(poly\))40 b Fo(:)227 458
+y(Cop)m(y)27 b(the)g(generator)i(represen)m(tation)f(p)s(oin)m(ted)e(b)
+m(y)h(p)s(oly)g(to)h Fn(matrixdata)c Fo(and)i(return)g
+Fn(dd)p 3415 458 V 34 w(MatrixPtr)p Fo(.)0 645 y Fn(dd)p
+102 645 V 34 w(SetFamilyPtr)44 b(dd)p 852 645 V 34 w
+(CopyIncidence\(poly\))c Fo(:)227 758 y(Cop)m(y)21 b(the)f(incidence)h
+(represen)m(tation)g(of)g(the)f(computed)g(represen)m(tation)i(p)s(oin)
+m(ted)e(b)m(y)g(p)s(oly)g(to)h Fn(setfamily)227 871 y
+Fo(and)38 b(return)f Fn(dd)p 800 871 V 34 w(SetFamilyPtr)p
+Fo(.)62 b(The)37 b(computed)i(represen)m(tation)g(is)g
+Fn(Inequality)c Fo(if)k(the)f(input)g(is)227 984 y Fn(Generator)p
+Fo(,)28 b(and)i(the)h(vice)g(visa.)0 1172 y Fn(dd)p 102
+1172 V 34 w(SetFamilyPtr)44 b(dd)p 852 1172 V 34 w
+(CopyAdjacency\(poly\))c Fo(:)227 1285 y(Cop)m(y)21 b(the)f(adjacency)h
+(represen)m(tation)g(of)g(the)f(computed)g(represen)m(tation)i(p)s(oin)
+m(ted)e(b)m(y)g(p)s(oly)g(to)h Fn(setfamily)227 1397
+y Fo(and)38 b(return)f Fn(dd)p 800 1397 V 34 w(SetFamilyPtr)p
+Fo(.)62 b(The)37 b(computed)i(represen)m(tation)g(is)g
+Fn(Inequality)c Fo(if)k(the)f(input)g(is)227 1510 y Fn(Generator)p
+Fo(,)28 b(and)i(the)h(vice)g(visa.)0 1698 y Fn(dd)p 102
+1698 V 34 w(SetFamilyPtr)44 b(dd)p 852 1698 V 34 w
+(CopyInputIncidence\(poly\))39 b Fo(:)227 1811 y(Cop)m(y)30
+b(the)g(incidence)h(represen)m(tation)g(of)f(the)g(input)f(represen)m
+(tation)h(p)s(oin)m(ted)g(b)m(y)g(p)s(oly)f(to)i Fn(setfamily)227
+1924 y Fo(and)f(return)f Fn(d)p 736 1924 V 34 w(SetFamilyPtr)p
+Fo(.)0 2111 y Fn(dd)p 102 2111 V 34 w(SetFamilyPtr)44
+b(dd)p 852 2111 V 34 w(CopyInputAdjacency\(poly\))39
+b Fo(:)227 2224 y(Cop)m(y)28 b(the)g(adjacency)h(represen)m(tation)f
+(of)g(the)g(input)f(represen)m(tation)i(p)s(oin)m(ted)f(b)m(y)f(p)s
+(oly)h(to)g Fn(setfamily)227 2337 y Fo(and)i(return)f
+Fn(d)p 736 2337 V 34 w(SetFamilyPtr)p Fo(.)0 2525 y Fn(void)47
+b(dd)p 341 2525 V 33 w(FreePolyhedra\(poly\))41 b Fo(:)227
+2638 y(F)-8 b(ree)32 b(memory)e(allo)s(cated)i(to)f Fn(poly)p
+Fo(.)0 2878 y Fp(4.3.6)105 b(LP)36 b(Data)e(Manipulation)0
+3050 y Fn(dd)p 102 3050 V 34 w(LPPtr)46 b(dd)p 518 3050
+V 34 w(MakeLPforInteriorFinding)o(\(lp\))39 b Fo(:)227
+3162 y(Set)29 b(up)f(an)g(LP)g(to)i(\014nd)d(an)h(in)m(terior)i(p)s
+(oin)m(t)e(of)h(the)g(feasible)g(region)g(of)g Fn(lp)f
+Fo(and)g(return)f(a)i(p)s(oin)m(ter)g(to)g(the)227 3275
+y(LP)-8 b(.)36 b(The)f(new)g(LP)g(has)h(one)g(new)f(v)-5
+b(ariable)36 b Fj(x)1867 3290 y Fg(d)p Fh(+1)2033 3275
+y Fo(and)f(one)h(more)g(constrain)m(t:)52 b(max)15 b
+Fj(x)3329 3290 y Fg(d)p Fh(+1)3495 3275 y Fo(sub)5 b(ject)36
+b(to)227 3388 y Fj(b)20 b Fi(\000)g Fj(Ax)h Fi(\000)f
+Fj(x)661 3403 y Fg(d)p Fh(+1)816 3388 y Fi(\025)25 b
+Fo(0)31 b(and)f Fj(x)1217 3403 y Fg(d)p Fh(+1)1373 3388
+y Fi(\024)25 b Fj(K)7 b Fo(,)30 b(where)g Fj(K)37 b Fo(is)30
+b(a)h(p)s(ositiv)m(e)g(constan)m(t.)0 3576 y Fn(dd)p
+102 3576 V 34 w(LPPtr)46 b(dd)p 518 3576 V 34 w(Matrix2LP\(matrix,)d
+(err\))h Fo(:)227 3689 y(Load)31 b Fn(matrix)d Fo(to)k
+Fn(lpdata)c Fo(and)i(return)f(a)i(p)s(oin)m(ter)f(to)i(the)e(data.)0
+3876 y Fn(dd)p 102 3876 V 34 w(LPSolutionPtr)44 b(dd)p
+900 3876 V 34 w(CopyLPSolution\(lp\))c Fo(:)227 3989
+y(Load)32 b(the)g(solutions)g(of)g Fn(lp)f Fo(to)i Fn(lpsolution)c
+Fo(and)i(return)g(a)h(p)s(oin)m(ter)g(to)g(the)g(data.)46
+b(This)31 b(replaces)h(the)227 4102 y(old)f(name)f Fn(dd)p
+723 4102 V 34 w(LPSolutionLoad\(lp\))p Fo(.)0 4290 y
+Fn(void)47 b(dd)p 341 4290 V 33 w(FreeLPData\(lp\))42
+b Fo(:)227 4403 y(F)-8 b(ree)32 b(memory)e(allo)s(cated)i(as)f(an)f(LP)
+g(data)h(p)s(oin)m(ted)g(b)m(y)f Fn(lp)p Fo(.)0 4590
+y Fn(void)47 b(dd)p 341 4590 V 33 w(FreeLPSolution\(lps\))41
+b Fo(:)227 4703 y(F)-8 b(ree)32 b(memory)e(allo)s(cated)i(as)f(an)f(LP)
+g(solution)h(data)g(p)s(oin)m(ted)g(b)m(y)f Fn(lps)p
+Fo(.)0 4943 y Fp(4.3.7)105 b(Matrix)35 b(Manipulation)0
+5115 y Fn(dd)p 102 5115 V 34 w(MatrixPtr)45 b(dd)p 709
+5115 V 34 w(CopyMatrix\(matrix\))40 b Fo(:)227 5228 y(Mak)m(e)32
+b(a)f(cop)m(y)g(of)g(matrixdata)g(p)s(oin)m(ted)f(b)m(y)h
+Fn(matrix)d Fo(and)i(return)f(a)i(p)s(oin)m(ter)g(to)g(the)f(cop)m(y)-8
+b(.)1903 5682 y(13)p eop end
+%%Page: 14 14
+TeXDict begin 14 13 bop 0 44 a Fn(dd)p 102 44 29 4 v
+34 w(MatrixPtr)45 b(dd)p 709 44 V 34 w(AppendMatrix\(matrix1,)d
+(matrix2\))h Fo(:)227 157 y(Mak)m(e)32 b(a)e(matrixdata)h(b)m(y)e(cop)m
+(ying)i Fn(*matrix1)c Fo(and)i(app)s(ending)g(the)h(matrix)g(in)f
+Fn(*matrix2)f Fo(and)h(return)227 270 y(a)39 b(p)s(oin)m(ter)g(to)h
+(the)f(data.)67 b(The)38 b(colsize)j(m)m(ust)d(b)s(e)h(equal)g(in)g
+(the)g(t)m(w)m(o)h(input)e(matrices.)67 b(It)39 b(returns)e(a)227
+383 y Fn(NULL)j Fo(p)s(oin)m(ter)g(if)h(the)g(input)e(matrices)j(are)f
+(not)g(appropriate.)71 b(Its)41 b Fn(rowsize)e Fo(is)h(set)i(to)f(the)g
+(sum)e(of)227 496 y(the)k(ro)m(wsizes)h(of)e Fn(matrix1)f
+Fo(and)h Fn(matrix2)p Fo(.)75 b(The)42 b(new)g(matrixdata)i(inherits)e
+(ev)m(erything)i(else)f(\(i.e.)227 609 y(n)m(um)m(b)s(ert)m(yp)s(e,)30
+b(represen)m(tation,)i(etc\))f(from)f(the)h(\014rst)e(matrix.)0
+794 y Fn(int)47 b(dd)p 293 794 V 34 w(MatrixAppendTo\(&)c(matrix1,)j
+(matrix2\))d Fo(:)227 907 y(Same)31 b(as)f Fn(dd)p 683
+907 V 34 w(AppendMatrix)d Fo(except)32 b(that)e(the)h(\014rst)f(matrix)
+g(is)h(mo)s(di\014ed)e(to)i(tak)m(e)h(the)f(result.)0
+1092 y Fn(int)47 b(dd)p 293 1092 V 34 w(MatrixRowRemove\(&)c(matrix,)j
+(i\))f Fo(:)227 1205 y(Remo)m(v)m(e)32 b(the)f Fj(i)p
+Fo(th)f(ro)m(w)h(of)g Fn(matrix)p Fo(.)0 1391 y Fn(dd)p
+102 1391 V 34 w(MatrixPtr)45 b(dd)p 709 1391 V 34 w
+(MatrixSubmatrix\(matrix,)c(set\))k Fo(:)227 1504 y(Generate)36
+b(the)f(submatrix)f(of)h Fn(matrix)e Fo(b)m(y)i(remo)m(ving)h(the)f(ro)
+m(ws)f(indexed)h(b)m(y)f Fn(set)g Fo(and)g(return)g(a)h(ma-)227
+1617 y(trixdata)d(p)s(oin)m(ter.)0 1802 y Fn(dd)p 102
+1802 V 34 w(SetFamilyPtr)44 b(dd)p 852 1802 V 34 w
+(Matrix2Adjacency\(matrix,)d(err\))k Fo(:)227 1915 y(Return)25
+b(the)i(adjacency)f(list)h(of)f(the)g(represen)m(tation)h(giv)m(en)g(b)
+m(y)f Fn(matrix)p Fo(.)38 b(The)25 b(computation)i(is)f(done)g(b)m(y)
+227 2028 y(the)h(built-in)g(LP)f(solv)m(er.)41 b(The)26
+b(represen)m(tation)i(should)e(b)s(e)g(free)h(of)g(redundancy)e(when)g
+(this)i(function)g(is)227 2141 y(called.)40 b(See)22
+b(the)h(function)f Fn(dd)p 1270 2141 V 33 w(rowset)47
+b(dd)p 1734 2141 V 33 w(RedundantRows)19 b Fo(and)j(the)g(example)h
+(program)f(adjacency)-8 b(.c.)0 2383 y Fd(4.4)112 b(Input/Output)38
+b(F)-9 b(unctions)0 2555 y Fn(dd)p 102 2555 V 34 w(MatrixPtr)45
+b(dd)p 709 2555 V 34 w(PolyFile2Matrix)f(\(f,)i(err\))f
+Fo(:)227 2668 y(Read)28 b(a)f(P)m(olyhedra)h(data)g(from)e(stream)i
+Fn(f)f Fo(and)f(store)i(it)g(in)f Fn(matrixdata)d Fo(and)j(return)f(a)h
+(p)s(oin)m(ter)g(to)h(the)227 2780 y(data.)0 2966 y Fn(boolean)46
+b(dd)p 484 2966 V 34 w(DDFile2File\(ifile,)c(ofile,)47
+b(err\))d Fo(:)227 3079 y(Compute)33 b(the)g(represen)m(tation)h(con)m
+(v)m(ersion)g(for)e(a)i(p)s(olyhedron)d(giv)m(en)j(b)m(y)f(a)g(P)m
+(olyhedra)g(\014le)g(i\014le,)h(and)227 3192 y(write)d(the)g(other)f
+(represen)m(tation)i(in)e(a)h(P)m(olyhedra)g(\014le)f(o\014le.)42
+b Fn(*err)29 b Fo(returns)g Fn(dd)p 3073 3192 V 34 w(NoError)g
+Fo(if)h(the)h(com-)227 3305 y(putation)g(terminates)g(normally)-8
+b(.)42 b(Otherwise,)30 b(it)h(returns)e(a)i(v)-5 b(alue)31
+b(according)g(to)g(the)g(error)f(o)s(ccured.)0 3490 y
+Fn(void)47 b(dd)p 341 3490 V 33 w(WriteMatrix\(f,)d(matrix\))g
+Fo(:)227 3603 y(W)-8 b(rite)32 b Fn(matrix)d Fo(to)i(stream)g
+Fn(f)p Fo(.)0 3788 y Fn(void)47 b(dd)p 341 3788 V 33
+w(WriteNumber\(f,)d(x\))h Fo(:)227 3901 y(W)-8 b(rite)27
+b Fn(x)e Fo(to)h(stream)f Fn(f)p Fo(.)39 b(If)25 b Fn(x)f
+Fo(is)i(of)f(GMP)h(mp)s(q)p 1827 3901 28 4 v 31 w(t)g(rational)g
+Fj(p=q)s Fo(,)h(the)e(output)g(is)g Fj(p=q)s Fo(.)39
+b(If)25 b(it)g(is)h(of)f(C)g(double,)227 4014 y(it)31
+b(is)g(formated)f(as)h(a)g(double)f(\015oat)h(with)f(a)g(decimal)i(p)s
+(oin)m(t.)0 4200 y Fn(void)47 b(dd)p 341 4200 29 4 v
+33 w(WritePolyFile\(f,)d(poly\))g Fo(:)227 4312 y(W)-8
+b(rite)32 b(tt)f(p)s(oly)f(to)h(stream)g Fn(f)f Fo(in)g(P)m(olyhedra)h
+(format.)0 4498 y Fn(void)47 b(dd)p 341 4498 V 33 w
+(WriteErrorMessages\(f,)42 b(err\))j Fo(:)227 4611 y(W)-8
+b(rite)32 b(error)e(messages)h(giv)m(en)h(b)m(y)e Fn(err)g
+Fo(to)h(stream)f Fn(f)p Fo(.)0 4796 y Fn(void)47 b(dd)p
+341 4796 V 33 w(WriteSetFamily\(f,)d(setfam\))f Fo(:)227
+4909 y(W)-8 b(rite)37 b(the)e(set)h(family)g(p)s(oin)m(ted)f(b)m(y)g
+Fn(setfam)e Fo(to)j(stream)g Fn(f)p Fo(.)55 b(F)-8 b(or)35
+b(eac)m(h)i(set,)g(it)f(outputs)e(its)i(index,)g(its)227
+5022 y(cardinalit)m(y)-8 b(,)33 b(a)e(colon)g(\\:")41
+b(and)30 b(a)h(ordered)f(list)h(of)f(its)h(elemen)m(ts.)0
+5207 y Fn(void)47 b(dd)p 341 5207 V 33 w(WriteSetFamilyCompressed\(f)o
+(,)42 b(setfam\))h Fo(:)227 5320 y(W)-8 b(rite)37 b(the)e(set)h(family)
+g(p)s(oin)m(ted)f(b)m(y)g Fn(setfam)e Fo(to)j(stream)g
+Fn(f)p Fo(.)55 b(F)-8 b(or)35 b(eac)m(h)i(set,)g(it)f(outputs)e(its)i
+(index,)g(its)227 5433 y(cardinalit)m(y)g(or)e(the)g(negativ)m(e)j(of)d
+(the)g(cardinalit)m(y)-8 b(,)38 b(a)c(colon)h(\\:")50
+b(and)33 b(the)i(elemen)m(ts)g(in)f(the)g(set)h(or)f(its)1903
+5682 y(14)p eop end
+%%Page: 15 15
+TeXDict begin 15 14 bop 227 44 a Fo(complemen)m(ts)40
+b(whic)m(hev)m(er)g(is)f(smaller.)67 b(Whenev)m(er)40
+b(it)g(outputs)e(the)h(complemen)m(ts,)k(the)c(cardinalit)m(y)227
+157 y(is)i(negated)h(so)g(that)g(there)f(is)g(no)g(am)m(biguit)m(y)-8
+b(.)75 b(This)40 b(will)h(b)s(e)g(considered)g(standard)f(for)h
+(outputing)227 270 y(incidence)32 b(\(*.icd,)i(*ecd\))e(and)f
+(adjacency)h(\(*.iad,)i(*.ead\))e(data)h(in)e(cddlib.)43
+b(But)32 b(there)g(is)f(some)h(minor)227 383 y(incompatibilit)m(y)h
+(with)d(cdd/cdd+)f(standalone)i(co)s(des.)0 571 y Fn(void)47
+b(dd)p 341 571 29 4 v 33 w(WriteProgramDescription\(f\))39
+b Fo(:)227 683 y(W)-8 b(rite)32 b(the)f(cddlib)e(v)m(ersion)i
+(information)g(to)g(stream)g Fn(f)p Fo(.)0 871 y Fn(void)47
+b(dd)p 341 871 V 33 w(WriteDDTimes\(f,)d(poly\))g Fo(:)227
+984 y(W)-8 b(rite)32 b(the)f(represen)m(tation)g(con)m(v)m(ersion)h
+(time)f(information)f(on)h Fn(poly)e Fo(to)i(stream)g
+Fn(f)p Fo(.)0 1227 y Fd(4.5)112 b(Obsolete)38 b(F)-9
+b(unctions)0 1399 y Fn(boolean)46 b(dd)p 484 1399 V 34
+w(DoubleDescription\(poly,)41 b(err\))j Fo(:)d(\(remo)m(v)m(ed)32
+b(in)e(V)-8 b(ersion)31 b(0.90c\))227 1512 y(The)e(new)f(function)g
+Fn(dd)p 1054 1512 V 34 w(DDMatrix2Poly\(matrix,)42 b(err\))28
+b Fo(\(see)h(Section)h(4.2\))g(replaces)f(\(and)g(actually)227
+1625 y(com)m(bines\))j(b)s(oth)d(this)h(and)g Fn(dd)p
+1325 1625 V 34 w(Matrix2Poly\(matrix,)43 b(err\))p Fo(.)0
+1812 y Fn(dd)p 102 1812 V 34 w(PolyhedraPtr)h(dd)p 852
+1812 V 34 w(Matrix2Poly\(matrix,)f(err\))h Fo(:)d(\(remo)m(v)m(ed)31
+b(in)f(V)-8 b(ersion)31 b(0.90c\))227 1925 y(See)g(ab)s(o)m(v)m(e)g
+(for)g(the)f(reason)h(for)f(remo)m(v)-5 b(al.)0 2113
+y Fn(dd)p 102 2113 V 34 w(LPSolutionPtr)44 b(dd)p 900
+2113 V 34 w(LPSolutionLoad\(lp\))c Fo(:)h(\(renamed)30
+b(in)g(V)-8 b(ersion)31 b(0.90c\))227 2226 y(This)f(function)g(is)g(no)
+m(w)h(called)g Fn(dd)p 1431 2226 V 34 w(CopyLPSolution\(lp\))p
+Fo(.)0 2469 y Fd(4.6)112 b(Set)38 b(F)-9 b(unctions)38
+b(in)f Fb(setoper)j Fd(library)0 2641 y Fo(The)30 b(cddlib)g(comes)i
+(with)e(a)h(simple)g(set)g(op)s(eration)g(library)g Fn(setoper)p
+Fo(.)39 b(The)30 b(k)m(ey)i(t)m(yp)s(e)f(de\014ned)e(is)i
+Fn(set)p 3654 2641 V 33 w(type)p Fo(.)0 2754 y(A)g(set)h(is)f(represen)
+m(ted)g(b)m(y)g(a)g(\014xed)g(length)g(binary)f(strings.)43
+b(Th)m(us,)30 b(the)i(maxim)m(um)f(length)g(of)g(a)h(set)f(m)m(ust)g(b)
+s(e)0 2867 y(declared)g(when)e(it)i(is)g(initialized.)141
+2980 y(Belo)m(w)e(the)f(sym)m(b)s(ols)g Fn(a)p Fo(,)g
+Fn(b)p Fo(,)g Fn(c)g Fo(are)g(of)g(t)m(yp)s(e)g Fn(set)p
+1786 2980 V 33 w(type)p Fo(.)39 b(The)27 b(sym)m(b)s(ols)h
+Fn(aP)f Fo(is)h(a)g(p)s(oin)m(ter)f(to)i(t)m(yp)s(e)f
+Fn(set)p 3654 2980 V 33 w(type)p Fo(,)0 3093 y(and)j
+Fn(s)p Fo(,)i Fn(t)f Fo(are)g(of)g(t)m(yp)s(e)h Fn(long)p
+Fo(.)44 b(Here)33 b(are)g(some)f(of)g(the)h(functions)e(de\014ned.)45
+b(See)32 b Fn(setoper.h)e Fo(for)i(a)g(complete)0 3206
+y(listing.)0 3418 y Fn(void)47 b(set)p 389 3418 V 33
+w(initialize\(aP,)d(s\))h Fo(:)227 3531 y(Allo)s(cate)35
+b(a)e Fn(set)p 816 3531 V 33 w(type)f Fo(space)h(of)f(maxim)m(um)h
+(cardinalit)m(y)g Fn(s)g Fo(and)e(mak)m(e)j(it)f(p)s(oin)m(ted)f(b)m(y)
+g Fn(aP)p Fo(.)h(The)f(set)h(is)227 3644 y(initialized)f(as)f(empt)m(y)
+g(set.)0 3832 y Fn(void)47 b(set)p 389 3832 V 33 w(free\(a\))d
+Fo(:)227 3944 y(F)-8 b(ree)32 b(the)e Fn(set)p 732 3944
+V 34 w(type)f Fo(space)i(allo)s(cated)h(for)f Fn(a)p
+Fo(.)0 4132 y Fn(void)47 b(set)p 389 4132 V 33 w(copy\(a,)f(b\)\))f
+Fo(:)227 4245 y(Set)31 b Fn(a)g Fo(to)g(b)s(e)f Fn(b)p
+Fo(.)42 b(The)30 b(set)h Fn(a)g Fo(m)m(ust)f(b)s(e)g(pre-initialized)j
+(with)d(the)h(same)g(maxim)m(um)g(cardinalit)m(y)h(as)f(that)227
+4358 y(of)g Fn(b)p Fo(.)0 4546 y Fn(void)47 b(set)p 389
+4546 V 33 w(addelem\(a,)e(t\)\))g Fo(:)227 4658 y(Add)30
+b(an)g(elemen)m(t)i Fn(t)e Fo(to)h(a)g(set)g Fn(a)p Fo(.)40
+b(The)30 b(set)h Fn(a)f Fo(sta)m(ys)h(unc)m(hanged)f(if)h(it)f(con)m
+(tains)i(the)f(elemen)m(t)g Fn(t)p Fo(.)0 4846 y Fn(long)47
+b(set)p 389 4846 V 33 w(card\(a\)\))c Fo(:)227 4959 y(Return)30
+b(the)g(cardinalit)m(y)i(of)f(set)g Fn(a)p Fo(.)0 5147
+y Fn(int)47 b(set)p 341 5147 V 33 w(member\(t,)f(a\)\))e
+Fo(:)227 5260 y(Return)30 b(1)h(if)f Fn(t)g Fo(is)g(a)h(mem)m(b)s(er)f
+(of)g(set)h Fn(a)p Fo(,)g(and)e(0)i(otherwise.)1903 5682
+y(15)p eop end
+%%Page: 16 16
+TeXDict begin 16 15 bop 0 44 a Fn(void)47 b(set)p 389
+44 29 4 v 33 w(write\(a\)\))c Fo(:)227 157 y(Prin)m(t)28
+b(out)g(the)g(elemen)m(ts)h(of)f(set)h Fn(a)e Fo(to)i
+Fn(stdout)p Fo(.)38 b(The)27 b(function)h Fn(void)47
+b(set)p 2846 157 V 33 w(fwrite\(f,)e(a\)\))27 b Fo(output)h(to)227
+270 y(stream)j Fn(f)p Fo(.)0 556 y Fq(5)135 b(An)44 b(Extension)i(of)f
+(the)g(CDD)g(Library)g(in)g(GMP)f(mo)t(de)0 759 y Fo(Starting)35
+b(from)e(the)i(v)m(ersion)g(093,)h(the)f(GMP)f(v)m(ersion)h(of)g
+(cddlib,)f Fn(libcddgmp.a)p Fo(,)f(con)m(tains)i(all)g(cdd)f(library)0
+872 y(functions)j(in)g(t)m(w)m(o)i(arithmetics.)63 b(All)38
+b(functions)f(with)g(the)h(standard)f(pre\014x)f Fn(dd)p
+2907 872 V 71 w Fo(are)i(computed)f(with)g(the)0 985
+y(GMP)g(rational)h(arithmetic)g(as)e(b)s(efore.)59 b(The)36
+b(same)h(fuctions)f(with)h(the)f(new)g(pre\014x)g Fn(ddf)p
+3243 985 V 70 w Fo(are)h(no)m(w)f(added)0 1098 y(to)d(the)g(library)f
+Fn(libcddgmp.a)d Fo(that)k(are)g(based)f(on)g(the)g(C)g(double)g
+(\015oating-p)s(oin)m(t)i(arithmetic.)48 b(Th)m(us)31
+b(these)0 1211 y(functions)38 b(are)g(equiv)-5 b(alen)m(t)39
+b(to)g Fn(libcdd.a)d Fo(functions,)k(except)f(that)f(all)h(functions)f
+(and)f(v)-5 b(ariable)39 b(t)m(yp)s(es)f(are)0 1324 y(with)30
+b(pre\014x)f Fn(ddf)p 612 1324 V 64 w Fo(and)h(the)h(v)-5
+b(ariable)31 b(t)m(yp)s(e)f Fn(mytype)f Fo(is)h(replaced)h(b)m(y)f
+Fn(myfloat)p Fo(.)141 1437 y(In)21 b(this)h(sense,)i
+Fn(libcdd.a)19 b Fo(is)j(a)h(prop)s(er)d(subset)h(of)h
+Fn(libcddgmp.a)d Fo(and)j(in)f(principle)h(one)g(can)g(do)g(ev)m
+(erything)0 1550 y(with)30 b Fn(libcddgmp.a)p Fo(.)38
+b(See)30 b(ho)m(w)h(the)f(new)g Fn(dd)p 1594 1550 V 34
+w(LPSolve)e Fo(is)j(written)f(in)g(cddlp.c.)0 1836 y
+Fq(6)135 b(Examples)0 2039 y Fo(See)27 b(example)g(co)s(des)g(suc)m(h)g
+(as)g(testcdd*.c)h(,)g(testlp*.c,)h(redc)m(hec)m(k.c,)h(adjacency)-8
+b(.c,)29 b(allfaces,c)g(and)e(simplecdd.c)0 2152 y(in)j(the)h
+Fn(src)e Fo(and)h Fn(src-gmp)e Fo(sub)s(directories)i(of)h(the)f
+(source)h(distribution.)0 2438 y Fq(7)135 b(Numerical)46
+b(Accuracy)0 2641 y Fo(A)37 b(little)i(caution)g(is)e(in)g(order.)61
+b(Man)m(y)38 b(p)s(eople)f(ha)m(v)m(e)h(observ)m(ed)g(n)m(umerical)g
+(problems)e(of)h(cddlib)g(when)f(the)0 2754 y(\015oating)k(v)m(ersion)f
+(of)f(cddlib)h(is)f(used.)65 b(As)39 b(w)m(e)g(all)g(kno)m(w,)i
+(\015oating-p)s(oin)m(t)f(computation)g(migh)m(t)f(not)g(giv)m(e)h(a)0
+2867 y(correct)27 b(answ)m(er,)g(esp)s(ecially)f(when)f(an)h(input)e
+(data)j(is)e(v)m(ery)h(sensitiv)m(e)h(to)f(a)h(small)f(p)s
+(erturbation.)38 b(When)25 b(some)0 2980 y(strange)j(b)s(eha)m(vior)g
+(is)g(observ)m(ed,)g(it)g(is)g(alw)m(a)m(ys)h(wise)f(to)g(create)h(a)f
+(rationalization)j(of)c(the)h(input)f(\(for)h(example,)0
+3092 y(one)i(can)g(replace)g(0.3333333)k(with)29 b(1/3\))i(and)e(to)i
+(compute)f(it)g(with)f(cddlib)g(compiled)h(with)g(gmp)f(rational)i(to)0
+3205 y(see)f(what)g(a)g(correct)h(b)s(eha)m(vior)f(should)f(b)s(e.)39
+b(Whenev)m(er)31 b(the)f(time)g(is)g(not)g(imp)s(ortan)m(t,)g(it)g(is)g
+(safer)g(to)g(use)g(gmp)0 3318 y(rational)i(arithmetic.)141
+3431 y(If)d(y)m(ou)h(need)e(sp)s(eedy)h(computation)h(with)f
+(\015oating-p)s(oin)m(t)h(arithmetic,)h(y)m(ou)f(migh)m(t)g(w)m(an)m(t)
+g(to)g(\\pla)m(y)g(with")0 3544 y(the)h(constan)m(t)g
+Fn(dd)p 625 3544 V 34 w(almostzero)d Fo(de\014ned)h(in)h(cdd.h:)143
+3756 y Fn(#define)46 b(dd_almostzero)92 b(1.0E-7)0 3967
+y Fo(This)38 b(n)m(um)m(b)s(er)g(is)i(used)e(to)i(recognize)h(whether)d
+(a)i(n)m(um)m(b)s(er)e(is)h(zero:)59 b(a)40 b(n)m(um)m(b)s(er)e(whose)h
+(absolute)h(v)-5 b(alue)40 b(is)0 4080 y(smaller)e(than)g
+Fn(dd)p 643 4080 V 34 w(almostzero)d Fo(is)i(considered)h(zero,)j(and)c
+(nonzero)h(otherwise.)63 b(Y)-8 b(ou)38 b(can)g(c)m(hange)h(this)f(to)0
+4193 y(mo)s(dify)d(the)h(b)s(eha)m(vior)h(of)f(cddlib.)57
+b(One)36 b(migh)m(t)g(consider)g(the)h(default)f(setting)h(is)f(rather)
+g(large)h(for)f(double)0 4306 y(precision)h(arithmetic.)63
+b(This)36 b(is)i(b)s(ecause)f(cddlib)f(is)i(made)f(to)h(deal)g(with)f
+(highly)g(degenerate)h(data)g(and)f(it)0 4419 y(w)m(orks)30
+b(b)s(etter)h(to)g(treat)g(a)g(relativ)m(ely)i(large)e(\\epsilon")h(as)
+e(zero.)141 4531 y(Another)41 b(thing)h(one)f(can)h(do)f(is)g(scaling.)
+75 b(If)41 b(the)g(v)-5 b(alues)42 b(in)f(one)g(column)g(of)h(an)f
+(input)f(is)i(of)f(smaller)0 4644 y(magnitude)30 b(than)h(those)f(in)h
+(another)f(column,)h(scale)g(one)g(so)g(that)g(they)f(b)s(ecome)h
+(comparable.)0 4931 y Fq(8)135 b(Other)45 b(Useful)h(Co)t(des)0
+5134 y Fo(There)28 b(are)h(sev)m(eral)h(other)e(useful)g(co)s(des)g(a)m
+(v)-5 b(ailable)31 b(for)e(v)m(ertex)g(en)m(umeration)g(and/or)f(con)m
+(v)m(ex)j(h)m(ull)d(computa-)0 5246 y(tion)j(suc)m(h)f(as)h(lrs,)f(qh)m
+(ull,)g(p)s(orta)h(and)e(irisa-p)s(olylib.)41 b(The)30
+b(p)s(oin)m(ters)h(to)g(these)f(co)s(des)h(are)g(a)m(v)-5
+b(ailable)32 b(at)111 5433 y(1.)46 b(lrs)30 b(b)m(y)h(D.)g(Avis)f([2)q
+(])g(\(C)h(implemen)m(tation)h(of)e(the)h(rev)m(erse)g(searc)m(h)g
+(algorithm)g([4)q(]\).)1903 5682 y(16)p eop end
+%%Page: 17 17
+TeXDict begin 17 16 bop 111 44 a Fo(2.)46 b(qh)m(ull)23
+b(b)m(y)g(C.B.)g(Barb)s(er)f([6)q(])h(\(C)f(implemen)m(tation)j(of)e
+(the)g(b)s(eneath-b)s(ey)m(ond)f(metho)s(d,)i(see)f([10)q(,)g(20)q(],)i
+(whic)m(h)227 157 y(is)31 b(the)f(dual)g(of)h(the)f(dd)g(metho)s(d\).)
+111 332 y(3.)46 b(p)s(orta)25 b(b)m(y)g(T.)g(Christof)f(and)g(A.)h
+(L\177)-45 b(ob)s(el)25 b([8)q(])g(\(C)g(implemen)m(tation)h(of)f(the)h
+(F)-8 b(ourier-Motzkin)27 b(elimination\).)111 507 y(4.)46
+b(IRISA)41 b(p)s(olyhedral)g(library)g(b)m(y)h(D.K.)g(Wilde)g([23)q(])g
+(\(C)f(implemen)m(tation)j(of)d(a)h(v)-5 b(ariation)43
+b(of)f(the)g(dd)227 620 y(algorithm\).)111 795 y(5.)k(PPL:)33
+b(the)h(P)m(arma)g(P)m(olyhedra)f(Library)g([5])h(b)m(y)f(R.)g(Bagnara)
+i(\(C++)d(implemen)m(tation)j(of)f(a)f(v)-5 b(ariation)227
+908 y(of)31 b(the)f(dd)g(algorithm\).)111 1083 y(6.)46
+b Fn(pd)30 b Fo(b)m(y)g(A.)h(Marzetta)i([18)q(])d(\(C)h(implemen)m
+(tation)h(of)e(the)h(primal-dual)f(algorithm)h([7)q(]\).)111
+1259 y(7.)46 b(Geometry)32 b(Cen)m(ter)f(Soft)m(w)m(are)g(List)g(b)m(y)
+f(N.)h(Amen)m(ta)g([1)q(].)111 1434 y(8.)46 b(Computational)32
+b(Geometry)f(P)m(ages)h(b)m(y)e(J.)g(Eric)m(kson)h([11)q(].)111
+1609 y(9.)46 b(Linear)31 b(Programming)f(F)-10 b(A)m(Q)31
+b(b)m(y)f(R.)h(F)-8 b(ourer)30 b(and)g(J.)g(Gregory)i([12)q(].)66
+1784 y(10.)46 b(ZIB)30 b(Berlin)h(p)s(olyhedral)f(soft)m(w)m(are)i
+(list:)227 1897 y(ftp://elib.zib-b)s(erlin.de/pub/mathprog/p)s
+(olyth/index.h)m(tml.)66 2072 y(11.)46 b(P)m(olyhedral)31
+b(Computation)g(F)-10 b(A)m(Q)31 b([13)q(].)0 2353 y
+Fq(9)135 b(Co)t(des)45 b(Using)g(Cddlib)0 2556 y Fo(There)30
+b(are)h(quite)f(a)h(few)f(nice)h(programs)f(using)g(some)h(functions)f
+(of)g(cddlib.)40 b(Here)31 b(are)g(some)g(of)f(them.)111
+2731 y(1.)46 b Fn(LattE)29 b Fo([9)q(])h(computes)h(the)g(n)m(um)m(b)s
+(er)e(of)h(lattice)j(p)s(oin)m(ts)d(in)g(a)h(con)m(v)m(ex)h(p)s(olytop)
+s(e.)111 2906 y(2.)46 b Fn(Minksum)34 b Fo([22)q(])h(is)h(a)g(program)f
+(to)h(compute)g(the)f(V-represen)m(tation)i(\(i.e.)57
+b(the)36 b(set)g(of)f(v)m(ertices\))j(of)d(the)227 3019
+y(Mink)m(o)m(wski)25 b(addition)f(of)f(sev)m(eral)i(con)m(v)m(ex)h(p)s
+(olytop)s(es)d(giv)m(en)h(b)m(y)g(their)g(V-represen)m(tation)h(in)e
+Fa(R)3522 2986 y Fg(d)3562 3019 y Fo(.)38 b(It)24 b(is)g(an)227
+3132 y(implemen)m(tation)29 b(in)f(C++)e(language)j(of)f(the)f(rev)m
+(erse)i(searc)m(h)f(algorithm)g([14)r(])f(whose)h(time)g(complexit)m(y)
+227 3244 y(is)j(p)s(olynomially)g(b)s(ounded)d(b)m(y)i(the)h(sizes)g
+(of)f(input)g(and)f(output.)111 3420 y(3.)46 b Fn(Gfan)32
+b Fo([17)q(])g(is)h(a)g(program)f(to)h(list)g(all)h(reduced)d(Gr\177)
+-45 b(obner)32 b(bases)h(of)f(a)h(general)h(p)s(olynomial)e(ideal)i
+(giv)m(en)227 3533 y(b)m(y)d(a)h(set)g(of)f(generating)h(p)s
+(olynomials)g(in)e Fj(n)p Fo(-v)-5 b(ariables.)44 b(It)31
+b(is)g(an)g(implemen)m(tation)i(in)e(C++)f(language)227
+3645 y(of)h(the)f(rev)m(erse)h(searc)m(h)g(algorithm)h([15)q(].)111
+3821 y(4.)46 b Fn(TOPCOM)c Fo([21)q(])h(computes)g(the)g(com)m
+(binatorial)j(structure)c(\(the)i(orien)m(ted)g(matroid\))f(of)h(a)f(p)
+s(oin)m(t)g(con-)227 3933 y(\014guration)d(and)f(en)m(umerates)h(all)g
+(triangulations)h(of)f(a)g(p)s(oin)m(t)f(set.)69 b(It)40
+b(detects)h(the)e(regularlit)m(y)i(of)f(a)227 4046 y(triangulation)32
+b(using)e(cddlib.)0 4327 y Fq(Ac)l(kno)l(wledgemen)l(ts.)0
+4530 y Fo(I)44 b(am)g(grateful)h(to)g(T)-8 b(om)44 b(Liebling)h(who)f
+(pro)m(vided)f(me)i(with)f(an)g(ideal)h(opp)s(ortunit)m(y)e(to)i(visit)
+g(EPFL)f(for)0 4643 y(the)37 b(academic)i(y)m(ear)f(1993-1994.)65
+b(Later,)39 b(Hans-Jak)m(ob)f(L)s(\177)-48 b(uthi)37
+b(\(ETHZ\))g(and)f(Emo)i(W)-8 b(elzl)39 b(\(ETHZ\))e(joined)0
+4756 y(to)j(supp)s(ort)d(the)i(the)g(dev)m(elopmen)m(t)h(of)f(cdd)f(co)
+s(des)h(\(cdd,)i(cdd+,)g(cddlib\).)66 b(Without)39 b(their)g(generous)g
+(and)0 4869 y(con)m(tin)m(uing)31 b(supp)s(ort,)e(the)i(presen)m(t)f
+(form)g(of)h(this)f(program)g(w)m(ould)g(not)h(ha)m(v)m(e)h(existed.)
+141 4982 y(There)i(are)h(man)m(y)g(other)f(p)s(eople)h(who)f(help)s(ed)
+f(me)i(to)g(impro)m(v)m(e)h(cdd,)f(in)f(particular,)i(I)e(am)h
+(indebted)f(to)0 5094 y(Da)m(vid)d(Avis,)f(Alexander)h(Bo)s(c)m(kma)m
+(yr,)g(Da)m(vid)g(Bremner,)f(Henry)g(Crap)s(o,)f(Istv)-5
+b(an)30 b(Csabai,)h(F)-8 b(rancois)31 b(Margot,)0 5207
+y(Marc)k(Pfetsc)m(h,)i(Alain)e(Pro)s(don,)f(J\177)-45
+b(org)35 b(Ram)m(bau,)h(Dima)f(P)m(asec)m(hnik,)i(Sha)m(wn)d(Rusa)m(w,)
+h(Matthew)h(Saltzman,)0 5320 y(Masanori)26 b(Sato,)h(Anders)d(Jensen,)h
+(Rurik)m(o)g(Y)-8 b(oshida,)27 b(Charles)e(Gey)m(er,)i(Mic)m(hal)g(Kv)
+-5 b(asnica,)26 b(Sv)m(en)f(V)-8 b(erdo)s(olaege)0 5433
+y(\(listed)31 b(in)f(arbitrary)g(order\))h(and)e(those)i(listed)g(in)f
+(the)h(HISTOR)-8 b(Y)30 b(\014le.)1903 5682 y(17)p eop
+end
+%%Page: 18 18
+TeXDict begin 18 17 bop 0 44 a Fq(References)45 247 y
+Fo([1])47 b(N.)21 b(Amen)m(ta.)k(Directory)c(of)g(computational)h
+(geometry)-8 b(.)26 b(h)m(ttp://www.geom.uiuc.edu/soft)m(w)m
+(are/cglist/.)45 433 y([2])47 b(D.)31 b(Avis.)41 b Ff(lrs)33
+b(Homep)-5 b(age)p Fo(.)42 b(h)m(ttp://cgm.cs.mcgill.ca/~a)n(vis/C/l)q
+(rs.h)m(tml.)45 618 y([3])47 b(D.)37 b(Avis,)h(D.)f(Bremner,)h(and)e
+(R.)g(Seidel.)59 b(Ho)m(w)38 b(go)s(o)s(d)e(are)h(con)m(v)m(ex)h(h)m
+(ull)e(algorithms.)60 b Ff(Computational)187 731 y(Ge)-5
+b(ometry:)43 b(The)-5 b(ory)35 b(and)e(Applic)-5 b(ations)p
+Fo(,)33 b(7:265{302,)h(1997.)45 917 y([4])47 b(D.)40
+b(Avis)g(and)f(K.)g(F)-8 b(ukuda.)67 b(A)40 b(piv)m(oting)h(algorithm)f
+(for)f(con)m(v)m(ex)j(h)m(ulls)d(and)g(v)m(ertex)h(en)m(umeration)g(of)
+187 1029 y(arrangemen)m(ts)31 b(and)f(p)s(olyhedra.)40
+b Ff(Discr)-5 b(ete)32 b(Comput.)i(Ge)-5 b(om.)p Fo(,)32
+b(8:295{313,)i(1992.)45 1215 y([5])47 b(R.)30 b(Bagnara.)42
+b(P)m(arma)31 b(p)s(olyhedra)f(library)g(homepage,)h(2004.)42
+b(h)m(ttp://www.cs.unipr.it/ppl/.)45 1400 y([6])47 b(C.B.)39
+b(Barb)s(er,)h(D.P)-8 b(.)40 b(Dobkin,)h(and)d(H.)h(Huhdanpaa.)65
+b Ff(qhul)5 b(l,)42 b(V)-7 b(ersion)40 b(2003.1)p Fo(,)k(2003.)67
+b(program)38 b(and)187 1513 y(rep)s(ort)30 b(a)m(v)-5
+b(ailable)32 b(from)e(h)m(ttp://www.qh)m(ull.org/.)45
+1699 y([7])47 b(D.)29 b(Bremner,)h(K.)e(F)-8 b(ukuda,)30
+b(and)e(A.)h(Marzetta.)41 b(Primal-dual)29 b(metho)s(ds)f(for)h(v)m
+(ertex)h(and)e(facet)j(en)m(umer-)187 1812 y(ation.)41
+b(In)30 b Ff(Pr)-5 b(o)g(c.)33 b(13th)i(A)n(nnu.)c(A)n(CM)h(Symp)-5
+b(os.)34 b(Comput.)g(Ge)-5 b(om.)p Fo(,)32 b(pages)e(49{56,)j(1997.)45
+1997 y([8])47 b(T.)29 b(Christof)f(and)g(A.)i(L\177)-45
+b(ob)s(el.)38 b(POR)-8 b(T)g(A:)29 b(P)m(olyhedron)g(represen)m(tation)
+h(transformation)g(algorithm)g(\(v)m(er.)187 2110 y(1.3.1\),)j(1997.)42
+b(h)m(ttp://www.zib.de/Optimization/Soft)m(w)m(are/P)m(orta/.)45
+2296 y([9])47 b(J.)d(de)g(Lo)s(era,)k(D.)d(Ha)m(ws,)k(R.)44
+b(Hemmec)m(k)m(e,)50 b(P)m(eter)45 b(Huggins,)j(J.)d(T)-8
+b(auzer,)48 b(and)c(R.)g(Y)-8 b(oshida.)82 b Ff(L)-5
+b(attE)p Fo(.)187 2409 y(Univ)m(ersit)m(y)31 b(of)g(California,)g(Da)m
+(vis,)h(2005.)43 b(a)m(v)-5 b(ailable)32 b(from)e(h)m
+(ttp://www.math.ucda)m(vis.edu/)i(latte/.)0 2594 y([10])47
+b(H.)31 b(Edelsbrunner.)38 b Ff(A)n(lgorithms)33 b(in)g(Combinatorial)i
+(Ge)-5 b(ometry)p Fo(.)42 b(Springer-V)-8 b(erlag,)32
+b(1987.)0 2780 y([11])47 b(J.)73 b(Eric)m(kson.)170 b(Computational)74
+b(geometry)h(pages,)85 b(list)74 b(of)g(soft)m(w)m(are)h(libraries)e
+(and)g(co)s(des.)187 2893 y(h)m
+(ttp://compgeom.cs.uiuc.edu/~je\013e/compgeom/.)0 3078
+y([12])47 b(R.)e(F)-8 b(ourer)44 b(and)g(J.W.)i(Gregory)-8
+b(.)84 b(Linear)44 b(programming)g(frequen)m(tly)h(ask)m(ed)g
+(questions)g(\(LP-F)-10 b(A)m(Q\).)187 3191 y(h)m
+(ttp://www-unix.mcs.anl.go)m(v/otc/Guide/faq/linear-programming-faq.)q
+(h)m(tml.)0 3377 y([13])47 b(K.)37 b(F)-8 b(ukuda.)61
+b(P)m(olyhedral)38 b(computation)g(F)-10 b(A)m(Q,)38
+b(1998.)63 b(Both)38 b(h)m(tml)g(and)e(ps)h(v)m(ersions)g(a)m(v)-5
+b(ailable)40 b(from)187 3489 y(h)m(ttp://www.ifor.math.ethz.c)m
+(h/~fukuda/fukuda.h)m(tml.)0 3675 y([14])47 b(K.)g(F)-8
+b(ukuda.)91 b(F)-8 b(rom)48 b(the)f(zonotop)s(e)i(construction)f(to)g
+(the)f(Mink)m(o)m(wski)i(addition)e(of)h(con)m(v)m(ex)h(p)s(oly-)187
+3788 y(top)s(es.)90 b Ff(Journal)49 b(of)f(Symb)-5 b(olic)49
+b(Computation)p Fo(,)k(38\(4\):1261{1272)q(,)k(2004.)92
+b(p)s(df)45 b(\014le)i(a)m(v)-5 b(ailable)49 b(from)187
+3901 y(h)m(ttp://www.cs.mcgill.ca/~fukuda/do)m(wnload/pap)s
+(er/minksum031007jsc.p)s(df.)0 4086 y([15])e(K.)d(F)-8
+b(ukuda,)47 b(A.)d(Jensen,)i(and)e(R.)f(Thomas.)81 b(Computing)43
+b(Gr\177)-45 b(obner)43 b(fans.)80 b(T)-8 b(ec)m(hnical)45
+b(rep)s(ort.)80 b(In)187 4199 y(preparation.)0 4385 y([16])47
+b(K.)c(F)-8 b(ukuda)43 b(and)g(A.)h(Pro)s(don.)78 b(Double)44
+b(description)f(metho)s(d)g(revisited.)80 b(In)43 b(M.)h(Deza,)k(R.)c
+(Euler,)187 4498 y(and)k(I.)h(Manoussakis,)55 b(editors,)f
+Ff(Combinatorics)e(and)f(Computer)g(Scienc)-5 b(e)p Fo(,)54
+b(v)m(olume)c(1120)g(of)g Ff(L)-5 b(e)g(c-)187 4611 y(tur)g(e)37
+b(Notes)g(in)g(Computer)h(Scienc)-5 b(e)p Fo(,)37 b(pages)e(91{111.)j
+(Springer-V)-8 b(erlag,)38 b(1996.)56 b(ps)34 b(\014le)i(a)m(v)-5
+b(ailable)37 b(from)187 4723 y(ftp://ftp.ifor.math.ethz.c)m
+(h/pub/fukuda/rep)s(orts/ddrev960315.ps.gz.)0 4909 y([17])47
+b(A.N.)40 b(Jensen.)68 b Ff(Gfan)42 b(version)g(0.1:)59
+b(A)41 b(User's)g(Manual)p Fo(.)69 b(Departmen)m(t)41
+b(of)f(Mathematical)j(Sciences,)187 5022 y(Univ)m(ersit)m(y)27
+b(of)g(Aarh)m(us)e(and)h(Institute)h(for)f(Op)s(erations)f(Researc)m
+(h,)k(ETH)c(Zuric)m(h,)i(2005.)35 b(a)m(v)-5 b(ailable)29
+b(from)187 5135 y(h)m(ttp://home.imf.au.dk/a)5 b(jensen/soft)m(w)m
+(are/gfan/gfan.h)m(tml.)0 5320 y([18])47 b(A.)30 b(Marzetta.)43
+b Ff(p)-5 b(d)34 b({)f(C-implementation)h(of)f(the)g(primal-dual)h
+(algoirithm)p Fo(,)f(1997.)42 b(co)s(de)30 b(a)m(v)-5
+b(ailable)33 b(from)187 5433 y(h)m(ttp://www.cs.un)m
+(b.ca/profs/bremner/p)s(d/.)1903 5682 y(18)p eop end
+%%Page: 19 19
+TeXDict begin 19 18 bop 0 44 a Fo([19])47 b(T.S.)34 b(Motzkin,)j(H.)e
+(Rai\013a,)i(GL.)f(Thompson,)e(and)g(R.M.)i(Thrall.)53
+b(The)34 b(double)g(description)h(metho)s(d.)187 157
+y(In)c(H.W.)i(Kuhn)d(and)h(A.W.T)-8 b(uc)m(k)m(er,)35
+b(editors,)d Ff(Contributions)k(to)e(the)-5 b(ory)36
+b(of)e(games,)h(V)-7 b(ol.)34 b(2)p Fo(.)e(Princeton)187
+270 y(Univ)m(ersit)m(y)f(Press,)g(Princeton,)g(RI,)f(1953.)0
+458 y([20])47 b(K.)37 b(Mulm)m(uley)-8 b(.)63 b Ff(Computational)43
+b(Ge)-5 b(ometry,)42 b(An)d(Intr)-5 b(o)g(duction)42
+b(Thr)-5 b(ough)41 b(Randamize)-5 b(d)42 b(Algorithms)p
+Fo(.)187 571 y(Pren)m(tice-Hall,)33 b(1994.)0 758 y([21])47
+b(J.)f(Ram)m(bau.)87 b Ff(TOPCOM,)46 b(a)h(p)-5 b(ackage)48
+b(for)f(c)-5 b(omputing)49 b(T)-7 b(riangulations)49
+b(Of)d(Point)h(Con\014gur)-5 b(ations)187 871 y(and)53
+b(Oriente)-5 b(d)53 b(Matr)-5 b(oids)p Fo(.)106 b(Univ)m(ersit)m(y)53
+b(of)f(Ba)m(yreuth,)58 b(2005.)106 b(a)m(v)-5 b(ailable)54
+b(from)d(h)m(ttp://www.uni-)187 984 y(ba)m(yreuth.de/departmen)m
+(ts/wirtsc)m(haftsmathematik/ram)m(bau/TOPCOM/.)0 1172
+y([22])c(C.)27 b(W)-8 b(eib)s(el.)37 b Ff(Minksum)30
+b(version)g(1.1)p Fo(.)37 b(Mathematics)30 b(Institute,)e(EPF)g
+(Lausanne,)f(2005.)38 b(a)m(v)-5 b(ailable)30 b(from)187
+1285 y(h)m(ttp://roso.ep\015.c)m(h/cw/p)s(oly/public.php.)0
+1472 y([23])47 b(D.K.)30 b(Wilde.)39 b(A)29 b(library)g(for)f(doing)i
+(p)s(olyhedral)e(op)s(erations.)39 b(Master's)30 b(thesis,)g(Oregon)f
+(State)h(Univ)m(er-)187 1585 y(sit)m(y)-8 b(,)37 b(Corv)-5
+b(allis,)36 b(Oregon,)f(Dec)g(1993.)54 b(Also)35 b(published)d(in)i
+(IRISA)g(tec)m(hnical)i(rep)s(ort)d(PI)h(785,)j(Rennes,)187
+1698 y(F)-8 b(rance;)32 b(Dec,)f(1993.)1903 5682 y(19)p
+eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/third_party/cddlib/doc/cddlibman.tex b/third_party/cddlib/doc/cddlibman.tex
new file mode 100644
index 0000000..c55b8d6
--- /dev/null
+++ b/third_party/cddlib/doc/cddlibman.tex
@@ -0,0 +1,1180 @@
+% The name of this file: cddlibman.tex
+% written by by Komei Fukuda
+% created March 15, 1999
+% modified February 7, 2008
+%
+\documentclass[11pt]{article}
+\usepackage{html,amsmath,amssymb}
+\renewcommand{\baselinestretch}{1}
+\renewcommand{\arraystretch}{1}
+\setlength{\oddsidemargin}{0mm}
+\setlength{\textwidth}{165mm}
+\setlength{\topmargin}{-15mm}
+\setlength{\textheight}{232mm}
+%\setlength{\headsep}{0in}
+%\setlength{\headheight}{0pt}
+\pagestyle{plain}
+
+\newcommand {\0} {{\bf 0}}
+\newcommand{\R}{{\Bbb R}}
+
+\begin{document}
+\title{cddlib Reference Manual}
+\author{Komei Fukuda\\
+Institute for Operations Research\\
+and Institute of Theoretical Computer Science\\
+ETH Zentrum, CH-8092 Zurich, Switzerland\\
+}
+\date{ (cddlib ver. 0.94, manual ver. February 7, 2008)}
+
+\maketitle
+
+\tableofcontents
+
+\begin{abstract}
+This is a reference manual for cddlib-094.  
+The manual describes the library functions and data types implemented 
+in the cddlib C-library which is to perform fundamental polyhedral 
+computations such as representation conversions and linear programming
+in both floating-point and GMP rational exact arithmetic.
+Please read the accompanying README file and test programs to 
+complement the manual.
+
+The new functions added in this version include {\tt dd\_MatrixCanonicalize}
+to find a non-redundant proper H- or V-representation,
+{\tt dd\_FindRelativeInterior} to find a relative interior point
+of an H-polyhedron, and  {\tt dd\_ExistsRestrictedFace} (Farkas-type 
+alternative theorem verifier)
+to check the existence of a point satisfying a specified system
+of linear inequalities possibly including multiple strict inequalities.
+
+The new functions are particularly important for the development of
+related software packages MinkSum (by Ch. Weibel) and Gfan
+(by Anders Jensen),
+
+\end{abstract}
+
+\section{Introduction} \label{INTRODUCTION}
+
+The program  cddlib  is an efficient implementation \cite{fp-ddmr-96}  of 
+the double description Method~\cite{mrtt-ddm-53}
+for generating  all vertices (i.e. extreme points)
+and extreme rays of a general 
+convex polyhedron given by 
+a system of linear inequalities:
+\[
+   P = \{ x=(x_1, x_2, \ldots, x_d)^T \in R^{d}:  b - A  x  \ge 0 \}
+\]
+where $A$ is a given $m \times d$ real matrix and 
+$b$ is a given real $m$-vector.   In the mathematical
+language, the computation is the transformation
+of an {\em H-representation\/} of a convex polytope
+to an {\em V-representation}.  
+
+cddlib is a C-library version of the previously released C-code cdd/cdd+.
+In order to make this library version, a large part of the cdd source
+(Version 0.61) has been rewritten.
+This library version is more flexible since it can be called from other programs in C/C++.
+Unlike cdd/cdd+, cddlib can handle any general input and is more general.
+Furtthermore,  additional functions have been written to extend its functionality.
+
+One useful feature of  cddlib/cdd/cdd+ is its capability
+of handling the dual (reverse)  problem without any transformation
+of data.  The dual transformation problem of a V-representation
+to a minimal H-representation and is often called the 
+{\em (convex) hull problem\/}.  More explicitly,
+is to obtain a linear inequality representation
+of a convex polyhedron given as the Minkowski sum of 
+the convex hull of a finite set of points and the nonnegative
+hull of a finite set of points in $R^{d}$: 
+\[
+P = conv(v_1,\ldots,v_n) +  nonneg(r_{n+1},\ldots,r_{n+s}), 
+\]
+where
+ the {\em Minkowski sum of two subsets $S$ and $T$} of $R^{d}$ is defined
+as 
+\[
+S + T = \{ s + t \; |  s \in S \mbox{ and } t \in T \}.
+\]
+As we see in this manual, the computation can be done
+in straightforward manner.  Unlike the earlier versions of
+cdd/cdd+ that assume certain regularity conditions for input, 
+cddlib is designed to do a correct transformation for any general input.
+The user must be aware of the fact that in certain cases the
+transformation is not unique and there are polyhedra with
+infinitely many representations.  For example, a line
+segment (1-dimensional polytope) in $R^3$ has infinitely
+many minimal H-representations, and a halfspace in the same space
+has infinitely many minimal V-representations.  cddlib generates
+merely one minimal representation.
+
+cddlib comes with an LP code to solve the general
+linear programming (LP) problem to maximize (or minimize) a linear
+function over polyhedron $P$.   It is useful mainly for solving 
+dense LP's with large $m$ (say, up to few hundred thousands) and small $d$ 
+(say, up to 100).  It implements a revised dual simplex method that
+updates $(d+1)\times (d+1)$ matrix for a pivot operation.
+
+The program cddlib has an I/O routines that read and write files in 
+{\em Polyhedra format\/} which was defined by David Avis and
+the author in 1993, and has been updated in 1997 and 1999.  
+The program called lrs and lrslib \cite{a-lrshome-01} developed by David Avis is
+a C-implementation of the reverse search algorithm~\cite{af-pachv-92} 
+for the same enumeration purpose, and it conforms to Polyhedra format as well.
+Hopefully, this compatibility of the two programs
+enables users to use both programs for the same input files
+and to choose whichever is useful for their purposes.
+From our experiences with relatively large problems,
+the two methods are both useful and perhaps complementary
+to each other.  In general, the program cddlib tends to be
+efficient for highly degenerate inputs and the program rs
+tends to be efficient for nondegenerate or slightly
+degenerate problems.
+
+Although the program can be used for nondegenerate inputs,
+it might not be very efficient.  For nondegenerate inputs, 
+other available programs, such as the reverse search code lrs or
+qhull (developed by the Geometry Center),
+might be more efficient.  See Section~\ref{CODES} 
+for pointers to these codes.  
+The paper \cite{abs-hgach-97} contains many interesting results on polyhedral
+computation and experimental results on cdd+, lrs, qhull and porta.
+
+This program can be distributed freely under the GNU GENERAL PUBLIC LICENSE.
+Please read the file COPYING carefully before using.
+
+I will not take any responsibility of any problems you might have
+with this program.  But I will be glad to receive bug reports or suggestions
+at the e-mail addresses above. If cddlib turns out to be useful, 
+please kindly inform  me of  what purposes cdd has been used for. 
+I will be happy to include a list of applications in future
+distribution  if I receive  enough replies.
+The most powerful support for free software development
+is user's appreciation and collaboration.
+
+\section{Polyhedra H- and V-Formats (Version 1999)} \label{FORMAT}
+\bigskip
+Every convex polyhedron has two representations, one as
+the intersection of finite halfspaces and the other
+as Minkowski sum of the convex hull of finite points
+and the nonnegative hull of finite directions.  These are
+called H-representation and V-representation, respectively.
+
+Naturally there are two basic Polyhedra formats, 
+H-format for  H-representation and V-format for
+V-representation.    These two formats are designed
+to be almost indistinguishable, and in fact, one can
+almost pretend one for the other.   There is some asymmetry
+arising from the asymmetry of two representations.
+
+First we start with the H-representation.
+Let $A$ be an $m \times d$ matrix, and let $b$ be a column $m$-vector.
+The Polyhedra format  ({\em  H-format} )  of 
+the system  $\; b - A x \ge \0\;$ of $m$ inequalities in $d$ variables
+$x =(x_1, x_2, \ldots, x_d)^T$ is
+
+\begin{tabular}{ccl}
+\\ \hline
+\multicolumn{3}{l} {various comments}\\
+\multicolumn{3}{l} {{\bf H-representation}}\\
+\multicolumn{3}{l} {{\bf (linearity $t\;$ $i_1\;$  $i_2\;$  $\ldots$ $\;i_t$)}}\\
+\multicolumn{3}{l} {{\bf begin}}\\
+ $m$ & $d+1$ & numbertype\\
+ $b$ & $-A$ \\
+\multicolumn{3}{l} {{\bf end}}\\
+\multicolumn{3}{l} {various options} \\ \hline
+\end{tabular}
+
+\bigskip
+\noindent
+where numbertype can be one of integer, rational or real.
+When rational type is selected, each component
+of $b$ and $A$ can be specified by the usual integer expression 
+or by the rational expression ``$p / q$''  or  ``$-p / q$'' where
+$p$ and $q$ are arbitrary long positive integers (see the example
+input file rational.ine).  In the 1997 format,
+we introduced ``H-representation'' which must appear
+before ``begin''. 
+There was one restriction in the old polyhedra format 
+(before 1997):  the last $d$ rows must determine
+a vertex of $P$.  This is obsolete now.
+
+In the new 1999 format, we added the possibility of specifying {\bf linearity\/}.
+This means that
+for H-representation, some of the input rows can be specified as  {\bf equalities}:  
+$b_{i_j} - A_{i_j} x = 0 \;$ for all $j=1,2, \ldots, t$.
+The linearity line may be omitted if there are no equalities.
+
+Option lines can be used to control computation of a specific program.
+In particular both cdd and lrs use the option lines to represent
+a linear objective function.  See the attached LP files, samplelp*.ine.
+
+\bigskip
+Next we define Polyhedra  {\em V-format}.  Let $P$ be 
+represented by $n$ gerating points and $s$ generating directions (rays) as 
+$P = conv(v_1,\ldots,v_n) +  nonneg(r_{n+1},\ldots,r_{n+s})$.
+Then the Polyhedra V-format for $P$ is 
+
+\begin{tabular}{cll}
+\\ \hline
+\multicolumn{3}{l} {various comments}\\
+\multicolumn{3}{l} {{\bf V-representation}}\\
+\multicolumn{3}{l} {({\bf linearity $t\;$ $i_1\;$  $i_2\;$  $\ldots$ $\;i_t$ })}\\
+\multicolumn{3}{l} {{\bf begin}}\\
+ $n+s$ & $d+1$ & numbertype\\
+ $1$ & $v_1$  & \\
+ $\vdots$ & $\vdots$  & \\
+ $1$ & $v_n$  & \\
+ $0$ & $r_{n+1}$  & \\
+ $\vdots$ & $\vdots$  & \\
+ $0$ & $r_{n+s}$  & \\
+\multicolumn{3}{l} {{\bf end}}\\
+\multicolumn{3}{l} {various options} \\ \hline
+\end{tabular}
+
+\bigskip
+\noindent
+Here we do not require that
+vertices and rays are listed
+separately; they can appear mixed in arbitrary
+order.
+
+Linearity for V-representation specifies a subset of generators
+whose coefficients are relaxed
+to be {\bf free}:  for all $j=1,2, \ldots, t$, the $k=i_j$th generator ($v_{k}$ or $r_k$ whichever is the $i_j$th generator) is a free generator. 
+This means for each such a ray $r_k$, 
+the line generated by $r_k$ is in the polyhedron,
+and for each such a vertex $v_k$, its coefficient is no longer nonnegative
+but still the coefficients for all $v_i$'s must sum up to one. 
+It is highly unlikely that one needs to
+use linearity for vertex generators, and it is defined mostly
+for formality.
+
+When the representation statement, either ``H-representation''
+or ``V-representation'', is omitted, the former
+``H-representation'' is assumed.
+
+It is strongly suggested to use the following rule for naming
+H-format files and V-format files:   
+\begin{description}
+\item[(a)] use the filename  extension ``.ine'' for H-files (where ine stands for inequalities), and 
+\item[(b)]  use the filename  extension ``.ext'' for V-files (where ext stands for extreme points/rays). 
+\end{description}
+
+
+\section{Basic Object Types (Structures) in cddlib}  \label{DATASTR}
+
+Here are the types (defined in cddtypes.h) that are 
+important for the cddlib user.  The most important one, 
+{\tt dd\_MatrixType},
+is to store a Polyhedra data in a straightforward manner.
+Once the user sets up a (pointer to)  {\tt dd\_MatrixType} data,
+he/she can load the data to an internal data type ({\tt dd\_PolyhedraType})
+by using functions described in the next section, and apply
+the double descrition method to get another representation.
+As an option  {\tt dd\_MatrixType} can save a linear objective function
+to be used by a linear programming solver.
+
+The two dimensional array data in the structure {\tt dd\_MatrixType} is
+{\tt dd\_Amatrix} whose components are of type {\tt mytype\/}.
+The type mytype is set to be either the rational type {\tt mpq\_t} of 
+the GNU MP Library or the C double array of size $1$.
+This abstract type allows us to write a single program that can
+be compiled with the two or more different arithmetics, see example
+programs such as simplecdd.c, testlp*.c and testcdd*.c
+in the {\tt src} and {\tt src-gmp} subdirectories of the source
+distribution.
+
+There is another data type that is used very often, {\tt dd\_SetFamilyType}.
+This is to store a family of subsets of a finite set.  Such a family
+can represent the incidence relations between the set of extreme
+points and the set of facets of a polyhedron.  Also, it can represent a
+graph structure by listing the set of vertices adjacent to each vertex (i.e.
+the adjacency list).   To implement  {\tt dd\_SetFamilyType},
+we use  a separate set library called {\tt setoper}, that
+handles the basic set operations,   This library is briefly introduced in
+Section~\ref{SetFunctions}.
+
+
+\begin{verbatim}
+
+#define dd_FALSE 0
+#define dd_TRUE 1
+
+typedef long dd_rowrange;
+typedef long dd_colrange;
+typedef long dd_bigrange;
+
+typedef set_type dd_rowset;   /* set_type defined in setoper.h */
+typedef set_type dd_colset;
+typedef long *dd_rowindex;   
+typedef int *dd_rowflag;   
+typedef long *dd_colindex;
+typedef mytype **dd_Amatrix;  /* mytype is either GMP mpq_t or 1-dim double array. */
+typedef mytype *dd_Arow;
+typedef set_type *dd_SetVector;
+
+typedef enum {
+  dd_Real, dd_Rational, dd_Integer, dd_Unknown
+} dd_NumberType;
+
+typedef enum {
+  dd_Inequality, dd_Generator, dd_Unspecified
+} dd_RepresentationType;
+
+typedef enum {
+  dd_MaxIndex, dd_MinIndex, dd_MinCutoff, dd_MaxCutoff, dd_MixCutoff,
+   dd_LexMin, dd_LexMax, dd_RandomRow
+} dd_RowOrderType;
+
+typedef enum {
+  dd_InProgress, dd_AllFound, dd_RegionEmpty
+} dd_CompStatusType;
+
+typedef enum {
+  dd_DimensionTooLarge, dd_ImproperInputFormat, 
+  dd_NegativeMatrixSize, dd_EmptyVrepresentation,
+  dd_IFileNotFound, dd_OFileNotOpen, dd_NoLPObjective, 
+  dd_NoRealNumberSupport, dd_NoError
+} dd_ErrorType;
+
+typedef enum {
+  dd_LPnone=0, dd_LPmax, dd_LPmin
+} dd_LPObjectiveType;
+
+typedef enum {
+  dd_LPSundecided, dd_Optimal, dd_Inconsistent, dd_DualInconsistent,
+  dd_StrucInconsistent, dd_StrucDualInconsistent,
+  dd_Unbounded, dd_DualUnbounded
+} dd_LPStatusType;
+
+typedef struct matrixdata *dd_MatrixPtr;
+typedef struct matrixdata {
+  dd_rowrange rowsize;
+  dd_rowset linset; 
+    /*  a subset of rows of linearity (ie, generators of
+        linearity space for V-representation, and equations
+        for H-representation. */
+  dd_colrange colsize;
+  dd_RepresentationType representation;
+  dd_NumberType numbtype;
+  dd_Amatrix matrix;
+  dd_LPObjectiveType objective;
+  dd_Arow rowvec;
+}  dd_MatrixType;
+
+typedef struct setfamily *dd_SetFamilyPtr;
+typedef struct setfamily {
+  dd_bigrange famsize;
+  dd_bigrange setsize;
+  dd_SetVector set;  
+} dd_SetFamilyType;
+
+typedef struct lpsolution *dd_LPSolutionPtr;
+typedef struct lpsolution {
+  dd_DataFileType filename;
+  dd_LPObjectiveType objective;
+  dd_LPSolverType solver; 
+  dd_rowrange m;
+  dd_colrange d;
+  dd_NumberType numbtype;
+
+  dd_LPStatusType LPS;  /* the current solution status */
+  mytype optvalue;  /* optimal value */
+  dd_Arow sol;   /* primal solution */
+  dd_Arow dsol;  /* dual solution */
+  dd_colindex nbindex;  /* current basis represented by nonbasic indices */
+  dd_rowrange re;  /* row index as a certificate in the case of inconsistency */
+  dd_colrange se;  /* col index as a certificate in the case of dual inconsistency */
+  long pivots[5]; 
+   /* pivots[0]=setup (to find a basis), pivots[1]=PhaseI or Criss-Cross,
+      pivots[2]=Phase II, pivots[3]=Anticycling, pivots[4]=GMP postopt  */
+  long total_pivots;
+} dd_LPSolutionType;
+
+\end{verbatim}
+
+\section{Library Functions}  \label{LIBRARY}
+
+Here we list some of the most important library functions/procedures. 
+We use the following convention: 
+{\tt poly} is of type {\tt dd\_PolyhedraPtr},
+{\tt matrix}, {\tt matrix1} and {\tt matrix2} are of type {\tt dd\_MatrixPtr},
+{\tt matrixP}, of type {\tt dd\_MatrixPtr*},
+{\tt err} is of type {\tt dd\_ErrorType*}, 
+{\tt ifile} and {\tt ofile} are of type {\tt char*},
+{\tt A} is of type {\tt dd\_Amatrix},
+{\tt point} and {\tt vector} are of type {\tt dd\_Arow},
+{\tt d} is of type {\tt dd\_colrange}, 
+{\tt m} and {\tt i} are of type {\tt dd\_rowrange},
+{\tt x} is of type {\tt mytype}, 
+{\tt a} is of type {\tt signed long integer},
+{\tt b} is of type {\tt double},
+{\tt set} is of type {\tt set\_type}.
+  Also,
+{\tt setfam} is of type {\tt dd\_SetFamilyPtr},
+{\tt lp} is of type {\tt dd\_LPPtr},
+{\tt lps} is of type {\tt dd\_LPSolutionPtr},
+{\tt solver} is of type {\tt dd\_LPSolverType},
+{\tt roworder} is of type {\tt dd\_RowOrderType}.
+
+
+\subsection{Library Initialization}  \label{Initialization}
+
+\begin{description}
+
+\item[{\tt void dd\_set\_global\_constants(void)}]:\\
+This is to set the global constants such as {\tt dd\_zero},
+{\tt dd\_purezero} and
+{\tt dd\_one} for sign recognition and basic arithmetic
+operations.  {Every program to use cddlib must call this function}
+before doing any computation.    Just call this once.
+ See Section \ref{constants} for the definitions of
+constants.
+
+\item[{\tt void dd\_free\_global\_constants(void)}]:\\
+This is to free the global constants. This should be called
+when one does not use cddlib functions anymore.
+\end{description}
+
+\subsection{Core Functions}  \label{CoreLibrary}
+
+There are two types of core functions in cddlib.  The first type
+runs the double description (DD) algorithm and does a representation
+conversion of a specified polyhedron.  The standard header
+for this type is {\tt dd\_DD*}.  The second type solves
+one or more linear programs with no special headers.   
+Both types of computations are nontrivial
+and the users (especially for the DD algorithm) must
+know that there is a serous limit in the sizes of problems
+that can be practically solved. 
+Please check *.ext and *.ine files that come with cddlib to get
+ideas of tractable problems. 
+
+In addition to previously defined objects, the symbol  {\tt roworder} is
+of {\tt dd\_RowOrderType}. The symbol {\tt matrixP} is 
+a pointer to {\bf dd\_MatrixType}.
+the arguments {\tt impl\_lin} and {\tt redset} are both a pointer 
+to {\tt dd\_rowset} type, and {\tt newpos} is a pointer to 
+{\tt dd\_rowindex} type. 
+
+
+\begin{description}
+\item[{\tt dd\_PolyhedraPtr dd\_DDMatrix2Poly(matrix, err)}]:\\
+Store the representation given by {\tt matrix} in a polyhedra data, and
+generate the second representation of {\tt *poly}.  It returns
+a pointer to the data. {\tt *err}
+returns {\tt dd\_NoError} if the computation terminates normally.  Otherwise,
+it returns a value according to the error occured.
+
+\item[{\tt dd\_PolyhedraPtr dd\_DDMatrix2Poly2(matrix, roworder, err)}]:\\
+This is the same function as  {\tt dd\_DDMatrix2Poly} except that the insertion
+order is specified by the user.  The argument {\tt roworder} is of {\tt dd\_RowOrderType}
+and takes one of the values:
+  {\tt dd\_MaxIndex}, {\tt dd\_MinIndex}, {\tt dd\_MinCutoff}, {\tt dd\_MaxCutoff}, {\tt dd\_MixCutoff},
+   {\tt dd\_LexMin}, {\tt dd\_LexMax}, {\tt dd\_RandomRow}.   In general, {\tt dd\_LexMin} is
+the best choice which is in fact chosen in {\tt dd\_DDMatrix2Poly}.  If you know that 
+the input is already sorted in the order you like, use  {\tt dd\_MinIndex} or  {\tt dd\_MaxIndex}.
+If the input contains many redundant rows (say more than $80\%$ redundant),
+you might want to try {\tt dd\_MaxCutoff} which might result in much faster termination,
+see \cite{abs-hgach-97,fp-ddmr-96}
+
+\item[{\tt boolean dd\_DDInputAppend(poly, matrix, err)}]:\\
+Modify the input representation in {\tt *poly}
+by appending the matrix of {\tt *matrix}, and compute
+the second representation.  The number of columns in
+{\tt *matrix} must be equal to the input representation.
+
+\item[{\tt boolean dd\_LPSolve(lp, solver, err)}]:\\
+Solve {\tt lp} by the algorithm {\tt solver} and save
+the solututions in {\tt *lp}.  Unlike the earlier versions
+(dplex, cdd+), it can deal with equations and totally zero right
+hand sides.   It is recommended that {\tt solver} is
+{\tt dd\_DualSimplex}, the revised dual simplex method
+that updates a $d\times d$ dual basis matrix in each pivot (where
+$d$ is the column size of lp).
+
+The revised dual simplex method is ideal for dense LPs in small number of variables 
+(i.e. small column size, typically less than $100$)
+and many inequality constraints (i.e. large row size, can be a few ten thousands).  
+If your LP has many variables but only few constraints, solve the dual LP by
+this function.
+
+When it is compiled for GMP rational
+arithmetic, it first tries to solve an LP with C  double
+floating-point arithmetic and verifies whether the output
+basis is correct with GMP.  If so, the correct solution is
+computed with GMP.  Otherwise, it (re)solves the LP
+from scratch with GMP.   This is newly implemented
+in the version 093.  The original (non-crossover) version of 
+the same function is still  available as {\tt boolean dd\_LPSolve0}.
+
+\item[{\tt dd\_boolean dd\_Redundant(matrix, i, point, err)}]:\\
+Check whether $i$th data in {\tt matrix} is redundant for the representation.
+If it is nonredundant, it returns a certificate.  For H-representation,
+it is a {\tt point} in $R^d$ which satisfies
+all inequalities except for the $i$th inequality.  If $i$ is a linearity,
+it does nothing and always returns {\tt dd\_FALSE}.
+
+\item[{\tt dd\_rowset dd\_RedundantRows(matrix, err)}]:\\
+Returns a maximal set of row indices such that the associated rows
+can be eliminated without changing the polyhedron.  
+The function works for both V- and H-representations.
+
+\item[{\tt dd\_boolean dd\_SRedundant(matrix, i, point, err)}]:\\
+Check whether $i$th data in {\tt matrix} is strongly redundant for the representation.
+If $i$ is a linearity, it does nothing and always returns {\tt dd\_FALSE}.
+Here,  $i$th inequality in H-representation is {\em strongly redundant\/} if it is redundant 
+and there is no point in the polyhedron satisfying the inequality with equality.
+In V-representation,  $i$th point is {\em strongly redundant\/} if it is redundant 
+and it is in the relative interior of the polyhedron. If it is not strongly redundant, it returns a certificate.
+ 
+\item[{\tt dd\_boolean dd\_ImplicitLinearity(matrix, i, err)}]:\\
+Check whether $i$th row
+in the input is forced to be linearity (equality 
+for H-representation).
+If $i$ is linearity itself, 
+it does nothing and always returns {\tt dd\_FALSE}.
+
+\item[{\tt dd\_rowset dd\_ImplicitLinearityRows(matrix, err)}]:\\
+Returns the set of indices of rows that are 
+implicitly linearity.  It simply calls the library function
+{\tt dd\_ImplicitLinearity} for each inequality and collects
+the row indices for which the answer is {\tt dd\_TRUE}.
+
+\item[{\tt dd\_boolean dd\_MatrixCanonicalize(matrixP, impl\_lin, redset, newpos, err)}]:\\
+ The input is a pointer {\tt matrixP} to a matrix and the function
+modifies the matrix by putting a maximally linear independent linearities (basis)
+at the top of the matrix, and removing all redundant data.
+All implicit linearities and all (removed) redundant rows
+in the original matrix will be returned in the corresponding row sets.
+The new positions of the original rows are returned by 
+the array {\tt newpos}.
+
+The cardinality of the new linearity set {\tt  (*matrixP)->linset} is the codimension
+of the polyhedron if it is H-polyhedron, and is the dimension of linearity space
+if it is V-polyhedron.
+
+Note that the present version should not be called a canonicalization
+because it may generate two different representations of the same
+polyhedron.  In the future, this function is expected to be correctly
+implemented. 
+
+\item[{\tt dd\_boolean dd\_MatrixCanonicalizeLinearity(matrixP, impl\_linset, newpos. err)}]:\\
+It does only the first half of {\tt dd\_boolean dd\_MatrixCanonicalize}, namely, it detects all
+implicit linearities and puts a maximally independent linearities
+at the top of the matrix.  For example, this function can be 
+used to detect the dimension of an H-polyhedron.
+
+\item[{\tt dd\_boolean dd\_MatrixRedundancyRemove(matrixP, redset, newpos, err)}]:\\
+It does essentially the second half of {\tt dd\_boolean dd\_MatrixCanonicalize}, 
+namely, it detects all
+redundancies.  This function should be used after {\tt dd\_MatrixCanonicalizeLinearity}
+has been called.
+
+
+\item[{\tt dd\_boolean dd\_FindRelativeInterior(matrix, impl\_lin, lin\_basis, lps, err)}]:\\
+Computes a point in the relative interior of an H-polyhedron given by matrix, by solving
+an LP. The point will be returned by {\tt lps}.
+See the sample program allfaces.c that generates all nonempty faces of an H-polyhedron and
+a relative interior point for each face.   The former returns all implicit linearity rows (implicit equations)
+and the latter returns a basis of the union of linearity rows and implicit linearity rows.
+This means that the cardinality of {\tt *lin\_basis} is the codimension of the polyhedron.
+
+
+\item[{\tt dd\_boolean dd\_ExistsRestrictedFace(matrix, R, S, err)}]:\\
+Returns the answer to the Farkas' type decision problem as to whether there is a point
+in the polyhedron given by matrix satisfying all constraints in {\tt R} with
+equality and all constraints in {\tt S} with strict inequality.  More precisely,
+it is the linear feasibility problem:
+\[
+\begin{array}{llllll}
+\exists\mbox{?} &x  &\mbox{ satisfying } & b_r - A_r x  &= 0, \; \forall r \in R\cup L \\
+                &   &                    & b_s - A_s x  &> 0, \; \forall s \in S \\
+                &   &                    & b_t - A_t x  &\ge 0, \; \forall t \in T,
+\end{array}
+\]
+where $L$ is the set of linearity rows of {\tt matrix}, and $T$ represents
+the set of rows that are not in $R\cup L \cup S$.
+Both {\tt R} and {\tt S} are of {\tt dd\_rowset} type.  The set $S$ is
+supposed to be disjoint from both $R$ and $L$.
+If it is not the case, the set $S$ will be considered as $S \setminus (R \cup L)$.
+
+This function ignores {\tt matrix->representation}, and thus even if it is
+set to {\tt dd\_Generator} or {\tt dd\_Unspecified}, it treats the matrix
+as if it were inequality representation.
+
+\item[{\tt dd\_boolean dd\_ExistsRestrictedFace2(matrix, R, S, lps, err)}]:\\
+It is the same as the function {\tt dd\_ExistsRestrictedFace} except that
+it returns also a certificate for the answer.  The certificate is a solution
+to the bounded LP: 
+\[
+\begin{array}{lllllll}
+\mbox{(P)} &\max  z  &\mbox{ subject to } & b_r - A_r x  &   & = 0, \; \forall r \in R\cup L \\
+           &         &                    & b_s - A_s x  &-z &\ge 0, \;  \forall s \in S \\
+          &         &                    & b_t - A_t x   &   &\ge 0, \; \forall t \in T \\
+         &         &                    & 1              & -z&\ge 0,
+\end{array}
+\]
+where $L$ is the set of linearity rows of {\tt matrix}, and $T$ represents
+the set of rows that are not in $R\cup L \cup S$.
+The answer for the decision problem is YES if and only if the LP attains 
+an optimal and the optimal value is positive.  The dual solution (either
+an optimal solution or a dual unbounded direction) can be considered
+as a certificate for the NO answer, if the answer is NO.
+
+This function ignores {\tt matrix->representation}, and thus even if it is
+set to {\tt dd\_Generator} or {\tt dd\_Unspecified}, it treats the matrix
+as if it were inequality representation.
+
+\item[{\tt dd\_SetFamilyPtr dd\_Matrix2Adjacency(matrix, err)}]:\\
+Computes the adjacency list of input rows using
+the LP solver and without running the representation conversion.  When
+the input is H-representation, it gives the facet graph of the polyhedron.
+For V-representation, it gives the (vertex) graph of the polyhedron.
+It is required that the input matrix is a minimal representation.
+Run redundancy removal functions before calling this function,
+see the sample code adjacency.c. 
+
+
+\item[{\tt dd\_SetFamilyPtr dd\_Matrix2WeakAdjacency(matrix, err)}]:\\
+Computes the weak adjacency list of input rows using
+the LP solver and without running the representation conversion.  When
+the input is H-representation, it gives the graph where its nodes are the facets
+two nodes  are adjacent if and only if the associated facets have
+some intersection.
+For V-representation, it gives the graph where its nodes are the vertices
+and two nodes are adjacent if and only if the associated vertices
+are on a common facet.
+It is required that the input matrix is a minimal representation.
+Run redundancy removal functions before calling this function,
+see the sample code adjacency.c. 
+
+\item[{\tt dd\_MatrixPtr dd\_FourierElimination(matrix, err)}]:\\
+Eliminate the last variable from a system of linear inequalities
+given by matrix by using the Fourier's Elimination.  If the 
+input matrix is V-representation, {\tt  *err} returns
+{\tt dd\_NotAvailForV}.   This function does not
+remove redundancy  and one might want to call
+redundancy removal functions afterwards. See the sample code fourier.c.
+
+\item[{\tt dd\_MatrixPtr dd\_BlockElimination(matrix, set, err)}]:\\
+Eliminate a set of variables from a system of linear inequalities
+given by matrix by using the extreme rays of the dual linear system.
+See comments in the code cddproj.c for details.  This might be
+a faster way to eliminate variables than the repeated FourierElimination when
+the number of variables to eliminate is large. 
+If the input matrix is V-representation, {\tt  *err}  returns {\tt dd\_NotAvailForV}.
+This function does not remove redundancy  and one might want to call
+redundancy removal functions afterwards. See the sample code projection.c.
+
+
+\item[{\tt dd\_rowrange dd\_RayShooting(matrix, point, vector)}]:\\
+Finds the index of a halfspace first left by the ray starting from
+{\tt point} toward the direction {\tt vector}.  It resolves
+tie by a lexicographic perturbation.  Those inequalities violated
+by {\tt point} will be simply ignored.
+
+\end{description}
+
+
+\subsection{Data Manipulations}  \label{DataLibrary}
+
+\subsubsection{Number Assignments}
+For number assignments, one cannot use such expressions as {\tt x=(mytype)a}.
+This is because cddlib uses an abstract number type ({\tt mytype}) 
+so that it can compute with various 
+number types such as C double and GMP rational.
+User can easily add a new number type by redefining
+arithmetic operations in cddmp.h and cddmp.c.
+
+\begin{description}
+
+
+\item[{\tt void dd\_init(x)}]:\\
+This is to initialize a {\tt mytype} variable {\tt x} and to set it
+to zero.    This initialization has to be called before
+any {\tt mytype} variable to be used.
+
+\item[{\tt void dd\_clear(x)}]:\\
+This is to free the space allocated to a {\tt mytype} variable {\tt x}.
+
+\item[{\tt void dd\_set\_si(x, a)}]:\\
+This is to set a {\tt mytype} variable {\tt x} to the
+value of signed long integer {\tt a}.  
+
+\item[{\tt void dd\_set\_si2(x, a, b)}]:\\
+This is to set a {\tt mytype} variable {\tt x} to the
+value of  the rational expression {\tt a/b}, where
+{\tt a} is signed long and  {\tt b} is unsigned long
+integers.  
+
+\item[{\tt void dd\_set\_d(x, b)}]:\\
+This is to set a {\tt mytype} variable {\tt x} to the
+value of double {\tt b}.  This is available only
+when the library is compiled without {\tt -DGMPRATIONAL}
+compiler option.
+
+\end{description}
+
+
+\subsubsection{Arithmetic Operations for {\tt mytype} Numbers}
+
+Below  {\tt x}, {\tt y}, {\tt z}  are of type {\tt mytype}.
+
+\begin{description}
+
+\item[{\tt void dd\_add(x, y, z)}]:\\
+Set {\tt x} to be the sum of  {\tt y} and  {\tt z}.
+
+\item[{\tt void dd\_sub(x, y, z)}]:\\
+Set {\tt x} to be the substraction of  {\tt z}  from  {\tt y}.
+
+\item[{\tt void dd\_mul(x, y, z)}]:\\
+Set {\tt x} to be the multiplication of  {\tt y}  and  {\tt z}.
+
+\item[{\tt void dd\_div(x, y, z)}]:\\
+Set {\tt x} to be the division of  {\tt y}  over  {\tt z}.
+
+\item[{\tt void dd\_inv(x, y)}]:\\
+Set {\tt x} to be the reciplocal of  {\tt y}.
+
+\end{description}
+
+
+\subsubsection{Predefined  Constants} \label{constants}
+
+There are several {\tt mytype} constants defined when {\tt dd\_set\_global\_constants(void)} is called.
+Some constants depend on the double constant {\tt dd\_almostzero} which is normally set to $10^{-7}$ in cdd.h. 
+This value can be modified depending on how numerically delicate your problems are but an extra
+caution should be taken.
+
+\begin{description}
+
+\item[{\tt mytype dd\_purezero}]:\\
+This represents the mathematical zero $0$.
+
+\item[{\tt mytype dd\_zero}]:\\
+This represents the largest positive number which should be considered to be zero.  In the GMPRATIONAL
+mode, it is equal to {\tt dd\_purezero}.   In the C double mode, it is set to the value of {\tt dd\_almostzero}.
+
+\item[{\tt mytype dd\_minuszero}]:\\
+The negative of {\tt dd\_zero}.
+
+\item[{\tt mytype dd\_one}]:\\
+This represents the mathematical one $1$.
+
+
+\end{description}
+
+\subsubsection{Sign Evaluation and Comparison for {\tt mytype} Numbers}
+
+Below {\tt x}, {\tt y}, {\tt z} are of type {\tt mytype}.  
+
+\begin{description}
+
+\item[{\tt dd\_boolean dd\_Positive(x)}]:\\
+Returns {\tt dd\_TRUE} if {\tt x} is considered positive,  and  {\tt dd\_FALSE} otherwise.
+In the GMPRATIONAL mode, the positivity recognition is exact.  In the C double mode,
+this means the value is strictly larger than  {\tt dd\_zero}.
+
+{\tt dd\_boolean dd\_Negative(x)} works similarly.
+
+\item[{\tt dd\_boolean dd\_Nonpositive(x)}]:\\
+Returns the negation of {\tt dd\_Positive(x)}.   {\tt dd\_Nonnegative(x)} works similarly.
+
+\item[{\tt dd\_boolean dd\_EqualToZero(x)}]:\\
+Returns {\tt dd\_TRUE} if {\tt x} is considered zero,  and  {\tt dd\_FALSE} otherwise.
+In the GMPRATIONAL mode, the zero recognition is exact.  In the C double mode,
+this means the value is inbetween {\tt dd\_minuszero} and  {\tt dd\_zero}
+inclusive.
+
+\item[{\tt dd\_boolean dd\_Larger(x, y)}]:\\
+Returns {\tt dd\_TRUE} if {\tt x} is strictly larger than {\tt y},  and  {\tt dd\_FALSE} otherwise.
+This is implemented as {dd\_Positive(z)} where {\tt z} is the subtraction of {\tt y}
+from {\tt x}.
+{\tt dd\_Smaller(x, y)} works similarly.
+
+\item[{\tt dd\_boolean dd\_Equal(x, y)}]:\\
+Returns {\tt dd\_TRUE} if {\tt x} is considered equal to  {\tt y},  and  {\tt dd\_FALSE} otherwise.
+This is implemented as {dd\_EqualToZero(z)} where {\tt z} is the subtraction of {\tt y}
+from {\tt x}.
+\end{description}
+
+
+
+\subsubsection{Polyhedra Data Manipulation}
+\begin{description}
+
+\item[{\tt dd\_MatrixPtr dd\_PolyFile2Matrix (f, err)}]:\\
+Read a Polyhedra data from stream {\tt f} and store it in {\tt matrixdata}
+and return a pointer to the data.
+
+\item[{\tt dd\_MatrixPtr dd\_CopyInequalities(poly)}]:\\
+Copy the inequality representation pointed by poly to {\tt matrixdata}
+and return {\tt dd\_MatrixPtr}.
+
+\item[{\tt dd\_MatrixPtr dd\_CopyGenerators(poly)}]:\\ 
+Copy the generator representation pointed by poly to {\tt matrixdata}
+and return {\tt dd\_MatrixPtr}.
+
+\item[{\tt dd\_SetFamilyPtr dd\_CopyIncidence(poly)}]:\\ 
+Copy the incidence representation of the computed representation
+pointed by poly to {\tt setfamily}
+and return {\tt dd\_SetFamilyPtr}.  The computed representation is
+{\tt Inequality} if the input is {\tt Generator}, and the vice visa.
+
+\item[{\tt dd\_SetFamilyPtr dd\_CopyAdjacency(poly)}]:\\ 
+Copy the adjacency representation of the computed representation
+pointed by poly to {\tt setfamily}
+and return {\tt dd\_SetFamilyPtr}.  The computed representation is
+{\tt Inequality} if the input is {\tt Generator}, and the vice visa.
+
+\item[{\tt dd\_SetFamilyPtr dd\_CopyInputIncidence(poly)}]:\\ 
+Copy the incidence representation of the input representation
+pointed by poly to {\tt setfamily}
+and return {\tt d\_SetFamilyPtr}.
+
+\item[{\tt dd\_SetFamilyPtr dd\_CopyInputAdjacency(poly)}]:\\ 
+Copy the adjacency representation of the input representation
+pointed by poly to {\tt setfamily}
+and return {\tt d\_SetFamilyPtr}.
+
+\item[{\tt void dd\_FreePolyhedra(poly)}]:\\
+Free memory allocated to {\tt poly}.
+
+\end{description}
+
+\subsubsection{LP Data Manipulation}
+\begin{description}
+
+\item[{\tt dd\_LPPtr dd\_MakeLPforInteriorFinding(lp)}]:\\
+Set up an LP to find an interior point of the feasible region of {\tt lp}
+and return a pointer to the LP.  The new LP has one new variable
+$x_{d+1}$ and one more constraint:
+$\max x_{d+1}$ subject to $b - A x - x_{d+1} \ge 0$ and $x_{d+1} \le K$,
+where $K$ is a positive constant.
+
+\item[{\tt dd\_LPPtr dd\_Matrix2LP(matrix, err)}]:\\
+Load {\tt matrix} to {\tt lpdata} and return a pointer to the data.
+
+\item[{\tt dd\_LPSolutionPtr dd\_CopyLPSolution(lp)}]:\\
+Load the solutions of {\tt lp} to {\tt lpsolution} and
+return a pointer to the data.  This replaces the old name
+{\tt dd\_LPSolutionLoad(lp)}.
+
+\item[{\tt void dd\_FreeLPData(lp)}]:\\
+Free memory allocated as an LP data pointed by {\tt lp}.
+
+\item[{\tt void dd\_FreeLPSolution(lps)}]:\\
+Free memory allocated as an LP solution data pointed by {\tt lps}.
+
+\end{description}
+
+\subsubsection{Matrix Manipulation}
+\begin{description}
+
+\item[{\tt dd\_MatrixPtr dd\_CopyMatrix(matrix)}]:\\
+Make a copy of matrixdata pointed by {\tt matrix} and return
+a pointer to the copy.
+
+\item[{\tt dd\_MatrixPtr dd\_AppendMatrix(matrix1, matrix2)}]:\\
+Make a matrixdata by copying {\tt *matrix1} and appending
+the matrix in {\tt *matrix2} and return
+a pointer to the data.  The colsize must be equal in
+the two input matrices.  It returns a {\tt NULL} pointer
+if the input matrices are not appropriate.
+Its {\tt rowsize} is set to
+the sum of the rowsizes of {\tt matrix1} and {\tt matrix2}.
+ The new matrixdata inherits everything else
+(i.e. numbertype, representation, etc)
+from the first matrix. 
+
+\item[{\tt int dd\_MatrixAppendTo(\& matrix1, matrix2)}]:\\
+Same as {\tt dd\_AppendMatrix} except that the first matrix
+is modified to take the result.
+
+\item[{\tt int dd\_MatrixRowRemove(\& matrix, i)}]:\\
+Remove the $i$th row of {\tt matrix}.
+
+\item[{\tt dd\_MatrixPtr dd\_MatrixSubmatrix(matrix, set)}]:\\
+Generate the submatrix of {\tt matrix} by removing the
+rows indexed by {\tt set} and return a matrixdata pointer.
+
+\item[{\tt  dd\_SetFamilyPtr dd\_Matrix2Adjacency(matrix, err)}]:\\
+Return the adjacency list of the representation given by {\tt matrix}.
+The computation is done by the built-in LP solver.  The representation
+should be free of redundancy when this function is called. 
+See the function  {\tt dd\_rowset dd\_RedundantRows}
+and the example program adjacency.c.
+
+\end{description}
+
+\subsection{Input/Output Functions}  \label{IOLibrary}
+
+\begin{description}
+
+\item[{\tt dd\_MatrixPtr dd\_PolyFile2Matrix (f, err)}]:\\
+Read a Polyhedra data from stream {\tt f} and store it in {\tt matrixdata}
+and return a pointer to the data.
+
+\item[{\tt boolean dd\_DDFile2File(ifile, ofile, err)}]:\\
+Compute the representation conversion for a polyhedron given
+by a Polyhedra file ifile, and write the other representation
+in a Polyhedra file ofile.  {\tt *err}
+returns {\tt dd\_NoError} if the computation terminates normally.  Otherwise,
+it returns a value according to the error occured.
+
+\item[{\tt void dd\_WriteMatrix(f, matrix)}]:\\
+Write {\tt  matrix} to stream {\tt f}.
+
+\item[{\tt void dd\_WriteNumber(f, x)}]:\\
+Write {\tt x} to stream {\tt f}.  If {\tt x} is of GMP mpq\_t rational $p/q$,
+the output is $p/q$.  If it is of C double, it is formated as a double float
+with a decimal point.
+
+\item[{\tt void dd\_WritePolyFile(f, poly)}]:\\
+Write {tt poly} to stream {\tt f} in Polyhedra format.
+
+\item[{\tt void dd\_WriteErrorMessages(f, err)}]:\\
+Write error messages given by {\tt err} to stream {\tt f}.
+
+\item[{\tt void dd\_WriteSetFamily(f, setfam)}]:\\
+Write the set family pointed by {\tt setfam} to stream {\tt f}.
+For each set, it outputs its index, its cardinality,
+a colon ``:'' and a ordered list of its elements.
+
+\item[{\tt void dd\_WriteSetFamilyCompressed(f, setfam)}]:\\
+Write the set family pointed by {\tt setfam} to stream {\tt f}.
+For each set, it outputs its index, its cardinality or the
+negative of the cardinality, a colon ``:''
+ and the elements in the set or its complements whichever is smaller.
+Whenever it outputs the complements, the cardinality is negated
+so that there is no ambiguity.
+This will be considered standard for
+outputing incidence (*.icd, *ecd) and adjacency 
+(*.iad, *.ead) data in cddlib.   But there is some minor incompatibility
+with cdd/cdd+ standalone codes.
+
+\item[{\tt void dd\_WriteProgramDescription(f)}]:\\
+Write the cddlib version information to stream {\tt f}.
+
+\item[{\tt void dd\_WriteDDTimes(f, poly)}]:\\
+Write the representation conversion time information on {\tt poly}
+ to stream {\tt f}.
+
+\end{description}
+
+\subsection{Obsolete Functions}  \label{ObsoleteFunctions}
+\begin{description}
+\item[{\tt boolean dd\_DoubleDescription(poly, err)}]: 
+(removed in Version 0.90c)\\
+The new function
+{\tt dd\_DDMatrix2Poly(matrix, err)} (see Section~\ref{CoreLibrary}) 
+replaces (and actually combines) both this and 
+{\tt dd\_Matrix2Poly(matrix, err)}.
+
+\item[{\tt dd\_PolyhedraPtr dd\_Matrix2Poly(matrix, err)}]: 
+(removed in Version 0.90c)\\
+See above for the reason for removal.
+
+\item[{\tt dd\_LPSolutionPtr dd\_LPSolutionLoad(lp)}]:
+(renamed in Version 0.90c)\\
+This function is now called {\tt dd\_CopyLPSolution(lp)}.
+
+\end{description}
+
+
+\subsection{Set Functions in {\tt setoper} library}  \label{SetFunctions}
+
+The cddlib comes with a simple set operation library {\tt setoper}.  The key
+type defined is {\tt set\_type}.   A set is represented by a fixed length
+binary strings.  Thus, the maximum length of a set must be declared when
+it is initialized.
+
+Below the symbols {\tt a},   {\tt b},  {\tt c} are
+of type  {\tt set\_type}.   The symbols {\tt aP} is a
+pointer to type  {\tt set\_type}, and {\tt s}, {\tt t} are of type {\tt long}.
+Here are some of the functions defined.  See {\tt setoper.h} for a
+complete listing.
+
+\begin{description}
+
+\item[{\tt void set\_initialize(aP, s)}]:\\
+Allocate a {\tt set\_type} space of maximum cardinality {\tt s}
+ and make it pointed by {\tt aP}.  The set is initialized as empty set.
+
+\item[{\tt void set\_free(a)}]:\\
+Free the  {\tt set\_type} space allocated for {\tt a}.
+
+\item[{\tt void set\_copy(a, b))}]:\\
+Set {\tt a} to be {\tt b}.   The set {\tt a} must be pre-initialized
+with the same maximum cardinality as that of {\tt b}.  
+
+\item[{\tt void set\_addelem(a, t))}]:\\
+Add an element  {\tt t} to a set {\tt a}.    The set  {\tt a} stays unchanged
+if it contains the element {\tt t}.
+
+\item[{\tt long set\_card(a))}]:\\
+Return the cardinality of set {\tt a}. 
+
+\item[{\tt int set\_member(t, a))}]:\\
+Return $1$ if  {\tt t} is a member of set {\tt a}, and $0$ otherwise.
+
+
+\item[{\tt void set\_write(a))}]:\\
+Print out the elements of set {\tt a} to {\tt stdout}.  The function {\tt void set\_fwrite(f, a))} output
+to stream {\tt f}.
+
+\end{description}
+
+\section{An Extension of the CDD Library in GMP mode}  \label{GMPLIB}
+
+Starting from the version 093, the GMP version of cddlib, {\tt libcddgmp.a}, contains
+all cdd library functions in two arithmetics.   All functions with the standard prefix {\tt dd\_}
+are computed with the GMP rational arithmetic as before.  The same fuctions with
+the new prefix {\tt ddf\_} are now added to the library  {\tt libcddgmp.a} that are based
+on the C  double floating-point arithmetic.  Thus these functions are equivalent to
+ {\tt libcdd.a} functions, except that all functions and  variable types are with prefix  {\tt ddf\_} and
+the variable type {\tt mytype} is replaced by {\tt myfloat}.
+
+In this sense,  {\tt libcdd.a} is a proper subset of  {\tt libcddgmp.a} and in principle one can
+do everything with  {\tt libcddgmp.a}.   See how the new {\tt dd\_LPSolve} is written in
+cddlp.c.
+
+
+\section{Examples}  \label{EXAMPLES}
+
+See example codes such as testcdd*.c , testlp*.c, redcheck.c, adjacency.c, allfaces,c
+and simplecdd.c 
+in the {\tt src} and {\tt src-gmp} subdirectories of the source
+distribution.
+
+\section{Numerical Accuracy}  \label{accuracy}
+ A little caution is in order.  Many people have observed 
+numerical problems of cddlib when the floating version of cddlib
+is used.   As we all know, floating-point computation
+might not give a correct answer, especially when an input
+data is very sensitive to a small perturbation.  When
+some strange behavior is observed, it is always wise
+to create a rationalization of the input
+(for example, one can replace 0.3333333 with 1/3)
+and to compute it with cddlib compiled with gmp rational
+to see what a correct behavior should be.  Whenever the time
+is not important, it is safer to use gmp rational arithmetic.
+
+If you need speedy computation with floating-point arithmetic,
+you might want to ``play with'' the constant {\tt dd\_almostzero} 
+defined in cdd.h:
+
+\begin{verbatim}
+   #define dd_almostzero  1.0E-7
+\end{verbatim}
+\noindent
+This number is used to recognize whether a number is zero:  
+a number whose absolute value is smaller
+than {\tt dd\_almostzero} is considered zero, and nonzero otherwise.
+You can change this to modify the behavior of cddlib.  One might
+consider the default setting is rather large for double
+precision arithmetic.  This is because cddlib is made
+to deal with highly degenerate data and it works better
+to treat a relatively large ``epsilon'' as zero.
+
+Another thing one can do is scaling.  If the values in one column of
+an input is of smaller magnitude than those in another column, 
+scale one so that they become comparable.
+
+\section{Other Useful Codes}  \label{CODES}
+There are several other useful codes available for vertex enumeration and/or
+convex hull computation  such as lrs, qhull, porta and irisa-polylib.
+The pointers to these codes are available at
+\begin{enumerate}
+\item lrs by D. Avis \cite{a-lrshome-01} (C implementation of the reverse search algorithm 
+\cite{af-pachv-92}). 
+
+\item qhull by C.B. Barber \cite{bdh-qach-03} (C implementation of
+the beneath-beyond method, see \cite{e-acg-87,m-cg-94},
+which is the dual of the dd method). 
+
+\item porta by T. Christof and A. L{\"o}bel \cite{cl-porta-97} (C implementation
+of the Fourier-Motzkin elimination).
+
+\item IRISA polyhedral library by D.K. Wilde
+\cite{w-ldpo-93b} (C implementation
+of a variation of the dd algorithm).
+
+\item PPL: the Parma Polyhedra Library \cite{b-pplhome} by R. Bagnara (C++ implementation of
+a variation of the dd algorithm).
+
+\item {\tt pd} by A. Marzetta \cite{m-pdcip-97} (C implementation of the primal-dual algorithm 
+\cite{bfm-pdmvf-97}). 
+
+ \item Geometry Center Software List by N. Amenta \cite{a-dcg}.
+
+ \item Computational Geometry Pages by J. Erickson \cite{e-cgp}.
+
+ \item Linear Programming FAQ by R. Fourer and J. Gregory \cite{fg-lpfaq}.
+
+ \item ZIB Berlin polyhedral software list:\\
+ \htmladdnormallink{ftp://elib.zib-berlin.de/pub/mathprog/polyth/index.html}
+{ftp://elib.zib-berlin.de/pub/mathprog/polyth/index.html}.
+
+
+\item Polyhedral Computation FAQ \cite{f-pcfaq-98}.
+\end{enumerate}
+
+\section{Codes Using Cddlib}  \label{USERCODES}
+
+There are quite a few nice programs using some functions of cddlib.  
+Here are some of them.
+
+
+\begin{enumerate}
+
+\item {\tt LattE} \cite{dhhhty-latte-05} computes the number of lattice points
+in a convex polytope.
+
+\item {\tt Minksum} \cite{w-msv-05} is a program to compute the V-representation
+(i.e. the set of vertices) of the Minkowski addition of several convex polytopes
+given by their V-representation in $\R^d$.  It is an implementation in C++ language 
+of the reverse search algorithm \cite{f-fzctmacp-04} whose time complexity is
+polynomially bounded by the sizes of input and output.
+
+\item {\tt Gfan} \cite{j-gvum-05} is a program to list all reduced Gr\"obner
+bases of a general polynomial ideal given by a set of generating polynomials
+in $n$-variables.   It is an implementation in C++ language 
+of the reverse search algorithm \cite{fjt-cgf-05}.
+
+
+\item {\tt TOPCOM} \cite{r-topcom-05} computes the combinatorial structure
+(the oriented matroid) of a point configuration and enumerates all triangulations
+of a point set.   It detects the regularlity of a triangulation using cddlib.
+
+\end{enumerate}
+
+
+\section*{Acknowledgements.} 
+I am  grateful to Tom  Liebling who
+provided me with an ideal opportunity to visit EPFL
+for the academic year 1993-1994.  Later, Hans-Jakob L\"uthi (ETHZ) and 
+Emo Welzl  (ETHZ) joined to support the 
+the development of cdd codes (cdd, cdd+, cddlib).
+Without their generous and continuing support, the present form of 
+this program would not have existed.
+
+There are many other people who helped me to improve cdd, in particular,
+I am indebted to  David Avis, 
+Alexander Bockmayr, David Bremner, Henry Crapo, Istvan Csabai, 
+Francois Margot, Marc Pfetsch, Alain Prodon, J\"org Rambau, Dima Pasechnik,
+Shawn Rusaw, Matthew Saltzman, Masanori Sato, Anders Jensen,
+Ruriko Yoshida, Charles Geyer, Michal Kvasnica, Sven Verdoolaege
+ (listed in arbitrary order) and those listed
+in the HISTORY file.
+
+\bibliographystyle{plain}
+
+\bibliography{fukuda1,fukuda2}
+
+\end{document}
+
+
diff --git a/third_party/cddlib/doc/cddlibman.toc b/third_party/cddlib/doc/cddlibman.toc
new file mode 100644
index 0000000..7b8e943
--- /dev/null
+++ b/third_party/cddlib/doc/cddlibman.toc
@@ -0,0 +1,22 @@
+\contentsline {section}{\numberline {1}Introduction}{2}
+\contentsline {section}{\numberline {2}Polyhedra H- and V-Formats (Version 1999)}{3}
+\contentsline {section}{\numberline {3}Basic Object Types (Structures) in cddlib}{4}
+\contentsline {section}{\numberline {4}Library Functions}{7}
+\contentsline {subsection}{\numberline {4.1}Library Initialization}{7}
+\contentsline {subsection}{\numberline {4.2}Core Functions}{7}
+\contentsline {subsection}{\numberline {4.3}Data Manipulations}{11}
+\contentsline {subsubsection}{\numberline {4.3.1}Number Assignments}{11}
+\contentsline {subsubsection}{\numberline {4.3.2}Arithmetic Operations for {\tt mytype} Numbers}{11}
+\contentsline {subsubsection}{\numberline {4.3.3}Predefined Constants}{12}
+\contentsline {subsubsection}{\numberline {4.3.4}Sign Evaluation and Comparison for {\tt mytype} Numbers}{12}
+\contentsline {subsubsection}{\numberline {4.3.5}Polyhedra Data Manipulation}{12}
+\contentsline {subsubsection}{\numberline {4.3.6}LP Data Manipulation}{13}
+\contentsline {subsubsection}{\numberline {4.3.7}Matrix Manipulation}{13}
+\contentsline {subsection}{\numberline {4.4}Input/Output Functions}{14}
+\contentsline {subsection}{\numberline {4.5}Obsolete Functions}{15}
+\contentsline {subsection}{\numberline {4.6}Set Functions in {\tt setoper} library}{15}
+\contentsline {section}{\numberline {5}An Extension of the CDD Library in GMP mode}{16}
+\contentsline {section}{\numberline {6}Examples}{16}
+\contentsline {section}{\numberline {7}Numerical Accuracy}{16}
+\contentsline {section}{\numberline {8}Other Useful Codes}{16}
+\contentsline {section}{\numberline {9}Codes Using Cddlib}{17}
diff --git a/third_party/cddlib/doc/html.sty b/third_party/cddlib/doc/html.sty
new file mode 100644
index 0000000..191bb19
--- /dev/null
+++ b/third_party/cddlib/doc/html.sty
@@ -0,0 +1,360 @@
+% LaTeX2HTML Version 95.1 : html.sty
+%
+%  WARNING:  This file requires LaTeX2e.  A LaTeX 2.09 version
+%	is also provided, but with restricted functionality.
+%
+% This file contains definitions of LaTeX commands which are
+% processed in a special way by the translator. 
+% For example, there are commands for embedding external hypertext links,
+% for cross-references between documents or for including
+% raw HTML.
+% This file includes the comments.sty file v2.0 by Victor Eijkhout
+% In most cases these commands do nothing when processed by LaTeX.
+
+% Modifications:
+%
+%  nd = Nikos Drakos <nikos@cbl.leeds.ac.uk>
+%  jz = Jelle van Zeijl <jvzeijl@isou17.estec.esa.nl>
+%  hs = Herb Swan <dprhws@edp.Arco.com>
+
+% hs 31-JAN-96 - Added support for document segmentation
+% hs 10-OCT-95 - Added \htmlrule command
+% jz 22-APR-94 - Added support for htmlref
+% nd  - Created
+%%%%MG added
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{html}
+          [1996/02/01 v1.0 hypertext commands for latex2html (nd, hs)]
+%%%%MG
+% Exit if the style file is already loaded
+% (suggested by Lee Shombert <las@potomac.wash.inmet.com>
+\ifx \htmlstyloaded\relax \endinput\else\let\htmlstyloaded\relax\fi
+
+%%% LINKS TO EXTERNAL DOCUMENTS
+%
+% This can be used to provide links to arbitrary documents.
+% The first argumment should be the text that is going to be
+% highlighted and the second argument a URL.
+% The hyperlink will appear as a hyperlink in the HTML 
+% document and as a footnote in the dvi or ps files.
+%
+\newcommand{\htmladdnormallinkfoot}[2]{#1\footnote{#2}} 
+
+% This is an alternative definition of the command above which
+% will ignore the URL in the dvi or ps files.
+\newcommand{\htmladdnormallink}[2]{#1}
+
+% This command takes as argument a URL pointing to an image.
+% The image will be embedded in the HTML document but will
+% be ignored in the dvi and ps files.
+%
+\newcommand{\htmladdimg}[1]{}
+
+%%% CROSS-REFERENCES BETWEEN (LOCAL OR REMOTE) DOCUMENTS
+%
+% This can be used to refer to symbolic labels in other Latex 
+% documents that have already been processed by the translator.
+% The arguments should be:
+% #1 : the URL to the directory containing the external document
+% #2 : the path to the labels.pl file of the external document.
+% If the external document lives on a remote machine then labels.pl 
+% must be copied on the local machine.
+%
+%e.g. \externallabels{http://cbl.leeds.ac.uk/nikos/WWW/doc/tex2html/latex2html}
+%                    {/usr/cblelca/nikos/tmp/labels.pl}
+% The arguments are ignored in the dvi and ps files.
+%
+\newcommand{\externallabels}[2]{}
+
+%
+% This complements the \externallabels command above. The argument
+% should be a label defined in another latex document and will be
+% ignored in the dvi and ps files.
+%
+\newcommand{\externalref}[1]{}
+
+% This command adds a horizontal rule and is valid even within
+% a figure caption.
+%
+\newcommand{\htmlrule}{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The following commands pertain to document segmentation, and
+% were added by Herbert Swan <dprhws@edp.Arco.com> (with help from
+% Michel Goossens <goossens@cern.ch>):
+%
+%
+% This command inputs internal latex2html tables so that large
+% documents can to partitioned into smaller (more manageable)
+% segments.
+%
+\newcommand{\internal}[2][internals]{}
+
+%
+%  Define a dummy stub \htmlhead{}.  This command causes latex2html
+%  to define the title of the start of a new segment.  It is not
+%  normally placed in the user's document.  Rather, it is passed to
+%  latex2html via a .ptr file written by \segment.
+%
+\newcommand{\htmlhead}[2]{}
+
+%
+%  The dummy command \endpreamble is needed by latex2html to
+%  mark the end of the preamble in document segments that do
+%  not contain a \begin{document}
+%
+\newcommand{\startdocument}{}
+
+%
+%  Allocate a new set of section counters, which will get incremented
+%  for "*" forms of sectioning commands, and for a few miscellaneous
+%  commands.
+%
+
+\newcounter{lpart}
+\newcounter{lchapter}[part]
+\ifx\chapter\undefined\newcounter{lsection}[part]\else\newcounter{lsection}[chapter]\fi
+\newcounter{lsubsection}[section]
+\newcounter{lsubsubsection}[subsection]
+\newcounter{lparagraph}[subsubsection]
+\newcounter{lsubparagraph}[paragraph]
+\newcounter{lsubsubparagraph}[subparagraph]
+\newcounter{lequation}
+%
+%  Redefine "*" forms of sectioning commands to increment their
+%  respective counters.
+%
+\let\Hpart=\part
+\let\Hchapter=\chapter
+\let\Hsection=\section
+\let\Hsubsection=\subsection
+\let\Hsubsubsection=\subsubsection
+\let\Hparagraph=\paragraph
+\let\Hsubparagraph=\subparagraph
+\let\Hsubsubparagraph=\subsubparagraph
+
+%
+%  The following definitions are specific to LaTeX2e:
+%  (They must be commented out for LaTeX 2.09)
+%
+\def\part{\@ifstar{\stepcounter{lpart}\Hpart*}{\Hpart}}
+\def\chapter{\@ifstar{\stepcounter{lchapter}\Hchapter*}{\Hchapter}}
+\def\section{\@ifstar{\stepcounter{lsection}\Hsection*}{\Hsection}}
+\def\subsection{\@ifstar{\stepcounter{lsubsection}\Hsubsection*}{\Hsubsection}}
+\def\subsubsection{\@ifstar{\stepcounter{lsubsubsection}\Hsubsubsection*}{\Hsubsubsection}}
+\def\paragraph{\@ifstar{\stepcounter{lparagraph}\Hparagraph*}{\Hparagraph}}
+\def\subparagraph{\@ifstar{\stepcounter{lsubparagraph}\Hsubparagraph*}{\Hsubparagraph}}
+\def\subsubparagraph{\@ifstar{\stepcounter{lsubsubparagraph}\Hsubsubparagraph*}{\Hsubsubparagraph}}
+%
+%  Define a helper macro to dump a single \secounter command to a file.
+%
+\newcommand{\DumpPtr}[2]{%
+\count255=\arabic{#1} \advance\count255 by \arabic{#2}
+\immediate\write\ptrfile{%
+\noexpand\setcounter{#1}{\number\count255}}}
+
+%
+%  Define a helper macro to dump all counters to the file.
+%  The value for each counter will be the sum of the l-counter
+%      actual LaTeX section counter.
+%  Also dump an \htmlhead{section-command}{section title} command
+%      to the file.
+%
+
+\def\DumpCounters#1#2#3{\newwrite\ptrfile
+\immediate\openout\ptrfile = #1.ptr
+\DumpPtr{part}{lpart}
+\ifx\Hchapter\undefined\relax\else\DumpPtr{chapter}{lchapter}\fi
+\DumpPtr{section}{lsection}
+\DumpPtr{subsection}{lsubsection}
+\DumpPtr{subsubsection}{lsubsubsection}
+\DumpPtr{paragraph}{lparagraph}
+\DumpPtr{subparagraph}{lsubparagraph}
+\DumpPtr{equation}{lequation}
+\immediate\write\ptrfile{\noexpand\htmlhead{#2}{#3}}
+\immediate\closeout\ptrfile}
+
+%
+%  Define the \segment{file}{section-command}{section-title} command,
+%  and its helper macros.  This command does four things:
+%	1)  Begins a new LaTeX section;
+%	2)  Writes a list of section counters to file.ptr, each
+%	    of which represents the sum of the LaTeX section
+%	    counters, and the l-counters, defined above;
+%	3)  Write an \htmlhead{section-title} command to file.ptr;
+%	4)  Inputs file.tex.
+%
+
+%%%%MG changed
+\def\segment{\@ifstar{\@@htmls}{\@@html}}
+\def\@@htmls#1#2#3{\csname #2\endcsname* {#3}%
+                   \DumpCounters{#1}{#2*}{#3}\input{#1}}
+\def\@@html#1#2#3{\csname #2\endcsname {#3}%
+                   \DumpCounters{#1}{#2}{#3}\input{#1}}
+%%%%MG 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Comment.sty   version 2.0, 19 June 1992
+% selectively in/exclude pieces of text: the user can define new
+% comment versions, and each is controlled separately.
+% This style can be used with plain TeX or LaTeX, and probably
+% most other packages too.
+%
+% Examples of use in LaTeX and TeX follow \endinput
+%
+% Author
+%    Victor Eijkhout
+%    Department of Computer Science
+%    University Tennessee at Knoxville
+%    104 Ayres Hall
+%    Knoxville, TN 37996
+%    USA
+%
+%    eijkhout@cs.utk.edu
+%
+% Usage: all text included in between
+%    \comment ... \endcomment
+% or \begin{comment} ... \end{comment}
+% is discarded. The closing command should appear on a line
+% of its own. No starting spaces, nothing after it.
+% This environment should work with arbitrary amounts
+% of comment.
+%
+% Other 'comment' environments are defined by
+% and are selected/deselected with
+% \includecomment{versiona}
+% \excludecoment{versionb}
+%
+% These environments are used as
+% \versiona ... \endversiona
+% or \begin{versiona} ... \end{versiona}
+% with the closing command again on a line of its own.
+%
+% Basic approach:
+% to comment something out, scoop up  every line in verbatim mode
+% as macro argument, then throw it away.
+% For inclusions, both the opening and closing comands
+% are defined as noop
+%
+% Changed \next to \html@next to prevent clashes with other sty files
+% (mike@emn.fr)
+% Changed \html@next to \htmlnext so the \makeatletter and
+% \makeatother commands could be removed (they were causing other
+% style files - changebar.sty - to crash) (nikos@cbl.leeds.ac.uk)
+% Changed \htmlnext back to \html@next...
+
+\makeatletter
+\def\makeinnocent#1{\catcode`#1=12 }
+\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
+
+\def\ThrowAwayComment#1{\begingroup
+    \def\CurrentComment{#1}%
+    \let\do\makeinnocent \dospecials
+    \makeinnocent\^^L% and whatever other special cases
+    \endlinechar`\^^M \catcode`\^^M=12 \xComment}
+{\catcode`\^^M=12 \endlinechar=-1 %
+ \gdef\xComment#1^^M{\def\test{#1}
+      \csarg\ifx{PlainEnd\CurrentComment Test}\test
+          \let\html@next\endgroup
+      \else \csarg\ifx{LaLaEnd\CurrentComment Test}\test
+            \edef\html@next{\endgroup\noexpand\end{\CurrentComment}}
+      \else \let\html@next\xComment
+      \fi \fi \html@next}
+}
+\makeatother
+
+\def\includecomment
+ #1{\expandafter\def\csname#1\endcsname{}%
+    \expandafter\def\csname end#1\endcsname{}}
+\def\excludecomment
+ #1{\expandafter\def\csname#1\endcsname{\ThrowAwayComment{#1}}%
+    {\escapechar=-1\relax
+     \csarg\xdef{PlainEnd#1Test}{\string\\end#1}%
+     \csarg\xdef{LaLaEnd#1Test}{\string\\end\string\{#1\string\}}%
+    }}
+
+\excludecomment{comment}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% RAW HTML 
+% 
+% Enclose raw HTML between a \begin{rawhtml} and \end{rawhtml}.
+% The html environment ignores its body
+%
+\excludecomment{rawhtml}
+
+%%% HTML ONLY
+%
+% Enclose LaTeX constructs which will only appear in the 
+% HTML output and will be ignored by LaTeX with 
+% \begin{htmlonly} and \end{htmlonly}
+%
+\excludecomment{htmlonly}
+% Shorter version
+\newcommand{\html}[1]{}
+
+
+%%% LaTeX ONLY
+% Enclose LaTeX constructs which will only appear in the 
+% DVI output and will be ignored by latex2html with 
+%\begin{latexonly} and \end{latexonly}
+%
+\newenvironment{latexonly}{}{}
+% Shorter version
+\newcommand{\latex}[1]{#1}
+
+%%% HYPERREF 
+% Suggested by Eric M. Carol <eric@ca.utoronto.utcc.enfm>
+% Similar to \ref but accepts conditional text. 
+% The first argument is HTML text which will become ``hyperized''
+% (underlined).
+% The second and third arguments are text which will appear only in the paper
+% version (DVI file), enclosing the fourth argument which is a reference to a label.
+%
+%e.g. \hyperref{using the tracer}{using the tracer (see Section}{)}{trace}
+% where there is a corresponding \label{trace}
+%
+\newcommand{\hyperref}[4]{#2\ref{#4}#3}
+
+%%% HTMLREF
+% Reference in HTML version only.
+% Mix between \htmladdnormallink and \hyperref.
+% First arg is text for in both versions, second is label for use in HTML
+% version.
+\newcommand{\htmlref}[2]{#1}
+
+%%% HTMLIMAGE
+% This command can be used inside any environment that is converted
+% into an inlined image (eg a "figure" environment) in order to change
+% the way the image will be translated. The argument of \htmlimage
+% is really a string of options separated by commas ie 
+% [scale=<scale factor>],[external],[thumbnail=<reduction factor>
+% The scale option allows control over the size of the final image.
+% The ``external'' option will cause the image not to be inlined 
+% (images are inlined by default). External images will be accessible
+% via a hypertext link. 
+% The ``thumbnail'' option will cause a small inlined image to be 
+% placed in the caption. The size of the thumbnail depends on the
+% reduction factor. The use of the ``thumbnail'' option implies
+% the ``external'' option.
+%
+% Example:
+% \htmlimage{scale=1.5,external,thumbnail=0.2}
+% will cause a small thumbnail image 1/5th of the original size to be
+% placed in the final document, pointing to an external image 1.5
+% times bigger than the original.
+% 
+\newcommand{\htmlimage}[1]{}
+
+%%% HTMLADDTONAVIGATION
+% This command appends its argument to the buttons in the navigation
+% panel. It is ignored by LaTeX.
+%
+% Example:
+% \htmladdtonavigation{\htmladdnormallink
+%              {\htmladdimg{http://server/path/to/gif}}
+%              {http://server/path}}
+\newcommand{\htmladdtonavigation}[1]{}
+
+\endinput
\ No newline at end of file